Other Parts Discussed in Thread: C2000WARE
专家好:
关于I2C的数据发送操作,有点不清楚
上面是C2000Ware_4_02_00_00\driverlib\f2837xs\examples\cpu1\i2c里的i2c_ex6_eeprom_interrupt路径下的工程文件截图
可以看到,程序从上至下操作,首先是执行了1,将数据地址写入了I2CDXR寄存器,按照下图和文档中的说明,写入I2CDXR的数据会移入I2CXSR,并逐位通过SDA发送出去(可是这个时候还没有发送START起始位?)
之后操作了2,把待发送数据写入了I2CXSR
最后在3和4两步骤下分别发送了START位和STOP位
不太明白,发送数据的先后顺序,不应该是先发送START,然后发送数据,最后发送STOP吗?
此外,这里使用到了FIFO模式,在手册中有下面这么一个说明
在FIFO模式下,会把I2CDXR当成FIFO的buffer。但FIFO的buffer有16个,这里的I2CDXR只有1个,如何理解呢?
另外,发送完了START后,等待FIFO buffer数据发送完毕了才会发送STOP信息吧,为何例程里发送完了START紧接着就发送了STOP呢?