當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]敘述了TI公司的TMS320F241型DSP的串行外設(shè)接口(SPI)擴(kuò)展EEPROM的軟、硬件實(shí)現(xiàn)方法。

作者email:   chiristinxl@hotmail.com

    摘要:敘述了TI公司的TMS320F241型DSP的串行外設(shè)接口(SPI)擴(kuò)展EEPROM的軟、硬件實(shí)現(xiàn)方法。
    關(guān)鍵詞:DSP  SPI  EEPROM  X5043

    1.引言

    TMS320F241型DSP是目前應(yīng)用比較廣泛的一款定點(diǎn)DSP,它具有20MIPS的指令執(zhí)行速度,強(qiáng)大的內(nèi)部事件管理器、I/O端口和其他外圍設(shè)備。其中,串行外設(shè)接口(SPI)是一個(gè)高速同步串行輸入/輸出(I/O)端口,它允許一個(gè)具有可編程長(zhǎng)度(1到16位)的串行位流,以可編程的位傳送速率從設(shè)備移入或移出。SPI通常用于DSP控制器和外部器件或其它控制器間的通訊。

    在開發(fā)DSP系統(tǒng)時(shí),某些情況下會(huì)讀取或者存儲(chǔ)一些定值,這時(shí)我們就需要擴(kuò)展EEPROM。具有SPI接口的串行EEPROM均可被TMS320F241直接邏輯擴(kuò)展,方便易行。X5043是Xicor公司最高時(shí)鐘速率為3.3MHz帶有塊鎖保護(hù)的4Kbits的CMOS串行EEPROM。該器件內(nèi)部組織陣列是X8位,具有串行外圍接口(SPI)和軟件協(xié)議的特點(diǎn),允許在簡(jiǎn)單的四線總線上工作;該器件利用Xicor專有的直接寫入晶片提供最小為10萬次擦寫和最少100年的數(shù)據(jù)保存期。

    2.硬件設(shè)計(jì)

    X5043與TMS320F241型DSP的連接關(guān)系如圖1所示。DSP作為主控制器,工作于主模式下,SPISIMO為DSP的數(shù)據(jù)發(fā)送端,連接到X5043的數(shù)據(jù)接收端(SI);SPISOMI為DSP的數(shù)據(jù)接收端,連接到X5043的數(shù)據(jù)發(fā)送端(SO);SPISTE配置成I/O口連接到X5043的片選端(/CS);SPICLK為SPI數(shù)據(jù)傳送的時(shí)鐘信號(hào),連接到X5043的串行時(shí)鐘端(SCK),串行時(shí)鐘由DSP控制。DSP的數(shù)據(jù)在SPISIMO引腳上輸出并從SPISOMI上鎖存, DSP通過寫入SPIDAT寄存器的數(shù)據(jù)啟動(dòng)SPICLK串行時(shí)鐘信號(hào)從而啟動(dòng)數(shù)據(jù)傳送,當(dāng)8位串行位流傳送完畢后,SPICLK信號(hào)中止,傳送結(jié)束。

    3.軟件設(shè)計(jì)

    3.1工作模式的選擇

    TMS320F241的SPI接口有可選擇的四種不同的時(shí)鐘模式,如何選擇時(shí)鐘模式是它與各種擴(kuò)展SPI接口器件實(shí)現(xiàn)時(shí)鐘同步的關(guān)鍵。X5043的數(shù)據(jù)在時(shí)鐘下降沿從SO引腳上輸出并在時(shí)鐘上升沿從SI引腳上鎖存。讀操作時(shí),在其從SI引腳輸入的最低位地址所對(duì)應(yīng)的時(shí)鐘下降沿,其SO引腳開始輸出數(shù)據(jù),如圖5所示。

    作為主器件的DSP可以選擇 ‘上升沿,無延時(shí)’和‘上升沿、有延時(shí)’兩種時(shí)鐘工作模式?!仙兀瑹o延時(shí)’模式與X5043的工作模式一致,數(shù)據(jù)在SPICLK信號(hào)的時(shí)鐘上升邊沿(從低電平到高電平)從移位寄存器移出在SI引腳上鎖存,在時(shí)鐘下降邊沿(從高電平到低電平)從SO引腳上輸出的數(shù)據(jù)鎖存到移位寄存器中?!仙?,有延時(shí)’模式如圖4所示,數(shù)據(jù)在SPICLK信號(hào)上升沿前半個(gè)周期從移位寄存器移出,在緊接著的上升邊沿在SI引腳上鎖存,在時(shí)鐘下降邊沿(從高電平到低電平)從SO引腳上輸出的數(shù)據(jù)鎖存到移位寄存器中。

    3.2波特率的選擇

    SPI波特率可以由如下兩種情況計(jì)算得出:

    (1)對(duì)于SPIBRR=3~127,波特率的計(jì)算公式為:

    SPI波特率=CLKOUT/(SPIBRR+1)

    (2)對(duì)于SPIBRR=0~2,波特率的計(jì)算公式為:

    SPI波特率=CLKOUT/4

    式中,CLKOUT=器件的CPU時(shí)鐘頻率;SPIBRR=主SPI器件中的SPIBRR內(nèi)容。

    X5043最大的SPI波特率為3.3MHz,若DSP的CPU時(shí)鐘頻率CLKOUT=16MHz,則:
