王 娜 姜見龍
?
一種基于FPGA和TMS320F28335的電機控制實現過程
王 娜 姜見龍
(湖北三江航天紅峰控制有限公司,孝感432100)

提出了一種基于FPGA和TMS320F28335的電機控制實現過程。以FPGA為控制器及CAN總線控制接口實現與測試系統的CAN通訊,并將CAN通訊數據以EMIF接口形式與TMS320F28335進行信息交互,TMS320F28335通過接收控制指令和發送反饋信號實現對電機的控制。使用Verilog HDL硬件描述語言,根據CAN總線接口協議CAN2.0B,實現FPGA的CAN總線接口的通訊,及與TMS320F28335的EMIF接口信息交互,并通過了功能仿真;C語言實現電機控制過程和FPGA與TMS320F28335之間的EMIF接口信息交互過程。
FPGA;TMS320F28335;電機控制;CAN通訊;EMIF接口
CAN(Controller Area Network)控制局域網是一種串行通訊協議,是國際上應用最廣泛的現場總線之一,廣泛應用于汽車行業、工業自動化、醫療器械、船舶、自動化儀表等領域。SCI串行接口通信網絡中只有一個主機設備,其余為從機的工作模式,而CAN總線是一種多主的局域網,也就是通訊時網絡中的各個設備均可以在主機模式工作。CAN通訊總線的數據傳輸速率可高達1Mbps,從而易于實現系統的實時控制。另外,CAN總線硬件的錯誤檢定特性增強了CAN總線通訊過程中的抗電磁干擾能力。
EMIF(External Memory Interface)外部存儲器接口,也就是TMS320F28335所具有的外部接口(XINTF),一種與外進行信息交互的接口。比如C6000系列DSP的片內無FLASH,則需外擴FLASH,其實該過程就是使用EMIF接口實現FLASH擴展。本文使用EMIF接口連接TMS320F28335和FPGA傳遞消息數據。由于FPGA芯片的引腳資源比DSP更為豐富,通過FPGA與AD7656等外設連接,輔控制器FPGA采集的各種外設信息,及測試系統發送的控制指令,再通過EMIF接口傳遞給主控制器TMS320F28335。相應地,TMS320F28335控制電機轉動獲得的電機轉動方向、速度等,也通過EMIF接口傳遞給測試系統。
TMS320F28335為TI推出的一款具有強大控制和信號處理能力的32位浮點型數字信號處理器,主頻高達150MHz,片上集成了512KByte的FLASH存儲器、68KByte的SARAM、16KByte的Boot ROM以及多種先進的外設,可廣泛應用于伺服、電機控制系統中。選用的電機驅動電路板FPGA軟件運行在Xlinx公司Spartan3系列的FPGA芯片XC3S200上。FPGA具備豐富的I/O資源,編程靈活,可實現任何數字電路。同時因為其內部程序是并行運行的,可同時處理不同的任務,使得FPGA有更高的工作效率。采用Verilog HDL語言,在集成開發環境ISE10.1中完成FPGA軟件代碼的設計開發與調試,利用ModelsimSE6.0仿真工具進行仿真驗證,最后將程序加載到FPGA芯片中進行功能驗證。

圖1 FPGA與CAN口通訊的系統結構框圖

