|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
哪位大俠研究過編程MCF52221內(nèi)部flash,幫我看一下下面的代碼 |
| 作者:ambercctv 欄目:單片機 |
UINT32 FlashInit (PSSD_CONFIG pSSDConfig, UINT32 clockDivider) { MCF_CFM_CFMCLKD=CFM_CLKD_PRDIV8|32; //MCF_CFM_CFMCLKD=0xFE; //INT(80MHz/8/200KHz)=50 //INT(48MHz/8/200KHz)=30 return 0; } UINT32 FlashProgram (PSSD_CONFIG pSSDConfig, UINT32 dest, UINT32 size, UINT32 source) { UINT32 baseAddr; UINT32* pDestAddr; UINT32* pSrcAddr; UINT32 length; int i; UINT32 retval; UINT8 strCFMUSTAT; baseAddr=(pSSDConfig->cfmBaseAddr+dest); length=size; if(baseAddr>=(pSSDConfig->cfmBaseAddr+pSSDConfig->cfmChipSize) || (baseAddr+length)>=(pSSDConfig->cfmBaseAddr+pSSDConfig->cfmChipSize)) { printf("The input addr or size beyond the FLASH shize\r\n"); return -1; } pDestAddr=(UINT32 *)baseAddr; pSrcAddr=(UINT32 *)source; MCF_CFM_CFMUSTAT=0x30; //CLEAR PVIOL & ACCERR for(i=0;i<length;i++) { //retval=WordProgram(*pDestAddr,*pSrcAddr); //if(retval& 0x30) //{ // MCF_CFM_CFMUSTAT=0x30; //} while(!(MCF_CFM_CFMUSTAT & CFM_USTAT_CBEIF)); if((MCF_CFM_CFMUSTAT & CFM_USTAT_CBEIF)) { *pDestAddr=*pSrcAddr; MCF_CFM_CFMCMD=0x20; MCF_CFM_CFMUSTAT=0x80; strCFMUSTAT=MCF_CFM_CFMUSTAT; } //if(MCF_CFM_CFMUSTAT & 0x30) pDestAddr++; pSrcAddr++; } return 0; } 運行program之后,FLASH里的內(nèi)容還全是0xFF,怎么,為什么呢? |
| 2樓: | >>參與討論 |
| 作者: Super_CF 于 2007/5/12 1:34:00 發(fā)布:
代碼沒問題 這個代碼應(yīng)該是例程,代碼本身應(yīng)該沒問題,問題在其他的地方 |
|
| 3樓: | >>參與討論 |
| 作者: Super_CF 于 2007/5/12 1:40:00 發(fā)布:
TEST TEST * - 本貼最后修改時間:2007-5-12 2:08:36 修改者:Super_CF |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |