首页 > 其他分享 >CH59X/CH58X/CH57X 片上flash的使用

CH59X/CH58X/CH57X 片上flash的使用

时间:2023-12-27 20:13:20浏览次数:55  
标签:CH57X FLASH CH59X flash StartAddr 地址 Length data EEPROM

以CH592F为例;在使用时先看手册对code和data区的划分

一、DataFlash的读写的操作

 先看几个操作dataflash的API(读擦写);

/**
 * @brief   read Data-Flash data block
 *
 * @param   StartAddr   - Address of the data to be read.//要读取的数据的地址,传入的的地址是相对地址所以0是dataflash,0对应dataflash的起始地址
 * @param   Buffer      - Pointer to the buffer where data should be stored, Must be aligned to 4 bytes.定义的buffer需要四字节对齐,读的时候可以进行单字节读
 * @param   Length      - Size of data to be read, in bytes.
 *
 * @return  0-SUCCESS  (!0)-FAILURE
 */
#define EEPROM_READ(StartAddr,Buffer,Length)        FLASH_EEPROM_CMD( CMD_EEPROM_READ, StartAddr, Buffer, Length )

/**
 *     
 * @param   StartAddr   - Address of the data to be erased.  擦除这里是256高位对其,即你擦除了257字节,实际上擦除的是512;擦除后的地址区域EEPROM_READ读出来的值是0xff
* @param Length - Size of data to be erased, in bytes. * * @return 0-SUCCESS (!0)-FAILURE */ 传入地址是相对地址,0是起始地址

#define EEPROM_ERASE(StartAddr,Length) FLASH_EEPROM_CMD( CMD_EEPROM_ERASE, StartAddr, NULL, Length )

/** * @brief write Data-Flash data block *
* @param StartAddr - Address of the data to be written.写这里需要写入的是指针数据,可以进行单字节写,数据是需要在RAM里的。传入地址是相对地址,0是起始地址
* @param Buffer - Pointer to the source buffer, Must be aligned to 4 bytes. 
* @param Length - Size of data to be written, in bytes.
*
* @return 0-SUCCESS (!0)-FAILURE */

#define EEPROM_WRITE(StartAddr,Buffer,Length) FLASH_EEPROM_CMD( CMD_EEPROM_WRITE, StartAddr, Buffer, Length )

使用实例:

EEPROM_ERASE(0, 256*2);  
EEPROM_WRITE(0, TestBuf, 500); 
EEPROM_READ(0, TestBuf, 500);

二、CodeFlash的的操作:

codeflash的读写校验:

//codeflash的读的地址位绝对地址,可进行单字节进行读取
void FLASH_ROM_READ(uint32_t StartAddr, void *Buffer, uint32_t len)
//这里的buffer是需要写入的指针数据,需要进行4字节对齐,数据长度要是4的倍数,数据需要在RAM里面 FLASH_ROM_WRITE(StartAddr,Buffer,Length)
//codeflash的擦的地址是绝对地址,擦除是4k对齐,假如你擦除4097字节实际上擦出的是8192字节;
FLASH_ROM_ERASE(StartAddr,Length)

FLASH_ROM_VERIFY(StartAddr,Buffer,Length)

使用示例:

 FLASH_ROM_ERASE(20 * 1024, 4096);
 FLASH_ROM_WRITE(20 * 1024, TestBuf, 128);  
FLASH_ROM_READ(20 * 1024, TestBuf, 128);

三、修改用户配置值
//需在调用用户配置字生效函数后生效,且每次烧录后只能修改一次(使用该函数,必须使用官方提供的.S文件,同时调用该函数后,两次上电后,两线调试接口默认关闭)

RESET_EN - 外部复位引脚使能
BOOT_PIN - ENABLE-使用默认boot脚-PB22,DISABLE-使用boot脚-PB11
UART_NO_KEY_EN - 串口免按键下载使能
FLASHProt_Size - 写保护大小(单位4K)

uint8_t UserOptionByteConfig(FunctionalState RESET_EN, FunctionalState BOOT_PIN, FunctionalState UART_NO_KEY_EN, uint32_t FLASHProt_Size)

关闭两线仿真接口 uint8_t UserOptionByteClose_SWD(void)

注意事项:

1.无论的CodeFlash写操作,还是DataFlash的写操作,其传入的源数据指针只支持在RAM中,而不支持在flash中,否则即使,写操作返回成功,仍然会写失败。

2.CodeFlash读操作是有硬件加扰的,也就是擦除后读不是全FF,而是四个固定字节的循环,DataFlash读操作没有硬件加扰。

