Board logo

标题: IICS_BUSY位的问题 [打印本页]

作者: huangln    时间: 2007-12-5 15:33     标题: IICS_BUSY位的问题

假设MCU在做slave接收一组数据(长度不定),在从IAAS位变为1到接收完毕检查到STOP位之间,是否IICS_BUSY位一直为1?
应该如何来判断一组数据已经接收完毕了?
作者: strongchen    时间: 2007-12-5 17:27

IICS_BUSY位只是指示总线的状态。在总线上出现START和STOP之间的时间里,IICS_BUSY都为1。当接收到一组数据后,IICIF会置位并产生中断。
作者: huangln    时间: 2007-12-6 10:39

我的意思是说一组数据里有很多个字节,但是个数还不确定,所有字节都收完了才能进行数据处理.应该怎么判断所有的字节都收完了?不引入额外的引脚做握手信号能不能进行判断?
作者: strongchen    时间: 2007-12-6 15:20

IIC协议本身是通过ACK信号进行握手的。主机也可以发STOP信号中断一次传输。或者你也可以自己定义一个结束字节,表示一组数据结束。
作者: huangln    时间: 2007-12-6 17:13

当我的MCU做从发送的时候,可以从收到的ACK信号来判断是否要停止发送.如果是做从接收的话每接收一个字节都要发送一个ACK,并不能判断是否还有数据要接收.
如果主机发STOP信号可以中断一次传输,但是从机方面有哪个寄存器是可以判断诊测到STOP信号的?
如果有明确字节的确可以方便的判断是否传输结束,但是现在我碰到的情况是通讯协议中并不包括这样的结束字节,所以比较麻烦.
作者: strongchen    时间: 2007-12-7 09:50

接收到STOP信号之后,IICS_BUSY位就为0了。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0