新聞中心

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

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

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

        圖5 寫陣列時序圖

          以下是寫陣列子程序,RA_ADDR為存儲要寫數據數組的首地址,EEP_ADDR為要寫入的首地址,N要存儲數據的個數。

          void WRITE_(unsigned int * RA_ADDR, unsigned int EEP_ADDR, unsigned int N)

         ?。?unsigned int I;

          WREN_(); /*寫使能*/

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

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

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

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

         ?。猄PIDAT=EEP_ADDR>>8; /*先發送高位地址在發送低位地址*/

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

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

         ?。猄PIDAT=EEP_ADDR; /*先發送高位地址在發送低位地址*/

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

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

          for (I=0;I

         ?。?*SPIDAT =*(RA_ADDR+I)>>8 ; /*發送數據用數組傳送,傳送數據高八位*/

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

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

          *SPIDAT =*(RA_ADDR+I) ; /*發送數據用數組傳送,傳送數據第八位*/

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

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

         ?。?p> ?。猄PIPC1|=0x40; /*置高SPISTE引腳,從而禁止X5168*/

         ?。?p>  c).為向狀態寄存器寫數據,在WRSR指令(00000001B)之后應跟隨被寫入的數據(見圖6),數據位0和位1必須為“0”。

        圖6 寫狀態寄存器時序圖

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

          void WRSR_X5168(unsigned int COM) /*寫狀態*/

         ?。?WREN_X5168(); /*寫使能*/

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

         ?。猄PIDAT=WRSR; /*發送X5168的寫狀態寄存器命令字*/

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

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

          *SPIDAT=COM; /*STATUS_REG發送狀態字*/

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

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

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

          TIMEDEL(5); /*延時1us*/

         ?。?p>  以上子程序實現了對X5168的讀寫功能,在主程序中調用這些子程序就可實現對X5168的操作。

        5 結束語

          由于篇幅的原因,本文沒有過多的講述外設接口和X5168的各項特性,這些說明書上都有敘述且很具體。而是把重點放在了講述擴展EEPROM的軟硬件設計,該設計已成功在筆者開發的中,經過反復測試,運行可靠。


        上一頁 1 2 3 4 5 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 盐津县| 京山县| 呼伦贝尔市| 敦化市| 洛扎县| 盘锦市| 青神县| 西丰县| 高唐县| 亚东县| 尉犁县| 屏东市| 南宫市| 丰县| 资阳市| 万州区| 江津市| 会东县| 来宾市| 海阳市| 平定县| 屯门区| 汉川市| 张家川| 饶平县| 东山县| 临夏市| 桓台县| 成安县| 尤溪县| 疏附县| 凌源市| 沈丘县| 巫溪县| 武定县| 南华县| 弥渡县| 镇远县| 华坪县| 九寨沟县| 南昌市|