MCU與DSP的SPI通信設(shè)計[圖]

相關(guān)專題: 芯片

摘要:伺服控制器的實時性對工控系統(tǒng)至關(guān)重要。本文提出一種伺服系統(tǒng)的多處理機方案,著重闡述系統(tǒng)中MSP430與DSP之間SPI通信的硬件設(shè)計和軟件實現(xiàn),給出MSP430與DSP之間通信的通信協(xié)議,并應(yīng)用這種協(xié)議實現(xiàn)MSP430與DSP之間的通信。該設(shè)計方案不僅滿足系統(tǒng)實時性要求,而且簡化了系統(tǒng)結(jié)構(gòu),增強了系統(tǒng)的可靠性。

引言

現(xiàn)今的工控系統(tǒng)中,為了提高系統(tǒng)的實時性和適用性,一般采用DSP來完成核心算法與控制,而使用MCU來實現(xiàn)人機對話,以實現(xiàn)實時控制功能。這樣,DSP和MCU需要一種高效的數(shù)據(jù)總線來完成它們之間的大量數(shù)據(jù)傳送。SPI總線由于占用的接口線少,通信效率高,并且大部分處理器芯片都支持,因而是一種理想的設(shè)計方案。

針對交流伺服系統(tǒng)實際使用的要求,采用TI公司的高性能DSP控制器TMS320LF2407A(簡稱“2407A”)作為控制核心;選用TI公司生產(chǎn)的MSP430系列單片機中的MSP430F149作為人機界面的控制芯片,來實現(xiàn)按鍵和數(shù)據(jù)采集以及顯示的功能;采用SPI串口通信實現(xiàn)單片機與DSP之間的數(shù)據(jù)傳輸。

1 系統(tǒng)硬件的構(gòu)成

1.1 MSP430

MSP430系列單片機是TI公司近幾年開發(fā)的新一代單片機。該單片機在設(shè)計上打破常規(guī)采用了全新的概念,其突出的優(yōu)點是低電源電壓、超低功耗、多種功能。由于其功能遠遠超過其他系列單片機的功能,因而又稱為“混合型單片機”。MSP430具有非常高的集成度,單片集成了多通道的12位A/D轉(zhuǎn)換、片內(nèi)精密比較器、多個具有PWM功能的定時器、片內(nèi)USART、看門狗定時器、片內(nèi)數(shù)控振蕩器、大量的I/O端口以及大容量的片內(nèi)存儲器。同時,MSP430F149是Flash存儲器型單片機,具有良好的仿真開發(fā)技術(shù),設(shè)置有JTAG仿真接口和高級語言編譯器。在系統(tǒng)支持軟件下,在線實現(xiàn)對目標系統(tǒng)的硬件調(diào)試及軟件開發(fā),包括匯編語言、C語言、連接及動態(tài)調(diào)試,具有單步、多斷點和跟蹤,并且開放全部存儲器、寄存器,可以方便、可靠地對系統(tǒng)進行軟硬件開發(fā)[12]。

基于以上特點,該系列單片機在便攜式儀表、智能傳感器、實用檢測儀器、電機控制、家庭自動化等領(lǐng)域的應(yīng)用較為普遍。

1.2 TMS320LF2407A

2407A是TI公司為滿足工業(yè)控制應(yīng)用,尤其是電機控制而設(shè)計的。把一個高性能的 DSP核和許多外圍設(shè)備集成到單片內(nèi)。2407A的40 MIPS的處理速度可以滿足快速地處理大量數(shù)據(jù)和算法的需要。

2407A具有豐富的外設(shè)模塊: 3K字的Flash程序存儲器、1.5K字的數(shù)據(jù)/程序RAM、544字雙口RAM(DARAM)和2K字的單口RAM(SARAM)、2個事件管理器EVA和EVB、16通道輸入的A/D轉(zhuǎn)換器,具有看門狗定時器模塊(WDT)、串行通信接口(SCI)、16位的串行外設(shè)接口模塊(SPI)、控制器局域網(wǎng)絡(luò)(CAN)2.0B模塊、基于鎖相環(huán)的時鐘發(fā)生器、高達40個可單獨編程或復(fù)用的通用輸入/輸出引腳、5個外部中斷。由此可以看出,2407A確實有著很強的實時處理能力,不失為高性能伺服驅(qū)動控制的理想器件之一[3]。

