• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > DSP的SPI口和串行EEPROM在變頻器中的應用

    DSP的SPI口和串行EEPROM在變頻器中的應用

    作者: 時間:2009-05-07 來源:網絡 收藏

    圖3 讀狀態寄存器時序圖

      以下是讀狀態寄存器子程序:

      unsigned int RSDR_(void)

      { unsigned int readspibuftrue;

      *PC1=0xBF; /*置低STE引腳,從而選通*/

      *DAT=RDSR; /*發送x5168的讀狀態寄存器命令字*/

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

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

      *SPIDAT=0; /*發送偽數據*/

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

      readspibuftrue=*SPIBUF; /*讀SPIBUF寄存器,讀取狀態寄存器*/

      return readspibuftrue;

      }

      二、寫操作

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

    圖4 寫使能時序圖

      寫使能命令子程序如下:

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

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

      *SPIDAT=WREN; /*發送X5168的寫使能命令字*/

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

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

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

      }

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



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 平乡县| 察哈| 潼关县| 达日县| 汉川市| 格尔木市| 江永县| 碌曲县| 栖霞市| 新余市| 弋阳县| 龙江县| 健康| 平远县| 西青区| 哈巴河县| 奈曼旗| 淮北市| 库尔勒市| 山东省| 荔波县| 贵阳市| 桐梓县| 防城港市| 夏邑县| 赤水市| 克什克腾旗| 潍坊市| 舒兰市| 枣强县| 遂川县| 炎陵县| 丰宁| 仪征市| 凤城市| 全南县| 平远县| 德格县| 大埔县| 新泰市| 衡东县|