前言
隨著信息時代的到來,各種信息的集成和交互越來越頻繁。在運動控制系統中需要處理和存儲的信息量也與日俱增,大部分運動控制系統中核心芯片MCU自身已經集成了較大容量的存儲器(與以前MCU相比),但僅僅依靠MCU自身的存儲器一般很難滿足系統對大容量存儲器的要求,因此必須找到高效的方法實現對系統的存儲容量的擴展。
SPI是一個高效的、數據位數可編程的高速輸入/輸出串行流接口,幾乎所有MCU生產廠商都提供對SPI接口的支持,目前高速的SPI接口時鐘頻率已達到60M甚至更高,SPI接口一般只用4根連接線即可完成所有的數據通訊和控制操作,因此不占用MCU的數據總線和地址總線,極大的節約了系統的硬件資源,是一種經濟實用的擴展系統存儲容量的方法。
本文利用TI公司最新的32位DSP―TMS320F2812自身的增強型SPI接口,結合性價比高的串行接口Flash,高效地實現了對系統存儲容量的擴展,具有非常大的實用價值和推廣意義。
系統總體介紹
本文的FLASH擴展實現的硬件系統是具有Ethernet接口的基于DSP和CPLD的運動控制板,系統總體結構如圖所示。
核心芯片是TI公司最新推出的的32位定點DSP―TMS320F2812和ALTERA公司的MAXII系列CPLD―EPM1270G。主要完成對系統輸入信號檢測、處理、各種控制算法以及和各種接口(Ethernet接口和RS232接口)的通訊,運動控制系統的部分控制程序、大量的初始化數據和系統的配置信息都存放在ST公司的大容量串口FLASH:m25p80中,通過DSP增強型的SPI接口實現與核心處理器DSP的高速通信。
Flash擴展的硬件設計
1. TMS320F2812的增強型SPI接口特性:
(1)波特率:可編程的125種不同的波特率。
(2)有效數據長度:可編程的1~ 16位有效數據長度
(3)支持4種時鐘模式:不帶相位延時的下降沿模式、帶相位延時的下降沿模式、
不帶相位延時的上升沿模式和帶相位延時的上升沿模式。
(4)可連續操作的特性:
Ø 16級發送和接收FIFO;
Ø 可編程的延時發送控制
時鐘模式應根據具體的應用中與MCU接口器件的操作時序決定,選取原則是保證在器件進行讀寫操作過程中,所要求的CLK時鐘沿到來時所操作的數據必須已經提供在相應的引腳上。例如:當接口器件(本系統中是FLASH)在上升沿接收數據,在下降沿發送數據時,MCU應該選擇不帶相位延時的下降沿方式。
增強型的SPI接口具有16位16級深度的發送和接收FIFO,這為高速連續操作提供了可能,在發送和接收時可以最多進行32個字節的連續操作,從而極大地提高了通訊效率;可編程的中斷優先級使用戶可以根據具體系統應用,確定產生中斷時已經發送或者接收到的字節數,提高了系統通訊效率和系統的靈活性;可編程的延時發送控制功能使用戶可以根據系統要求配置每次發送時的延時時間,當接口器件操作速度相對MCU慢時,在不改變SPI接口時鐘的條件下增加發送延時時間,既保證了接口操作的高速性時也滿足了慢速接口器件的操作時序要求。這些增強的特性為SPI接口的擴展提供了極大的靈活性。
2.ST公司串行接口FLASH芯片m25p80特性:
m25p80是意法半導體公司推出的8M大容量串行接口FLASH芯片,芯片采用2.7~3.6V單電源供電,兼容標準的SPI接口,器件在上升沿接收數據下降沿發送數據,接口時鐘最高為40M;支持最大256 bytes的快速頁面編程操作、快速的塊擦除(512 kbit)操作和快速的整體擦除(8M)操作;具有操作暫停和硬件寫保護功能。
SPI模塊接線圖如右圖所示:
SPISOMI:SPI從模 式輸出/主模式輸入引腳; 與FLASH的串行數據輸出引腳Q相連。
SPISIMO:SPI從模式輸入/主模式輸出引腳; 與FLASH的串行數據輸入D引腳相連。
SPISTE:SPI從模式發送使能引腳;與FLASH的片選引腳 相連。
SPICLK:SPI串行時鐘引腳;與FLASH的時鐘輸入引腳C相連。
RAM_WP信號由DSP的I/O口輸出,控制外部Flash的寫保護功能,當RAM_WP為高電平時,使能Flash的硬件寫保護功能,Flash內部扇區受保護的,不能進行寫操作。系統中對Flash的操作不會發生暫停,因此M25P80的 信號直接接高電平,不進行中斷暫停操作。
3. m25p80的指令操作:m25p80支持的操作指令共有12條,所有指令都是8比特位,操作步驟如下:操作時先選中芯片(片選信號拉低),然后輸入8位操作指令字節,緊接著輸入地址字節(0~3bytes,必要時還要加入啞讀字節),然后把片選信號拉高(有些指令不要求),然后m25p80即可以啟動內部控制邏輯,自行完成相應的操作。以下以最常用的頁面快速編程指令進行具體說明(其他指令與該指令操作相似可以相互參考):
進行頁面編程操作首先應將內部狀態寄存器的寫允許位(WREN)置1,然后將片選信號拉低選中芯片,輸入pp指令字節02h,緊接著輸入3個字節的地址數據,然后輸入要編程的數據,所有數據都輸入后將片選信號拉高,m25p80隨即啟動內部邏輯完成編程操作。指令時序圖如下圖所示,具體的軟件編程實現請參考SPI模塊軟件編程部分。
SPI模塊軟件編程
SPI模塊軟件編程
(1)軟件流程說明:(流程圖如下圖所示)
a. 與SPI相關的系統初始化:完成SPI接口引腳功能的選擇、DSP外部接口時鐘的定標、SPI接口時鐘的使能。本系統中具體為:GPIO多路復用控制寄存器:GPFMUX中將相關引腳配置為SPI功能引腳,低速設備時鐘定標寄存器LOSPCP中低速設備時鐘的定標,外設時鐘控制寄存器PCLKCR中SPI接口時鐘使能;實現程序如下:
GpioMuxRegs.GPFMUX.all=0xfff7;
GpioMuxRegs.GPFDIR.all=0x0008; SysCtrlRegs.HISPCP.bit.HSPCLK=0x0001;
SysCtrlRegs.LOSPCP.bit.LSPCLK=0x0000;
SysCtrlRegs.PCLKCR.bit.SPIAENCLK=1;
b. 與SPI相關的中斷初始化:使能外部中斷向量表(PIEVECT寄存器),復位外部中斷應答寄存器(PIEACK),清除外部中斷標志寄存器(PIEIFR),置位PIE中斷使能寄存器(PIEIER),清除全局中斷屏蔽位(ST1 寄存器的INTM位)。
c. SPI接口初始化:在SPI配置寄存器(SPICCR)中:首先置位SPI軟件復位位,使SPI進入復位模式、設置SPI接口的時鐘極性(根據具體的FLASH器件操作特性設置,在4中時鐘模式中選擇,本系統選擇不帶相位延時的下降沿方式)、選擇有效數據位數、選擇奇偶校驗位;在SPI控制寄存器(SPICTL)中:使能接收中斷和發送中斷、選擇SPI時鐘相位、選擇主或從模式;SPI波特率寄存器(SPIBRR)中:設置SPI接口的通訊波特率。
d. SPI增強特性配置: SPIFIFO發送寄存器(SPIFFTX)中:復位SPI發送和接收通道、使能增強特性、復位FIFO指針、清除FIFO中斷標志位、使能FIFIO中斷、設置FIFO中斷優先級;SPIFIFO接受寄存器(SPIFFRX):請參考SPIFFTX寄存器配置,兩者基本相同,分別用于發送控制和接收控制;SPIFIFO控制寄存器(SPIFFCT):根據具體器件的操作時序要求配置FIFO發送延時。實現程序如下:
SpiaRegs.SPIFFTX.all=0xe060;//連續發送16個字節后產生發送中斷
SpiaRegs.SPIFFRX.all=0x606f;//當接收到一個數據時產生接受中斷
SpiaRegs.SPIFFCT.all=0x0006;//延時6個串行時鐘周期后發送數據
(2)頁編程PP軟件實例
//將寫允許位置1
GpioDataRegs.GPFDAT.bit.GPIOF3=0; //片選信號拉低
SpiaRegs.SPIDAT=INS_WREN; //輸入寫允許位置1指令INS_WREN
while(!SpiaRegs.SPISTS.bit.INT_FLAG); //等待發送完畢
GpioDataRegs.GPFDAT.bit.GPIOF3=1; //片選信號拉高
//PP頁面編程操作
GpioDataRegs.GPFDAT.bit.GPIOF3=0; //片選信號拉低
SpiaRegs.SPIDAT=INS_PP; // 輸入頁編程指令 INS_ PP=0x02h
for(i=0;i<4;i++) //連續發送3個字節的地址和一個字節的編程數據
{ if(I= =3)
SpiaRegs.SPIDAT=data; //data為輸入的編程數據
else
SpiaRegs.SPIDAT=w_addr8[i]; // w_addr8[i] 為輸入的地址字節
}
GpioDataRegs.GPFDAT.bit.GPIOF3=1; //片選信號拉高,執行頁面寫操作
//接收中斷子程序
interrupt void spi_rx_isr(void)
{ FLASH_VALUE=SpiaRegs.SPIRXBUF; //讀取接收到的數據
PieCtrlRegs.PIEACK.all = 0xFFFF; //清除中斷響應標志位
}
結束語
本文所述的運動控制系統利用系統核心芯片DSP自身的SPI接口,結合其高速性、可連續操作性和極大的靈活性,選用性價比高的大容量串行接口FLASH,高效地實現了對系統存儲容量的擴展,適應了目前信息化發展趨勢,滿足了系統大容量存儲空間的要求。本文的實現形式經實驗驗證正確無誤,具有很高的參考價值和廣泛的應用前景。
參考文獻:
『1』 ST. Corporation ,Serial Flash Memory m25p80 Data Manual ,August 2005
『2』 Texas Instruments Incorporation ,TMS320F2812 Digital Signal Processors Data Manual ,USA,.December 2005。
『3』 張衛寧,TMS320C28X系列DSP的CPU與外設(上、下),清華大學出版社, 2005-1
『4』 蘇奎峰,TMS320F2812原理與開放,電子工業出版社,2005-4。