/*
 * @Author       : stark1898y 1658608470@qq.com
 * @Date         : 2024-12-12 15:54:51
 * @LastEditors  : stark1898y 1658608470@qq.com
 * @LastEditTime : 2024-12-12 16:34:01
 * @FilePath     : \BLE_TYQ_CH592F\BSP\inc\bsp_flash.h
 * @Description  :
 *
 * Copyright (c) 2024 by yzy, All Rights Reserved.
 */
#ifndef __BSP_FLASH_H__
#define __BSP_FLASH_H__

#include "CONFIG.h"

/*CH584具有data_flash和code flash两部分。  codeflash为448k dataflash为32k
CodeFlash读操作是有硬件加扰的，也就是擦除后读不是全FF，而是四个固定字节的循环，DataFlash读操作没有硬件加扰
CodeFlash和DataFlash都可以直接指针读数据(指针读经过硬件加扰)。
0x00000000-0x0006FFFF 用户应用程序存储区 CodeFlash 448KB
0x00070000-0x00077FFF 用户非易失数据存储区 DataFlash 32KB
0x00078000-0x0007DFFF 系统引导程序存储区 BootLoader 24KB
0x0007E000-0x0007FFFF 系统非易失配置信息存储区 InfoFlash 8KB
*/

/*BLE蓝牙falsh写入注意地址是相对于dataflash的，而dataflash的起始地址是0x3FFF，所以传入的参数是0x3FFF+offset
并且不要覆盖原有的参数
https://www.cnblogs.com/JayWellsBlog/p/18223898

接口中的读/写buff缓存在ram中的地址，一定要4字节对齐，否则可能导致hardfault复位
问题排查
https://www.cnblogs.com/iot-fan/p/16053937.html
*/

#define DATA_FALASH_START_ADDR     (0X3FFF) // 传入的是相对地址，用对函数即可
#define DATA_FLASH_PAGE_SIZE       (256U)

#define FLASH_INFO_ADDR                 (DATA_FALASH_START_ADDR)
#define FLASH_INFO_WRITE_FLAG_ADDR      (DATA_FALASH_START_ADDR)

#define FLASH_INFO_WRITE_FLAG_VAL       (0XAABBCCDD)
#define FLASH_INFO_WRITE_FLAG_LEN       (4U)

void BSP_FLASH_Init(void);

#endif // !__BSP_FLASH_H__
