基于雙DSP的并聯控制系統中串行通信的研究
上位機采用Visual Basic6.0(以下簡稱VB)語言編程實現,利用VB 中提供的MSComm 控件可以實現PC 機與下位機的通信。利用MSComm 實現通信有兩種方法:一是事件驅動 方法,也就是OnComm 事件。當有數據到達端口或端口狀態發生改變或有通信錯誤產生時, 都將發生OnComm 事件。另一種就是查詢方式。查詢方式是通過周期性讀取緩沖區的信號來發現是否有事件發生并進行處理的方法。本設計中,發送采用查詢方式,接受采用事件驅 動方法。MSComm 控件初始化程序如下:
MSComm1.CommPort = 1 '端口號'
MSComm1.Settings = 38400,n,8,1
'波特率38400bit/s,8 位數據位,無奇偶校驗,1 位停止位'
MSComm1.InputLen = 0
MSComm1.InBufferCount = 0 '清空接收緩沖區'
MSComm1.OutBufferCount = 0 '清空'
MSComm1.RThreshold = 1 '接收緩沖區或發送緩沖區中可以接收的字符數'
MSComm1.PortOpen = True
應實際要求,我們要在通信中同時傳輸數據和控制字符,所以數據傳輸同時采用ASCⅡ 碼和二進制兩種形式。這就需要在每次傳輸前改變MSComm1.InputMode 的屬性。
TMS320F2812(SPI 通信中主處理器)在完成時鐘和中斷初始化后,對其SCI 寄存器進 行設置,使其通信協議和上位機一致。TMS320F2812 采用查詢方式給上位機發送數據,中 斷方式接受上位機的數據。SCI 寄存器設置如下:
SciaRegs.SCICCR.all=0x0007;
/*一個停止位,禁止奇偶校驗,禁止自測,8 個字符*/
SciaRegs.SCICTL1.all=0x0003;
/*禁止接受錯誤中斷,復位,禁止休眠,開啟發送使能*/
SciaRegs.SCICTL2.all=0x0002;
/*開接受中斷,關發送中斷*/
SciaRegs.SCIHBAUD=0x00;
SciaRegs.SCILBAUD=0x79;
/*波特率38400*/
SciaRegs.SCICTL1.all=0x0023;
/*開始使能SCIA*/
5 結束語
以上為解決兩個DSP 之間以及DSP 與PC 機之間的通信的軟硬件設計方案,當上位機 發送給定信息(位置信息)后,下位機接受到數據并傳輸給SPI 處理器,上位機和下位機界 面如圖6、圖7。
系統的最大特點是根據實際需要,采用同時同步和異步兩通信方式。雙系統間的同步串 行通信,保證了雙系統運行的同步性;通過PC 機和上位機的異步串行通信,實現把DSP 采集的一系列數據通過串口發送至PC 機,解決了DSP 存儲空間有限的問題,在PC 上可以很方便地對數據進行一些在DSP 上難以實現的處理,得到一些數據曲線等,效果直觀便捷。此系統已應用與某一開關磁阻電機電機并聯控制系統中,運行穩定,通信性能良好。
評論