新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > DSP在電測(cè)量系統(tǒng)中SPI閃速引導(dǎo)的實(shí)現(xiàn)

DSP在電測(cè)量系統(tǒng)中SPI閃速引導(dǎo)的實(shí)現(xiàn)

作者: 時(shí)間:2007-08-27 來(lái)源:網(wǎng)絡(luò) 收藏
摘要:本文詳細(xì)介紹了TMS320VC5509A閃速的方法。以Atmel公司閃存AT25F1024為例,介紹了電在線編程燒寫(xiě)方法和TMS320VC5509A串行8位的原理與
關(guān)鍵詞:電測(cè)系統(tǒng),TMS320VC5509A,閃存,DARAM,SARAM

1.引言

為中心的應(yīng)用系統(tǒng),要系統(tǒng)的用戶軟件程序脫離仿真環(huán)境獨(dú)立運(yùn)行工作,就需要在片外擴(kuò)展非易失性存儲(chǔ)器FLASH、EPROM或者用上位機(jī)向DSP下載程序。在系統(tǒng)上電復(fù)位后,用DSP的加載器把應(yīng)用程序從外部存儲(chǔ)器FLASH、EPROM或上位機(jī)中引導(dǎo)到DSP芯片內(nèi)部雙訪問(wèn)存儲(chǔ)(DARAM)單元或單訪問(wèn)存儲(chǔ)(SARAM)單元或外部擴(kuò)展RAM中。目前應(yīng)用最為廣泛的閃存,具有存取速度快、電可擦除、容量大、在線可編程、價(jià)格便宜等優(yōu)點(diǎn),已成為新一代DSP系統(tǒng)中不可缺的重要組成部分。

在本系統(tǒng)中,利用Atmel公司閃存AT25F1024作為TMS320VC5509A的外部閃存。上電復(fù)位時(shí),通過(guò)TMS320VC5509A的McBSP0口把AT25F1024閃存中的程序代碼或數(shù)據(jù)加載到外擴(kuò)展的RAM中。當(dāng)程序用開(kāi)發(fā)機(jī)調(diào)試好后,首先遇到的問(wèn)題是如何將調(diào)試好的程序代碼寫(xiě)入SPI 閃速存儲(chǔ)器并且滿足TMS320VC5509A引導(dǎo)加載表的格式;然后才可以利用TMS320VC5509A引導(dǎo)加載器將程序代碼引導(dǎo)到外部擴(kuò)展存儲(chǔ)器中。

閃存按其接口可分為并行與串行。并行通過(guò)TMS320VC5509A芯片的地址與數(shù)據(jù)線與閃存接口。數(shù)據(jù)可以8位或16位。串行閃存通過(guò)I2C或SPI接口與閃存接口。本文以Atmel公司AT25F1024串行SPI閃存芯片,通過(guò)McBSP0(配置為SPI)與TMS320VC5509A接口,作為電測(cè)量系統(tǒng)的上位機(jī)引導(dǎo)存儲(chǔ)器,詳細(xì)給出DSP系統(tǒng)串行SPI引導(dǎo)的軟硬件解決方案與實(shí)現(xiàn)方法。

2. TMS320VC5509AAT25F1024的接口電路

TMS320VC5509A是TI公司推出的定點(diǎn)數(shù)字信號(hào)處理器C5000系列中的一種,TMS320VC5509A通過(guò)增加乘累加MAC單元,增強(qiáng)了DSP的運(yùn)算能力,而且性能更好,功耗更低,是目前TMS320家族中最省電的芯片。這些特性使之更適合在數(shù)據(jù)速率高、運(yùn)算量大,又要求功耗低的便攜式電測(cè)量中應(yīng)用。AT25F1024是Atmel公司生產(chǎn)的一款應(yīng)用廣泛的高性能256K16位串行SPI閃存。TMS320VC5509A與AT25F1024的硬件電路連接如圖1所示,在SPI模式中閃存始終作為從器件與DSP的McBSP0串口相連,其串行移位時(shí)鐘是輸入,由DSP串口提供。

圖1. TMS320VC5509A與AT25F1024硬件電路連接圖

3.串行Flash芯片在線系統(tǒng)編程方法

