小学生
最后登录1970-1-1
在线时间 小时
注册时间2021-1-20
|
霸道V2 上没有外接什么设备之类的,烧录的野火例程中I2C的硬件I2C提示 “<<-EEPROM-ERROR->> I2C 等待超时!errorCode = 6”
烧录模拟I2C提示“ 没有检测到串行EEPROM! "
按照教程的视频敲的,DEBUG发现,卡在EEPROM_Byte_Write中的while(I2C_CheckEvent(EEPROM_I2Cx,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) == ERROR);
新手,刚接触单片机不久,不懂,请求大佬解决。
//向E2PROM写入一个字节
void EEPROM_Byte_Write(uint8_t addr,uint8_t data)
{
//产生起始信号
I2C_GenerateSTART(EEPROM_I2Cx, ENABLE);
/*检查EV5事件,这里使用CheckEvent,是因为它读完状态后会清空标志*/
//这里用死循环来处理
while(I2C_CheckEvent(EEPROM_I2Cx,I2C_EVENT_MASTER_MODE_SELECT) == ERROR);
//EV5事件后,发送设备地址,这里输入的是8位地址
//读或者写,由后面的参数处理
//这里选择写,因为你要输入访问的IC地址
I2C_Send7bitAddress(EEPROM_I2Cx,EEPROM_ADDR,I2C_Direction_Transmitter);
//如果从机E2PROM响应后,有EV6发生(发生器)
while(I2C_CheckEvent(EEPROM_I2Cx,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) == ERROR);//停在这
//EV6后可以发送DATA,第一个DATA, E2PROM默认为内部地址(存储单元)
I2C_SendData(EEPROM_I2Cx,addr);
//数据发送后,有EV8事件,检查EV8事件
while(I2C_CheckEvent(EEPROM_I2Cx,I2C_EVENT_MASTER_BYTE_TRANSMITTING) == ERROR);
//EV8事件后,可继续发送
I2C_SendData(EEPROM_I2Cx,data);
//出现等待EV8_2信号
while(I2C_CheckEvent(EEPROM_I2Cx,I2C_EVENT_MASTER_BYTE_TRANSMITTED ) == ERROR);
//发送停止信号
I2C_GenerateSTOP(EEPROM_I2Cx, ENABLE);
//结束发送
}
|
|