纬图虚拟仪器论坛

 找回密码
 立即注册
搜索
查看: 8126|回复: 2

STM32的I2C死在I2C_EVENT_MASTER_MODE_SELECT的原因及解决办法

[复制链接]
发表于 2012-11-20 18:00:49 | 显示全部楼层 |阅读模式
问题描述:
1、硬件I2C查询方式驱动AM2311传感器,用的I2C1,串口打印输出无任何问题。
2、我想把测得的数据通过LCD显示,LCD用FSMC的方式驱动,当我把FSMC的时钟开启后,I2C1总是死在while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_MODE_SELECT));这里。
3、FSMC和I2C1的引脚没有冲突。

问题解决:
百度找原因,最后发现有人说是因为FSMC的引脚和I2C1的引脚发生冲突引起的,就算引脚没有冲突,只要开启FSMC的时钟,I2C就会出问题。于是我将I2C1换为I2C2果然就可以了。还有一种解决办法是重定义I2C的时钟线和数据线到PB8、9引脚;或者关掉FSMC的时钟。这种办法没有试过,不知道是否可行。

问题总结:
出问题了首先得仔细检查程序,确定程序没问题后再百度或谷歌,最后一定能找到原因所在的。

回复

使用道具 举报

 楼主| 发表于 2012-11-21 20:50:30 | 显示全部楼层
wkxwkx101 发表于 2012-11-21 19:32
顺便说一下,STM32不推荐使用硬件IIC,太容易死机了

得看怎么用了,呵呵
回复 支持 反对

使用道具 举报

发表于 2012-11-22 10:28:09 | 显示全部楼层
感谢楼主分享经验
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|纬图虚拟仪器

GMT+8, 2024-12-22 11:57 , Processed in 0.086300 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表