Quantcast
Channel: Wireless Connectivity
Viewing all articles
Browse latest Browse all 116964

Forum Post: RE: CC2530 DMA Write to Flash

$
0
0

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


Viewing all articles
Browse latest Browse all 116964

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>