片上Flash空间大小
应用程序从sector 0开始存储,应用数据一般从最后一个sector开始存储。
API
Flash的使用需要在初始函数中先调用bAHI_FlashInit()函数。另外Flash的地址均为相对地址,而不是绝对地址。
- 擦除:bAHI_FlashEraseSector(),按sector擦除,最小单元为32KB,擦除时应小心不要把应用程序擦掉。片上Flash擦除时间为100ms。
- 读操作:bAHI_FullFlashRead() 可从任意sector的任意位置读取数据。
- 写操作:bAHI_FullFlashProgram() 写之前应确保待写单元为全1,写操作只支持写0,即存储位只能从1变为0,并且写操作是16字节对齐的,并且写入长度需为16字节的整数倍,写入时间为1ms
读写操作过程:
- 从Flash读取原始数据到RAM
- Flash擦除
- 修改RAM中数据
- RAM中数据写回Flash
bAHI_FlashInit
bool_t bAHI_FlashInit(
teFlashChipType flashType,
tSPIflashFncTable *pCustomFncTable);
选择片上Flash,flashType = E_FL_CHIP_INTERNAL
不需要接口函数,pCustomFncTable =NULL
bAHI_FlashEraseSector
bool_t bAHI_FlashEraseSector(uint8 u8Sector);
手册描述u8Sector范围是JN5168: 0-7,JN5169: 16
bAHI_FullFlashProgram
bool_t bAHI_FullFlashProgram(uint32 u32Addr,
uint16 u16Len,
uint8 *pu8Data);
地址为整个Flash空间的偏移地址,写之前需要先擦除,写操作只能改变位值从1变为0。单次写入长度需为16的整数倍
bAHI_FullFlashRead
bool_t bAHI_FullFlashRead(uint32 u32Addr,
uint16 u16Len,
uint8 *pu8Data);
地址同样为整个Flash空间的偏移地址,长度从1到0x8000字节,超出范围后会读错数据,但是函数返回值总是为True