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