1.配置对应的IIC时钟。
特别重点需要注意,硬件IIC的每个动作都需要清除中断标志位才会触发。


这些位置都清除了中断。
测试可以跑到1.9M也没有问题。
先前错误程序测试过程发现发送数据OK但是是 NOACK,为什么从机会 NOACK,其实从机应该是不能拉低信号,出现了错误。
实际从机想回复ACK,这样从机发现不能拉低,出现时序错误,后续自然错误。
遇到问题,需要对每行代码仔细验证观察效果。


实际验证是按照注释计算IIC时钟。
比如外设时钟为48M,如图参数 480000000/(2^0*(11+1)*10) = 400000Hz
注意内部上拉为30K左右,外部需要加上拉电阻4.7K。
程序上需要做判断标志位超时等待,避免程序卡死。
本文详细解析了IIC时钟的正确配置方法,强调了清除硬件IIC中断标志的重要性,以及如何避免从机NOACK的问题。通过实例说明了如何计算IIC时钟频率,并介绍了超时等待判断标志位的程序设计技巧。
7万+

被折叠的 条评论
为什么被折叠?



