打印

★★★请教:怎样最有效判断I2C通讯有误?谢谢

[复制链接]
1607|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
PowerGPS|  楼主 | 2009-1-20 20:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   只考虑单主模式,可判断的状态字有

/* Master */
#define    TW_MS_START      0x08
#define    TW_MS_REP_START      0x10
/* Master Transmitter */    
#define    TW_MT_SLA_ACK    0x18
#define    TW_MT_SLA_NACK    0x20
#define    TW_MT_DATA_ACK    0x28
#define    TW_MT_DATA_NACK    0x30
#define    TW_MT_ARB_LOST    0x38
/* Master Receiver */
#define    TW_MR_ARB_LOST    0x38
#define    TW_MR_SLA_ACK    0x40
#define    TW_MR_SLA_NACK    0x48
#define    TW_MR_DATA_ACK    0x50
#define    TW_MR_DATA_NACK    0x58

其中,容易判断通讯失败的状态是主发送(含地址和数据),失败可以重来。可根据从机的应答和主机发送的长度来判断。

难判断的是主接收,如果未接收完预定字节,主机由于某原因发送了非应答,就结束总线了。或者从机应答地址后,就死掉了,导致主机接收的都是0xff或其它错误的数据,这时主机无法知道......

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

76

帖子

0

粉丝