亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        STM32 與PC 機USART 通信教學實驗設計

        2022-05-13 13:07黃克亞李曉旭
        現(xiàn)代電子技術 2022年10期
        關鍵詞:開發(fā)板微控制器控件

        黃克亞,余 雷,李曉旭

        (蘇州大學 機電工程學院,江蘇 蘇州 215131)

        通用同步異步收發(fā)器(Universal Synchronous/Asynchronous Receiver/Transmitter,USART),簡稱串口,為與使用工業(yè)標準NRZ 異步串行數(shù)據(jù)格式的外部設備之間進行全雙工數(shù)據(jù)交換提供了一種靈活的方法。萬物互聯(lián)使世界更加精彩,在有線數(shù)據(jù)通信中,串口無疑是一個理想選擇,其簡單高效、靈活可靠,普遍存在于各主從設備當中。串口通信是嵌入式系統(tǒng)教學的重點和難點,需要理解其通信原理,但更重要的是在實踐中掌握其應用方法,因此好的教學實驗設計尤為重要。串口通信實驗可以是微控制器之間、微控制器與外部設備、微控制器與上位機之間的數(shù)據(jù)交換。由于嵌入式開發(fā)都需要在PC 機上編譯應用程序,所以大部分的串口通信項目實例都是基于微控制器和PC 機的,本設計也不例外。但是傳統(tǒng)的串口實驗往往較為簡單,不具備工程實踐意義,如PC 機向微控制器發(fā)送單個數(shù)據(jù),微控制器收到后加1 回傳;只關注通信一方,即微控制器端,PC 端借助專用調(diào)試軟件,如串口調(diào)試助手,不能幫助學生很好地理解通信雙方數(shù)據(jù)傳輸要求。為克服上述實驗設計中的不足,本文設計STM32 與PC 機USART 串口通信教學實驗。

        1 USART 串口通信原理

        實驗設計微控制器選擇的是STM32F103ZET6 芯片,其為SM32F1 系列大容量產(chǎn)品,外設資源豐富。實驗電路串口選擇USART1,工作于串行、異步、全雙工制式。如果需要連接2 個具有USART 接口的設備,則每個設備至少通過3 個引腳與其他設備連接在一起,分別為接收數(shù)據(jù)輸入(RxD)、發(fā)送數(shù)據(jù)輸出(TxD)、2 個設備之間的共地信號(GND),其連接方式如圖1 所示。需要注意的是,2 個USART 設備的TxD 和RxD 必須是交叉相連的。

        圖1 兩個USART 設備之間的互連

        USART 異步通信數(shù)據(jù)傳送按幀傳輸,一幀數(shù)據(jù)包含起始位、數(shù)據(jù)位、校驗位和停止位。最常見的幀格式由1 個起始位、8 個數(shù)據(jù)位、1 個校驗位和1 個停止位組成,幀與幀之間可以有空閑位。起始位約定為0,停止位和空閑位約定為1,典型通信時序如圖2 所示。發(fā)送和接收由一共用的波特率發(fā)生器驅(qū)動,當發(fā)送器和接收器的使能位分別置位時,分別為其產(chǎn)生時鐘。

        圖2 USART 異步通信時序圖

        2 串口通信硬件設計

        USART 采用的電平標準決定了它的通信距離較短,一般僅限于板級通信,早期微型計算機均配有RS 232 串口,其與微控制器的USART 相連需要配一個電平轉(zhuǎn)換芯片,如MAX232?,F(xiàn)在無論是筆記本還是臺式計算機均很難找到串口,取而代之的是USB 接口的普遍使用,同時USB 接口還可以提供穩(wěn)定的5 V 電源,所以本實驗設計的MCU(微控制器)和PC 機串行通信是通過PC 機USB 口轉(zhuǎn)換成串口完成的。

        圖3 所示為開發(fā)板串口通信電路,其核心為CH340G 芯片。該芯片為一個USB 總線的轉(zhuǎn)接芯片,實現(xiàn)了USB 轉(zhuǎn)串口或者USB 轉(zhuǎn)打印口。在串口方式下,CH340G 提供常用的MODEM 聯(lián)絡信號,用于為計算機擴展異步串口,或者將普通的串口設備直接升級到USB總線。通過該電路即可將PC 機的USB 口轉(zhuǎn)換為串行接口并分配端口號,PC 機通信軟件通過這一虛擬串口即可 實 現(xiàn) 數(shù) 據(jù) 透 明 傳 輸。圖3 中USART1_RxD 和USART1_TxD 分別連接微控制器串口1 的數(shù)據(jù)接收引腳和數(shù)據(jù)發(fā)送引腳。三極管Q和Q可根據(jù)聯(lián)絡信號實現(xiàn)微控制器在下載、復位、運行狀態(tài)之間的自由切換,用戶體驗非常好。

        圖3 開發(fā)板串口通信電路

        開發(fā)板串口通信電路既構建了MCU 和PC 機串行數(shù)據(jù)通道,又可以為開發(fā)板提供系統(tǒng)電源,還可以將嵌入式系統(tǒng)開發(fā)平臺生成的目標程序下載到微控制器的運行存儲器當中,具有在線編程(ISP)功能。電路集電源供電、串口通信、ISP 下載功能于一身,在開發(fā)板設計當中獲得廣泛的應用。

        3 串口通信軟件設計

        本實驗軟件設計包括兩部分程序:微控制器串口收發(fā)程序和上位機串口收發(fā)程序。兩部分程序運行于不同終端,分開設計;但相互關聯(lián),需要綜合設計,才能協(xié)同工作。首先就需要對通信數(shù)據(jù)格式、內(nèi)容和長度等進行約定,對應網(wǎng)絡分層的頂層,屬于應用層協(xié)議。

        3.1 應用層通信協(xié)議

        實驗實現(xiàn)如下功能:STM32 微控制器通過串口和上位機建立通信連接,上位機獲取本機時間,并通過串口發(fā)送給STM32 微控制器;微控制器在收到上位機發(fā)送過來的一組數(shù)據(jù)后,提取出時、分和秒的數(shù)值,顯示于數(shù)碼管上,并將收到的數(shù)據(jù)個數(shù)發(fā)送至上位機。為了使通信雙方能夠理解收發(fā)數(shù)據(jù)的含義,常見的數(shù)據(jù)通信約定方法有:

        1)依數(shù)據(jù)發(fā)送順序確定數(shù)據(jù)性質(zhì),在本例中上位機將時、分、秒依次向微控制器發(fā)送,微控制器收到的數(shù)據(jù)3個為一組,每組數(shù)中第一個數(shù)據(jù)為小時數(shù)值,第二個數(shù)據(jù)為分數(shù)值,第三個數(shù)據(jù)為秒數(shù)值。該方法簡單易懂、容易實現(xiàn),無額外開銷,但是發(fā)送和接收數(shù)據(jù)數(shù)量和順序嚴格定義,若由于干擾出現(xiàn)“丟幀”現(xiàn)象,數(shù)據(jù)將會完全混亂。

        2)在發(fā)送數(shù)據(jù)前加一個或多個字節(jié)的前導說明符,例如時數(shù)據(jù)前加一個“H”控制符,組成兩個字節(jié)數(shù)據(jù)一起發(fā)送,該方法數(shù)據(jù)發(fā)送和接收無順序限制,“丟幀”不影響數(shù)據(jù)繼續(xù)傳輸,但實現(xiàn)難度有所增加,帶來部分額外數(shù)據(jù)開銷。

        考慮到上述兩種數(shù)據(jù)約定方法均存在一定的不足,結合項目實際情況,即本項目傳輸數(shù)據(jù)時、分、秒的最大數(shù)值范圍為0~59,可以使用6 位二進制表示,傳輸數(shù)據(jù)性質(zhì)共有3 種情況,可以使用2 位二進制表示,將上述兩部分數(shù)據(jù)合在一起正好是一個字節(jié),作為一幀數(shù)據(jù)在串口通信鏈路上傳輸,每幀數(shù)據(jù)位定義及格式如圖4所示。

        圖4 串口通信數(shù)據(jù)幀格式

        三種數(shù)據(jù)通信協(xié)議特點及性能對比如表1 所示。由表1 可以看出,本實驗設計所采用的控制位和數(shù)據(jù)位單字節(jié)組合數(shù)據(jù)幀通信格式具有簡潔、高效、靈活等眾多優(yōu)越性能,是本實驗設計的創(chuàng)新點之一。

        表1 通信協(xié)議特點及性能對比

        3.2 MCU 端程序設計

        微控制器端串口通信程序是采用基于中斷的前后臺模式,沒有數(shù)據(jù)通信請求運行主程序,本實驗主程序是數(shù)字電子鐘,當有串口數(shù)據(jù)請求時,即串口接收中斷發(fā)生,CPU 進入中斷服務程序,處理串口中斷。該模式在數(shù)據(jù)通信領域比較普遍,有利于提高CPU 執(zhí)行效率,并可將通信程序集成到其他模塊當中。

        3.2.1 主程序設計

        主程序設計包括串口初始化和數(shù)碼管動態(tài)顯示程序兩部分。本實驗串口選用的是USART1,其操作步驟如下:

        1)打開GPIOA 和USART1 的時鐘使能。

        2)設置串口的I/O 口模式,要使用STM32 的USART1 必需要將其TxD(PA9)初始化為復用推挽輸出,將其RxD(PA10)初始化為浮空輸入。

        3)初始化USART,通信雙方約定采用“96 N 8 1”,無硬件流控制格式,其參考程序如下:

        4)開串口接收中斷,并設置NVIC 參數(shù)。

        3.2.2 中斷服務程序設計

        完成串口初始化程序之后,主程序即進入數(shù)碼管動態(tài)顯示時間的無限循環(huán)程序當中。在主程序執(zhí)行過程中,若串口接收到數(shù)據(jù),CPU 響應串口接收中斷,運行中斷服務程序,接收上位機傳來的時間數(shù)據(jù),完成全局變量更新,并返回數(shù)碼管顯示,完成一次數(shù)據(jù)通信。

        中斷服務參考程序如下:

        為了實現(xiàn)數(shù)字電子鐘計時和設定功能,定時器秒中斷和按鍵外部中斷正常執(zhí)行,在此不再贅述。

        3.3 PC 端程序設計

        因為是串口通信程序設計,所以除了編寫微控制器端程序外,還需要編寫上位機控制程序。上位機程序是在個人計算機上編寫的,其開發(fā)方法和使用平臺形式各異,本文采用Visual Basic 6.0 進行串口程序設計,其他開發(fā)平臺也是類似的。

        首先在VB6.0 軟件中新建一個窗體,并添加相應控件,創(chuàng)建完成界面如圖5 所示。

        圖5 串口通信窗體創(chuàng)建界面

        與本項目有關的控件主要有:窗體Form1,文本框數(shù)組Text1(0)~Text1(4),狀態(tài)指示圖標shpCOM,組合列表框cboPort,串口狀態(tài)標簽cmdOpenCom,當前時間標簽Label13,退出按鈕Command2,發(fā)送時間按鈕Command3,定時器Timer1,串口通信控件MSComm1 等。

        上位機通信程序主要包括窗體載入、定時器中斷、發(fā)送時間、串口接收等。

        1)窗體載入程序。窗體載入程序主要是尋找可用串口,并對有效串口進行初始化。尋找有效串口的方法是試圖打開一個串口,若成功則有效,否則尋找下一個串口。串口初始化包括設置通信格式、數(shù)據(jù)位數(shù)、事件產(chǎn)生方法等。特別注意的是,需要將串口控件DTREnable 和RTSEnable 兩個屬性值設為False,否則系統(tǒng)會強制復位。

        2)定時器中斷程序。定時器設置為每秒中斷一次,每次中斷都將系統(tǒng)當前時間更新到時間顯示標簽上。

        3)發(fā)送時間程序。串口通信以二進制格式進行時,發(fā)送數(shù)據(jù)必須為數(shù)組形式,所以串口發(fā)送時間首先需要將時間的時、分、秒數(shù)值分別發(fā)送到數(shù)組的三個元素當中,然后調(diào)用串口發(fā)送方法發(fā)送即可。

        4)串口接收程序。串口接收程序首先判斷事件類型,如果是一個串口接收事件,則接收一個數(shù)據(jù)數(shù)組,然后將數(shù)據(jù)數(shù)組轉(zhuǎn)換成字符串,并顯示在相應的文本框中。

        4 串口通信調(diào)試

        本實驗的目標為將PC 機時間與網(wǎng)絡同步,利用串口將本機時間發(fā)送至微控制器,微控制器將接收到的時間動態(tài)顯示于數(shù)碼管上。本文實驗可提供一種精確、快捷的時間設定方法,具有較強的工程實踐意義,而且實驗中使用的USART1 是微控制器下載程序通信接口,沒有增加任何硬件成本。

        4.1 PC 機時間網(wǎng)絡同步

        單擊Windows 桌面任務欄日期時間顯示區(qū)域,選擇更改日期和時間設置選項,打開日期和時間對話框,在對話框中單擊Internet 時間選項框,并進一步單擊更改設置按鈕,打開Internet 時間設置對話框,勾選“與Internet 時間服務器同步”復選框,并單擊確定。至此,PC 機系統(tǒng)時間網(wǎng)絡同步已經(jīng)完成。當然,如果不選擇網(wǎng)絡時間同步也是可以的,只是此時個人計算機的系統(tǒng)時間設置可能不精確。

        4.2 MCU 與PC 機通信

        上位機開發(fā)的通信程序可以生成可執(zhí)行文件“單片機與PC 機通信.exe”,具體的文件名和工程名有關,并且可以修改,生成的可執(zhí)行文件可以獨立運行。

        打開開發(fā)板電源,下載串口通信程序,并復位運行。在PC 機上雙擊運行“單片機與PC 機通信.exe”程序,并單擊“發(fā)送時間”按鈕,上位機系統(tǒng)時間數(shù)值就會發(fā)送到單片機,并顯示于數(shù)碼管上,單片機同時將收到數(shù)據(jù)的個數(shù)回傳至PC 機,并顯示于軟件窗體的文本框當中。其操作界面如圖6 所示。

        圖6 串口通信測試圖

        4.3 串口通信控件注冊

        在很多串口通信軟件中都會用到串口通信控件mscomm32.ocx,本文編寫的上位機通信軟件也不例外,該控件在有些WIN7 或WIN10 系統(tǒng)中沒有注冊,運行時會提示找不到控件、錯誤,此時需要對控件進行注冊。具體步驟如下:

        1)百度搜索或到微軟官網(wǎng)下載mscomm32.ocx。

        2)將控件放到相應文件夾內(nèi),32 位系統(tǒng)路徑為“C:Windows System32”;64 位 系 統(tǒng) 路 徑 為“C:WindowsSyswow64”。

        3)然后在對應目錄下找到cmd.exe 文件,單擊鼠標右鍵,以管理員身份運行(關鍵),在命令窗口輸入regsvr32 mscomm32.ocx。

        經(jīng)過以上3 步即可完成控件注冊。

        4.4 串口助手調(diào)試

        對于很多同學來說,可能沒有掌握一門可視化編程語言,則解決這一問題較好的方法是使用串口調(diào)試助手。需要說明的是各種版本串口調(diào)試助手略有差別,但大同小異,可以舉一反三。

        具體調(diào)試步驟如下:

        1)打開開發(fā)板電源,運行微控制器程序。

        2)運行串口調(diào)試助手,并打開串口通信設置對話框,將其設置為“96 N 8 1”,無硬件流控制格式,默認即為該選項。

        3)串口調(diào)試選項設置,設置結果如圖7 所示,其中重要選項如紅色框線所示。

        圖7 串口設置及收發(fā)數(shù)據(jù)界面

        4)串口收發(fā)通信,采用兩種方式進行實驗,第一種方式為時、分、秒三個數(shù)值分開發(fā)送,第二種方式為時、分、秒一起發(fā)送(用空格分隔),操作過程如圖7 所示。設要設定的時間為“10:18:30”,加上控制位,則需要發(fā)送十六進制數(shù)據(jù)“0A 52 9E”,此處要注意發(fā)送和接收數(shù)據(jù)均為十六進制,且輸入和顯示均沒有“0x”或“H”等附加格式。

        串口調(diào)試助手在沒有顯示屏的單片機應用系統(tǒng)中有著十分廣泛的應用,可以利用函數(shù)重定向功能,調(diào)用printf()函數(shù),將開發(fā)板獲取數(shù)據(jù),通過串口輸出到PC機,為程序調(diào)試和串口通信提供極大方便。

        5 結語

        本文設計一個綜合性PC 與微控制器串口通信教學實驗,實驗設計包括硬件設計和軟件設計兩部分。硬件設計采用CH340G 芯片實現(xiàn)USB 接口轉(zhuǎn)串口功能,有效地解決了目前PC 機普遍不具備串口的問題,并實現(xiàn)了供電、下載、通信三者功能,是一個很好的創(chuàng)新。軟件設計獨立完成微控制器程序設計和上位機軟件開發(fā)兩部分工作,提出一種串口通信應用層協(xié)議,合并2 位控制位和6 位數(shù)據(jù)位形成單字節(jié)數(shù)據(jù)幀,突破單次發(fā)送數(shù)據(jù)順序和大小的限制,具有簡潔、高效、靈活等優(yōu)點。項目在上位機與單片機之間建立雙向串行通信鏈接,上位機獲取網(wǎng)絡時間數(shù)值,將其發(fā)送給單片機,單片機接收并提取時間數(shù)值,送入數(shù)碼管顯示,并回傳接收到的數(shù)據(jù)個數(shù)。通過該實驗的學習和應用,學生基本可以掌握STM32 串行接口USART 的原理和使用方法。

        猜你喜歡
        開發(fā)板微控制器控件
        關于.net控件數(shù)組的探討
        物聯(lián)網(wǎng)技術在微控制器實驗教學中的應用
        Microchip最新推出兩款PIC32 Curiosity開發(fā)板
        淺析單片機開發(fā)板的設計與制作
        ASP.NET服務器端驗證控件的使用
        Mouser為您呈上開發(fā)關鍵之STMicroelectronics Nucleo開發(fā)板
        Arduino和Atmel發(fā)布Arduino Zero開發(fā)板
        Atmel針對新一代物聯(lián)網(wǎng)應用發(fā)布全新32位微控制器
        最新STM32設計工具增加對混合信號微控制器的支持
        意法半導體(ST)推出世界首款基于ARM Cortex-M7的STM32 F7系列微控制器
        国产成人a级毛片| 精品的一区二区三区| 一区二区三区在线视频免费观看| 午夜一区二区三区免费观看| 在线免费观看黄色国产强暴av | 亚洲综合色无码| 一本色综合久久| 国产成人精品免费久久久久| av网址不卡免费在线观看| 精品国产黄一区二区三区| 人妻无码一区二区三区| 日本少妇被黑人xxxxx| 四虎欧美国产精品| 国产精品综合色区av| 校园春色日韩高清一区二区| 日本另类αv欧美另类aⅴ| 日韩精品无码免费专区网站| 国产乱子伦农村xxxx| 一本之道高清无码视频| 日韩最新在线不卡av| 青青草精品在线免费观看| 高黄暴h日本在线观看| 久久精品娱乐亚洲领先| 无码一区久久久久久久绯色AV| 亚洲精品av一区二区日韩| 久久精品99国产精品日本| 免费a级毛片出奶水| 国产精品成人av电影不卡| 亚洲国产国语对白在线观看| 狼狼综合久久久久综合网| 亚洲欧美国产双大乳头| 久久HEZYO色综合| av免费不卡一区二区| 果冻传媒2021精品一区| 国产精品女视频一区二区| 国产无套粉嫩白浆内精| av网站免费线看精品| 午夜精品久久久久久中宇| 亚洲无码图| 一区二区三区午夜视频在线 | 国产精品白浆视频一区|