|
|
| <!--插入廣告JS代碼--> |
FRAM在DSP開發系統中的應用
王煉紅 章兢 全惠敏
(湖南大學電氣與信息工程學院,湖南 長沙410082)
摘 要:本文首先介紹了FRAM的特點;然后在分析了FRAM配置及DSP的SPI通信模塊的基礎上,給出了FM25L256與TMS320F2812 DSP的接口電路的硬件設計。最后,文章給出了SPI模塊的初始化程序及DSP與FRAM之間接口程序的設計。
關鍵詞: FRAM,SPI,DSP系統,通信
APPLICATION of FRAM in DSP SYSTEM
Wang lian-hong Zhang jing Quan Hui-min
(College of Electrical and Information Engineering in Hunnan University ,Hunan Changsha ,410082)
ABSTRACT: This paper introduces firstly the characteristic of FRAM. Then, a circuit connection between FM25L256 and TMS320F2812 DSP is given after we analyze FRAM configuration and SPI communication module of DSP. At last, this paper provides initialized program of SPI and interface program between FRAM and DSP.
KEY WORDS: FRAM, SPI , DSP SYSTEM , COMMUNICATION
1. 前言
TMS320系列的體系結構專為實時信號處理而設計,該系列DSP控制器將實時處理能力和控制器外設功能集于一身,為控制系統的應用提供了一個理想的解決方案。一般情況下,采用24xDSP及以上系列的控制器就能實現對電機數字化的單芯片控制。但當系統功能增強,例如要記錄下電動汽車運行中的實時數據,以便進行故障分析時,就需要進行DSP外部存儲空間的擴展。
FRAM由于具有無限次擦寫﹑高速讀寫﹑低功耗,在掉電的情況下能把數據完善地保存起來等特點而廣泛的應用于水表﹑煤氣表﹑汽車﹑多功能影印機﹑打印機和其他在掉電情況下需要保留可靠數據的產品中。本文針對采用DSP系統對154T電動輪自卸車實現運行控制,需要保存電動車運行中的實時數據。如若發生故障時,還要將故障點前10幀和故障點后5幀共16幀的故障數據保存下來。這些數據還需要高速讀寫,掉電保存。綜上所述,本文考慮采用FRAM來擴展DSP的外存儲空間。
FRAM與DSP的硬件連接

