|
SHT30 的温湿度传感器+STM32F103的软件I2C方式,
MCU刚启动时,能读取到温湿度值,之后再读总是提示ACK的错误
这个部题,朋友们有遇到过没有。谢谢!
程序主要参考的是,sensrison的官方代码
etError I2c_WriteByte(uint8_t txByte)
{
//==============================================================================
etError error = NO_ERROR;
uint8_t mask;
for(mask = 0x80; mask > 0; mask >>= 1) // shifloat bit for masking (8 times)
{
if((mask & txByte) == 0)
SDA_LOW(); // masking txByte, write bit to SDA-Line
else
SDA_OPEN(); //SetBit
DelayMs(1); // data set-up time (t_SU;DAT) 1
SCL_OPEN(); // generate clock pulse on SCL
DelayMs(5); // SCL high time (t_HIGH) 5
SCL_LOW();
DelayMs(1); // data hold time(t_HD;DAT) 1
}
SDA_OPEN(); // release SDA-line
SCL_OPEN(); // clk #9 for ack
DelayMs(1); // data set-up time (t_SU;DAT) 1
if(SDA_READ)
{
error = ACK_ERROR; // check ack from i2c slave 经常在这里出错
GPIO_SetBits(GPIOB,GPIO_Pin_12); //Rx2Ind Reset
}
SCL_LOW();
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|