主题中讨论的其他器件:C2000WARE
在提供的 F2808 I2C EEPROM 示例中、我对代码时序与实际情况感到困惑、我只是想寻求澄清。
相关代码如下:
//设置要发送的数据
I2caRegs.I2CDXR = msg->MemoryHighAddr;
I2caRegs.I2CDXR = msg->MemoryLowAddr;
对于(i=0;i NumOfBytes;i++)
{
I2caRegs.I2CDXR =*(msg->MsgBuffer+I);
}
/*
*位字段值说明
* 14在调试器断点时 I2C 模块采取的自由1操作
* 13 STT 1起始条件位
* 11 STP 1停止条件位
10 MST 1主控模式位
* 9 TRX 1发送器模式位
* 5 IRS 1 I2C 模块复位位位位位
* 0110 1110 0010 0000
*
//将 START 作为主发送器发送
I2caRegs.I2CMDR.ALL = 0x6E20;
返回 I2C_Success;
根据文档、当数据被写入 I2CDXR 寄存 器时、数据被复制到 I2CXSR 寄存器、然后在 SDA 线上移出位。 但是、在根据" for loop"将所有数据位移出 SDA 线路后、Start、Stop 和 TRX 位会被置位。 在 I2CMDR 寄存器被写入之前、什么机制会停止/延迟位移位? I2CDXR 有深度吗?