圖1 TMS320F2812與FM25L256的接線圖
圖1為DSP芯片TMS320F2812與FM25L256串行鐵電存儲器的接線原理圖。TMS320F2812通過SPI模塊與FM25L256進行串行通信。圖中,DSP的SPISCLKA腳給FM25L256提供串行時鐘,控制系統的數據傳輸; SPISTEA腳給FRAM提供片選信號(低電平有效); SPISIMOA腳把數據輸出到FRAM的SI腳; SPISIMIA腳接收SO腳上的數據。引腳/WP是硬件寫保護引腳,當/WP為低電平時寫保護,當/WP為高電平時不進行寫保護。由于對FRAM要進行即時讀寫,故/WP設置為高電平。
2.1 TMS320F2812的SPI模塊
DSP處理器常通過SPI模塊與外部外設以及其他處理器之間進行通信,如連接移位寄存器、顯示驅動器、DAC以及日歷時鐘等[1]。SPI模塊設有多個控制寄存器[2,3]。 SPI發送/接收緩沖寄存器(SPIDAT)在SCLK信號的邊沿將其中的16位數據向左移位,移出的數據從DSP的SPISIMOA引腳逐位輸出,與此同時SPISOMIA引腳上的信號將逐位從SPIDAT的低位移入SPIDAT,移位的次數由SPICCR寄存器中的SPI CHAR3~SPI CHAR0來設定。在發送沒有激活時,向該寄存器寫入數據將會啟動發送和接收。發送數據時,若SPIDAT中有數據正在移位,SPI發送緩沖寄存器(SPITXBUF)將存放下一個將要發送的數據。當發送還沒激活時,向該寄存器寫入數據后,數據將直接進入SPIDAT并啟動發送。SPIDAT中的數據發送完后,SPIDAT將自動從SPITXBUF取出數據繼續發送。如果此時SPITXBUF中沒有數據,那么SCLK將會停止,SPI操作終止。接收數據時,若SPIDAT中的數據移位完成,即SPISOMIA引腳上的數據便從SPIDAT的右端移入了SPIDAT,此時SPIRXBUF將自動從SPIDAT中取出16位數據。
本文TMS320F2812 DSP的SPI模塊設置如下:SPICCR為0x00C7,下降沿發送數據,上升沿接收數據,每次發送8位數據。SPICTL為0x0007,工作于主模式,時鐘無延時,發送允許,SPI中斷使能。SPIBRR為199,即SPI波特率為DSP慢速時鐘模塊頻率的1/200。當慢速時鐘模塊頻率等于系統時鐘頻率100MHz時,SPI波特率為500Kbps。
2.2 鐵電FM25L256的配置
FM25L256是基于鐵電存儲原理的非易失性串行外圍接口RAM,它具備以下特性:存儲空間為32K×8bit;數據可保存長達10年;無讀寫次數限制;最高可達25MHz的工作頻率;提供硬件和軟件雙重寫保護;工作電壓低等。FM25L256支持SPI接口,在SCLK的上升沿接收數據,在SCLK的下降沿發送數據。為了向所有存儲空間進行寫操作,FM25L256狀態寄存器設置為0x0,且/WP引腳接高電平,不采用硬件寫保護。在對FM25L256進行操作之前,必須向其傳遞一個操作代碼,以指示FM25L256現在進行的是什么操作[4]。
對FRAM進行讀寫操作時,一般應注意如下幾點:FM25L256在上電后10ms才能開始對其進行操作;每次對FM25L256進行寫操作之前(無論是寫狀態寄存器還是寫存儲區),都必須使FM25L256處于寫使能狀態(即狀態寄存器的Bit1位WEL=1),如不處于寫使能狀態,則進行寫操作之前要傳遞0x06操作代碼給FM25L256,使其寫使能。且每次寫操作完成后,FM25L256自動將WEL清零,進入寫保護狀態,下次寫操作之前必須重新寫使能。
3.軟件設計
為了實時傳輸數據,DSP的SPI接口采用中斷工作方式。數據的發送、接收和校驗都通過中斷服程序來完成。SPI接口程序負責DSP的SPI模塊與存儲芯片FM25L256之間的數據發送、接收以及校驗,接口程序采用C語言編制,具有較強的通用性。程序提供了可靠的校驗機制,當系統初始化時,為了確保FM25L256狀態寄存器寫入設定值時無誤,寫入設定值后,馬上重讀兩次來校驗設定值是否已經完全正確寫入了目標寄存器,如出現錯誤則重寫。當系統進入工作狀態,向FM25L256存儲空間寫入數據后,或從FM25L256存儲空間讀出數據后,馬上重讀一次與寫入值或讀出值進行對比校驗,如出現錯誤則重寫或重讀。
3.1 DSP與FM25L256之間的接口程序
由于DSP系統中其他函數模塊可以同時對FRAM進行操作,為了便于調用,該接口程序設計為一個WriteReadFram()函數形式。當DSP系統各模塊同時調用該函數時,SPI接口會不可避免的出現沖突,為了解決此問題,在程序中設置了一個指令隊列機制。當有一個調用出現時,指令隊列表中就會相應添加一個標志。操作順序采用先調用先操作的原則。最先調用SPI程序的指令將最先使用SPI通信模塊,依此類推,只有排在隊列前面的操作指令完成后才會將SPI通信模塊的使用權交給緊接著排在后面的操作指令。在對應的SPI通信結束后,會根據OperateID的取值給予相應的回復(相應的完成標志置位或啟動相應的函數)。
表1 OperateID的取值與含義
OperateID的取值 | 含義及操作方式 |
WriteFaultDataFlag | 故障診斷模塊向FM25L256寫入故障數據。調WriteFramMemory( ) 函數,操作完成后回復標志WriteFaultDataComplete=1 |
WriteAddressTableFlag | 故障診斷模塊向FM25L256寫入故障地址表。調WriteFramMemory()函數,操作完成后回復標志WriteAddressTableComplete=1 |
UpperComputerWriteFramFlag | 上位機向FM25L256寫入整定數據。調WriteFramMemory( ) 函數,操作完成后無需回復標志。 |
DspReadSetParaFlag | DSP從FM25L256讀取整定數據。調ReadFramMemory( ) 函數。操作完成后回復標志DspReadSetParaComplete=1 |
UpperComputerReadFramFlag | 上位機從FM25L256讀取數據。調ReadFramMemory( ) 函數。操作完成后需通過SCI上傳數據,此時調用Start_Sci_TX( )函數。 |
函數WriteReadFram (*BuffStartAddress, DataLength, ObjectAddress, OperateID)中所傳遞的各參數說明如下:*BuffStartAddress為RAM中發送或者接收緩沖區的首地址,無符號整型指針變量;DataLength為讀寫FM25L256的8位字節個數,無符號整型變量;ObjectAddress為讀寫FM25L256的目標地址,無符號整型變量;OperateID為操作標識代碼,無符號整型變量。OperateID用以區別不同的操作,并在SPI讀寫操作完成后根據不同的操作,給予相應的答復。其具體取值含義、操作和回復信息見表1。當OperateID=UpperComputerReadFramFlag時,SPI模塊從FM25L256讀取了數據之后還要傳給上位機。因此,該子程序將會調用Start_Sci_TX( )函數,讀取的數據將通過DSP中的SCI模塊傳送到上位機,實現上位機與DSP之間的串口通信。

