CH573,CH582,CH592的codeflash为448k,可用来存放程序和掉电保存的数据,dataflash为32k,可用来存放掉电保存的数据。
使用时注意点:
1.无论的CodeFlash写操作,还是DataFlash的写操作,其传入的源数据指针只支持在RAM中,而不支持在flash中,否则即使,写操作返回成功,仍然会写失败。
2.CodeFlash读操作是有硬件加扰的,也就是擦除后读不是全FF,而是四个固定字节的循环,DataFlash读操作没有硬件加扰。
3.CodeFlash和DataFlash都可以直接指针读数据(指针读经过硬件加扰)。
4.DataFlash写之前也是需要先擦再写的。
一.DataFlash 擦 写 读 接口函数:
EEPROM_ERASE(0, EEPROM_BLOCK_SIZE); //Data-Flash擦地址为相对地址,最小擦除单位256字节,擦除起始地址需按照256字节对齐
EEPROM_WRITE(0, TestBuf, 500); //Data-Flash写地址为相对地址,可单字节写
EEPROM_READ(0, TestBuf, 500); //Data-Flash读地址为相对地址,可单字节读
二.CodeFlash 擦 写 读 接口函数:
FLASH_ROM_ERASE(20 * 1024, 4096); //Code-Flash擦地址为绝对地址,最小擦除单位4k字节,擦除起始地址需按照4k字节对齐
FLASH_ROM_WRITE(20 * 1024, TestBuf, 128); //Code-Flash写地址为绝对地址,可单字节写
FLASH_ROM_READ(20 * 1024, TestBuf, 128); //Code-Flash读地址为绝对地址,可单字节读
三.获取芯片六字节的唯一MAC:
uint8_t TestBuf[1024];
PRINT("FlashMACADDRESS...\n"); GetMACAddress(TestBuf); for(i = 0; i < 6; i++) { PRINT("%02x ", TestBuf[i]); } PRINT("\n");
四.修改用户配置值(烧录程序后只可改动一次):四个参数分别是控制
1.RESET_EN - 外部复位引脚使能
2.BOOT_PIN - ENABLE-使用默认boot脚-PB22,DISABLE-使用boot脚-PB11
3.UART_NO_KEY_EN - 串口免按键下载使能
4.FLASHProt_Size - 写保护大小(单位4K)
#if 1 /* 修改用户配置值 */ s = UserOptionByteConfig(ENABLE, ENABLE, ENABLE, WRProt_Size); if(s) PRINT("ERR\n"); else { PRINT("suc\n"); mDelaymS(10); UserOptionByte_Active(); } #endif
五.关闭两线仿真(烧录程序后只可改动一次):
#if 1 /* 关闭两线调试接口 */ s = UserOptionByteClose_SWD(); if(s) PRINT("ERR\n"); else { PRINT("suc\n"); mDelaymS(10); UserOptionByte_Active(); } #endif
END...