資源簡介
在tms320dm648下對s29gl256 flash進行編程程序,CCS環境下直接運行。
代碼片段和文件信息
#include?
#include?
#include?
//#define?Buffer_Num?4096 // ?0000H-1FFFFH?for?S29Gl256數據寬度16bit
#define?Buffer_Num?2048 // ?0000H-FFFFH??for?S29Gl256數據寬度16bit
#define?Buffer_Size?32 // ?S29Gl256最大寫入緩沖字數=32
#define FlashbaseAddr 0xA0000000 /*?16Mbytes?Flash?*/
#define?EMIFB_baseCTRL_ADDR?(0x70000000)
#define?EMIFB_CE2CFG???(*(int*)(EMIFB_baseCTRL_ADDR?+?0x00000080))
#define?EMIFB_CE3CFG???(*(int*)(EMIFB_baseCTRL_ADDR?+?0x00000084))
#define?EMIFB_AWCC?????(*(int*)(EMIFB_baseCTRL_ADDR?+?0x000000A0))
void?delay(unsigned?int?delaytime) ??
{
unsigned?short?ij;
? for(i=0;i for(j=0;j<0x40;j++);
}
//擦除一個段,需要加上段地址號
void?EraseOneSector(unsigned?int?sector)
{
volatile?short?*FlashAddr;
FlashAddr?=?(volatile?short?*)FlashbaseAddr;
if?(sector>=256)?sector=0;
FlashAddr[0x0555]?=?0x00AA;
FlashAddr[0x02AA]?=?0x0055;
FlashAddr[0x0555]?=?0x0080;
FlashAddr[0x0555]?=?0x00AA;
FlashAddr[0x02AA]?=?0x0055;
FlashAddr[sector]?=?0x30;
delay(2000);
}
unsigned?short?Sector_Buf[256];
char?BinFileName[80];
void?main()
{
unsigned?int?ij;
int?size;
volatile?short?*FlashAddr;
FILE?*?fp;
unsigned?short?pollsector_numsector;
unsigned?int?EraseError=0;
???????//?Configure?async?EMIF?16?bits?max?wait?cycles
// EMIFB_CE2CFG?=?0x00310181;
EMIFB_CE2CFG?=?0x0FFFFFFD;
EMIFB_CE3CFG?=?0x0FFFFFFD;
????????//?Adjust?TA?for?flash?mem
EMIFB_AWCC?=?0x40000380;
delay(100);
FlashAddr?=?(volatile?short?*)FlashbaseAddr;
FlashAddr[0]=0x00F0; /*?Write?Software?reset?command?to?reset?Flash?*/
/********檫除flash段***********/
sector_num=Buffer_Num>>11;
for(sector=0;?sector
評論
共有 條評論