BLE_TYQ_BJQ_CH584M/bsp/inc/bsp_flash.h

51 lines
2.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __BSP_FLASH_H__
#define __BSP_FLASH_H__
#include "CH58x_common.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_MAC_INFO_LEN (6U)
#define FLASH_MAC_NUM_LEN (1U)
#define FLASH_INFO_WRITE_FLAG_LEN (4U)
#define FLASH_INFO_ADDR (DATA_FALASH_START_ADDR)
#define FLASH_MAC_INFO_START_ADDR (DATA_FALASH_START_ADDR) // 绝对地址
#define FLASH_MAC_1_ADDR FLASH_MAC_INFO_START_ADDR
#define FLASH_MAC_2_ADDR (FLASH_MAC_1_ADDR + FLASH_MAC_INFO_LEN)
#define FLASH_MAC_3_ADDR (FLASH_MAC_2_ADDR + FLASH_MAC_INFO_LEN)
#define FLASH_MAC_4_ADDR (FLASH_MAC_3_ADDR + FLASH_MAC_INFO_LEN)
#define FLASH_MAC_5_ADDR (FLASH_MAC_4_ADDR + FLASH_MAC_INFO_LEN)
#define FLASH_MAC_6_ADDR (FLASH_MAC_5_ADDR + FLASH_MAC_INFO_LEN)
#define FLASH_MAC_7_ADDR (FLASH_MAC_6_ADDR + FLASH_MAC_INFO_LEN)
#define FLASH_MAC_8_ADDR (FLASH_MAC_7_ADDR + FLASH_MAC_INFO_LEN)
#define FLASH_MAC_NUM_ADDR (FLASH_MAC_8_ADDR + FLASH_MAC_INFO_LEN) // 用来记录有效的mac地址数量
#define FLASH_INFO_WRITE_FLAG_ADDR (FLASH_MAC_NUM_ADDR + FLASH_MAC_NUM_LEN)
#define FLASH_INFO_WRITE_FLAG_VAL (0XAABBCCDD)
int Flash_Set_Mac_Addr(uint8_t *mac_addr, uint8_t number);
int Flash_Get_Mac_Addr(uint8_t *mac_addr, uint8_t number);
int Flash_Set_Valve_Num(uint8_t valve_num);
uint8_t Flash_Get_Valve_Num(void);
void BSP_FLASH_Init(void);
#endif // !__BSP_FLASH_H__