本帖最后由 coody 于 2023-11-15 10:54 编辑
STC官方论坛有EEPROM测试例子,实测没问题。搬砖如下:
/************* 本程序功能说明 **************
STC32G系列EEPROM通用测试程序,支持按指定扇区或地址的IAP擦除、写入、读出、用MOV读出等等操作,写入、读出的是64字节的一首古诗.
可以直接下载编译好的"EEPROM-STC32G12K128.hex"或"EEPROM-STC32G8K64.hex"测试. 下载时选择主频11.0592MHZ.
PC串口设置: 波特率115200,8,n,1.
命令例子:
E 0 --> 对EEPROM进行扇区擦除操作, E表示IAP擦除, 数字0为0扇区(十进制, 0~127, 看具体IC),一个扇区512字节.
W 0 --> 对EEPROM进行写入64字节操作,W表示IAP写入, 数字0为0扇区(十进制, 0~127, 看具体IC). 从扇区的开始地址连续写64字节.
R 0 --> 对EEPROM进行读出64字节操作,R表示IAP读出, 数字0为0扇区(十进制, 0~127, 看具体IC). 从扇区的开始地址连续读64字节.
M 0 --> 对EEPROM进行读出64字节操作,M表示MOV读出, 数字0为0扇区(十进制, 0~127, 看具体IC). 从扇区的开始地址连续读64字节.
E 0x1234 --> 对EEPROM进行扇区擦除操作, E表示IAP擦除, 0X1234为扇区所在地址,十六进制. 一个扇区512字节,任何一个字节地址均能擦除所在扇区(即地址低9位被忽略)。
W 0x1234 --> 对EEPROM进行写入64字节操作,W表示IAP写入, 0X1234为开始地址,十六进制.
R 0x1234 --> 对EEPROM进行读出64字节操作,R表示IAP读出, 0X1234为开始地址,十六进制.
M 0x1234 --> 对EEPROM进行读出64字节操作,M表示MOV读出, 0X1234为开始地址,十六进制.
注意:为了通用,程序不识别扇区是否有效,用户自己根据具体的型号来决定。
特别提醒:STC32G12K128的EEPROM基地址为0xfe0000,MOV操作EEPROM的地址 = EEPROM地址 + 基地址0xfe0000.
特别提醒:STC32G8K64的EEPROM基地址为0xff0000,但EEROM放在64K的最后面,所以MOV操作EEPROM的地址 = 65536-EEPROM总字节数 + EEPROM地址 + 基地址0xff0000.
根据下面的宏定义来选择STC32G12K128或STC32G8K64的EEPROM操作。
/********************* 根据型号定义基地址 ****************************/
#define EEADDR_OFFSET 0xfe0000 //STC32G12K128, 定义EEPROM用MOV访问时的基地址.
// #define EEADDR_OFFSET 0xff0000 //STC32G8K64, 定义EEPROM用MOV访问时的基地址.
#define EEPROM_LENGTH 8192 //STC32G8K64, 定义EEPROM长度(字节数),与下载程序时选择的EEPROM长度一致, 1K=1024, 8K=8*1024=8192.
测试结果截图
上传不了附件。
|
@cooldog123pp :客户选的,板都做好了
吐槽那么多,直接换成stm32就行了,干嘛非得stc啊