社区
嵌入开发(WinCE)
帖子详情
为什么I2C总线的BUSY位会为一直为忙碌?
mly0904
2009-10-29 07:17:42
如题所示,我这边I2C设置都没有问题,可是在用I2C去读寄存器或者写入值时,首先会先去判断BUSY位是否空闲,不知道什么原因,我那个I2C那边设置好了后,这个BUSY位一直都在忙碌当中,所以无法进行下去,不知道I2C总线的BUSY位一直为忙碌的原因有哪些阿?请各位高手指点一下,我好检查到底是那边有问题啊?,非常感谢!急!急!急!!!
...全文
3382
14
打赏
收藏
为什么I2C总线的BUSY位会为一直为忙碌?
如题所示,我这边I2C设置都没有问题,可是在用I2C去读寄存器或者写入值时,首先会先去判断BUSY位是否空闲,不知道什么原因,我那个I2C那边设置好了后,这个BUSY位一直都在忙碌当中,所以无法进行下去,不知道I2C总线的BUSY位一直为忙碌的原因有哪些阿?请各位高手指点一下,我好检查到底是那边有问题啊?,非常感谢!急!急!急!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wuxinxinggg
2011-12-29
打赏
举报
回复
i2c bus still busy 差不多一样的问题,研究中
shellgo
2010-07-23
打赏
举报
回复
现在大家怎么解决的啊?
jerrytung
2010-05-27
打赏
举报
回复
现在也遇到这个问题,就是S3C6410芯片中的I2C,首先也是要判断BUSY位的,那个BUSY位忙,MASTER就死了,还不知道怎样让它活过来
xilangyue
2009-11-04
打赏
举报
回复
用示波器看时序,应该可以确定问题出在哪个步骤
sherlock_lai
2009-10-30
打赏
举报
回复
I2C没有什么BUSY位的,你这个BUSY位是CPU寄存器里的吧,楼主先把问题描述的详细一点
gelu1040
2009-10-30
打赏
举报
回复
就是因为上次通讯失步,使这次通讯一直没能完成。
后面的都使“忙”。忙着处理第一次失败的那各通讯,
JNU_kinke
2009-10-30
打赏
举报
回复
可是在用I2C去读寄存器或者写入值时,首先会先去判断BUSY位是否空闲....
I2C没有busy位的,发送start信号,发送数据,接收方应答,就这三个过程。不知lz是模拟I2C,还是控制器的?
gelu1040
2009-10-30
打赏
举报
回复
其实,除了硬件是原因之外,软件因素不可忽视.
因为 I2C需要应答,所以,当你接收的时候,应答不能按时发出,对方接收不到,于是下次通讯你发死发不出。
现看你都开了什么中断吧,如果中断处理的时间比I2C CLOCK还长,要小心了。
最好先关所有中断再处理
xumercury
2009-10-30
打赏
举报
回复
I2C去读寄存器或者写入值时,首先会先去判断BUSY位是否空闲...
不是纯标准的I2C吧。。。难道是我记错了。貌似I2C没有什么判断busy位。是芯片有特殊要求还是什么?
你可以加一个lock,进I2C通讯的时候lock用完了马上unlock。
具体lock和unlock的实现就按照进去独占出来完全释放i2c bus就可以了。
具体的可用下EnterCriticalSection和LeaveCriticalSection。
或者按照你IC的要求来定制对I2C总线的占用和释放。可能是用了没释放。
硬件上。。。。也可以检查下是否线接错了。。。。汗
个人建议仅供参考
Mercury
ProgrammerNO1
2009-10-30
打赏
举报
回复
跟内存有关么~~
xilangyue
2009-10-30
打赏
举报
回复
时序的问题应该是,好好研究一下时序吧
宇帆
2009-10-30
打赏
举报
回复
看看复位 是不是出问题了
guopeixin
2009-10-30
打赏
举报
回复
如果是模拟的话,时序错误的可能性比较大
使用控制器的话,检查一下寄存器配置吧
xqhrs232
2009-10-29
打赏
举报
回复
硬件没设计好?
STM32
I2C
总线
占用问题解析
STM32F207 MCU有三组
I2C
,在Pre-ES1使用
I2C
1接上DSP/Codec/EEPROM,运作良好。新硬件把Codec/EEPROM移到
I2C
3,DSP还是留在
I2C
1,发现在
I2C
3有机率性的
BUSY
,MCU无法开始传资料。结论有三个Solution,包括加大LDO、SCL/SDA初始化顺序、确保chip电压稳定,及一个workaround:当
BUSY
时将SCL/SDA设为GPIO并修复问题。
I2C
相关实验
I2C
是很常见的一种
总线
协议,
I2C
是NXP公司设计的,
I2C
使用两条线在主控制器和从机之间进行数据通信。一条是SCL(串行时钟线),另外一条是SDA(串行数据线),这两条数据线需要接上拉电阻,
总线
空闲的时候SCL和SDA处于高电平。
I2C
总线
标准模式下速度可以达到100Kb/S,快速模式下可以达到400Kb/S。
I2C
是支持多从机的:一般会接一个4.7k的上拉电阻(VDD)。起始位
I2C
通信起始标志,在SCL为高电平的时候,SDA出现下降沿就表示为起始位。停止位。
stm32f1xx
i2c
通讯故障可能原因
我在做
i2c
通讯时,总时出现一些故障,现在对故障进行总结: 1.程序停在while (
I2C
_GetFlagStatus(PLATFORM_
I2C
_USE,
I2C
_FLAG_
BUSY
)) ,是
i2c
总线
忙碌
。当我们 要是用
i2c
总线
时,
i2c
的时钟线和数据线都应该为高电平,stm32默认的
i2c
引脚自带了高电平,如果是重映射的就需要我们 自己确认引脚是否是高电平,还有一个原因是
i2c
的gpio
I2C
总线
I²C协议的简单概述.......
ST硬件IIC上电检
一直
检测到忙状态
硬件环境:
I2C
主机:STM8S003
I2C
从机:HTU21D 控制方式:硬件IIC 问题描述: 在程序正常运行的过程中,拔掉设备电源并迅速插回,可能出现主机不能与从机进行连接并且主机持续检测到
I2C
总线
忙,导致无法读取温度,并且复位也不能解决。使用示波器测量SCL和SDA,发现SDA为低,SCL为高。但当断电时间长一点再次上电,通信正...
嵌入开发(WinCE)
19,502
社区成员
41,568
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章