你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

IIC通讯,总是是在 while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_TRANSMIT...

[复制链接]
watercici 提问时间:2018-2-27 08:53 /
阅读主题, 点击返回1楼
收藏 1 评论27 发布时间:2018-2-27 08:53
27个回答
watercici 回答时间:2018-2-27 10:35:21
安 发表于 2018-2-27 10:32
我用中断都是在前面通讯完成后,读取数据或者发送数据的时候用。最好用示波器看一下是设备是否应答。 ...

好的,谢谢。
Angel_YY_ST 回答时间:2018-2-27 11:04:16
提示: 作者被禁止或删除 内容自动屏蔽
watercici 回答时间:2018-2-27 11:34:52
Angel_YY 发表于 2018-2-27 11:04
可以先用IO模拟IIC试一下,确定一下硬件没有问题。
STM32下IO口模拟IIC通讯的代码:

好的,非常感谢您
watercici 回答时间:2018-3-5 11:34:59
该贴的问题还没有解决,我最近有其他事要忙,如果问题解决了,我会再发贴说明的,谢谢大家,以后有问题再请教大家,非常感谢。
无薪税绵 回答时间:2018-3-5 14:37:37
如果用IIC模拟都不行的话,估计是硬件问题了。

先上个原理图
PCF8563_SCH.png

中文资料
PCF8563T.PDF (357.49 KB, 下载次数: 0)

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

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

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

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的。

12
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版