1.3 硬件接口設(shè)計與SPI通信的實現(xiàn)

SPI通信設(shè)備在硬件連接上只需要將主機的發(fā)送與從機的接收相連,將主機的接收與從機的發(fā)送相連,將主機產(chǎn)生的時鐘信號輸出至從機的時鐘引腳上。單片機與外設(shè)的硬件連接如圖1所示。

圖1 MSP430F149與DSP的接口連接電路

單片機MSP430F149作為串行通信的主機, DSP 2407A則作為從機(slave)。其中,SPICLK為SPI時鐘引腳, SPISIMO為SPI從動輸入/主動輸出,SPISOMI為從動輸出/主動輸入,SPISTE為從動發(fā)送使能。

從圖1可以看出,SPI通過一根時鐘引線將主機和從機同步,因此,它的串行數(shù)據(jù)交換不需要增加起始位、停止位等用于同步的格式位,直接將要傳送的數(shù)據(jù)寫入主機的SPI發(fā)送數(shù)據(jù)寄存器。這個寫入過程自動啟動主機的發(fā)送過程,即在同步時鐘SPICLK的節(jié)拍下把SPITXBUF的內(nèi)容一位一位地移到引腳SPISIMO;對于從機,同樣在SPICLK的節(jié)拍下將出現(xiàn)在引腳SPISIMO上的數(shù)據(jù)一位一位地移到從機的移位寄存器,當(dāng)接收完一個完整的數(shù)據(jù)塊后,設(shè)置中斷標志通知從機這個數(shù)據(jù)塊已接收完畢,并同時將移位寄存器接收到的內(nèi)容復(fù)制到從機的SPI接收數(shù)據(jù)寄存器SPIRXBUF?梢钥闯,用戶編程只需在發(fā)送數(shù)據(jù)時寫數(shù)據(jù)到SPI發(fā)送數(shù)據(jù)寄存器,在接收數(shù)據(jù)時讀SPI接收數(shù)據(jù)寄存器,其余的工作都由SPI模塊自動完成[4]。

2 軟件設(shè)計

MSP430F149和DSP都允許用戶用C語言和匯編語言進行編程。系統(tǒng)中DSP對電機實現(xiàn)實時控制,對運行速度要求嚴格,所以程序采用匯編語言實現(xiàn)。MSP430實現(xiàn)按鍵顯示、數(shù)據(jù)管理和指令傳輸?shù)裙δ,對運行速度要求不高,所以采用C語言實現(xiàn)。

軟件設(shè)計的主要任務(wù)是:初始化相應(yīng)的寄存器;單片機在相應(yīng)的界面發(fā)送數(shù)據(jù);DSP及時接收到達串口的數(shù)據(jù),識別并保存數(shù)據(jù)。

2.1 通信協(xié)議的設(shè)置

兩個設(shè)備之間要實現(xiàn)相互通信,首先必須規(guī)定用以傳輸數(shù)據(jù)的協(xié)議。一般來說,主機發(fā)送命令和配置信息給從機,而從機則向主機發(fā)送反饋信息。系統(tǒng)主要實現(xiàn)的是單片機向DSP發(fā)送數(shù)據(jù)信息,單片機首先發(fā)送指令數(shù)據(jù)表示主機發(fā)送數(shù)據(jù)的過程開始。如果發(fā)送的是0,則標志著該過程的開始。為了避免誤操作指令數(shù)據(jù)發(fā)送兩次,DSP接收的兩個數(shù)據(jù)都是0時進行相應(yīng)的操作,否則重新傳輸指令數(shù)據(jù)。然后把單片機需要傳輸?shù)臄?shù)據(jù)存放在一個數(shù)組里面依次傳送,比如要傳輸3個數(shù)據(jù),則定義數(shù)組a[0]和a[1]存放指令數(shù)據(jù),a[2]到a[4]存放需要傳送的數(shù)組。

