音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場(chǎng)網(wǎng)
技術(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ī)
請(qǐng)教SST89E564RD的內(nèi)部EEPROM的讀寫
 各位用的SST89E564RD這顆MCU嗎,它的SPEC上講可以將BLOCK1的8K ROM映射到數(shù)據(jù)空間當(dāng)作EEPROM來用,但又沒有詳細(xì)解釋。
我想問的是:我應(yīng)該如何做才能將BLOCK1空間的FLASH ROM當(dāng)作EEPROM來用??如何讀寫?
我以前MICROCHIPPIC16F628A,它里面有專門的積存器來存放EEPROM的地址和數(shù)據(jù),但SST89E564RD好象就沒有;用過SST89E564RD的大蝦幫幫我!
先謝了

2樓: >>參與討論
cxd731
沒人用過嗎?
 不可能吧,我自己先頂一下,不然沉得太快了

3樓: >>參與討論
cxd731
哪6個(gè)寄存器????
 我又耐心地把SPEC從頭翻到尾,還是沒看到什么地方可以設(shè)置允許?樓上老兄,幫就幫到底吧,是哪6個(gè)寄存器?這幾天SST的FAE出差了,不然我也不會(huì)上來麻煩大家的。

4樓: >>參與討論
cxd731
哪位大哥賜教一下吧
 
5樓: >>參與討論
fsaok
.
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
謝謝fsaok
 我之前把IAP模式理解錯(cuò)了,哈哈,我太傻了;
再次感謝

7樓: >>參與討論
hotpower
調(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
再次感動(dòng)
 多謝hotpower大哥!
21icbbs真好

9樓: >>參與討論
hotpower
別偷懶...
 

http://blog.21ic.org/blog.asp?NAME=hotpower

10樓: >>參與討論
skyer
非常感謝!
多謝多謝!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
有人搞過視頻字符疊加的電路嗎?
求教:?jiǎn)纹瑱C(jī)的顯示和鍵盤接口電路設(shè)計(jì)。
請(qǐng)教:怎樣調(diào)試ds18b20?
請(qǐng)問: AT89C2051市場(chǎng)上是否有假冒品?
80c552的A/D轉(zhuǎn)換問題
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)