野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20092|回复: 1

霸道V2 在 I2C 例程中 卡EV6

[复制链接]
发表于 2021-2-20 22:46:22 | 显示全部楼层 |阅读模式
霸道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);
        //结束发送
       
}
回复

使用道具 举报

发表于 2022-7-17 18:43:46 | 显示全部楼层
楼主问题请问解决没有?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-10-6 20:32 , Processed in 0.050782 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表