<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è) > 消費電子 > 設計應用 > 基于VC6.0的多臺MSP430單片機和PC機串口通訊實(shí)現方案

基于VC6.0的多臺MSP430單片機和PC機串口通訊實(shí)現方案

——
作者:中國海洋大學(xué)信息科學(xué)與工程學(xué)院 周輝軍 許亮 韓瑞寧 時(shí)間:2007-02-16 來(lái)源:世界電子元器件 收藏

引言

在計算機控制系統中,不可避免的要采用多機系統進(jìn)行通信。在由一臺PC 機(上位機) 和多臺(下位機) 構成的分布式控制系統中,通過(guò)PC 機的串口與多臺的通信是最方便的。在這樣的分布式控制系統中,與微機之間的多路通信是整個(gè)系統的關(guān)鍵。


系統組成及通訊原理

系統構成

系統構成如圖1所示,由上位機(即計算機)、通訊接口和下位機3部分組成。上位機選用的是工控機 ,智能終端由單片F169和外圍傳感器放大電路等構成。要想與PC 串口連接或者其它帶有串口的終端連接,必須要進(jìn)行EIA-RS-232C 與 電平和邏輯關(guān)系的轉換。本設計采用MAX3232芯片, 可完成3V~5V 電平與串口電平的雙向轉換。


F169單片機屬于德州儀器公司MSP430F14X/16X FLASH 系列。該系列是一組超低功耗的微控制器,工作電壓范圍1.8~3.6V。由于具有16位RISC結構,16 位寄存器和常 數寄存器,MSP430 達到了最大的代 碼效率。數字控制的振蕩器提供快速從所有低功耗模式蘇醒到活動(dòng)模式的能 力時(shí)間少于6ms。 MSP430F169 帶有兩個(gè)16 位定 時(shí)器(帶看門(mén)狗功能)、速度極快的8 通道12 位A/D 轉換器(ADC)(帶內部參考電壓、采樣保持和自動(dòng)掃描功能)、一個(gè)內部比較器和兩個(gè)通用同步/異步發(fā)射接收器、48個(gè)I/O口(均可獨立控制)的微處理器結構。硬件乘法器提高了單片機的性能并使單片機在編碼和硬件上可兼容。

通訊原理

MSP430F169單片機支持兩種不同的串行協(xié)議,通用同步協(xié)議(USART協(xié)議)和同步協(xié)議(SPI協(xié)議),用控制寄存器UCTL(表1)中的控制位SYNC來(lái)選擇所需的模式。SYNC=0:選擇異步模式UART;SYNC=1:選擇同步模式SPI,在此選擇異步模式。

控制寄存器內的信息決定了USART的基本操作,如選擇通信協(xié)議、通信模式、字符長(cháng)度和校驗位等。在此設定字符長(cháng)度為8位:CHAR=1,停止位1位:SP=0,奇校驗:PEV=0。 MSP430的波特率發(fā)生器有一預分頻/分頻器和一個(gè)調整器的組合,即使晶振頻率不是波特率的整數倍,這一組合也能使MSP430 正常工作而且還可以使其通訊協(xié)議工作在最大的波特率。采用這一技術(shù), 即使用手表晶振(32768Hz),波特率也可以達到4800 和9600,選擇波特率為9600,外部時(shí)鐘為ACLK。

系統通訊協(xié)議

在PC機和多臺單片機的通訊中,確定一個(gè)明確而合理的通訊協(xié)議是關(guān)鍵,包括對數據格式、通訊方式、傳送速度、傳送步驟、檢糾錯方式以及控制字符定義等問(wèn)題做出統一規定。為了區別不同的分機,必須為每個(gè)分機分配一個(gè)唯一的地址,此地址唯一區別各單片機。數據格式采用數據包的形式,一次傳輸一組數據。數據包格式如表2所示:

起始標志位:1 個(gè)字節
分機地址: 1 個(gè)字節

命令/ 數據: 1 個(gè)字節

數據長(cháng)度: 1 個(gè)字節

數據內容: n 個(gè)字節

和檢驗: 2 個(gè)字節

結束標志位: 1 個(gè)字節

