摘要:2.4DSP接收數據DSP接收單片機發送過來的數據是通過中斷方式實現的,每傳輸一個數據就發生一次中斷。主程序完成對DSP的初始化后進入等待狀態,一旦接收到單片機的中斷信號,DSP就進入中斷服務子程序,將接收到的數據存放在70H開始的存儲單元中。當所有數據傳輸完成后,將這些數據賦給相應的變量。這里要注意的是,DSP的SPIRXBUF是16
2.4 DSP接收數據
DSP接收單片機發送過來的數據是通過中斷方式實現的,每傳輸一個數據就發生一次中斷。主程序完成對DSP的初始化后進入等待狀態,一旦接收到單片機的中斷信號,DSP就進入中斷服務子程序,將接收 到的數據存放在70H開始的存儲單元中。當所有數據傳輸完成后,將這些數據賦給相應的變量。這里要注意的是,DSP的SPIRXBUF是16位,而單片機發送的數據是8位,所以在DSP接收到數據以后需要做處 理,把高8位屏蔽掉。可以通過與00FF相與來達到這個目的。
中斷程序如下:
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;判斷是否為指令數據
BCND L1,NEQ
LDP #0
LACC #70H
SUB #0
BCND L3,NEQ;不是0則跳到L3
BL2;是0則跳到L2
L1: …;判斷是否是第2個數據
L4: LACCK;判斷數據是否傳送完畢
SUB #05H
BCND L5,EQ
BL2
L5:LDP #0;數據全部發送完畢
LACC 72H
LDP #6
SACL SPEED;賦值給相應變量
……
L3: SPLK K,0;K=0
LDP #0
LAR AR2,#70H;地址指針指回70H
L2: CLRC INTM;開中斷
RET
3 結論
實驗證明,應用SPI通信進行MSP430單片機與DSP之間的串口通信完全滿足伺服系統實時性的要求。同時,由于SPI接口功能比較完善,通信協議清晰,時序簡單,無須外加其他元器件即可方便地實現DSP 與主機之間數據的串行通信,簡化了系統設計,增強系統的實時處理能力和應用范圍。結構靈活性強,便于擴展,同時減輕了主CPU負擔,提高了系統的可靠性。
[1] [2] [3] [4]