CH32V307 模拟 I2C的问题

在CH32V307 中 使用 模拟i2c 读取数据时,发现读取的数据不稳定,数据变化很快,该程序在STM32中是可以稳定使用的,请问 这个可能是什么原因引起的呀? 

您好,可以检查一下是否跟程序中延时函数有关,模拟IIC中使用的是自定义延时函数还是调用debug文件中的延时函数,若自定义延时函数,主频不同会导致延时时间不同,因此可能导致差异,建议直接调用延时函数,下面链接为CH32V103模拟IIC例程,CH32V307基本也是一致的,你可以参考一下

https://bbs.21ic.com/icview-3060796-1-1.html

 


在 直接调用 延迟函数 Delay_Us 后  延迟函数 会 卡在  SysTick->CTLR |= (1 << 4) | (1 << 5) | (1 << 0); 这一步


您好,关于延时函数配置,建议先对计数模式(即位4)进行配置,再配置计数器初始值更新(位5)和系统计数器使能控制位(位0)。程序配置方式可以参照下图,后续若有问题,可通过邮箱(lzs@wch.cn)和我沟通

image.png



按您说的 改了,还是卡在那里。

我这边 是在?FreeRTOS 的 线程里调用的,是否是FreeRTOS占用了?SysTick?,然后我使用TIM6 构造了us延迟函数,模拟I2C可以正常获取数据,但是FreeRTOS 线程里会执行缓慢,就比如 没有初始化TIM6时,FreeRTOS 线程执行时间1MS,初始化TIM6后,执行间间就是 1000ms了,在线程里是没有写延迟函数的


您好,若你是使用了FreeRTOS,可以使用vTaskDelay延时函数试一下,后续若有问题,可通过邮箱(lzs@wch.cn)和我沟通。


只有登录才能回复,可以选择微信账号登录