>▽< 1.本技术涉及通信技术领域,特别是涉及一种i2c总线解挂死的方法、装置、计算机设备和存储介质。背景技术:2.i2c总线是共享的总线系统,可以将多个i2c设备连接到该系统上,连接到i2c总SCL挂死(也就是前面所说一直拉低SCL)这种情况在标准I2C从器件上基本不会出现,因为只要芯片还在正常工作buffer总算有准备好的时候,自然就就释放SCL了。往往是使用用户使用MCU作为I2C
●0● 最近发现访问I2C设备时,主设备复位可能会引起i2C死锁,表现为SCL为高,SDA一直为低,后发现是从设备拉死i2c总线,从设备断电之后,SDA变高,上电后通信正常。后来通0.环境:arm CPU 带有IIC控制器作为slave端,带有调试串口。1.bug表现:IIC slave 在系统启动后概率挂死,导致master无法detect到slave。猜测1:认为IIC device
你好,在整个I2C挂死的状态下,拔掉负载,i2c总线的电平依然是异常。但拔掉HDMI后断电重启,i2c总线是正常的。但这个应该和电流没关系吧,电流大小是由上拉的VCC决定的,而且一个I2C总线上挂了3个I2C器件,两片LM75,1片LM80,但是有时由于电压低等原因会导致单片机(51)复位,复位后可能导致I2C总线挂死。挂死的表现就是SDA被嵌位在低电平。我知道要
status=HAL_I2C_Master_Transmit(&hi2c1,SLAVE_IIC_ADDR,i2c_data,2,2) error_status=HAL_I2C_GetState(&hi2c1); printf("err1:%02x -- err2:%02x\r\n",status,error_status); 最近发现单片机读取E2PROM时候,单片机复位可能会引起i2C死锁,表现为SCL为高,SDA一直为低,后发现是E2PROM从设备拉死i2c总线,从设备断电之后,SDA变高,上电后通信
>ω< 2.挂死原因(1)当主设备向从设备发起I2C访问,连续发起8个脉冲后SCL拉低,从设备将SDA拉低以响应主设备,如果此时主设备异常复位,SCL变为高电平;而从设备正常工在介绍I2C死锁产生的原因之前,先简单介绍一下I2C的通信协议。I2C由串行数据线SDA和串行时钟线SCL组成,SDA和SCL在空闲时都处于高电平状态。SCL由主设备来产生,SDA上既可以传输主设备