將用戶程序代碼裝入Flash的方法有三種,一種方法是要求制造商出廠前掩膜,但無(wú)法滿足開(kāi)發(fā)階段對(duì)程序進(jìn)行修改或小批量產(chǎn)品生產(chǎn)的要求;另一種方法是用編程器直接燒寫(xiě),但Flash芯片正向著小型化、貼片式方向發(fā)展,從而使表貼SOIC封裝的Flash芯片難以用編程器燒寫(xiě);第三種方法是在線系統(tǒng)編程ISP(In System Program),這種方法靈活方便,無(wú)需其它編程設(shè)備和外加電源,因而得到廣泛應(yīng)用。

對(duì)串行Flash芯片的在線系統(tǒng)編程需要考慮兩方面的問(wèn)題,一是Flash芯片的編程燒寫(xiě)方法和規(guī)則,二是DSP芯片Bootloader引導(dǎo)程序所要求的引導(dǎo)表格式。

4.串行Flash芯片的編程燒寫(xiě)

以AT25F1024為例,對(duì)其進(jìn)行操作的部分指令如表1所示。

對(duì)其進(jìn)行燒寫(xiě)操作,要執(zhí)行兩條獨(dú)立的命令。首先,通過(guò)WREN指令使Flash寫(xiě)使能,然后執(zhí)行PROGRAM(編程)指令。編程燒寫(xiě)的時(shí)序如圖2所示,由圖2可以看出,在對(duì)Flash編程的過(guò)程中,首先是CS片選信號(hào)有效(低電平),然后編程指令(0x0000 x010)、地址和待燒寫(xiě)的數(shù)據(jù)通過(guò)SI引腳傳送,最后,當(dāng)CS片選信號(hào)抬高(高電平)后,芯片內(nèi)部開(kāi)始編程。

表1

指令名稱

指令格式

說(shuō)明

WREN

0000 X110

設(shè)置寫(xiě)使能

WRDI

0000 X100

清除寫(xiě)使能

RDSR

0000 X101

讀狀態(tài)寄存器

WRSR

0000 X001

寫(xiě)狀態(tài)寄存器

READ

0000 X011

讀數(shù)據(jù)

PROGRAM

0000 X010

寫(xiě)數(shù)據(jù)

SECTOR ERASE

0101 X010

整段擦除

CHIP ERASE

0001 X101

全片擦除

RDID

0001 X101

讀廠商和器件編號(hào)

圖2

在實(shí)際的編程過(guò)程中需要注意以下幾個(gè)問(wèn)題。

(1)由于寫(xiě)命令只能將內(nèi)部數(shù)據(jù)位由1寫(xiě)成0,反之則不行。因此,在寫(xiě)入數(shù)據(jù)前一定要先對(duì)內(nèi)部空間進(jìn)行擦除,將內(nèi)部所有數(shù)據(jù)位置1,否則將會(huì)導(dǎo)致Flash燒寫(xiě)失敗。

(2)編程指令只能對(duì)沒(méi)有被塊寫(xiě)保護(hù)指令保護(hù)的空間進(jìn)行寫(xiě)操作。

(3)CS片選信號(hào)由低到高的跳變要求必須在最后一個(gè)數(shù)據(jù)比特D0傳送完成后,緊跟著的SCK移位時(shí)鐘為低的情況下產(chǎn)生。TMS320VC5509芯片多通道緩沖串口(McBSP)提供的時(shí)鐘停止模式(兼容SPI)即可滿足這種要求。

(4)AT25F1024支持單字節(jié)編程模式和256字節(jié)的頁(yè)編程模式。芯片內(nèi)部每頁(yè)256字節(jié),一條編程指令可以在一頁(yè)內(nèi)燒寫(xiě)1到256個(gè)連續(xù)的字節(jié)。燒寫(xiě)的起始地址可以在一頁(yè)內(nèi)的任意位置,連續(xù)燒寫(xiě)時(shí)地址自動(dòng)增加,但是當(dāng)?shù)刂返竭_(dá)本頁(yè)的最后時(shí)會(huì)自動(dòng)跳到本頁(yè)首地址。這一點(diǎn)在在線編程燒寫(xiě)時(shí)要十分注意。

(5)在內(nèi)部寫(xiě)操作周期內(nèi),其它操作命令都將被忽略,但是RDSR(讀狀態(tài)寄存器)指令除外。狀態(tài)寄存器的/RDY位表示芯片內(nèi)部寫(xiě)周期是否就緒。因此,F(xiàn)lash器件內(nèi)部編程就緒與否就可以通過(guò)判斷狀態(tài)寄存器的這一標(biāo)志位來(lái)確定。AT25F1024的狀態(tài)寄存器格式見(jiàn)表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表示寫(xiě)周期正在進(jìn)行中。同時(shí),在內(nèi)部寫(xiě)操作的周期內(nèi),Bit0~Bit7全部為1。

5.TMS320VC5509引導(dǎo)表
所謂引導(dǎo)表,就是在DSP芯片上電復(fù)位后由Bootloader從外部存儲(chǔ)器裝入片內(nèi)RAM的一個(gè)數(shù)據(jù)塊,這個(gè)數(shù)據(jù)塊包括用戶程序的數(shù)據(jù)段和代碼段,還包括程序入口地址、寄存器設(shè)置、可編程延時(shí)等信息。

在用編程器直接燒寫(xiě)的方法中,引導(dǎo)表可由“HEX轉(zhuǎn)換應(yīng)用程序”(C55x匯編語(yǔ)言工具CCS中自帶的hex55.exe)根據(jù).out文件生成,并直接生成寫(xiě)片文件,再由編程器自動(dòng)寫(xiě)入Flash中。但是在在線系統(tǒng)編程燒寫(xiě)的過(guò)程中,并不考慮.out文件和寫(xiě)片文件中的附加信息,而是直接將符合引導(dǎo)表格式要求的數(shù)據(jù)內(nèi)容通過(guò)一段獨(dú)立的用戶程序連續(xù)完整的寫(xiě)入Flash中。TMS320C55X系列DSP芯片的引導(dǎo)表結(jié)構(gòu)如表3所示。

表3.引導(dǎo)表結(jié)構(gòu)

字節(jié)地址+0

字節(jié)地址+1

字節(jié)地址+2

字節(jié)地址+3

32位入口點(diǎn)字節(jié)地址

字節(jié)地址+4

32位寄存器配置數(shù)量

字節(jié)地址+8

16位寄存器地址

16位寄存器內(nèi)容

16位延遲標(biāo)志

16位延遲計(jì)數(shù)值

32位段字節(jié)計(jì)數(shù)值

32位段字節(jié)開(kāi)始地址

數(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é)計(jì)數(shù)值(引導(dǎo)表結(jié)束)

其中,入口點(diǎn)字節(jié)地址是引導(dǎo)結(jié)束后,用戶程序開(kāi)始執(zhí)行的首地址;32位寄存器配置數(shù)量決定后面有多少個(gè)32位是作為寄存器設(shè)置值或者作為延時(shí)等待;16位延時(shí)標(biāo)志恒為0XFFFF,以區(qū)別于16位寄存器的地址;段長(zhǎng)、段起始地址和數(shù)據(jù)是用戶程序中定義的各個(gè)段的內(nèi)容;最后以32位個(gè)0作為引導(dǎo)表的結(jié)束標(biāo)志。

無(wú)論是用編程器直接燒寫(xiě),還是在線系統(tǒng)編程燒寫(xiě),實(shí)質(zhì)上都是要在片外存儲(chǔ)器(如Flash)存放整個(gè)引導(dǎo)表的內(nèi)容。DSP芯片在上電復(fù)位后會(huì)自動(dòng)運(yùn)行ROM中固化的Bootloader引導(dǎo)程序,引導(dǎo)程序會(huì)根據(jù)片外存儲(chǔ)器中存放的引導(dǎo)表的信息,將用戶程序的各個(gè)段引導(dǎo)到片內(nèi)RAM的相應(yīng)位置,然后從入口地址開(kāi)始執(zhí)行。這樣就完成了整個(gè)加載引導(dǎo)的過(guò)程。

6.串行引導(dǎo)的原理及實(shí)現(xiàn)

TMS320VC5509A芯片自帶的Bootloader程序支持11種引導(dǎo)模式,本文所做的工作中根據(jù)片外Flash的特性要求選擇從多通道緩沖串口0(McBSP0)引導(dǎo)、支持24位地址的SPI串行引導(dǎo)模式。

模式選擇

