DSP在電測量系統(tǒng)中SPI閃速引導(dǎo)的實現(xiàn)
關(guān)鍵詞:電測系統(tǒng),TMS320VC5509A,SPI閃存,DARAM,SARAM
1.引言
以DSP為中心的應(yīng)用系統(tǒng),要實現(xiàn)系統(tǒng)的用戶軟件程序脫離仿真環(huán)境獨立運行工作,就需要在片外擴展非易失性存儲器FLASH、EPROM或者用上位機向DSP下載程序。在系統(tǒng)上電復(fù)位后,用DSP的引導(dǎo)加載器把應(yīng)用程序從外部存儲器FLASH、EPROM或上位機中引導(dǎo)到DSP芯片內(nèi)部雙訪問存儲(DARAM)單元或單訪問存儲(SARAM)單元或外部擴展RAM中。目前應(yīng)用最為廣泛的閃存,具有存取速度快、電可擦除、容量大、在線可編程、價格便宜等優(yōu)點,已成為新一代DSP系統(tǒng)中不可缺的重要組成部分。
在本測量系統(tǒng)中,利用Atmel公司閃存AT25F1024作為TMS320VC5509A的外部閃存。上電復(fù)位時,通過TMS320VC5509A的McBSP0口把AT25F1024閃存中的程序代碼或數(shù)據(jù)加載到外擴展的RAM中。當(dāng)程序用開發(fā)機調(diào)試好后,首先遇到的問題是如何將調(diào)試好的程序代碼寫入SPI 閃速存儲器并且滿足TMS320VC5509A引導(dǎo)加載表的格式;然后才可以利用TMS320VC5509A引導(dǎo)加載器將程序代碼引導(dǎo)到外部擴展存儲器中。
閃存按其接口可分為并行與串行。并行通過TMS320VC5509A芯片的地址與數(shù)據(jù)線與閃存接口。數(shù)據(jù)可以8位或16位。串行閃存通過I2C或SPI接口與閃存接口。本文以Atmel公司AT25F1024串行SPI閃存芯片,通過McBSP0(配置為SPI)與TMS320VC5509A接口,作為電測量系統(tǒng)的上位機引導(dǎo)存儲器,詳細(xì)給出DSP系統(tǒng)串行SPI引導(dǎo)的軟硬件解決方案與實現(xiàn)方法。
2. TMS320VC5509A與AT25F1024的接口電路
TMS320VC5509A是TI公司推出的定點數(shù)字信號處理器C5000系列中的一種,TMS320VC5509A通過增加乘累加MAC單元,增強了DSP的運算能力,而且性能更好,功耗更低,是目前TMS320家族中最省電的芯片。這些特性使之更適合在數(shù)據(jù)速率高、運算量大,又要求功耗低的便攜式電測量中應(yīng)用。AT25F1024是Atmel公司生產(chǎn)的一款應(yīng)用廣泛的高性能256K16位串行SPI閃存。TMS320VC5509A與AT25F1024的硬件電路連接如圖1所示,在SPI模式中閃存始終作為從器件與DSP的McBSP0串口相連,其串行移位時鐘是輸入,由DSP串口提供。
圖1. TMS320VC5509A與AT25F1024硬件電路連接圖
3.串行Flash芯片在線系統(tǒng)編程方法
將用戶程序代碼裝入Flash的方法有三種,一種方法是要求制造商出廠前掩膜,但無法滿足開發(fā)階段對程序進行修改或小批量產(chǎn)品生產(chǎn)的要求;另一種方法是用編程器直接燒寫,但Flash芯片正向著小型化、貼片式方向發(fā)展,從而使表貼SOIC封裝的Flash芯片難以用編程器燒寫;第三種方法是在線系統(tǒng)編程ISP(In System Program),這種方法靈活方便,無需其它編程設(shè)備和外加電源,因而得到廣泛應(yīng)用。
對串行Flash芯片的在線系統(tǒng)編程需要考慮兩方面的問題,一是Flash芯片的編程燒寫方法和規(guī)則,二是DSP芯片Bootloader引導(dǎo)程序所要求的引導(dǎo)表格式。
4.串行Flash芯片的編程燒寫
以AT25F1024為例,對其進行操作的部分指令如表1所示。
對其進行燒寫操作,要執(zhí)行兩條獨立的命令。首先,通過WREN指令使Flash寫使能,然后執(zhí)行PROGRAM(編程)指令。編程燒寫的時序如圖2所示,由圖2可以看出,在對Flash編程的過程中,首先是CS片選信號有效(低電平),然后編程指令(0x0000 x010)、地址和待燒寫的數(shù)據(jù)通過SI引腳傳送,最后,當(dāng)CS片選信號抬高(高電平)后,芯片內(nèi)部開始編程。
表1
指令名稱 | 指令格式 | 說明 |
WREN | 0000 X110 | 設(shè)置寫使能 |
WRDI | 0000 X100 | 清除寫使能 |
RDSR | 0000 X101 | 讀狀態(tài)寄存器 |
WRSR | 0000 X001 | 寫狀態(tài)寄存器 |
READ | 0000 X011 | 讀數(shù)據(jù) |
PROGRAM | 0000 X010 | 寫數(shù)據(jù) |
SECTOR ERASE | 0101 X010 | 整段擦除 |
CHIP ERASE | 0001 X101 | 全片擦除 |
RDID | 0001 X101 | 讀廠商和器件編號 |
圖2
在實際的編程過程中需要注意以下幾個問題。
(1)由于寫命令只能將內(nèi)部數(shù)據(jù)位由1寫成0,反之則不行。因此,在寫入數(shù)據(jù)前一定要先對內(nèi)部空間進行擦除,將內(nèi)部所有數(shù)據(jù)位置1,否則將會導(dǎo)致Flash燒寫失敗。
(2)編程指令只能對沒有被塊寫保護指令保護的空間進行寫操作。
(3)CS片選信號由低到高的跳變要求必須在最后一個數(shù)據(jù)比特D0傳送完成后,緊跟著的SCK移位時鐘為低的情況下產(chǎn)生。TMS320VC5509芯片多通道緩沖串口(McBSP)提供的時鐘停止模式(兼容SPI)即可滿足這種要求。
(4)AT25F1024支持單字節(jié)編程模式和256字節(jié)的頁編程模式。芯片內(nèi)部每頁256字節(jié),一條編程指令可以在一頁內(nèi)燒寫1到256個連續(xù)的字節(jié)。燒寫的起始地址可以在一頁內(nèi)的任意位置,連續(xù)燒寫時地址自動增加,但是當(dāng)?shù)刂返竭_(dá)本頁的最后時會自動跳到本頁首地址。這一點在在線編程燒寫時要十分注意。
(5)在內(nèi)部寫操作周期內(nèi),其它操作命令都將被忽略,但是RDSR(讀狀態(tài)寄存器)指令除外。狀態(tài)寄存器的/RDY位表示芯片內(nèi)部寫周期是否就緒。因此,F(xiàn)lash器件內(nèi)部編程就緒與否就可以通過判斷狀態(tài)寄存器的這一標(biāo)志位來確定。AT25F1024的狀態(tài)寄存器格式見表2。
表2 AT25F1024的狀態(tài)寄存器格式
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
WPEN | X | X | X | BP1 | BP0 | WEN | /RDY |
Bit0=0表示器件處于就緒狀態(tài);Bit0=1表示寫周期正在進行中。同時,在內(nèi)部寫操作的周期內(nèi),Bit0~Bit7全部為1。
5.TMS320VC5509引導(dǎo)表
所謂引導(dǎo)表,就是在DSP芯片上電復(fù)位后由Bootloader從外部存儲器裝入片內(nèi)RAM的一個數(shù)據(jù)塊,這個數(shù)據(jù)塊包括用戶程序的數(shù)據(jù)段和代碼段,還包括程序入口地址、寄存器設(shè)置、可編程延時等信息。
在用編程器直接燒寫的方法中,引導(dǎo)表可由“HEX轉(zhuǎn)換應(yīng)用程序”(C55x匯編語言工具CCS中自帶的hex55.exe)根據(jù).out文件生成,并直接生成寫片文件,再由編程器自動寫入Flash中。但是在在線系統(tǒng)編程燒寫的過程中,并不考慮.out文件和寫片文件中的附加信息,而是直接將符合引導(dǎo)表格式要求的數(shù)據(jù)內(nèi)容通過一段獨立的用戶程序連續(xù)完整的寫入Flash中。TMS320C55X系列DSP芯片的引導(dǎo)表結(jié)構(gòu)如表3所示。
表3.引導(dǎo)表結(jié)構(gòu)
字節(jié)地址+0 | 字節(jié)地址+1 | 字節(jié)地址+2 | 字節(jié)地址+3 | |
32位入口點字節(jié)地址 | ||||
字節(jié)地址+4 | 32位寄存器配置數(shù)量 | |||
字節(jié)地址+8 | 16位寄存器地址 | 16位寄存器內(nèi)容 | ||
16位延遲標(biāo)志 | 16位延遲計數(shù)值 | |||
32位段字節(jié)計數(shù)值 | ||||
32位段字節(jié)開始地址 | ||||
數(shù)據(jù)字節(jié) | 數(shù)據(jù)字節(jié) | 數(shù)據(jù)字節(jié) | 數(shù)據(jù)字節(jié) | |
數(shù)據(jù)字節(jié) | 數(shù)據(jù)字節(jié) | 數(shù)據(jù)字節(jié) | 數(shù)據(jù)字節(jié) | |
32位0字節(jié)計數(shù)值(引導(dǎo)表結(jié)束) |
其中,入口點字節(jié)地址是引導(dǎo)結(jié)束后,用戶程序開始執(zhí)行的首地址;32位寄存器配置數(shù)量決定后面有多少個32位是作為寄存器設(shè)置值或者作為延時等待;16位延時標(biāo)志恒為0XFFFF,以區(qū)別于16位寄存器的地址;段長、段起始地址和數(shù)據(jù)是用戶程序中定義的各個段的內(nèi)容;最后以32位個0作為引導(dǎo)表的結(jié)束標(biāo)志。
無論是用編程器直接燒寫,還是在線系統(tǒng)編程燒寫,實質(zhì)上都是要在片外存儲器(如Flash)存放整個引導(dǎo)表的內(nèi)容。DSP芯片在上電復(fù)位后會自動運行ROM中固化的Bootloader引導(dǎo)程序,引導(dǎo)程序會根據(jù)片外存儲器中存放的引導(dǎo)表的信息,將用戶程序的各個段引導(dǎo)到片內(nèi)RAM的相應(yīng)位置,然后從入口地址開始執(zhí)行。這樣就完成了整個加載引導(dǎo)的過程。
6.串行引導(dǎo)的原理及實現(xiàn)
TMS320VC5509A芯片自帶的Bootloader程序支持11種引導(dǎo)模式,本文所做的工作中根據(jù)片外Flash的特性要求選擇從多通道緩沖串口0(McBSP0)引導(dǎo)、支持24位地址的SPI串行引導(dǎo)模式。
● 模式選擇
VC5509A引導(dǎo)模式的選擇是通過四個模式選擇引腳BOOTM[3:0]完成的。BOOTM0~3引腳與芯片的通用輸入輸出引腳GPIO1、2、3、0相對應(yīng)。這里選擇SPI的引導(dǎo)模式,BOOTM[3:0]=0001,在實際的電路連接上是將芯片引腳通過上拉或下拉電阻接地或接電源來實現(xiàn)。
● SPI引導(dǎo)模式
這里首先介紹McBSP的SPI協(xié)議。SPI協(xié)議是一種主從配置的,支持一個主方,一個或多個從方的串行通信協(xié)議。它一般由四個信號組成,即串行主方數(shù)據(jù)輸入從方數(shù)據(jù)輸出MISO、串行主方數(shù)據(jù)輸出從方數(shù)據(jù)輸入MOSI、移位時鐘SCK和從方使能SS。TMS320VC5509A多通道緩沖串口(McBSP)的時鐘停止模式可以兼容SPI主從協(xié)議。所謂McBSP的時鐘停止模式是指其時鐘會在每次數(shù)據(jù)傳輸結(jié)束時停止,并在下次數(shù)據(jù)傳輸開始時立即啟動或延遲半個周期后再啟動。而且,其接收器和發(fā)送器是同步的,CLKX和FSX分別與CLKR和FSR相連。在傳輸過程中,CLKX和FSX又分別作為SPI中的移位時鐘SCK和從方使能SS。
這里要說明的是,為了滿足SPI模式Bootloader引導(dǎo)時的要求,從方Flash的使能信號應(yīng)該由TMS320VC5509A的通用輸入輸出引腳GPIO4提供。在引導(dǎo)開始時IO4變低,當(dāng)引導(dǎo)過程結(jié)束后IO4抬高。因此,在編程燒寫的時侯,就需要人為地對IO4引腳編程控制,以下三條語句可以控制IO4為輸出,并實現(xiàn)高低電平變換。
OR #0X0010,PORT(#IODIR) ;GPIO4 用作CS,方向為輸出
OR #0X0010,PORT(#IODATA) ;設(shè)置CS為高電平
AND #0XFFEF,PORT(#IODATA) ;設(shè)置CS為低電平
由于Bootloader最終需要完成的是系統(tǒng)的脫機運行,因此,在調(diào)試Flash燒寫和DSP上電引導(dǎo)時可編寫一個簡單直觀的測試程序。例如,可以通過VC5509A的XF引腳發(fā)送一個方波,這樣就可以準(zhǔn)確的判斷程序的運行情況,程序代碼如下。
SEND:BSET XF ;使XF引腳輸出高電平
RPT #99 ;延遲100個時鐘周期
NOP
BCLR XF ;使XF引腳輸出低電平
RPT #99
NOP
B SEND
7.結(jié)論
本文創(chuàng)新點是在實際應(yīng)用的基礎(chǔ)上,提出了一種基于Flash的TMS320VC5509A串行8位引導(dǎo)的設(shè)計與實現(xiàn)。采用串行Flash代替常規(guī)的并行EPROM,大大節(jié)省手持?jǐn)?shù)據(jù)終端器件的電路空間和功耗,方便用戶進行電路設(shè)計,提高了工作效率,具有很好的實用性。
參考文獻(xiàn)
[1] TMS320C55X DSP Peripherals Reference Guide, Texas Instruments Application Report, SPRU317B, 2001.5
[2] Using the TMS320VC5509 Bootloader, Texas Instruments Application Report, SPRA375, 2002.10
[3] SPI Serial Memory AT25F1024,Atmel,Rev.1440K-SEEPR-3/03
[4] 申敏. DSP原理及其在移動通信中的應(yīng)用. 人民郵電出版社. 2001.9
[5] 程志平,支長義,焦留成,基于DSP的工頻電量測試儀硬件電路設(shè)計,《微計算機信息》,2006,(6)
[6]支長義,程志平,焦留成,基于DSP的單相精密電源硬件設(shè)計,《微計算機信息》,2006,(5)
評論