一个傻傻的程序员 2022-11-08 21:27 采纳率: 0%
浏览 33

为什么eeprom读取的数据是错的

img


这是我的读写函数,这个应该是没问题的,因为我这个是教程上的代码

void iic_24c02_write(uint8_t *pucBuf,uint8_t ucAddr,uint8_t ucNum)
{
    I2CStart();
    I2CSendByte(0xa0);
    I2CWaitAck();
    
    I2CSendByte(ucAddr);
    I2CWaitAck();
    
    while(ucNum--)
    {
        I2CSendByte(*pucBuf++);
        I2CWaitAck();
    }
    
    I2CStop();
    delay1(500);
}


void iic_24c02_read(unsigned char *pucBuf,unsigned char ucAddr,unsigned char ucNum)
{
    uint8_t data = 0;
    uint8_t i ;
    I2CStart();
    I2CSendByte(0xa0);
    I2CWaitAck();
    
    I2CSendByte(ucAddr);
    I2CWaitAck();
    
    I2CStart();
    I2CSendByte(0xa1);
    I2CWaitAck();
    while(ucNum--)
    {
        *pucBuf++ = I2CReceiveByte();
        if(ucNum)
        {
            I2CSendAck();
        }
        else
        {
            I2CSendNotAck();
        }
    }
    
    I2CStop();
    
}

这是我在main.c中定义的两个数组与我的main函数

//EEPROM相关变量
unsigned char EEPROM_String_1[5]={0x11,0x22,0x33,0x44,0x55};
unsigned char EEPROM_String_2[5]={0};
int main(void)
{

  HAL_Init();
  SystemClock_Config();
  LED_Init();
  KEY_Init();
  
  LCD_Init();
  LCD_Clear(White);
  LCD_SetBackColor(White);
  LCD_SetTextColor(Blue);
  
    
  I2CInit();
  iic_24c02_write(EEPROM_String_1,0,5);    //将数据写入
  HAL_Delay(10);
  iic_24c02_read(EEPROM_String_2,0,5);     //读取数据
  while (1)
  {
      Lcd_proc();       //显示读取的结果 
  }
}
  • 写回答

1条回答 默认 最新

  • 蓝天居士 《人工智能从入门到进阶实战》作者 2022-11-09 08:29
    关注
    1. 先检查硬件方面 比如供电,i2c两个引脚是否连接正确;
    2. 确保i2c两根信号线上已经接上了上拉电阻;
    3. 检查软件底层程序,你列出的程序问题不大,看一下底层的程序的时序。我不知道你是硬件还是软件i2c。如果是硬件i2c,确保相应引脚已经配置为复用功能,且已经使能时钟
    4. 确保i2c地址正确;
    5. 用示波器或逻辑分析仪进行信号的测量。
    评论

报告相同问题?

问题事件

  • 创建了问题 11月8日

悬赏问题

  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥100 关于#audobe audition#的问题,如何解决?
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22