|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請(qǐng)教SST89E564RD的內(nèi)部EEPROM的讀寫 |
| 作者:cxd731 欄目:單片機(jī) |
各位用的SST89E564RD這顆MCU嗎,它的SPEC上講可以將BLOCK1的8K ROM映射到數(shù)據(jù)空間當(dāng)作EEPROM來用,但又沒有詳細(xì)解釋。 我想問的是:我應(yīng)該如何做才能將BLOCK1空間的FLASH ROM當(dāng)作EEPROM來用??如何讀寫? 我以前MICROCHIP的PIC16F628A,它里面有專門的積存器來存放EEPROM的地址和數(shù)據(jù),但SST89E564RD好象就沒有;用過SST89E564RD的大蝦幫幫我! 先謝了 |
| 2樓: | >>參與討論 |
| 作者: cxd731 于 2005/6/2 16:44:00 發(fā)布:
沒人用過嗎? 不可能吧,我自己先頂一下,不然沉得太快了 |
|
| 3樓: | >>參與討論 |
| 作者: cxd731 于 2005/6/3 8:45:00 發(fā)布:
哪6個(gè)寄存器???? 我又耐心地把SPEC從頭翻到尾,還是沒看到什么地方可以設(shè)置允許?樓上老兄,幫就幫到底吧,是哪6個(gè)寄存器?這幾天SST的FAE出差了,不然我也不會(huì)上來麻煩大家的。 |
|
| 4樓: | >>參與討論 |
| 作者: cxd731 于 2005/6/3 12:43:00 發(fā)布:
哪位大哥賜教一下吧 |
|
| 5樓: | >>參與討論 |
| 作者: fsaok 于 2005/6/3 13:11:00 發(fā)布:
. sfr SFCF = 0xb1; /* SuperFlash configuration */ sfr SFCM = 0xb2; /* SuperFlash command */ sfr SFAL = 0xb3; /* SuperFlash Address Low */ sfr SFAH = 0xb4; /* SuperFlash Address High */ sfr SFDT = 0xb5; /* SuperFlash Data */ sfr SFST = 0xb6; /* SuperFlash status */ 請(qǐng)參考 http://www.spacltd.com.cn/files/sc/support/174_sst_mcu_iap_c_imp.pdf |
|
| 6樓: | >>參與討論 |
| 作者: cxd731 于 2005/6/3 13:56:00 發(fā)布:
謝謝fsaok 我之前把IAP模式理解錯(cuò)了,哈哈,我太傻了; 再次感謝 |
|
| 7樓: | >>參與討論 |
| 作者: hotpower 于 2005/6/3 16:43:00 發(fā)布:
調(diào)試通過的89E564RD.html">SST89E564RD的內(nèi)部EEPROM的讀寫程序 /* 89E564 Extensions */ sfr IPA = 0xF8; sfr IEA = 0xE8; sfr SADEN = 0xA9; sfr SPSR = 0xAA; sfr AUXR1 = 0xA2; sfr AUXR = 0x8E; sfr WDTD = 0x85; sfr SPDR = 0x86; sfr SFCF = 0xB1; sfr SFCM = 0xB2; sfr SFAL = 0xB3; sfr SFAH = 0xB4; sfr SFDT = 0xB5; sfr SFST = 0xB6; sfr IPH = 0xB7; sfr SPCR = 0xD5; sfr IPAH = 0xF7; //塊擦除 void Block_Erase (unsigned int); //扇區(qū)擦除 void Sector_Erase(unsigned int); //字節(jié)編程 void Byte_Program(unsigned int, unsigned CHAR); //扇區(qū)拷貝 void Sector_Copy(unsigned int, unsigned int); //字節(jié)校驗(yàn) unsigned CHAR Byte_Verify(unsigned int); //等待IAP結(jié)束 unsigned CHAR ready(void); //塊擦除 void Block_Erase (unsigned int DataAddr) using 0 { SFCF |= IAP_EN_;//啟動(dòng)IAP SFAH = DataAddr / 256;//扇區(qū)地址高字節(jié) SFAL = DataAddr;//扇區(qū)地址低字節(jié) SFDT = 0x55; SFCM = SFCM_BE;//寫入塊擦除命令字 if (ready() == 0) { while(1); } } //扇區(qū)擦除 void Sector_Erase (unsigned int DataAddr) using 0 { SFCF |= IAP_EN_;//啟動(dòng)IAP SFAH = DataAddr / 256;//扇區(qū)地址高字節(jié) SFAL = DataAddr;//扇區(qū)地址低字節(jié) SFCM = SFCM_SE;//寫入扇區(qū)擦除命令字 if (ready() == 0) { while(1); } } //字節(jié)編程 void Byte_Program (unsigned int DataAddr, unsigned CHAR DataByte) using 0 { SFCF |= IAP_EN_;//啟動(dòng)IAP SFAH = DataAddr >> 8;//要編程地址高字節(jié) SFAL = DataAddr;//要編程地址低字節(jié) SFDT = DataByte;//要編程的數(shù)據(jù) SFCM = SFCM_PB;//寫入字節(jié)編程命令字 if (ready() == 0) { while(1); } } //字節(jié)校驗(yàn) unsigned CHAR Byte_Verify(unsigned int DataAddr) using 0 { unsigned CHAR DataByte; SFCF |= IAP_EN_;//啟動(dòng)IAP SFAH = DataAddr >> 8;//要編程地址高字節(jié) SFAL = DataAddr;//要編程地址低字節(jié) SFDT = DataByte;//要編程的數(shù)據(jù) SFCM = SFCM_VB;//寫入字節(jié)校驗(yàn)命令字 DataByte = SFDT; SFCF &= ~IAP_EN_;//關(guān)閉IAP SFDT = 0; return DataByte; } void Sector_Copy(unsigned int DataAddr0, unsigned int DataAddr1) using 0 { unsigned CHAR i, ch; if ((DataAddr0 >= 0xC000) && (DataAddr1 >= 0xC000)) {//必須為FLASH塊1 if ((DataAddr0 & 0xff80) != (DataAddr1 & 0xff80)) {//沒個(gè)扇區(qū)64個(gè)字節(jié) DataAddr0 &= 0xff80;//取扇區(qū)內(nèi)64個(gè)字節(jié)的首地址 DataAddr1 &= 0xff80;//取扇區(qū)內(nèi)64個(gè)字節(jié)的首地址 Sector_Erase(DataAddr0);//刪除目的扇區(qū) for (i = 0; i < 128; i ++) {//拷貝扇區(qū)內(nèi)的64個(gè)字節(jié) ch = Byte_Verify(DataAddr1 + i);//讀源扇區(qū)數(shù)據(jù) Byte_Program(DataAddr0 + i, ch);//寫目的扇區(qū)數(shù)據(jù) } } } } //等待IAP結(jié)束 unsigned CHAR ready(void) using 0 { unsigned LONG TimeOut = 0; unsigned CHAR error = 0; while(TimeOut ++ < 100000) { if ((SFST & Flash_busy_) == 0) { error ++; break; } } SFCF &= ~IAP_EN_;//關(guān)閉IAP SFDT = 0; return error; } |
|
| 8樓: | >>參與討論 |
| 作者: cxd731 于 2005/6/3 16:50:00 發(fā)布:
再次感動(dòng) 多謝hotpower大哥! 21icbbs真好 |
|
| 9樓: | >>參與討論 |
| 作者: hotpower 于 2005/6/3 18:04:00 發(fā)布:
別偷懶... http://blog.21ic.org/blog.asp?NAME=hotpower |
|
| 10樓: | >>參與討論 |
| 作者: skyer 于 2005/6/6 16:25:00 發(fā)布:
非常感謝! 多謝多謝! |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |