为什么不用cube库呢?IIC没有问题,但是你数据量有一定的时候,并且还有比较高频的中断时候,要用中断模式,并且提高中断的优先级.DMA是个好东西.我们用硬件IIC跑400K,大数据量都没有问题的.
无薪税绵 发表于 2018-3-5 14:37
如果用IIC模拟都不行的话,估计是硬件问题了。
先上个原理图
非常感谢,我会好好参考试试的
无薪税绵 发表于 2018-3-5 14:37
如果用IIC模拟都不行的话,估计是硬件问题了。
先上个原理图
我不想用IO模拟的的I2C,我就想用I2C的库函数完成I2C的通信,但是总是卡在while循环里出不来
我的意思是,先把程序调好了,
证明了不是硬件问题,再研究IIC库。
这样就容易找出来是那里的问题了。
卡在while里,估计是没有回应导致的。
用示波器看看波形是否正确,有没有回应。
无薪税绵 发表于 2018-3-12 14:03
我的意思是,先把程序调好了,
证明了不是硬件问题,再研究IIC库。
这样就容易找出来是那里的问题了。
如果没有回应出了硬件问题,程序上可能是什么原因导致的呢?
没有应答信号:
1、端口配置不正确。
2、发送的命令不对。
3、命令地址不对。
4、硬件上,时钟未正常。
所以,我建议先证明了硬件没有问题,
再研究是否软件的问题。
这个问题我也碰到了,并不是说硬件有问题就会停在while位置。我的项目就偶尔会莫名的停在这个位置,比如我程序增加了一个与IIC读写无关的一块代码,结果就有可能出现死在while位置。我查阅了网上的资料,很多人都是绕过这个硬IIC,自己写了软IIC来模拟的,这就导致主任务会花很多精力在IIC的读写上。STM32的论坛里还没有一个权威、彻底和全面的解决方案,所以网上流传着STM32的IIC,尤其在M3系列上的硬IIC是有bug的。