<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

            unsigned int RSDR_(void)

           ?。?unsigned int readspibuftrue;

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

           ?。?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/SPI">SPIDAT=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 位*/

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

            }

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

          圖5 寫陣列時序圖

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

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

           ?。?unsigned int I;

            WREN_X5168(); /*寫使能*/

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

           ?。猄PIDAT=WRITE; /*發(fā)送x5168的寫狀態(tài)寄存器命令字*/

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

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

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

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

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

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

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

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

            for (I=0;I

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

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

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

           ?。猄PIDAT =*(RA_ADDR+I) ; /*發(fā)送數(shù)據(jù)用數(shù)組傳送,傳送數(shù)據(jù)第八位*/

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

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

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

           ?。?P>  c).為向狀態(tài)寄存器寫數(shù)據(jù),在WRSR指令(00000001B)之后應(yīng)跟隨被寫入的數(shù)據(jù)(見圖6),數(shù)據(jù)位0和位1必須為“0”。

          圖6 寫狀態(tài)寄存器時序圖

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

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

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

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

           ?。猄PIDAT=WRSR; /*發(fā)送X5168的寫狀態(tài)寄存器命令字*/

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

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

           ?。猄PIDAT=COM; /*STATUS_REG發(fā)送狀態(tài)字*/

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

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

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

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

           ?。?P>  以上子程序?qū)崿F(xiàn)了DSP對X5168的讀寫功能,在主程序中調(diào)用這些子程序就可實(shí)現(xiàn)對X5168的操作。

          5 結(jié)束語

            由于篇幅的原因,本文沒有過多的講述DSP的串行外設(shè)接口和X5168的各項(xiàng)特性,這些說明書上都有敘述且很具體。而是把重點(diǎn)放在了講述DSP擴(kuò)展EEPROM應(yīng)用的軟硬件設(shè)計(jì),該設(shè)計(jì)已成功應(yīng)用在筆者開發(fā)的變頻器中,經(jīng)過反復(fù)測試,運(yùn)行可靠。


          上一頁 1 2 下一頁

          關(guān)鍵詞: TMS320F240 SPI EEPROM X5168

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();