數據格式中的地址位表示與PC 機通訊的單片機地址。操作命令則表示此次通訊要完成的操作。在單片機發(fā)送上位機接收的時(shí)候,協(xié)議規定命令FFH 為上報數據, 此時(shí)數據包中的數據長(cháng)度、數據內容、和檢驗三個(gè)域便填充實(shí)際發(fā)送數據的個(gè)數、數據及和校驗;命令F0H - F3H 則表示單片機給PC機的反饋信息,此時(shí)數據包中的數據長(cháng)度、數據內容和檢驗三個(gè)域為空,其中當命令為F0H 表示接收成功,F1H 表示接收失敗并要求重發(fā),F2H 表示單片機有數據上報要求,F3H 表示單片機無(wú)數據上報要求。操作命令域在PC 機發(fā)送單片機接收的時(shí)候也相似的協(xié)議規定。


軟件設計

下位機程序設計

主要由數據發(fā)送和數據接收子程序組成。設計單片機通信程序時(shí),必須充分發(fā)揮單片機的效率。由于單片機多應用于實(shí)時(shí)性較強的控制場(chǎng)合,因此, 應將及時(shí)響應和控制對象的動(dòng)作放在優(yōu)先考慮的位置,以盡量減少通信等輔助性操作所占用的CPU時(shí)間?;谏鲜隹紤],在設計單片機通信程序時(shí),將通信程序分為接收中斷處理程序和發(fā)送中斷處理程序2部分。

主程序首先完成串行口的初始化、設置串口的工作方式、串口波特率,數據位、校驗位等。

(1) 接收子程序

在接收到上位機發(fā)送的地址后, 下位機響應中斷信號進(jìn)入接收子程序。首先讀取上位機發(fā)送的地址數據, 檢查地址是否匹配,如果匹配, 準備接收其余的數據幀。在接收完上位機發(fā)送的數據后,判斷下位機是否發(fā)出中斷申請,如果有,則清除中斷申請信號。

(2) 發(fā)送子程序只有當發(fā)送緩沖區內有數據要發(fā)送并且置位發(fā)送中斷允許位時(shí)才調用。

發(fā)送的數據遵守通訊協(xié)議的數據幀格式:首先發(fā)送起始標志, 然后發(fā)送需要傳輸的數據,最后發(fā)送校驗和以及結束標志位。

上位機通訊

上位機程序設計采用VC ++ 6.0開(kāi)發(fā)平臺來(lái)實(shí)現。應用MSComm控件,可以非常方便地創(chuàng )建串行通信應用程序,但其程序執行效率不夠高,并且無(wú)法應用串行通信的一些底層功能。CSerialPort類(lèi)支持線(xiàn)連接的串口編程操作,編寫(xiě)的程序在Windows98/2000/XP下可以很好的運行CSerialPort類(lèi)是基于多線(xiàn)程的,它的工作過(guò)程及在本系統的應用如下

1)設置通信對象、通信端口號以及配置通信格式(如起始位個(gè)數、數據位長(cháng)度、校驗方式、停止位個(gè)數等) 和其他相關(guān)屬性;

2)設定通信協(xié)議;

3)打開(kāi)通信端口,進(jìn)行數據的傳輸;

m_Port.StartMonitoring();//開(kāi)啟監視線(xiàn)程;

m_Port.WriteToPort((LPCTSTR)temp);//發(fā)送數據;

4)關(guān)閉通信端口,釋放系統資源。在完成串行通信操作后,應該將串行通信端口的資源歸還給操作系統;

m_Port.ClosePort();//關(guān)閉串口
上位機程序工作流程如下:首先設置好串口參數,再開(kāi)啟串口監測工作線(xiàn)程,串口監測工作線(xiàn)程監測到串口接收到的數據、流控制事件或其他串口事件后,就以消息方式通知主程序,激發(fā)消息處理函數來(lái)進(jìn)行數據處理,這是對接收數據而言;發(fā)送數據可以直接發(fā)送。

結束語(yǔ)

串 口通訊方式在計算機控制系統中有著(zhù)廣泛的應用,本文設計的通訊協(xié)議經(jīng)實(shí)踐證明穩定可靠,保證了單片機與PC之間數據傳輸的準確率,CSerialPort類(lèi)簡(jiǎn)化封裝了大部分通訊用API函數,同時(shí)簡(jiǎn)化了編程操作在實(shí)際中有著(zhù)廣泛的應用 。

單片機相關(guān)文章:單片機教程


單片機相關(guān)文章:單片機視頻教程


單片機相關(guān)文章:單片機工作原理


分頻器相關(guān)文章:分頻器原理
晶振相關(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>