butterflyspring 发表于 2018-3-5 16:39:45

为什么不用cube库呢?IIC没有问题,但是你数据量有一定的时候,并且还有比较高频的中断时候,要用中断模式,并且提高中断的优先级.DMA是个好东西.我们用硬件IIC跑400K,大数据量都没有问题的.

watercici 发表于 2018-3-5 16:44:08

无薪税绵 发表于 2018-3-5 14:37
如果用IIC模拟都不行的话,估计是硬件问题了。

先上个原理图


非常感谢,我会好好参考试试的

watercici 发表于 2018-3-12 13:57:38

无薪税绵 发表于 2018-3-5 14:37
如果用IIC模拟都不行的话,估计是硬件问题了。

先上个原理图


我不想用IO模拟的的I2C,我就想用I2C的库函数完成I2C的通信,但是总是卡在while循环里出不来

无薪税绵 发表于 2018-3-12 14:03:48

我的意思是,先把程序调好了,
证明了不是硬件问题,再研究IIC库。
这样就容易找出来是那里的问题了。

卡在while里,估计是没有回应导致的。
用示波器看看波形是否正确,有没有回应。

watercici 发表于 2018-3-12 14:05:49

无薪税绵 发表于 2018-3-12 14:03
我的意思是,先把程序调好了,
证明了不是硬件问题,再研究IIC库。
这样就容易找出来是那里的问题了。


如果没有回应出了硬件问题,程序上可能是什么原因导致的呢?

无薪税绵 发表于 2018-3-12 14:18:41

没有应答信号:
1、端口配置不正确。
2、发送的命令不对。
3、命令地址不对。
4、硬件上,时钟未正常。
所以,我建议先证明了硬件没有问题,
再研究是否软件的问题。

symc001 发表于 2018-11-15 17:09:15

这个问题我也碰到了,并不是说硬件有问题就会停在while位置。我的项目就偶尔会莫名的停在这个位置,比如我程序增加了一个与IIC读写无关的一块代码,结果就有可能出现死在while位置。我查阅了网上的资料,很多人都是绕过这个硬IIC,自己写了软IIC来模拟的,这就导致主任务会花很多精力在IIC的读写上。STM32的论坛里还没有一个权威、彻底和全面的解决方案,所以网上流传着STM32的IIC,尤其在M3系列上的硬IIC是有bug的。

页: 1 2 [3]
查看完整版本: IIC通讯,总是是在 while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_TRANSMIT...