/*==============================================================================*/ void samDataFlashReadFixAddr(unsigned char *RdDataBuff,unsigned int RdCnt) { fal_request_t dtyRequester; unsigned int i=0; unsigned int nRdCnt=0; unsigned long __far *DataPtr =(__far unsigned long*)RdDataBuff; if(RdCnt%4) { // return 0xee; //Data Length Error } nRdCnt = RdCnt/4; dtyRequester.status_enu = FAL_Init( &FixArea_fal_descriptor_str ); if( dtyRequester.status_enu == FAL_OK ) { FAL_Open(); for(i=0; i<nRdCnt; i++) { dtyRequester.data_u32 = 0; dtyRequester.index_u16 = i; dtyRequester.command_enu = FAL_CMD_READ_WORD; dtyRequester.status_enu = 0; FAL_Execute( &dtyRequester ); *(DataPtr+i) = dtyRequester.data_u32; } FAL_Close(); } // return dtyRequester.status_enu; }
unsigned long Data_FAL_Read(unsigned char blocknum) { my_fal_request_t.index_u16 = blocknum; my_fal_request_t.command_enu = FAL_CMD_READ_WORD; //read FAL_Execute(&my_fal_request_t); //zhixing read if (my_fal_request_t.status_enu != FAL_OK) Error_Handler(); return (my_fal_request_t.data_u32); }
void Data_FAL_Erase(unsigned char blocknum) { my_fal_request_t.index_u16 = blocknum; my_fal_request_t.command_enu = FAL_CMD_ERASE_BLOCK; //Erase block FAL_Execute(&my_fal_request_t); //zhixing erase block while(my_fal_request_t.status_enu == FAL_BUSY) FAL_Handler(); if (my_fal_request_t.status_enu != FAL_OK) Error_Handler(); }
void Data_FAL_Write(unsigned char blocknum,unsigned long data_buff) { my_fal_request_t.index_u16 = blocknum; my_fal_request_t.data_u32 = data_buff; my_fal_request_t.command_enu = FAL_CMD_WRITE_WORD; //Write 1 word FAL_Execute(&my_fal_request_t); //zhixing write while(my_fal_request_t.status_enu == FAL_BUSY) FAL_Handler(); if (my_fal_request_t.status_enu != FAL_OK) Error_Handler(); }
/*==============================================================================*/ void samDataFlashWriteFixAddr(unsigned char *WrDataBuff,unsigned int WrCnt) { fal_request_t dtyRequester; unsigned int i=0; unsigned int nWrCnt=0; unsigned long __far *DataPtr =(__far unsigned long*)WrDataBuff; if(WrCnt%4) { // return 0xee; //Data Length Error } nWrCnt = WrCnt/4; dtyRequester.status_enu = FAL_Init( &FixArea_fal_descriptor_str ); if( dtyRequester.status_enu == FAL_OK ) { FAL_Open(); for(i=0; i<nWrCnt; i++) { dtyRequester.data_u32 = *(DataPtr+i); dtyRequester.index_u16 = i; dtyRequester.command_enu = FAL_CMD_WRITE_WORD; dtyRequester.status_enu = 0; FAL_Execute( &dtyRequester ); do { FAL_Handler(); } while( dtyRequester.status_enu == FAL_BUSY ); } FAL_Close(); } // return dtyRequester.status_enu; }
/*==============================================================================*/ void samDataFlashEraseFixAddr( void ) { fal_request_t dtyRequester; dtyRequester.status_enu = FAL_Init( &FixArea_fal_descriptor_str ); if( dtyRequester.status_enu == FAL_OK ) { FAL_Open(); dtyRequester.data_u32 = 0; dtyRequester.index_u16 = 0; dtyRequester.command_enu = FAL_CMD_ERASE_BLOCK; dtyRequester.status_enu = 0; FAL_Execute( &dtyRequester ); do { FAL_Handler(); } while( dtyRequester.status_enu == FAL_BUSY ); FAL_Close(); } // return dtyRequester.status_enu; }