VC5509A引導(dǎo)模式的選擇是通過(guò)四個(gè)模式選擇引腳BOOTM[3:0]完成的。BOOTM0~3引腳與芯片的通用輸入輸出引腳GPIO1、2、3、0相對(duì)應(yīng)。這里選擇SPI的引導(dǎo)模式,BOOTM[3:0]=0001,在實(shí)際的電路連接上是將芯片引腳通過(guò)上拉或下拉電阻接地或接電源來(lái)實(shí)現(xiàn)。

SPI引導(dǎo)模式

這里首先介紹McBSP的SPI協(xié)議。SPI協(xié)議是一種主從配置的,支持一個(gè)主方,一個(gè)或多個(gè)從方的串行通信協(xié)議。它一般由四個(gè)信號(hào)組成,即串行主方數(shù)據(jù)輸入從方數(shù)據(jù)輸出MISO、串行主方數(shù)據(jù)輸出從方數(shù)據(jù)輸入MOSI、移位時(shí)鐘SCK和從方使能SS。TMS320VC5509A多通道緩沖串口(McBSP)的時(shí)鐘停止模式可以兼容SPI主從協(xié)議。所謂McBSP的時(shí)鐘停止模式是指其時(shí)鐘會(huì)在每次數(shù)據(jù)傳輸結(jié)束時(shí)停止,并在下次數(shù)據(jù)傳輸開(kāi)始時(shí)立即啟動(dòng)或延遲半個(gè)周期后再啟動(dòng)。而且,其接收器和發(fā)送器是同步的,CLKX和FSX分別與CLKR和FSR相連。在傳輸過(guò)程中,CLKX和FSX又分別作為SPI中的移位時(shí)鐘SCK和從方使能SS。

這里要說(shuō)明的是,為了滿足SPI模式Bootloader引導(dǎo)時(shí)的要求,從方Flash的使能信號(hào)應(yīng)該由TMS320VC5509A的通用輸入輸出引腳GPIO4提供。在引導(dǎo)開(kāi)始時(shí)IO4變低,當(dāng)引導(dǎo)過(guò)程結(jié)束后IO4抬高。因此,在編程燒寫(xiě)的時(shí)侯,就需要人為地對(duì)IO4引腳編程控制,以下三條語(yǔ)句可以控制IO4為輸出,并實(shí)現(xiàn)高低電平變換。

OR #0X0010,PORT(#IODIR) ;GPIO4 用作CS,方向?yàn)檩敵?/P>

OR #0X0010,PORT(#IODATA) ;設(shè)置CS為高電平

AND #0XFFEF,PORT(#IODATA) ;設(shè)置CS為低電平

由于Bootloader最終需要完成的是系統(tǒng)的脫機(jī)運(yùn)行,因此,在調(diào)試Flash燒寫(xiě)和DSP上電引導(dǎo)時(shí)可編寫(xiě)一個(gè)簡(jiǎn)單直觀的測(cè)試程序。例如,可以通過(guò)VC5509A的XF引腳發(fā)送一個(gè)方波,這樣就可以準(zhǔn)確的判斷程序的運(yùn)行情況,程序代碼如下。

SEND:BSET XF ;使XF引腳輸出高電平

RPT #99 ;延遲100個(gè)時(shí)鐘周期

NOP

BCLR XF ;使XF引腳輸出低電平
RPT #99

NOP

B SEND

7.結(jié)論

本文創(chuàng)新點(diǎn)是在實(shí)際應(yīng)用的基礎(chǔ)上,提出了一種基于Flash的TMS320VC5509A串行8位引導(dǎo)的設(shè)計(jì)與實(shí)現(xiàn)。采用串行Flash代替常規(guī)的并行EPROM,大大節(jié)省手持?jǐn)?shù)據(jù)終端器件的電路空間和功耗,方便用戶進(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原理及其在移動(dòng)通信中的應(yīng)用. 人民郵電出版社. 2001.9
[5] 程志平,支長(zhǎng)義,焦留成,基于DSP的工頻電量測(cè)試儀硬件電路設(shè)計(jì),《微計(jì)算機(jī)信息》,2006,(6)
[6]支長(zhǎng)義,程志平,焦留成,基于DSP的單相精密電源硬件設(shè)計(jì),《微計(jì)算機(jī)信息》,2006,(5)



評(píng)論


相關(guān)推薦

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

關(guān)閉