2.2 串行口的初始化

單片機的SPI初始化包括:把相應(yīng)的I/O口配置成具有SPI特殊功能的接口,時鐘模式的選定,波特率的選擇,發(fā)送接收數(shù)據(jù)長度的選擇,內(nèi)部相對應(yīng)的時鐘使能。所有設(shè)置都是通過設(shè)計相對應(yīng)的SPI控制寄存器實現(xiàn)的[5]。

初始化程序如下:

WDTCTL=WDTPW+WDTHOLD;//關(guān)閉看門狗

BCSCTL1 = RSEL0 + RSEL1 + RSEL2; // XT2on

BCSCTL2 = SELM1 + SELS;//選擇高速晶體振蕩器作為時鐘源

UCTL1=CHAR + SYNC + MM + SWRST;//SPIZ主模式8位數(shù)據(jù),單片機作為主動模式

UTCTL1=STC+SSEL1+CKPL ;//數(shù)據(jù)在下降沿輸出,系統(tǒng)主時鐘,三線模式

UBR01=0x02;

UBR11=0x00;//波特率設(shè)為fclk/2

UMCTL1=0x00;

ME2=USPIE1;//模塊使能2

P5SEL|=0x0F;//低4位為模塊端口功能

P5OUT|=0xf0;

UCTL1&= ~SWRST;//復(fù)位結(jié)束

2407A的SPI初始化與單片機的初始化相類似,但是DSP作為從器件,所以其波特率由主器件決定不需要再進行設(shè)計。

2.3 MSP430發(fā)送數(shù)據(jù)

系統(tǒng)具有薄膜按鍵和液晶顯示,可以方便地在需要的時候發(fā)送數(shù)據(jù)。比如,在設(shè)計完參數(shù)后就會出現(xiàn)一個選擇界面,讓操作者選擇是進行參數(shù)保存、參數(shù)備份還是傳遞參數(shù)給DSP,操作者可以根據(jù)自己不同的需要選擇相應(yīng)的功能。如果選擇參數(shù)傳遞功能,則單片機會跳到相應(yīng)的程序段執(zhí)行參數(shù)傳遞的任務(wù)。發(fā)送數(shù)據(jù)程序如下:

P5OUT &= 0x1f;//片選DSP芯片

while((U1IFG & UTXIFG1) != UTXIFG1);

for(k=0;k<6;k++) {//傳輸?shù)臄?shù)據(jù)個數(shù)

P5OUT &= 0x1f;

while((U1IFG & UTXIFG1) != UTXIFG1);

TXBUF1=a[k];//發(fā)送數(shù)據(jù)

while((UTCTL1&0x01)==0);//發(fā)送完成

delay(10);

P5OUT &= 0x2f;

}

2.4 DSP接收數(shù)據(jù)

DSP接收單片機發(fā)送過來的數(shù)據(jù)是通過中斷方式實現(xiàn)的,每傳輸一個數(shù)據(jù)就發(fā)生一次中斷。主程序完成對DSP的初始化后進入等待狀態(tài),一旦接收到單片機的中斷信號,DSP就進入中斷服務(wù)子程序,將接收到的數(shù)據(jù)存放在70H開始的存儲單元中。當(dāng)所有數(shù)據(jù)傳輸完成后,將這些數(shù)據(jù)賦給相應(yīng)的變量。這里要注意的是,DSP的SPIRXBUF是16位,而單片機發(fā)送的數(shù)據(jù)是8位,所以在DSP接收到數(shù)據(jù)以后需要做處理,把高8位屏蔽掉?梢酝ㄟ^與00FF相與來達到這個目的。中斷程序流程如圖2所示。