圖2 接口程序流程圖
接口程序流程圖如圖2所示,程序根據隊列表首先判斷對FRAM執行哪種(讀或寫)操作,然后轉向相應的處理子程序(即調用表1中對應函數)。
3.2 SPI模塊初始化函數
該函數將打開SPI中斷,完成相關的GPIO口和SPI寄存器的設置,并產生SPI模塊的時鐘信號。其部分程序如下:
void InitSpi(void)
{ EALLOW;
// SPI中斷的初始化
IER|=0x0020; //使能PIE Group 6的中斷
PieCtrlRegs.PIECRTL.bit.ENPIE=1; //PIE使能
PieCtrlRegs.PIEIER6.bit.INTx1=1; //使能PIE中SPI的接收
PieCtrlRegs.PIEIER6.bit.INTx2=0; //禁止PIE中SPI發送中斷
SysCtrlRegs.PCLKCR.bit.SPIENCLK=1; //使能SPI模塊的時鐘信號
//GPIO方面的初始化
…
GpioMuxRegs.GPFMUX.bit.MDXA_GPIOF12=0; //確定GPIOF12為通用I/O引腳
GpioMuxRegs.GPFDIR.bit.GPIOF12=1; //方向為輸出
//Spi功能初始化,每次修改Spi寄存器時必須使SPISWRESET清0,修改完后置1
SpiaRegs.SPICCR.bit.SPISWRESET=0; //使SPI進入復位狀態
SpiaRegs.SPICCR.all=0x0047; //下降沿無延時發送8位數據
SpiaRegs.SPICTL.all=0x0007; //使SPI工作在主動方式,發送允許,允許SPI中斷,禁止超時中斷
SpiaRegs.SPIBRR=199; //使SPIBRR=199,這樣波特率=LSPCLK/(SPIBRR+1)=500KHz
SpiaRegs.SPICCR.bit.SPISWRESET=1; //使SPI退出復位狀態,進入發送接收狀態
EDIS;
PieCtrlRegs.PIEACK.bit.ACK6=1; //開放Group6的中斷
}
4. 結束語
本文以鐵電FM25L256為基礎,詳細討論了FM25L256與DSP之間的硬件連接以及它與DSP的SPI模塊進行通信的方式及其相關配置。重點介紹了FM25L256與TMS320F2812的接口程序設計。
本文的創新點是在接口程序設計中,為了避免系統多個模塊對FRAM進行讀寫操作時在SPI接口上產生數據沖突,構造了一個指令隊列表,保證先調用的操作先執行,同時增加了可靠的校驗機制,使系統能高速讀寫實時數據和上傳故障數據。本文中的接口程序為函數形式,采用C語言編寫,具有通用性和可移植性。
參考文獻:
[1] 楊玲、 駱麗,多通道AD轉換器MAX1168及其與DSP系統適配性研究,微計算機信息,P73-74,P107,2004(12)
[2] 劉和平、王維俊等編著,《TMS320LF240x DSP C語言開發應用》,北京航空航天大學出版社,2003
[3] TMS320F/C28x Digital Signal Processors Data Manual. Texas Instruments Inc. Literature Number SPRS174K. 2001
[4] FM25L256 Data Manual. Ramtron International Corporation Inc.2005
湖南省科技廳重點項目,項目編號:20053340248
作者簡介:王煉紅,女,1971年生,漢族,湖南大學電氣與信息工程學院講師,在職博士,主要從事語音、圖像信息的傳輸與處理及數據挖掘技術研究。
Author’s brief introduction: Lianhong Wang, female, birth 1971,a lecturer of College of Electrical and Information Engineering in Hunnan University, Ph.D. candidate, major in transmission and processing of audio and image information, also engage in the research of Data Mining technique.
通訊方式:湖南長沙湖南大學電氣與信息工程學院 (410082)
E-MAIL: wlh-01@163.com 或者 wanglh@hnu.cn