3.CodeFlash和DataFlash都可以直接指针读数据(指针读经过硬件加扰)。

4.DataFlash写之前也是需要先擦再写的

 

标签:CH57X,FLASH,CH59X,flash,StartAddr,地址,Length,data,EEPROM
From: https://www.cnblogs.com/frontier/p/17877022.html

相关文章

  • NOR Flash掀存储器新一轮涨价潮 | 百能云芯
    储存型快闪存储器(NANDFlash)、DRAM报价陆续止跌回升之后,编码型快闪记忆体(NORFlash)受惠于库存回补,尤其每台AI终端装置搭载的NORFlash容量以数倍爆发性增长,引领NORFlash接棒启动新一波内存涨价潮,预计下月起先涨5%,明年第2季再涨10%,华邦、旺宏等台厂受惠大。这是NORFlash市场低迷超......
  • 怎么用stm32 flash来实现数据掉电不丢失
    参考战舰的FLASH模拟EEPROM实验 比如,#defineFLASHADDR_START0x08006800写:u32Data=0x20161109;FLASH_Unlock();FLASH_ErasePage(FLASHADDR_START);FLASH_ProgramWord(FLASHADDR_START,Data);FLASH_Lock();读:u32Data;Data=*(u32*)FLASHADDR_START;   ......
  • 电商领域 Flash Sale 的设计架构
    电商领域的抢购活动(FlashSale):定义、实施和案例研究1.电商平台应用架构师视角下的FlashSale介绍电商领域的FlashSale,又称限时抢购,是一种通过在短时间内提供折扣优惠、限量商品或独特优势来激发购买欲望、增加销售的营销策略。这一策略旨在创造紧迫感和独特性,通过限时和限量的......
  • 什么是电商领域的 Flash Sale
    Flashsale,或者我们称之为闪购,是电商领域非常常见的一种销售模式。它的基本概念是,商家在一个特定的时间段内,对一种或者一系列的商品进行大幅度的折扣促销,以吸引消费者在限定的时间内进行购买。这种销售策略一般需要精细的运营策略和技术支持,因为商品数量有限,而消费者的需求往往会......
  • 电商系统处理 flash sale 时遇到的 High DTU consumption 问题
    在电商系统中,"flashsale"或"限时促销"是一种常见的销售策略,它通常吸引大量用户在短时间内进行购买操作。然而,这种情况也会对系统的数据库资源产生巨大压力,尤其是在处理"HighDTUconsumption"的时候。首先,我们来定义一下HighDTUconsumption。在AzureSQL数据库......
  • 目录:CH57x/CH58x/CH59x/CH32V208低功耗蓝牙应用
    外设相关:CH59x系统16位PWM使用-小舟从此逝_1-博客园(cnblogs.com)CH59X/CH58X/CH57XPWM使用-小舟从此逝_1-博客园(cnblogs.com) CH58x/CH57x硬件SPI操作外部flash学习记录-小舟从此逝_1-博客园(cnblogs.com)BLE相关:CH592/CH582/CH573/CH579服务修改-小......
  • 20 套监控平台统一成 1 套 Flashcat,国泰君安监控选型提效之路
    author:宋庆羽-国泰君安期货运维工作最重要的就是维护系统的稳定性,其中监控是保证系统稳定性很重要的一环。通过监控可以了解系统的运行状态,及时发现问题和系统隐患,有助于一线人员快速解决问题,提高业务系统的可用时长。作为国内头部期货公司,随着行业的发展,国泰君安期货的业务......
  • Android 启动流程 fastboot flashing unlock
     启动流程 | Android开源项目 | AndroidOpenSourceProjecthttps://source.android.google.cn/docs/security/features/verifiedboot/boot-flow?hl=zh-cn启动时验证启动时验证会尽力确保所有已执行代码均来自可信来源(通常是设备的原始设备制造商[OEM]),以防受到攻......
  • FlashDuty Changelog 2023-10-30 | 告警路由与 Slack 应用
    FlashDuty:一站式告警响应平台,前往此地址免费体验!告警路由什么是告警路由?FlashDuty已经与Zabbix、Prometheus等监控系统实现无缝集成,通过一个简单的webhook就可以把告警系统产生的所有告警事件推送到FlashDuty来管理。每个告警事件的重要性、紧急程度和所属团队可能不同,我们期望可以......
  • 人机交互之flash
    今天完成了人机交互中的flash作业:  这是登录界面,关于flash界面 ......