//=========代码部分=========
void B1(void)
{
for(i = 0;i < 3;i++)
{
EE24CX_Write_Byte(i,I2C_SendMsg[i]);
}
for(i = 0;i < 3;i++)
{
I2C_ReceiveMsg[i] = EE24CX_Read_Byte(i);
DEVICE_DELAY_US(Delay_MinTime);
}
B_Task_Ptr = &B1;
}
在主函数中通过B1事件读取EEPROM中的数据
int16_t EE24CX_Write_Byte(uint16_t ADDR,uint16_t Data)
{
I2C_setDataCount(I2CA_BASE,2);
I2C_putData(I2CA_BASE, ADDR);//发送设备地址
I2C_putData(I2CA_BASE, Data);//发送需要访问的寄存器地址
I2C_setConfig(I2CA_BASE, I2C_MASTER_SEND_MODE);//设置为发送模式
I2C_sendStartCondition(I2CA_BASE);//发送起始信号,并将刚刚配置的信息发送出
I2C_sendStopCondition(I2CA_BASE);//发送终止信号
DEVICE_DELAY_US(Delay_MinTime);
return 1;
}
uint16_t EE24CX_Read_Byte(unsigned char ADDR)
{
uint16_t Data;
I2C_setDataCount(I2CA_BASE,1);
I2C_putData(I2CA_BASE, ADDR);//发送地址信息
I2C_setConfig(I2CA_BASE, I2C_MASTER_SEND_MODE);//配置为发送模式
I2C_sendStartCondition(I2CA_BASE);//发送起始信号
DEVICE_DELAY_US(Delay_MinTime/8);
I2C_setConfig(I2CA_BASE, I2C_MASTER_RECEIVE_MODE);//配置为接收模式
I2C_sendStartCondition(I2CA_BASE);//发送起始信号
DEVICE_DELAY_US(Delay_MinTime/8);
Data = I2C_getData(I2CA_BASE);//读取数据
I2C_sendNACK(I2CA_BASE);//发送NACK
I2C_sendStopCondition(I2CA_BASE);//发送停止信号
return Data;
}
通过上面两个函数读写数据
//=========现象=========
在Debug时可以看到接收回来的顺序是33、11、22

但我用逻辑分析仪读取到的数据顺序明明是11、22、33





