|
|
| <!--插入廣告JS代碼--> |
摘 要 介紹了一種DSP與PC之間的串行通信硬件解決方案,并在Visual C++6.0中利用MSComm通信控件實現(xiàn)了PC的通信程序設(shè)計。 關(guān)鍵詞 DSP串行通信Visual C++6.0
在工業(yè)控制領(lǐng)域,常常需要由1臺主機去控制從機或智能儀器。串行通信作為一種靈活、方便、可靠的通信方式,仍不失為上位機與下位機通信的一種有效的通信方式。在工業(yè)生產(chǎn)實踐中,上位機一般是PC機,利用PC機可以對工程實現(xiàn)實時監(jiān)控,能利用監(jiān)控界面進行數(shù)據(jù)采集、數(shù)據(jù)處理和控制信號的產(chǎn)生與傳輸?shù)裙δ。Microsoft公司推出的VC++6.0是一種功能極為強大的高級編程語言,通過Visual系列的通信控件(MSComm控件)能方便地完成串行接口收發(fā)數(shù)據(jù)。而TI公司推出的TMS320C240是一種高性能、低價位的定點DSP處理器,非常適合用于從機或智能儀器中。本文正是利用這一控件實現(xiàn)TMS320C240與PC之間的高速串口通信。
1TMS320C240與PC機串行通信的硬件電路
對于TI的TMS320系列的DSP來說,串口解決方案一般有2種:一種是利用DSP的XF、BIO兩個IO引腳以及INT0、INT1兩個中斷引腳來實現(xiàn);另一種是通過擴展異步通信芯片來實現(xiàn)高速串口通信。這樣串口與DSP的連接可以通過AM8230/82C30等來與DSP連接。這時問題轉(zhuǎn)換成了2部分:一部分是8230與DSP的接口;另外一部分是RS232串行口與8230的連接。也可以通過TI公司的TL16C750 UART和MAX232構(gòu)成DSP的串口。為了滿足通信實時性的要求,本文采用的是后一種解決方案。TL16C750是TI公司生產(chǎn)的異步通信芯片, 能夠較好地實現(xiàn)DSP與PC之間高速異步通信。TMS320C240與PC機通過TL16C750進行通信的硬件電路框圖如圖1所示。圖中TMS320C240通過TL16C750將數(shù)據(jù)送入PC,由PC對數(shù)據(jù)進行處理和存儲,同時PC通過TL16C750對TMS320C240進行控制。TMS320C240對TL16C750初始化,以完成異步通信協(xié)議的設(shè)置,TL16C750對TMS320C240的并行數(shù)據(jù)和PC機的串行數(shù)據(jù)按照協(xié)議進行并串轉(zhuǎn)換,并按照協(xié)議對數(shù)據(jù)進行發(fā)送和接收,然后通過MAX232實現(xiàn)CMOS電平與RS-232-C電平的轉(zhuǎn)換。

2軟件設(shè)計
本系統(tǒng)的軟件設(shè)計包括TMS320C240、PC機的通信以及TL16C750的初始化等。下面分別給出TMS320C240初始化TL16C750和PC機通信的主要源程序代碼。
2.1TMS320C240初始化TL16C750
本系統(tǒng)中,TMS320C240對TL16C750初始化的主要任務(wù)是設(shè)置操作所需要的參數(shù),這些參數(shù)包括串行通信時數(shù)據(jù)串的數(shù)據(jù)位數(shù)、停止位數(shù)、奇偶校驗等。另外還需要設(shè)置發(fā)送和接收的波特率及中斷方式,具體程序如下:


2.2PC機通信軟件的實現(xiàn)
MSComm控件是Microsoft公司提供的簡化Windows下串口通信編程的Active X控件,它為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡便方法,一種是事件驅(qū)動法,另一種是查詢法。其主要屬性及設(shè)定值見表1。

在VC 6.0的通信程序設(shè)計中,首先利用VC6中的MFC Wizard產(chǎn)生一個支持Active X的應(yīng)用程序框架,在Project/Add to Project菜單下添加Microsoft Communication Control, Version 6.0,這樣就加入了MSComm控件。用鼠標(biāo)將其拖放到對話框中,并為該對話框新建一個基于Cdialog派生的CPcCOMDlg類,將頭文件MSCommh加入到CPcCOMDlgcpp中, 并為MSComm控件添加關(guān)聯(lián)量m_COM1, 以及OnComm消息的響應(yīng)函數(shù)OnCommCom1( )。然后在CPcCOMDlg::OnInitDialog( )完成對串口的初始化,代碼如下:

<!--[if !supportEmptyParas]--> 
接下來要為程序主對話框建立響應(yīng)MSComm事件的處理函數(shù)OnCommCom1( ),OnComm事件是通信控件唯一的事件,此事件可用來處理所有與通信有關(guān)的事件,不管是何種事情發(fā)生,通信控件只用一個CommEvent的屬性予以代表。每當(dāng)MSComm控件觸發(fā)事件時OnCommCom1( )函數(shù)將被調(diào)用,代碼示例如下:


<!--[endif]-->
3結(jié)語
本文利用MSComm控件成功地實現(xiàn)了PC機通過TL16C750與DSP的高速異步串口通信,相對于復(fù)雜的API通信函數(shù)來說,這種方法不失為一種簡單易行的方法。實驗結(jié)果證明,本系統(tǒng)無論是在系統(tǒng)的實時性、可靠性,還是在硬件控制的可靠性上均獲得了滿意的效果。
參考文獻
1Texas Instruments.TL16C750 data manual,1996
2Texas Instruments.TMS320F/C240 DSP Controllers Reference Guide,1999
3范逸之,陳立元,等利用Visual Basic實現(xiàn)串并行通信技術(shù).北京:清華大學(xué)出版社,2001
4王念旭DSP基礎(chǔ)與應(yīng)用系統(tǒng)設(shè)計.北京:北京航空航天大學(xué)出版社,2001
5Kate GregoryVisual C++6.0開發(fā)使用手冊北京:機械工業(yè)出版社,1999