51 lines
2.5 KiB
C
51 lines
2.5 KiB
C
#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__
|