最大的SPI波特率 =16×106/(SPIBRR+1)≤3.3×106Hz
SPIBRR≥4+9

    3.3 DSP的數(shù)據(jù)傳輸格式

    DSP中SPI有16位的發(fā)送和接收能力,且接收和發(fā)送均是雙緩沖。所有數(shù)據(jù)寄存器都是16位寬的,而X5043的地址、數(shù)據(jù)寄存器均是8位的,將DSP中SPI傳輸字符長(zhǎng)度設(shè)置成8位寬。要向X5043存儲(chǔ)數(shù)據(jù)時(shí),DSP將一個(gè)8位字節(jié)長(zhǎng)度的數(shù)據(jù)寫入SPIDAT或SPITXBUF的高8位上如圖2所示,在時(shí)鐘信號(hào)的作用下,以左對(duì)齊方式發(fā)送,先發(fā)送數(shù)據(jù)的最高位。DSP接收一個(gè)8位字節(jié)長(zhǎng)度的數(shù)據(jù),是以右對(duì)齊方式接收如圖3所示,8位字節(jié)長(zhǎng)度的數(shù)據(jù)寫入SPIDAT或SPIRXBUF 的低8位上。

    3.4各控制寄存器設(shè)置

LDP   #SPICCR>>7
SPLK  #0007h,SPICCR
;復(fù)位SPI, 8個(gè)字符長(zhǎng)度
SPLK  #000Eh,SPICTL
;主模式,使能TALK,禁止SPI的中斷
;上升沿發(fā)送,下降沿接收,有延時(shí)
SPLK  #000Fh,SPIBRR
;設(shè)置SPI的傳輸波特率
SPLK  #0087h,SPICCR
;SPI準(zhǔn)備好發(fā)送或接收下一字符
3.5程序設(shè)計(jì)
RAM塊中的變量定義:
.bss  SPI_Xdata,1
;SPI數(shù)據(jù)傳輸暫存器
.bss  address1,1
;EEPROM存儲(chǔ)器地址暫存器
.bss  data1,1
;EEPROM存儲(chǔ)器數(shù)據(jù)暫存器

X5043存儲(chǔ)器地址:
WREN       .set  0600h
;設(shè)置寫使能鎖存指令地址
WRDI       .set  0400h
;復(fù)位寫使能鎖存指令地址
RSDR       .set  0500h
;讀狀態(tài)寄存器指令地址
WRSR       .set  0100h
;寫狀態(tài)寄存器指令地址
READh      .set  0B00h
READl      .set  0300h
;讀存儲(chǔ)器陣列數(shù)據(jù)指令地址
WRITEh     .set  0A00h
WRITEl     .set  0200h
;寫存儲(chǔ)器陣列數(shù)據(jù)指令地址