圖2 DSP中斷程序流程

中斷程序如下:

LDP #6

LACC K;K=K+1

ADD #1

SACL K

MAR *,AR2;AR2為存儲單元地址指針

LDP #DP_PF1

LACC SPIRXBUF

AND #00FFH;高位屏蔽掉

SACL *+

LDP #6

LACC K

SUB #1;判斷是否為指令數(shù)據(jù)

BCND L1,NEQ

LDP #0

LACC #70H

SUB #0

BCND L3,NEQ;不是0則跳到L3

BL2;是0則跳到L2

L1: …;判斷是否是第2個數(shù)據(jù)

L4: LACCK;判斷數(shù)據(jù)是否傳送完畢

SUB #05H

BCND L5,EQ

BL2

L5:LDP #0;數(shù)據(jù)全部發(fā)送完畢

LACC 72H

LDP #6

SACL SPEED;賦值給相應(yīng)變量

……

L3: SPLK K,0;K=0

LDP #0

LAR AR2,#70H;地址指針指回70H

L2: CLRC INTM;開中斷

RET

3 結(jié)論

實驗證明,應(yīng)用SPI通信進行MSP430單片機與DSP之間的串口通信完全滿足伺服系統(tǒng)實時性的要求。同時,由于SPI接口功能比較完善,通信協(xié)議清晰,時序簡單,無須外加其他元器件即可方便地實現(xiàn)DSP與主機之間數(shù)據(jù)的串行通信,簡化了系統(tǒng)設(shè)計,增強系統(tǒng)的實時處理能力和應(yīng)用范圍。結(jié)構(gòu)靈活性強,便于擴展,同時減輕了主CPU負擔(dān),提高了系統(tǒng)的可靠性。

參考文獻

[1] 胡大可.MSP430系列超低功耗16位單片機原理與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2000.

[2] Texas Instruments.MSP430x1xx Family Users Guide (SLAU049B.pdf),2002.

[3] 劉和平,嚴利平,張學(xué)鋒,等.TMS320LF240X DSP結(jié)構(gòu)、原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2002.

[4] 任志斌,車長征.串行外設(shè)接口SPI的應(yīng)用[J] .電子技術(shù)應(yīng)用,2002,29(10):2022.

[5] 魏小龍.MSP430系列單片機接口技術(shù)及系統(tǒng)設(shè)計實例[M].北京:北京航空航天大學(xué)出版社,2002.

朱廣斌(碩士研究生),主要研究方向為交流伺服系統(tǒng)。

作者:朱廣斌 朱德明 孟小利 來源:《單片機與嵌入式系統(tǒng)應(yīng)用》


微信掃描分享本文到朋友圈
掃碼關(guān)注5G通信官方公眾號,免費領(lǐng)取以下5G精品資料
  • 1、回復(fù)“YD5GAI”免費領(lǐng)取《中國移動:5G網(wǎng)絡(luò)AI應(yīng)用典型場景技術(shù)解決方案白皮書
  • 2、回復(fù)“5G6G”免費領(lǐng)取《5G_6G毫米波測試技術(shù)白皮書-2022_03-21
  • 3、回復(fù)“YD6G”免費領(lǐng)取《中國移動:6G至簡無線接入網(wǎng)白皮書
  • 4、回復(fù)“LTBPS”免費領(lǐng)取《《中國聯(lián)通5G終端白皮書》
  • 5、回復(fù)“ZGDX”免費領(lǐng)取《中國電信5GNTN技術(shù)白皮書
  • 6、回復(fù)“TXSB”免費領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解
  • 7、回復(fù)“YDSL”免費領(lǐng)取《中國移動算力并網(wǎng)白皮書
  • 8、回復(fù)“5GX3”免費領(lǐng)取《R1623501-g605G的系統(tǒng)架構(gòu)1
  • 本周熱點本月熱點

     

      最熱通信招聘

    業(yè)界最新資訊


      最新招聘信息