xiaobendan 发表于 2026-5-15 08:07:27

请教前辈,为何AI8051U的32位模式读EEPROM的时候要这样

比如保存的是一个数组,在传递参数时必须要把得到的地址-1,然后字节数要+1才能获得完整的数据?同样的函数在8位模式是正常使用的

比如
int ps;
myread(0x02,(uchar*)0x10,(uchar*)&ps-1,sizeof(ps)+1);//在第二扇区从0x10开始读8个字节放到ps数组里面。
如果地址不-1字节数也不+1,得到的数据就会错位一个字节,如果EEPROM地址+1,就是0x10改成0x11,ps-是对的,ps是错的。如果只地址-1,字节数不+1,则PS只得到高字节,低字节就是0.
但是写函数都是对的,并且读的是预先写到芯片的数据。

ercircle 发表于 2026-5-15 08:56:40

和你myread封装有关,即便需要也应该封装在函数内部

测试底层读取函数,读哪就是哪

xiaobendan 发表于 2026-5-15 10:25:29

ercircle 发表于 2026-5-15 08:56
和你myread封装有关,即便需要也应该封装在函数内部

测试底层读取函数,读哪就是哪


你这代码就是PDF里面的,我都研究了,一样的
除了少几个NOP
难道和这个有关?
我现在问题是读到的内容错位一个字节

ercircle 发表于 2026-5-15 10:26:19

xiaobendan 发表于 2026-5-15 10:25
你这代码就是PDF里面的,我都研究了,一样的
除了少几个NOP
难道和这个有关?


应该上传问题工程

xiaobendan 发表于 2026-5-15 10:33:27

ercircle 发表于 2026-5-15 08:56
和你myread封装有关,即便需要也应该封装在函数内部

测试底层读取函数,读哪就是哪


果然是和NOP有关,刚实验了,只增加一个NOP就正常了,难道是32位模式太快了?

xiaobendan 发表于 2026-5-15 10:57:12

哎之前的几个型号的芯片的READ函数都没有这个NOP操作的一直这么用的
页: [1]
查看完整版本: 请教前辈,为何AI8051U的32位模式读EEPROM的时候要这样