圖2 EMIF接口連接框圖
本系統接口設計所用到的CAN總線控制器是Microchip公司的MCP2512,它是一款獨立控制器局域網絡(Controller Area Network,CAN)協議控制器,完全支持CAN V2.0B技術規范。MCP2515與FPGA的連接通過業界標準串行外設接口(Serial Peripheral Interface,SPI)進行數據通訊和指令的傳遞。通過MCP2515 CAN驅動模塊,實現與測試系統的CAN總線通訊過程。FPGA與CAN口通訊的系統結構圖如圖1所示。DSP TMS320F28335的EMIF接口連接圖見圖2。
FPGA使用Verilog HDL硬件描述語言設計XINTF接口,需要在約束條件中對相應的IO口的引腳進行定義和約束,具體定義如下:
NET "XZCS0" LOC = "A13";#TSDCAS
NET "XRD" LOC = "K17";#TSDRAS
NET "XWE0" LOC = "A14";#TSDWE
NET "INT_CANF" LOC = "C6";
NET "XA<0>" LOC = "B14";
NET "XA<1>" LOC = "G20";
......
NET "XA<19>" LOC = "H19";
#####################################
NET "XD<0>" LOC = "D16";
......
NET "XD<14>" LOC = "A15";
NET "XD<15>" LOC = "B15";
設置好相關約束后,可以對相應的地址線進行操作,此處選用的如往地址上寫數據,當輸入信號片選信號XZCS0為低,讀信號XRD也為低時,DSP軟件即可在給定的地址上讀出FPGA控制軟件所寫數據內容,具體寫數據操作如下:
assign XD=
(XZCS0==0 && XRD==0 && TEAB=='h4 && TEAA=='h0)?data[31:16]:
(XZCS0==0 && XRD==0 && TEAB=='h4 && TEAA=='h2)?{data[15:0]}:
'hzzzz;
讀出相應地址線上的數據也是一樣,當輸入信號片選信號XZCS0為低,寫信號XWE0也為低時,FPGA控制軟件讀出DSP所寫數據內容,并保存,具體讀取數據操作如下:
if(XZCS0==0 && XWE0==0 && TEAB=='h0 && TEAA=='h0)
begin
dspbackdata <= XD;
end
本文使用的XINTF接口的固定區域為區域0(XZCS0),DSP軟件設計包括:外部存儲接口初始化、和外部存儲接口相關的GPIO口初始化,將與外部存儲接口有關的GPIO口設置為外部接口數據線、外部接口地址線、讀寫信號和片選信號,操作步驟如下:
a. 配置區域0(XZCS0)寫時序
XintfRegs.XTIMING0.bit.XWRLEAD=1;
XintfRegs.XTIMING0.bit.XWRACTIVE=3;
XintfRegs.XTIMING0.bit.XWRTRAIL=1;
b. 配置區域0(XZCS0)讀時序
XintfRegs.XTIMING0.bit.XRDLEAD=1;
XintfRegs.XTIMING0.bit.XRDACTIVE=3;
XintfRegs.XTIMING0.bit.XRDTRAIL=1;
c. 配置區域0(XZCS0)數據GPIO口
GpioCtrlRegs.GPCMUX1.bit.GPIO64=3; // XD15
......
GpioCtrlRegs.GPCMUX1.bit.GPIO79=3; // XD0
d. 配置區域0(XZCS0)地址GPIO口
GpioCtrlRegs.GPBMUX1.bit.GPIO40=3; // XA0
......
GpioCtrlRegs.GPAMUX2.bit.GPIO29=3; // XA19
e. 配置區域0(XZCS0)讀寫信號和片選信號
GpioCtrlRegs.GPBMUX1.bit.GPIO34=3; // XREADY
GpioCtrlRegs.GPBMUX1.bit.GPIO35=3; // XRNW
GpioCtrlRegs.GPBMUX1.bit.GPIO38=3; // XWE0
GpioCtrlRegs.GPBMUX1.bit.GPIO36=3; // XZCS0
完成以上相關GPIO口和讀寫時序的配置后,DSP控制軟件就可以讀取地址線上的數據,具體操作如下:
#define LOW * ((Uint16 * )0x00004400)
//讀,data高16bit
#define BISS_HIGH * ((Uint16 * )0x00004402)
//讀,data低16bit
DSP控制軟件往地址線上寫數據,具體操作如下:
#define CMD_ACK * ((Uint16 * )0x00004000)
//寫,指令類型回應
綜上所述,DSP控制軟件對XINTF接口進行讀寫操作的流程圖如圖3所示。

