1.配置对应的IIC时钟。
特别重点需要注意,硬件IIC的每个动作都需要清除中断标志位才会触发。
这些位置都清除了中断。
测试可以跑到1.9M也没有问题。
先前错误程序测试过程发现发送数据OK但是是 NOACK,为什么从机会 NOACK,其实从机应该是不能拉低信号,出现了错误。
实际从机想回复ACK,这样从机发现不能拉低,出现时序错误,后续自然错误。
遇到问题,需要对每行代码仔细验证观察效果。
实际验证是按照注释计算IIC时钟。
比如外设时钟为48M,如图参数 480000000/(2^0*(11+1)*10) = 400000Hz
注意内部上拉为30K左右,外部需要加上拉电阻4.7K。
程序上需要做判断标志位超时等待,避免程序卡死。