3.5.1 DSP的SPI數(shù)據(jù)發(fā)送、接收子程序代碼
XMIT_VALUE:
LDP   #0
  LACC  SPI_Xdata
  LDP   #SPITXBUF>>7
  SACL  SPITXBUF
;寫需發(fā)送的值到SPI傳輸緩沖器
XMIT_RDY:
  LDP   #SPISTS>>7
  BIT   SPISTS,BIT6
  BCND  XMIT_RDY,NTC
;測(cè)試SPI_INT位,如果SPI_INT=0,則重復(fù)循環(huán)
;等待數(shù)據(jù)發(fā)送完畢進(jìn)行下一步操作
 LDP   #SPIRXBUF>>7
  LACL  SPIRXBUF
;讀取數(shù)據(jù)清除SPI_INT標(biāo)志位
 LDP #0
 SACL  SPI_Xdata
;將接收的值存入數(shù)據(jù)傳輸暫存器
RET

3.5.2 X5043內(nèi)部非易失性寫判斷子程序代碼
RSDR_WIP:
SPISTE_LOW
;置低SPISTE引腳,從而選通X5043
LDP  #0
SPLK #RSDR,SPI_Xdata
CALL XMIT_VALUE
;寫讀狀態(tài)寄存器地址,高8位
SPISTE_HIGH
;置高SPISTE引腳,禁止X5043
LDP   #0
BIT  SPI_Xdata,BIT0
BCND RSDR_WIP,TC
;測(cè)試狀態(tài)寄存器WIP位。如果WIP=1,正在進(jìn)行內(nèi)部寫操作。
;等待內(nèi)部寫操作完成進(jìn)行下一步操作
RET

    使用上述判斷子程序能夠保證X5043完成內(nèi)部寫操作。向X5043存儲(chǔ)器陣列寫入數(shù)據(jù)時(shí)后面將跟隨一次非易失性寫操作。可以讀狀態(tài)寄存器檢查WIP位,若WIP為高則非易失性寫正在進(jìn)行。X5043存儲(chǔ)器非易失性寫周期為10mS,也可以在一個(gè)寫操作完成后作一個(gè)大于10mS的延時(shí),以保證X5043完成內(nèi)部寫操作。

    3.5.3向X5043 EEPROM存儲(chǔ)器陣列中寫數(shù)據(jù)

    如圖4所示,向EEPROM存儲(chǔ)器陣列寫入任何數(shù)據(jù)之前,必須用WREN指令設(shè)置WEL位。首先將CS拉低,向器件輸入WREN指令,然后拉高/CS。再次拉低/CS并輸入WRITE指令,緊跟隨8位地址,然后是要寫入的數(shù)據(jù)。WRITE指令的位3是地址位A8,該位選擇陣列的高半部分或是低半部分。如果/CS在WREN和WRITE之間不變?yōu)楦?,則WRITE指令將被忽略。為了完成寫操作,在最后一個(gè)被寫入的數(shù)據(jù)字節(jié)的位0完成后/CS必須被拉高。如果它在任何其它時(shí)間被拉高,寫操作將不完成。

寫1個(gè)字節(jié)數(shù)據(jù)的程序代碼如下:
WRITE:
     KICK_DOG
     CALL RSDR_WIP
     ;讀狀態(tài)寄存器檢查WIP位
     ;寫WREN指令代碼段
     SPISTE_LOW
;置低SPISTE引腳,從而選通X5043
     LDP   #0
     SPLK  #WREN,SPI_Xdata
     CALL XMIT_VALUE
     SPISTE_HIGH
;置高SPISTE引腳,禁止X5043
     CALL RSDR_WIP
     ;讀狀態(tài)寄存器檢查WIP位
     ;寫WRITE指令/地址/數(shù)據(jù)代碼段
     SPISTE_LOW
;置低SPISTE引腳,從而選通X5043
     LDP   #0
     SPLK  #WRITEl(h),SPI_Xdata
     CALL XMIT_VALUE
   ;輸入寄存器指令
     LDP   #0
     LACL  address1
     SACL  SPI_Xdata
     CALL  XMIT_VALUE
     ;輸入寄存器地址
     LDP   #0
     LACL  data1
     SACL  SPI_Xdata
     CALL  XMIT_VALUE
     ;輸入寄存器數(shù)據(jù)
     SPISTE_HIGH
     ;置高SPISTE引腳,禁止X5043
     CALL  RSDR_WIP
     ;讀狀態(tài)寄存器檢查WIP位,X5043完成內(nèi)部非易失性寫
     RET

    3.5.4從X5043 EEPROM中讀取數(shù)據(jù)

如圖5所示,/CS只要拉低選中器件。8位READ指令送到器件,后面跟隨8位地址,就可以讀取指定地址下的EEPROM存儲(chǔ)器陣列中的數(shù)據(jù)。READ指令的位3選擇器件的高半部分或是低半部分。在READ指令碼和地址送出后,在選定地址的存儲(chǔ)在存儲(chǔ)器中的數(shù)據(jù)即在SO線上移出。讀操作由拉高/CS而終止。
讀1個(gè)字節(jié)數(shù)據(jù)的程序代碼如下:
  READ:
 KICK_DOG
 CALL  RSDR_WIP
    ;讀狀態(tài)寄存器檢查WIP位
    SPISTE_LOW
;置低SPISTE引腳,從而選通X5043
    LDP   #0
    SPLK  #READl(h),SPI_Xdata
    CALL XMIT_VALUE
    ;輸入寄存器指令
    LDP   #0
    LACL  address1
    SACL  SPI_Xdata
    CALL  XMIT_VALUE
   ;輸入寄存器地址
    LDP   #0
    LACL  data1
    SACL  SPI_Xdata
    CALL  XMIT_VALUE
    ;此data1無意義,使SPI口連續(xù)提供時(shí)鐘信號(hào),使數(shù)據(jù)輸出
    ;輸出的數(shù)據(jù)存儲(chǔ)在SPI_Xdata中
    SPISTE_HIGH
    ;置高SPISTE引腳,禁止X5043
    RET

    由于X5043是一個(gè)半雙工器件,在WRITE子程序中從SPIRXBUF中讀出來的數(shù)據(jù)是無效的,同時(shí),在READ子程序中寫向SPITXBUF的data1數(shù)據(jù)也是無效的,只起啟動(dòng)發(fā)送時(shí)鐘的作用。

    4.結(jié)束語

    DSP可以連續(xù)的向EEPROM中寫入多至16個(gè)字節(jié)的數(shù)據(jù)。唯一的限制是16個(gè)字節(jié)必須在同一頁中。一頁地址由[X XXXX 0000]開始,由[X XXXX 1111]結(jié)束。如果字節(jié)地址達(dá)到了頁中的最后字節(jié)而時(shí)鐘仍在繼續(xù),則計(jì)數(shù)器將返轉(zhuǎn)至該頁的第一個(gè)地址并重寫前面已寫過的數(shù)據(jù)。在連續(xù)地提供時(shí)鐘脈沖的條件下儲(chǔ)存在存儲(chǔ)器地址處的數(shù)據(jù)可被連續(xù)地讀出。在每個(gè)數(shù)據(jù)字節(jié)被移出后,器件即自動(dòng)將地址增加至下一個(gè)更高的地址。當(dāng)達(dá)到最高的地址時(shí),地址計(jì)數(shù)器即翻轉(zhuǎn)到地址00H,使讀周期無限制地連續(xù)下去。上面只給出了X5043單個(gè)字節(jié)的讀寫程序代碼,對(duì)于多個(gè)字節(jié)或一頁16個(gè)字節(jié)的讀寫程序代碼可根據(jù)單個(gè)字節(jié)的讀寫程序代碼進(jìn)行擴(kuò)展給出。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