摘 要:針對采用人機界面控制交流伺服系統的應用開發實例,設計以MSP430F149為控制核心的人機界面。介紹SPI通信的工作原理及其優點,著重闡述MSP430和DSP之間SPI通信的硬件連接和軟件實現方案。該設計方法不僅簡化了系統結構,而且分散了DSP的工作任務,增強了系統的可靠性。
關鍵詞:人機界面;SPI通信;MSP430單片機;DSP
中圖分類號:TP368.1 文獻標識碼:B 文章編號:1004-373X(2008)02-031-03
Application of SPI in the AC Servo System
ZHU Guangbin,ZHU Deming,MENG Xiaoli
(Aero-Power Science-Tech Center,Nanjing University of Aeronautics and Astronautics,Nanjing,210016,China)
Abstract:Aiming at the AC servo system,this paper introduces a kind of Human-Machine Interface (HMI) based on MSP430F149 MCU,discusses the working principle and advantages of SPI,and interpretes the structure of hardware and software detailedly.This design not only simplifies system configuration and decentralizes assignment of DSP,but also boosts up reliability of the system.
Keywords:HMI;SPI;MSP430;DSP
1 引 言
隨著系統思想在工程領域的廣泛應用,人們在設計產品時,都會考慮到產品操作的簡單化、人性化并盡量提供多的操作功能,以便于用戶個性化使用。而其中,人機界面是用戶與產品互動的重要平臺。通過人機界面,用戶可以獲得重要的產品運行參數,從而知道產品的工作情況并及時發現問題,以利于下一步的數據處理、運行參數修正、故障排除等操作。
交流伺服系統的主控電路采用TI公司的高性能DSP控制器TMS320LF2407A作為控制核心,他將一個高性能DSP核、大容量的片上存儲器和專用的運動控制外設電路以及其他功能的外設電路集成在單個芯片上,具有可編程、集成度高、靈活性、適應性好及升級方便等優點[1]。
根據實際使用的要求,針對伺服系統的特點研制了一套單片機構成的人機界面。系統采用串口通信實現單片機與DSP,E2PROM的數據傳輸,通過DS1305串行顯示實時的顯示時間;通過串行通信口以RS 485總線形式實現單片機與上位機的通信,使用單片機自身的A/D采樣功能實現對電機母線電壓電流的檢測;通過按鍵、液晶顯示器來完成人機對話功能。
2 系統硬件的構成
2.1 系統構成
鑒于伺服系統需要完成的功能較多,系統選用TI公司生產的MSP430系列單片機中的MSP430F149。MSP430系列單片機是美國德州儀器公司(TI)近幾年開發的新一代單片機,該單片機在設計上打破常規采用了全新的概念,其突出的優點是低電源電壓、超低功耗、多種功能。由于其功能遠遠超過其他系列單片機的功能因而又稱之為混合型單片機。同時,MSP430F149是FLASH存儲器型單片機,具有良好的仿真開發技術,設置有JTAG仿真接口和高級語言編譯器。在系統支持軟件下,在線實現對目標系統的硬件調試及軟件開發,包括匯編、C語言、連接及動態調試,具有單步、多斷點和跟蹤,并且開放全部存儲器、寄存器,可以方便可靠地對系統進行軟硬件開發[2]。
伺服系統采用DSP作為控制核心進行運算并采用單片機控制人機界面,所以涉及到設備之間的通信。這里主要介紹系統的串口通信。MSP430F149提供的串口通信模塊為USART,該模塊主要包括波特率產生部分、接受部分、發送部分和接口部分等。該模塊可以作為UART使用,也可以作為SPI使用[3,4]。
系統采用Atmel公司的SPI串行接口的E2PROM (AT25640)作為非易失數據存儲器進行參數管理,保存大量的設定工藝參數及掉電狀態數據。參數管理主要是處理內存和E2PROM之間的操作,包括參數寫入、參數讀取、參數備份、恢復備份,恢復缺省值。當突然掉電時,所有的工作參數不會丟失,來電后可接著掉電前的工作狀態繼續工作,不必從頭再來,從而保證了工作的質量和效率。采用美國Dallas公司推出的DS1305作為時鐘芯片。DS1305用二-十進制(BCD)碼表示實時時鐘的秒、分、小時、星期、日、月和年的時間信息,并且自動對小月(少于31天的月份)和閏年的日期進行調整,兼有帶AM/PM指示12小時和24小時2種時間指示格式。
整個系統的硬件結構圖如圖1所示,SPI通信所涉及到的部分硬件的照片如圖2所示。
2.2 SPI簡介
SPI通過一根時鐘引線將主機和從機同步。因此,他的串行數據交換不需要增加起始位、停止位等用于同步的格式位,直接將要傳送的數據寫入到主機的SPI發送數據寄存器;這個寫入過程自動啟動主機的發送過程;即在同步時鐘SPICLK的節拍下把SPITXBUF的內容逐位地移到引腳SPISIMO;對于從機,同樣在SPICLK的節拍下將出現在引腳SPISIMO上的數據逐位地移到從機的移位寄存器,當接收完一個完整的數據塊后,設置中斷標志,通知從機這個數據塊已接收完畢,并同時將移位寄存器接收到的內容復制到從機的SPI接收數據寄存器SPIRXBUF。可以看出,用戶編程只需在發送數據時寫數據到SPI發送數據寄存器;在接收數據時讀SPI接收數據寄存器。其余的移位、同步、置收發標志等工作都由內置的SPI模塊自動完成[5-7]。
鑒于SPI通信具有這么多的優點,系統中單片機與外設之間采用SPI進行通信。系統的SPI通信主要包括單片機與DSP的通信,單片機與E2PROM的通信以及單片機與DS1305的通信。 DS1305與E2PROM共用USART1,DS1305占用USART0,通過片選信號分別進行選通。在這里主要介紹單片機與DSP之間的通信。
2.3 硬件接口設計
SPI通信設備在硬件連接上只需要將主機的發送與從機的接收相連,將主機的接收與從機的發送相連,將主機產生的時鐘信號輸出至從機的時鐘引腳。單片機與外設的硬件連接如表1所示。
單片機MSP430F149作為串行通信的主機, DSP2407則作為副機(SLAVE)。其中SPICLK為SPI時鐘引腳, SIMO為SPI從動輸入/主動輸出,SOMI為從動輸出/主動輸入,SPISTE為從動發送使能。
3 軟件設計
MSP430F149和DSP都允許用戶用C語言和匯編語言進行編程,并提供高效的C編譯環境。鑒于MSP430作為人機界面系統對運行時間的要求不是很高而DSP對電機的控制需要完成的運算比較復雜所以MSP430采用C語言進行編程而DSP采樣匯編語言進行編寫。
軟件設計的主要任務是:初始化相應的寄存器;單片機在相應的界面發送數據;DSP及時接收到達串口的數據,識別并保存數據。
3.1 通信協議的設置
2個設備之間要實現相互通信,首先必須規定用以傳輸數據的協議。一般來說,主機發送命令和配置信息給從機,而從機則向主機發送反饋信息。MSP430與DSP的SPI通信首先要設計好他們之間的通信協議,系統主要實現的是單片機向DSP發送數據信息,單片機首先發送指令數據表示主機發送數據的過程開始,如果發送的是0則標志著該過程的開始,為了避免誤操作指令數據發送2次,DSP接受的2個數據都是0則進行相應的操作,否則重新傳輸指令數據。然后把單片機需要傳輸的數據存放在一個數組里面依次傳送,比如要傳輸3個數據,他們分別是:速度指令;速度比例增益;速度積分增益。則定義數組a[0]和a[1]存放指令數據,a[2]到a[4]存放需要傳送的數組。
3.2 串行口的初始化
單片機的SPI初始化包括:把相應的I/O口配置成具有SPI的特殊功能的接口;時鐘模式的選定;波特率的選擇;發送接收數據長度的選擇;內部對應的時鐘使能。所有設置都通過相對應的SPI控制寄存器實現。
初始化程序如下:
WDTCTL=WDTPW+WDTHOLD;[JY]//關閉看門狗
BCSCTL1 = RSEL0 + RSEL1 + RSEL2;[JY]// XT2on
BCSCTL2 = SELM1 + SELS;
[JY]//選擇高速晶體振蕩器作為時鐘源
UCTL1=CHAR + SYNC + MM + SWRST;
[JY]//SPIZ主模式8位數據,單片機作為主動模式
UTCTL1=STC+SSEL1+CKPL ;
[JY]//數據在下降沿輸出,系統主時鐘,3線模式
UBR01=0x02;
UBR11=0x00; [JY]//波特率設為fclk/2
UMCTL1=0x00;
ME2=USPIE1; [JY]//模塊使能2
P5SEL|=0x0F;[JY]//低4位為模塊端口功能
P5OUT|=0xf0;
UCTL1= ~SWRST; [JY]//復位結束
TMS32OLF24O7的SPI初始化與單片機的初始化相類似,但是DSP作為從器件所以他的波特率由主器件決定不需要再進行設計。
3.3 MSP430發送數據
單片機發送數據沒有通過中斷實現。因為系統具有薄膜按鍵和液晶顯示可以方便地看出在什么時候需要發送數據。比如在設計完參數以后就會出現一個選擇界面讓操作者選擇是進行參數保存、參數備份還是傳遞參數給DSP,操作者可以根據自己的不同需要選擇相應的功能。如操作者選擇參數傳遞功能,則單片機就會跳到相應的程序段執行參數傳遞的功能。發送數據程序如下:
P5OUT = 0x1f; [JY]//片選DSP芯片
while((U1IFG UTXIFG1) != UTXIFG1);
for(k=0;k<6;k++)[JY]//傳輸的數據個數
{P5OUT = 0x1f;
while((U1IFG UTXIFG1) != UTXIFG1);
TXBUF1=a[k];[JY]//發送數據
while((UTCTL10x01)==0);[JY]//發送完成
delay(10);
P5OUT = 0x2f;}
3.4 DSP接受數據
DSP接收單片機發送來的數據通過中斷方式實現,每傳輸一個數據就發生一次中斷,所以在該過程中會產生5次中斷。主程序完成對DSP的初使化后進入等待狀態,一旦接收到單片機的中斷信號,DSP進入中斷服務子程序,將接收到的數據存放在70H開始的存儲單元中,當所有數據傳輸完成后將這些數據賦給相應的變量。這里需要注意DSP的SPIRXBUF是16位而單片機發送的數據是8位,所以在DSP接收到數據以后需要做處理把高8位屏蔽掉,可以通過與00FF相與來達到這個目的。接收中斷程序流程圖如圖3所示。
4 結 語
實驗證明,應用SPI通信可以很好地實現MSP430單片機與DSP之間的串口通信。由于SPI接口功能比較完善、通信協議清晰、時序簡單,無需外加其他元器件即可方便地實現DSP與主機之間數據的串行通信,簡化了系統設計,能夠保證較好的實時性和較小的誤差。
參 考 文 獻
[1]劉和平,嚴利平,張學鋒,等.TMS320LF240X DSP結構、原理及應用[M].北京:北京航空航天大學出版社,2002.
[2]胡大可.MSP430系列超低功耗16位單片機原理與應用[M].北京:北京航空航天大學出版社,2000.
[3]魏小龍.MSP430系列單片機接口技術及系統設計實例[M].北京:北京航空航天大學出版社,2002.
[4]Texas Instruments.MSP430x1xx FamilyUser′s Guide(SLAU049B.pdf)[Z].2002.
[5]MSP430 Universal Synchronous Asynchronous R/T Communication Interface.www.ti.com,1999.
[6]王保義,張少敏.接口與通信[M].北京:中國電力出版社,2006.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。