示例程序中几种状态说明 第一次看i2c_eeprom 示例程序,对程序中的MsgStatus 信息状态切换非常懵懂,为什么要有这几个状态
状态切换顺序如何安排
一大堆的状态,让人有些摸不着头脑
先把程序中的头文件涉及的7 种状态分析一下
// I2C Message Commands for I2CMSG struct #define I2C_MSGSTAT_INACTIVE 0x0000 //未激活状态:一般成功发送数据或者//接受数据后可以设置信息状态为此状态,告诉用户可进行下一次的写数据或读数据
#define I2C_MSGSTAT_SEND_WITHSTOP 0x0010 //发送带停止位数据:这是为写数据而设///的状态,写入地址和数据之后发个停止位告诉存储器数据写入完毕
#define I2C_MSGSTAT_WRITE_BUSY 0x0011 //写数据忙状态:在将待写的数据放入//缓存后,就可以使能 IIC 传输数据了,然后把信息状态设为该状态,意在告诉用户:数据//已经在传送过程中
当然是否传送完毕,还需要通过查询SCD 位来判断
#define I2C_MSGSTAT_SEND_NOSTOP 0x0020//发送无停止位数据:这个状态是为了读//取数据而设的,有查阅过 AT24C1024EEPROM 存储器使用手册的读者知道,在读数据之前//要发送数据的地址,发完地址不能产生停止位,这是存储器硬件设计决定的
设为这个状//态意在告诉读者,可以发送要读取的数据的地址了
#define I2C_MSGSTAT_SEND_NOSTOP_BUSY 0x0021//发送无停止位数据忙状态:这个状态是//为了读取数据而设的,似于I2C_MSGSTAT_WRITE_BUSY,说明地址数据已经在传送过程中
//传送是否成功,还要看ARDY 的状态