请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:F28M36P63C2 I2C processors.wiki.ti.com/.../I2C_Tips上的Nice wiki有两种方法可以在传输时处理nack。
首先在'Repeat Start'部分,它建议将CMD寄存器设置为0以释放SCL。
如果(*I2C_ICSTR & ICSTR_Nack )
{
*I2C_ICMDR = 0; //重置I2C以使SCL不保持在低电平位置
返回RRET__FAIL;
}
但在设置和处理nack中,它具有以下内容:它发出stop命令,然后从状态寄存器中清除nack:
//如果出现nack,则SCL保持在低位,STP位清除
(*I2C_STR & ICSTR_nack)
{
*I2C_MDR |= ICMDR_STP;//发送STP到结束传输
*I2C_STR = ICSTR_Nack;//清除位
返回I2C_FAIL;
}
什么是适当的回应? 如果能够澄清维基,将不胜感激。