happyhut 发表于 2023-4-8 22:24:40

EEPROM读写问题请教

请教一下,我使用实验箱例程中的EEPROM读写代码,void EEPROM_write_n(u16 EE_address, u8* DataAddress, u16 number),void EEPROM_read_n(u16 EE_address, u8* DataAddress, u16 number), 遇到如下问题


先在500的位置写入3个字节,

        datares = 0x1; datares = 0x2; datares = 0x3;
        EEPROM_write_n(500,datares,3);

    然后   
      EEPROM_read_n(500,datares,3);
    这时能读取的字符与写入的一致。

但是将地址换为512后,就不对了。

我使用的是stc8H8K64U芯片, 下载程序时设置EEPROM的大小为2K。

happyhut 发表于 2023-4-8 23:39:44

再补充一下,我使用的是USB-CDC工作模式。

WHX 发表于 2023-4-9 08:21:56

关注一下!顶起来!

社区闲人 发表于 2023-4-9 09:53:57

地址换为512后,-----是跨扇区了。

happyhut 发表于 2023-4-9 10:22:23

512正好是第二个扇区的起始位置啊,怎么会跨扇区呢?

angmall 发表于 2023-4-9 16:26:03

该芯片的EEPROM容量为2K,地址范围从0x0000到0x07FF。因此,你可以将写入和读取的地址都限定在0x0000到0x07FF的范围内,以确保操作在有效的EEPROM地址范围内进行。
如果你仍然遇到问题,请确保你的代码没有其他错误或逻辑问题。你可以尝试在其他地址写入和读取数据,例如0x100或0x200等,并检查结果是否正确。如果问题仍然存在,可能需要进一步调试和分析。

你提到的512确实是STC8H8K64U芯片中EEPROM的第二个扇区的起始位置,因为这个芯片的EEPROM被分为4个扇区,每个扇区的大小为512字节,第一个扇区从地址0开始,第二个扇区从地址512开始,以此类推。

因此,在第二个扇区的起始位置512处进行读写操作是没有问题的。但是,你可能需要检查你的代码以确保正确地使用了EEPROM的地址和扇区。如果你的代码没有问题,你可以尝试在其他地址和扇区进行读写操作,以确保操作没有出现问题,并且芯片的EEPROM没有损坏。

happyhut 发表于 2023-4-13 08:23:27

谢谢各位热心的回帖。代码没有问题,可能是我使用USB-CDC进行程序下载流程没有搞对的原因,后面我切换到HID模式下载程序后,都对了。不好意思,小白一枚,给各位添麻烦了!再次感谢!
页: [1]
查看完整版本: EEPROM读写问题请教