我有一个主突发模式功能、该功能有时工作正常、但更常见的情况是不发送第一个数据字节。 代码如下:
void InitI2C (void){
//--地址为0x38的背光灯,地址为0xf8的蜂鸣器--//
I2CMasterInitExpClk (I2C2_base、GetClkSpeed ()、I2C_100K); //主器件、100Kbps。
//--地址为0xD0的实时时钟----//
I2CMasterInitExpClk (I2C0_BASE、GetClkSpeed ()、I2C_100K); //主器件,100Kbps。
}
void RtcWrite (u8寄存器、u8数据){
while (I2CMasterBusy (I2C0_BASE){} //等待完成。
I2CMasterSlaveAddrSet (I2C0_BASE、rtcAddr、I2CWrite); //这会将 addr 向左移动1。
I2CMasterDataPut (I2C0_BASE、寄存器); //
I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_BURST_SEND_START); //寄存器。
while (I2CMasterBusy (I2C0_BASE){} //等待完成。
I2CMasterDataPut (I2C0_BASE、Data); //
I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_BURST_SEND_FINISH);// Data。
}
"寄存器"为0x02、"数据"为0x01。 有时它运行正常:
但更常见的情况是、不发送寄存器值: