基于DSP和X5165芯片的非易失性數(shù)據(jù)存儲(chǔ)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
數(shù)字信號(hào)處理器(DSP)的應(yīng)用日趨廣泛,而重要數(shù)據(jù)的非易失性保存問(wèn)題常常是DSP應(yīng)用中不可缺少的一部分。目前,非易失性的數(shù)據(jù)保存方法多采用EEPROM(電可擦可編程只讀存儲(chǔ)器)芯片。本文介紹的X5165芯片,可以較好地完成非易失性數(shù)據(jù)的保存問(wèn)題。
在某型號(hào)交流伺服系統(tǒng)中,要求能夠隨時(shí)對(duì)各種參數(shù)設(shè)置進(jìn)行非易失性保存??紤]到具有串行外設(shè)接口(Serial Peripheral Interface,SPI)的芯片使用簡(jiǎn)單,占用PCB板面積小等優(yōu)點(diǎn),故,采用了XICOR公司生產(chǎn)的16kbit SPI EEPROM芯片來(lái)存儲(chǔ)重要數(shù)據(jù)。
1 TMS320LF2407A的串行外設(shè)接口簡(jiǎn)介
TMS320LF2407A是TI公司開(kāi)發(fā)生產(chǎn)的16位定點(diǎn)DSP。TMS320LF2407A采用CMOS工藝制造,工作頻率為40MHz,指令周期為25ns。其片內(nèi)集成了豐富的資源,支持在線(xiàn)編程,非常便于開(kāi)發(fā)設(shè)計(jì),且價(jià)格低廉,已經(jīng)進(jìn)入了傳統(tǒng)單片機(jī)所占據(jù)的領(lǐng)域。
TMS320LF2407A器件,其片內(nèi)資源包括了4個(gè)引腳的串行外設(shè)模塊。SPI是一個(gè)高速、同步串行I/O口,它允許長(zhǎng)度可編程的位移入或者移出。通常,SPI用于DSP處理器和其它芯片之間的通信。它允許與帶SPI接口的各種類(lèi)型的芯片相連。SPI的主/從操作也支持多處理器的通信。
TMS320LF2407A的SPI接口有以下特點(diǎn):?
(1)4個(gè)外部引腳:SPISOMI(SPI從動(dòng)輸出/主動(dòng)輸入引腳),SPISIMO(SPI從動(dòng)輸入/主動(dòng)輸出引腳),SPISTE(SPI從動(dòng)發(fā)送使能引腳),SPICLK(SPI串行時(shí)鐘引腳)。?
(2)發(fā)送和接收操作可通過(guò)中斷或查詢(xún)方法來(lái)完成。?
(3)可編程波特率,當(dāng)頻率為40MHz時(shí),波特率可達(dá)10Mbps。?
(4)數(shù)據(jù)字長(zhǎng):1~16個(gè)數(shù)據(jù)位。?
(5)4種時(shí)鐘方案(由時(shí)鐘極性和時(shí)鐘相位控制),如圖1所示。四種不同的時(shí)鐘方式如下:
·無(wú)延時(shí)的下降沿:串行外設(shè)接口在SPICLK信號(hào)下降沿發(fā)送數(shù)據(jù),在SPICLK信號(hào)上升沿接收數(shù)據(jù);?
·有延時(shí)的下降沿:串行外設(shè)接口在SPICLK信號(hào)下降沿之前的半個(gè)周期時(shí)發(fā)送數(shù)據(jù),在SPICLK信號(hào)下降沿接收數(shù)據(jù);?
·無(wú)延時(shí)的上升沿:串行外設(shè)接口在SPICLK信號(hào)上升沿發(fā)送數(shù)據(jù),在SPICLK信號(hào)下降沿接收數(shù)據(jù);?
·有延時(shí)的上升沿:串行外設(shè)接口在SPICLK信號(hào)上升沿之前的半個(gè)周期時(shí)發(fā)送數(shù)據(jù),在SPICLK信號(hào)上升沿接收數(shù)據(jù)。?
(6) 同時(shí)接收和發(fā)送操作。?
2 硬件連接電路?
X5165的主要特點(diǎn)如下:(1)可編程的看門(mén)狗定時(shí)器;(2)工作電壓管理,并產(chǎn)生復(fù)位信號(hào);(3)SPI接口,波特率可達(dá)2Mbps;(4)數(shù)據(jù)塊鎖定功能和片內(nèi)偶然性的寫(xiě)保護(hù)功能等。
TMS320LF2407A能與多片不同種類(lèi)的帶SPI接口的芯片相連。本文給出了該芯片與X5165的硬件連接,如圖2所示。通過(guò)SPISIMO引腳發(fā)送數(shù)據(jù),SPISOMI引腳接收數(shù)據(jù),SPICLK引腳發(fā)送時(shí)鐘信號(hào)。兩個(gè)IO引腳IOPB4、IOPB5用來(lái)控制(寫(xiě)保護(hù))和片選信號(hào)。?
[!--empirenews.page--]
3 X5165的工作原理
X5165包含了一個(gè)8位的指令寄存器。SI引腳上輸入的數(shù)據(jù)在SCK上升沿被鎖存,片內(nèi)的數(shù)據(jù)在SCK下降沿輸出到SO引腳上。所有的指令、地址和數(shù)據(jù)都是先傳輸最高位,指令、數(shù)據(jù)為8位,地址為16位。時(shí)鐘SCK允許操作過(guò)程中停止并在其后恢復(fù)。根據(jù)圖1所示,應(yīng)該選用“無(wú)延時(shí)的上升沿”這一時(shí)鐘方式,且數(shù)據(jù)字長(zhǎng)為8位。X5165的指令集如表1所示。
X5165包括一個(gè)8位狀態(tài)寄存器,格式如表2所示。?
表2中,WIP位是指出非易失性寫(xiě)操作是否忙,只讀位,為1,寫(xiě)操作正在進(jìn)行,為0,無(wú)寫(xiě)操作。WEL是寫(xiě)使能鎖存狀態(tài)位,它可以用WREN指令置位,用WRDI指令復(fù)位。WPEN與引腳組合,實(shí)現(xiàn)保護(hù)存儲(chǔ)陣列和狀態(tài)寄存器位WPEN、BL1、BL0、WD1、WD0,是非易失性位,可用WRSR指令對(duì)WPEN位編程。其組合如表3所示。
BL1、BL0是存儲(chǔ)器塊保護(hù)位,為非易失性位。其組合可通過(guò)WRSR指令編程,可以保護(hù)存儲(chǔ)器陣列范圍,如表4所示。
選定保護(hù)的塊,用戶(hù)只能讀不能寫(xiě)。
WD1、WD0是看門(mén)狗定時(shí)器位,為非易失性位,可用WRSR指令進(jìn)行編程。
在讀狀態(tài)寄存器時(shí),先將片選信號(hào)拉到低電平,然后通過(guò)SPI接口發(fā)送數(shù)據(jù),先發(fā)送RDSR指令,接著提供8個(gè)SCK脈沖,就可以將寄存器的內(nèi)容讀回到TMS320LF2407A中。
在寫(xiě)狀態(tài)寄存器時(shí),參考表3,可知,必須先用WREN指令將WEL位置位。由于本文提供的電路能控制引腳,故,直接將該引腳電平拉為高電平,就可以對(duì)狀態(tài)寄存器進(jìn)行寫(xiě)操作。在寫(xiě)狀態(tài)寄存器時(shí),先將片選信號(hào)拉到低電平,然后發(fā)送數(shù)據(jù),先發(fā)送WRSR指令,然后發(fā)送8位待寫(xiě)入的內(nèi)容。注意,狀態(tài)寄存器的只讀位不受影響。
在讀存儲(chǔ)陣列時(shí),先將片選信號(hào)拉到低電平,然后通過(guò)SPI接口發(fā)送數(shù)據(jù),先發(fā)送READ指令,接著發(fā)送16位地址,選定的存儲(chǔ)單元中的數(shù)據(jù)在SCK下降沿讀回TMS320LF2407A中。每個(gè)數(shù)據(jù)被送出后,芯片內(nèi)的地址計(jì)數(shù)器自動(dòng)加1,繼續(xù)提供SCK脈沖,可讀出下一個(gè)存儲(chǔ)單元的數(shù)據(jù)。當(dāng)?shù)刂酚?jì)數(shù)器達(dá)到$07FFH時(shí),自動(dòng)翻轉(zhuǎn)到$0000H單元。讀數(shù)據(jù)完成后,將片選信號(hào)拉到高電平。[!--empirenews.page--]
在寫(xiě)操作進(jìn)行之前,參考表3,可知必須置位“WEL”。然后,需要將非保護(hù)塊設(shè)置為可讀寫(xiě)方式。根據(jù)圖2表示的連接,可知,只需要將引腳電平拉高,就可以進(jìn)行寫(xiě)操作。當(dāng)然也可以通過(guò)對(duì)WPEN位進(jìn)行編程實(shí)現(xiàn)。在寫(xiě)存儲(chǔ)陣列時(shí),先將片選信號(hào)拉到低電平,接著通過(guò)SPI接口發(fā)送數(shù)據(jù),先發(fā)送WRITE指令,然后發(fā)送16位地址,接著發(fā)送8位的數(shù)據(jù)。每個(gè)數(shù)據(jù)被送出后,芯片內(nèi)的地址計(jì)數(shù)器自動(dòng)加1,繼續(xù)提供SCK脈沖,可繼續(xù)將數(shù)據(jù)寫(xiě)入下一個(gè)存儲(chǔ)單元。當(dāng)?shù)刂酚?jì)數(shù)器達(dá)到$07FFH時(shí),自動(dòng)翻轉(zhuǎn)到$0000H單元。寫(xiě)數(shù)據(jù)完成后,將片選信號(hào)拉到高電平。值得注意的是,每次寫(xiě)操作完成后,都必須查詢(xún)WIP位來(lái)確定寫(xiě)操作是否完成,否則,如果連續(xù)進(jìn)行兩次寫(xiě)操作,可能會(huì)出錯(cuò)。
4 X5165相關(guān)操作的軟件實(shí)現(xiàn)
TMS320LF2407A的串行外設(shè)接口模塊很容易實(shí)現(xiàn)對(duì)X5165的各種操作,且由于該DSP具有非常豐富的片內(nèi)資源,因此,使用了兩個(gè)IO引腳控制信號(hào)和片選信號(hào)。
首先是TMS320LF2407A的SPI模塊初始化工作。本文給出實(shí)際使用的源代碼如下:
下面的程序用來(lái)實(shí)現(xiàn)X5165的讀操作。因?yàn)門(mén)MS320LF2407A是16位機(jī),故,一次讀寫(xiě)兩個(gè)8位數(shù)據(jù)。源代碼如下:
[!--empirenews.page--]
下面是發(fā)送子程序,寄存器ACC載入待發(fā)送的數(shù)據(jù),讀回的數(shù)據(jù)也返回到ACC中,源代碼如下:
SEND——DATA:LDP #SPITXBUF>>7?
SACL SPITXBUF;待發(fā)送的數(shù)據(jù)?
LDP #SPISTS>>7?
S——5165: BIT SPISTS,BIT6 ;檢測(cè)SPI——INT位?
BCND S——X5165,NTC ;如果SPI——INT為0,繼續(xù)查詢(xún)?
LACC SPIRXBUF;讀回?cái)?shù)據(jù),保存在ACC中?
RETP?
限于篇幅,TMS320LF2407A對(duì)X5165的其他軟件操作不再贅述。按照上面的硬件、軟件的設(shè)計(jì)思想,已經(jīng)將X5165成功地應(yīng)用于某型號(hào)的交流伺服系統(tǒng)中。