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...

 

posted on 2023-09-20 16:11  WCH蓝牙应用分享  阅读(1185)  评论(0编辑  收藏  举报