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