圖3 XINTF接口讀寫操作流程圖
CAN通訊接口的FPGA軟件設計過程通過了功能仿真,仿真工具采用的是ModelSim仿真軟件。根據test_bench編寫的測試程序,對CAN通訊部分進行功能仿真后,FPGA軟件通過CAN總線接收到的數據SDO1和發送出去的數據SDI1在時鐘時序的配合下,均有相應的數據輸出。仿真后得到的仿真波形見圖4。

圖4 EMIF接口和CAN通訊接口仿真波形
該設計所選用電機的控制是由TMS320F28335和相應驅動芯片控制完成的。這里,FPGA軟件的作用是通過CAN通訊獲得測試系統發來的控制指令,控制指令通過XINTF接口將控制指令傳遞給TMS320F28335。TMS320F28335采集位置反饋信息,并將采集的數據信息,通過FPGA軟件傳給測試系統。位置反饋信息與控制指令進行比較,參與PID控制,形成閉環控制,產生PWM信號,控制電機的運轉。這里不講述電機具體的硬件驅動過程。
設計中,電機控制使用的增強型PWM(ePWM)模塊是ePWM3,首先使能其對應的時鐘,實現過程如下,SysCtrlRegs.PCLKCR1.bit.EPWM3ENCLK = 1。
電機控制過程的流程圖見圖5所示。圖中計算得到的占空比輸出給計數器比較A寄存器集,具體實現過程為,EPwm3Regs.CMPA.half.CMPA=EPWM3_PRD-fabs(pwm_duty)。

圖5 電機控制過程流程圖
本文利用FPGA和DSP TMS320F28335的數據交互作用,實現了對電機的控制,提高了數據通訊的速率。由于FPGA芯片的資源很多,為后續設計多功能一體機,再增加更多外設,提供了豐富的接口資源。同時,執行效率也相應得到提高,在實際應用中,具有較強的應用推廣價值。
1 Xilinx. Interfacing Xilinx FPGAs to TI DSP platforms using the EMIF [M]. USA: Xilinx, 2007. 17~22
2 王念旭. DSP基礎與應用系統設計[M]. 北京:北京航空航天大學出版社,2001. 391~393
3 石英,張金鳳,申功勛. 基于FPGA和CAN控制器MCP2515設計慣導系統的CAN總線接口[C]. 西安:中國航空學會控制與應用第十二屆學術年會,2006.
4 王繼國,吉吟東,孫新亞. CAN總線控制器MCP2515的原理及應用[J]. 電測與儀表,2004(1):53~56
5 劉和平,張學鋒,嚴利平,等. TMS320240x DSP結構、原理及應用[M].北京:北京航空航天大學出版社,2002. 190~202
6 Texas Instruments Inc.TMS320F28225, TMS320F28334, TMS320F28332, TMS320F28235, TMS320F28234, TMS320F28232 digital signal processors data manual[R]. USA: Texas Instruments, 2003
7 方冬,章國寶. 基于EMIF接口的數據采集系統的設計[J]. 電子設計工程,2011(2):176~177
A Motor Control Implementation Process Based on FPGA and TMS320F28335
Wang Na Jiang Jianlong
(Hubei Sanjiang Space Hongfeng Control Co., Ltd, Xiaogan 432100)
This paper presented a FPGA and TMS320F28335 motor control implementation process. CAN communication cotroller FPGA and CAN bus control interface implemented CAN buss communication between FPGA and test system. The EMIF interface helped the data information exchange between FPGA and TMS320F28335. Receiving control commands and sending motor status, TMS320F28335 implemented closed-loop control to control motor. In this paper, Verilog HDL hardware description language,according to the CAN bus interface protocol, realized the CAN bus interface communication and EMIF interface information interaction. Finally, the design passed the function simulation. C language realized the motor control process and EMIF interface information interaction.
FPGA;TMS320F28335;motor control;CAN bus communication;EMIF interface
王娜(1985),碩士,檢測技術與自動化裝置專業;研究方向:嵌入式系統。
2017-03-28