ST意法半导体
直播中

李恩佳

7年用户 210经验值
私信 关注
[问答]

如何在从机保持SDA为低电平时处理IIC总线

如何在从机保持SDA为低电平时处理IIC总线

以上来自于谷歌翻译


以下为原文



How to handle IIC bus while the slave hold the SDA low

回帖(4)

李恩佳

2019-4-22 11:17:29
嗨,
 
 
我正在使用带有IIC从设备的STM8S105K4,在上电时,IIC总线始终处于“忙”状态,即SDA线始终处于低电平状态。怎么能
我克服了这个问题? (不要使用硬件重置..,谢谢)
 
贾森

以上来自于谷歌翻译


以下为原文




Hi,


I'm using the STM8S105K4 with a IIC slave device, while power-on, the IIC bus always in the 'busy' state, that is , the SDA line always low. How can  
I overcome this issue? (NOT use HW Reset.., thanks)  

Jason
举报

陈畅妮

2019-4-22 11:26:30
嗨,杰森,
 
 
SCL和SDA需要外部上拉电阻(4.7k),请检查这一点。
 
问候
mozra

以上来自于谷歌翻译


以下为原文




Hi Jason,


The External pull-up resistances (4.7k) are needed on SCL and SDA, please check this point.  

Regards  
mozra
举报

李恩佳

2019-4-22 11:37:36
嗨,
 
 
SDA& SCL通过4.7K电阻拉高。
 
我可以在第一次调试时访问I2C从器件
电源打开,奴隶似乎把SDA保持在低位(我不知道
为什么),如果我按''重置''按钮,mcu和I2C
奴隶工作得很好。
 
我们看到了Silabs的C8051系列文件,他们处理了
通过改变SDA& amp; SCL引脚到GPO模式(打开
排水)并等待SDA高,但我不知道如何
将STM8S105从备用功能(I2C)配置为
GPO模式,任何想法?
 
问候,
 
贾森

以上来自于谷歌翻译


以下为原文




Hi,


Both the SDA & SCL are pulled high with 4.7K resistor.  

I can access the I2C slave in debug, while first time  
power on, the slave seems hold the SDA low (I don't know  
why), if I press ''reset'' button, the mcu and the I2C  
slave work well.  

I'vd see a document of Silabs's C8051 series, they handled  
such problem by changing the SDA & SCL pin to GPO mode (open  
drain) and wait for SDA high, but I don't know how to  
configure the STM8S105 from alternate function (I2C) to  
GPO mode, any idea?  

regards,  

Jason
举报

陈畅妮

2019-4-22 11:49:16
嗨,杰森,
 
 
它可能发生,它是强制线路处于低状态的主人!您的案例中使用的主设备是什么?
SDA&在启用I2C时,SCl被配置为备用功能,您无权将I / O重新配置为备用功能,但您可以在I / O上添加软件上拉:
GPIOE-> CR1 = 0x06;
请试试这个并随时通知我们
 
问候
mozra

以上来自于谷歌翻译


以下为原文




Hi Jason,


It can happen that it is the master that forces the line in the low state!!! What is the master device used in your case?  
The SDA & SCl are configured as alternate function when enabling the I2C, you don't have access to reconfigure the I/O as alternate function but you can add a software pull-up on the I/O:  
GPIOE->CR1 = 0x06;  
Please try this and keep us informed  

Regards  
mozra
举报

更多回帖

发帖
×
20
完善资料,
赚取积分