新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > DSP的SPI口和串行EEPROM在變頻器中的應(yīng)用

DSP的SPI口和串行EEPROM在變頻器中的應(yīng)用

作者: 時間:2009-05-07 來源:網(wǎng)絡(luò) 收藏

圖3 讀狀態(tài)寄存器時序圖

  以下是讀狀態(tài)寄存器子程序:

  unsigned int RSDR_(void)

 ?。?unsigned int readspibuftrue;

 ?。?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/SPI">PC1=0xBF; /*置低STE引腳,從而選通*/

 ?。?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/SPI">DAT=RDSR; /*發(fā)送x5168的讀狀態(tài)寄存器命令字*/

  while((*SPISTS0x40)!=0x40){} /*等待SPI寫結(jié)束*/

  readspibuftrue=*SPIBUF; /*讀SPIBUF寄存器,清除SPI INT FLAG 位*/

 ?。猄PIDAT=0; /*發(fā)送偽數(shù)據(jù)*/

  while((*SPISTS0x40)!=0x40){} /*等待SPI讀/寫結(jié)束*/

  readspibuftrue=*SPIBUF; /*讀SPIBUF寄存器,讀取狀態(tài)寄存器*/

  return readspibuftrue;

 ?。?p>  二、寫操作

  a).在試圖向器件寫入數(shù)據(jù)前必須首先通過發(fā)送WREN指令來設(shè)置寫使能鎖存WEL(見圖4)。/CS 先被拉低,接著向器件輸入WREN指令(00000110B)。在指令的所有的8位傳送完后,/CS 必須被拉高。如果用戶在發(fā)送完WREN指令后,沒有將/CS 拉高而繼續(xù)寫操作則該寫操作將被忽略。

圖4 寫使能時序圖

  寫使能命令子程序如下:

  void WREN_X5168(void) /*寫使能*/

 ?。?*SPIPC1=0xBF; /*置低SPISTE引腳,從而選通X5168*/

 ?。猄PIDAT=WREN; /*發(fā)送X5168的寫使能命令字*/

  while((*SPISTS0x40)!=0x40){} /*等待SPI寫結(jié)束*/

  readspibuf=*SPIBUF; /*讀SPIBUF寄存器,清除SPI INT FLAG 位*/

  *SPIPC1|=0x40; /*置高SPISTE引腳,從而禁止X5168*/

 ?。?p>  b).為了向存儲器陣列寫入數(shù)據(jù)用戶接著發(fā)送寫WRITE 指令(00000010B),跟著是16位地址和被寫入的數(shù)據(jù)。任何不用的地址位都被指令為“0”,寫操作最少要用32個時鐘,/CS 必須為低并在該操作期間一直保持為低。如果地址計數(shù)器達(dá)到一頁的末端而時鐘還在繼續(xù),時計數(shù)器將返回至該頁的首地址,并覆蓋任何之前已寫入的數(shù)據(jù)。對于將完成的頁面寫操作(字節(jié)或頁面寫)而言,在寫入的最后一個數(shù)據(jù)的位0被同時輸入后,/CS只能被拉高。如果它在其它任何時候被拉高則不能完成寫操作(見圖5)。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