I want to write data in CC2530 flash (0x90000 to 0x904FF),
not use Zstack ,use hal_DMA.c and hal_flash.c in ZStack-CC2530-2.3.1-1.4.0 .
How to call the following three functions ?
How to calculate parameters?
Thanks.
HalFlashErase(uint8 pg)
HalFlashWrite(uint16 addr,uint8 * buf,uint16 cnt)
HalFlashRead(pg_t_d,offetset_t_d,Buf_t_d,Len_t_d);
I write a function call above three functions , you can help me modify under this ?
void Flash(u8 Flash_RWE_fun,u32 Flash_add_t,u8* buf_t,u16 len_t)
{
#define pg_t_d ((Flash_add_t%HAL_FLASH_PAGE_MAP)/HAL_FLASH_PAGE_SIZE)
#define addr_t_d ((Flash_add_t%HAL_FLASH_PAGE_MAP)/4)
#define offetset_t_d ((Flash_add_t%HAL_FLASH_PAGE_SIZE)/4)
#define Len_t_d ((len_t-1)/4+1)
#define Buf_t_d ((u8*)((u32*)buf_t))
//Mapping Flash
u8 X_FMAP_t=X_FMAP;
X_FMAP=Flash_add_t/HAL_FLASH_PAGE_MAP;
switch(Flash_RWE)
{
case 1://write
//HalFlashRead(uint8 pg,uint16 offset,uint8 * buf,uint16 cnt)
HalFlashRead(pg_t_d,offetset_t_d, Buf_t_d, Len_t_d);//???
break;
case 2://Read
//HalFlashWrite(uint16 addr,uint8 * buf,uint16 cnt)
HalFlashWrite(addr_t_d,Buf_t_d,Len_t_d);//???
break;
case 3://erase
//HalFlashErase(uint8 pg)
HalFlashErase(pg_t_d);/////??????????
break;
default:break;
}
//Mapping Flash as it was.
X_FMAP=X_FMAP_t;
}
I use it like this
Flash(1,0x90000,a_Ram_buf,(0X904FF-0X90000));//Write
Flash(2,0x90000,a_Ram_buf,(0X904FF-0X90000));//Read
Flash(3,0x90000,a_Ram_buf,(0X904FF-0X90000));//Easer