<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 利用VB 6.0實(shí)現PC機與DSP之間的串行數據通信

利用VB 6.0實(shí)現PC機與DSP之間的串行數據通信

作者: 時(shí)間:2001-09-11 來(lái)源: 收藏

在工業(yè)控制領(lǐng)域,往往需要由一臺主機去控制多臺從機或多個(gè)智能儀器;當上位機和下位機之間距離較遠(主機遠離工業(yè)控制現場(chǎng))時(shí),就避免不了要進(jìn)行串行數據通信。上位機一般是PC機,這樣可充分利用PC機的資源,使得在智能儀器上難以解決的諸如曲線(xiàn)顯示、數值運算等在PC上得以實(shí)現。在PC機上編寫(xiě)串行通信程序至少有三種方法:利用匯編語(yǔ)言,C語(yǔ)言和Visual系列的通信控件(MSComm)。直接用匯編語(yǔ)言編程,要求程序員具備相當的硬件知識,對可編程串行通信接口芯片的內部寄存器定義、工作方式、指令字等相關(guān)的內容必須相當熟悉;C語(yǔ)言雖然提供了直接訪(fǎng)問(wèn)串口的函數,但還是比較麻煩;Visual系列的通信控件(MSComm控件)卻使我們能夠用少量的代碼,輕松高效地完成任務(wù)。而TMS320F243數字信號處理器是德州儀器公司(TI24X系列專(zhuān)為數字馬達控制而設計的高性能16位定點(diǎn)DSP,對其串行通信接口模塊進(jìn)行編程是相當方便的。

本文引用地址:http://dyxdggzs.com/article/2805.htm

TMS320F243與其它微處理器相比具有下列性能:(1)指令周期為50ns,且大多數指令為單周期;(2)面向電機控制的事件管理模塊;(3)10A/D轉換器;(4)串行通信接口(SCI)和串行外設接口(SPI);(5)看門(mén)狗(WD)和實(shí)時(shí)中斷定時(shí)器(RTI);(6)內嵌CAN控制器。

串行通信接口模塊(SCI)的所有寄存器都是8位的,它支持在CPU和其它使用標準不歸零制(NRE)格式的異步外設之間進(jìn)行串行數據通信。串行通信接口(SCI)的接收器和發(fā)送器都是雙緩沖的,并且各自都有獨立的使能位和中斷位。二者都可以獨立地或同時(shí)工作于全雙工模式。為了保證數據接收的正確性,串行通信接口對接收的信號進(jìn)行間斷檢測、奇偶校驗、超時(shí)和幀錯誤檢測,通過(guò)一個(gè)16位的波特率選擇寄存器,可以選擇 65000個(gè)不同的波特率。串行通信控件寄存器的符號、名稱(chēng)和描述見(jiàn)表1。

SCI有兩個(gè)多處理器協(xié)議--空閑線(xiàn)(idle-time)多處理器模式和地址位多處理器模式。這些協(xié)議允許在多處理器之間進(jìn)行有效數據傳輸。TMS320F243在上述兩種模式下的通信格式分別如圖1所示:

Visual Basic串口通信由于有Windows程序的支持,而變的極為方便,它將串口設備當作一個(gè)目標封裝起來(lái),容易操作,按下列步驟可以添加MSComm控件:

啟動(dòng)VB6.0Project菜單下單擊Components選項,算選擇Microsoft Comm Control 6.0控件,這時(shí)在工具欄中會(huì )出現電話(huà)機圖標,將其拖放到窗體上,單擊鼠標右鍵,就會(huì )出現串口屬性對話(huà)框,其主要屬性有:

CommPort屬性和Settings屬性等11種屬性。

MsComm控件提供了兩種處理通信問(wèn)題的方法:事件驅動(dòng)(EventDriven)方法和查詢(xún)方法。最基本的通信事件有:comEvSend(在輸出緩沖區有比Sthreshold數少的字符。)comEvReceive(收到Rthreshold個(gè)字符),該事件將持續產(chǎn)生,直到用Input屬性從接收緩沖區中讀取并刪除字符。

通信協(xié)議包括:

(1) 字符傳輸格式:波特率(BaudRate=9600b/s),無(wú)奇偶校驗,8位數據位,1位停止位。

(2) 數據幀格式如下表:

命令字 幀長(cháng)度 字節串 結束符

其中幀長(cháng)度=字節串長(cháng)度+2,結束符=0FFh。

命令字對應著(zhù)相應的操作:

命令字01對應PC機發(fā)送設置值

命令字02對應DSP接收設置值后,回發(fā)至PC

命令字03對應PC機發(fā)送正弦波形的幅度和頻率

PC機和DSP均采用異步通信方式,且DSP采用空閑線(xiàn)喚醒模式。PC機采用事件驅動(dòng)方式接收數據,DSP采用查詢(xún)法發(fā)送數據,而用中斷法接收數據。

MSComm控件的初始化代碼如下:

MSComm. Commport=2

MSComm. Settings="9600,n,8,1"

MSComm.Rthreshold=1

MSComm.Sthreshold=0 '不觸發(fā)ComEvSend事件

MSComm.InputLen=0

MSComm.InBufferCount=0

MSComm.OutBufferCount=0

MSComm.InputMode= comInputModeBinary

If MSComm.PortOpen=False Then

MSComm.PortOpen=True

End If

DSP程序流程圖如圖2所示:

本文對在VB下利用MSComm控件實(shí)現PC機與TMS320F243之間串行數據通信的方法進(jìn)行了探討,所有程序都經(jīng)調試通過(guò),具有一定的參考價(jià)值。相信對讀者開(kāi)發(fā)TI公司的DSP串行數據通信程序會(huì )有一些提示和幫助?!?/font>

 

參考文獻

1《PC機及單片機數據通信技術(shù)》-李朝青

2 《在VB下智能儀器和PC機之間的數值通信》-張正華等



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>