在使用 TI 的 i2c 时遇到,数据通过i2c写不进去,是address出错了吗

希望有做过这方面的人帮个忙!

当我使用i2c,在借用TI协议栈里的函数时候,总是会进入 len = 0,这说明了什么?
是master 没有收到slave的ACK吗? 这是不是说明 slave的address有错误呢?

/**************************************************************************************************

  • @fn HalI2CWrite *
  • @brief Write to the I2C bus as a Master. *
  • input parameters *
  • @param len - Number of bytes to write.
  • @param pBuf - Pointer to the data buffer to write. *
  • output parameters *
  • None. *
  • @return The number of bytes successfully written. */

uint8 HalI2CWrite(uint8 len, uint8 pBuf)
{
if (i2cMstStrt(0) != mstAddrAckW)
{
**len =0;
*
}

for (uint8 cnt = 0; cnt < len; cnt++)
{
I2C_WRITE(*pBuf++);

if (I2CSTAT != mstDataAckW)
{
  if (I2CSTAT == mstDataNackW)
  {
    len = cnt + 1;
  }
  else
  {
    len = cnt;
  }
  break;
}

}

I2C_STOP();

return len;
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问