国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于RTOS的STM32通信發(fā)送管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2024-09-14 00:00:00周冠程李黨超葉佳胤常建磊郝朝陽(yáng)
物聯(lián)網(wǎng)技術(shù) 2024年3期
關(guān)鍵詞:通信

摘 要:ABU Robocon是由亞太廣播聯(lián)盟舉辦的針對(duì)亞太地區(qū)高校學(xué)生的國(guó)際教育活動(dòng),我校團(tuán)隊(duì)在相關(guān)機(jī)器人的研發(fā)中,自主開(kāi)發(fā)了一套基于RTOS的STM32單片機(jī)通信發(fā)送管理系統(tǒng),可以很好地解決傳統(tǒng)發(fā)送系統(tǒng)在RTOS環(huán)境下出現(xiàn)的發(fā)送不完整和發(fā)送時(shí)間較長(zhǎng)的問(wèn)題,并通過(guò)實(shí)驗(yàn)證明了本文所設(shè)計(jì)的系統(tǒng)相較傳統(tǒng)方法的優(yōu)勢(shì)。本通信系統(tǒng)已經(jīng)被應(yīng)用到了ABU Robocon的備賽和比賽環(huán)節(jié),可以實(shí)現(xiàn)上下位機(jī)的高效通信。

關(guān)鍵詞:RTOS;STM32;通信;發(fā)送系統(tǒng);UART;多線(xiàn)程設(shè)計(jì)

中圖分類(lèi)號(hào):TP39;TN914 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2024)03-00-03

0 引 言

機(jī)器人是一種能夠自主或者在操作者的幫助下完成指定任務(wù)的智能機(jī)器,其在日常生活中應(yīng)用十分廣泛。高校開(kāi)展機(jī)器人教育能夠以較少的投入取得較大的成果,從而優(yōu)化教與學(xué)的效果[1-3]。同時(shí)參與相關(guān)的機(jī)器人比賽能夠潛移默化地培養(yǎng)學(xué)生追求完美、凡事講究的工作作風(fēng);整個(gè)過(guò)程還教會(huì)了學(xué)生如何團(tuán)結(jié)協(xié)作、善于聽(tīng)取意見(jiàn)和處理人際關(guān)系[4]。

ABU Robocon機(jī)器人大賽是由亞太廣播聯(lián)盟舉辦的針對(duì)亞太地區(qū)高校學(xué)生的國(guó)際教育活動(dòng),參賽的大學(xué)生團(tuán)體需要根據(jù)每年的賽題進(jìn)行相關(guān)的機(jī)器人設(shè)計(jì)。由于賽題的復(fù)雜性與學(xué)生的技術(shù)能力限制,設(shè)計(jì)的機(jī)器人通常采用半自動(dòng)或者遙控的形式控制,這就對(duì)機(jī)器人主控通信系統(tǒng)的可靠性提出了較高要求。STM32系列單片機(jī)常作為機(jī)器人的主控芯片[5],但僅僅依賴(lài)于單片機(jī)自帶通信接口難以滿(mǎn)足比賽中持續(xù)高速通信的需求,需要使用者自主設(shè)計(jì)一套通信系統(tǒng)以滿(mǎn)足整場(chǎng)比賽的需求。尤其對(duì)STM32的異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter, UART)如果出現(xiàn)連續(xù)的發(fā)送請(qǐng)求,往往最新要求發(fā)送的信息會(huì)覆蓋前面的信息,導(dǎo)致發(fā)送信息的丟失。傳統(tǒng)的通信發(fā)送管理系統(tǒng)的思路是讓程序等待直至上一次的信息發(fā)送完成之后再進(jìn)行下一輪數(shù)據(jù)發(fā)送,極大地浪費(fèi)了芯片的性能,導(dǎo)致程序運(yùn)行效率不高。為提高串口通信效率,具有多任務(wù)管理功能的嵌入式實(shí)時(shí)操作系統(tǒng)已經(jīng)被用于串口通信的調(diào)度[6]。

UCOS-Ⅲ是一個(gè)具有可移植性、可拓展性、高效性、可靠性和易用性的實(shí)時(shí)操作系統(tǒng)(Real Time Operating System, RTOS)[7-10]。本文將基于UCOS-Ⅲ的框架進(jìn)行STM32F407IGT6平臺(tái)下的UART發(fā)送管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),在保證信息發(fā)送完整的前提下,充分利用芯片計(jì)算資源[4],同時(shí)采用循環(huán)隊(duì)列管理實(shí)現(xiàn)存儲(chǔ)空間的最大利用。

1 通信發(fā)送系統(tǒng)的設(shè)計(jì)

1.1 總體設(shè)計(jì)框架

本通信發(fā)送管理系統(tǒng)由兩個(gè)部分組成(如圖1所示),一是基于RTOS實(shí)現(xiàn)的發(fā)送信息監(jiān)控線(xiàn)程設(shè)計(jì),另一個(gè)是以循環(huán)隊(duì)列為載體的用戶(hù)端接口設(shè)計(jì)。

RTOS系統(tǒng)在嵌入式開(kāi)發(fā)中具有實(shí)時(shí)響應(yīng)、多任務(wù)處理、低延遲和穩(wěn)定的優(yōu)點(diǎn),而UCOS-Ⅲ作為嵌入式開(kāi)發(fā)中較為常用的一款RTOS系統(tǒng),其具有可移植、可拓展、高效、可靠和易用的優(yōu)點(diǎn)。

基于RTOS實(shí)現(xiàn)的發(fā)送信息監(jiān)控線(xiàn)程主要用于監(jiān)控各串口外設(shè)的使用情況,并在出現(xiàn)串口外設(shè)空閑的情況時(shí)向外設(shè)提出通信請(qǐng)求,同時(shí)此線(xiàn)程擁有高于主線(xiàn)程的優(yōu)先級(jí),以保證發(fā)信的連貫性和完整性,提高各端口通信的速度和質(zhì)量。用戶(hù)端接口通過(guò)循環(huán)隊(duì)列存儲(chǔ)準(zhǔn)備發(fā)送的信息,通常用于存儲(chǔ)因?yàn)镾TM32單片機(jī)性能問(wèn)題所造成的滯留信息,此時(shí)如果在單一線(xiàn)程的通信設(shè)計(jì)中未等待發(fā)送信息完成,將導(dǎo)致該串信息僅能保證最后一個(gè)信息完整發(fā)送,而其他信息將有較大的概率出現(xiàn)信息丟失,信息越長(zhǎng),丟失的概率就越大。

為最大限度節(jié)約因新開(kāi)線(xiàn)程導(dǎo)致的資源浪費(fèi),監(jiān)控線(xiàn)程在沒(méi)有發(fā)送任務(wù)或者沒(méi)有空閑串口的情況下,將處于掛起狀態(tài),不占用CPU資源。

1.2 監(jiān)控線(xiàn)程設(shè)計(jì)

監(jiān)控線(xiàn)程的設(shè)計(jì)思路如圖2所示,監(jiān)控線(xiàn)程獨(dú)立于主線(xiàn)程,且優(yōu)先級(jí)高于主線(xiàn)程,以實(shí)現(xiàn)信息發(fā)送的實(shí)時(shí)性。在線(xiàn)程初次被建立的時(shí)候,將為每一個(gè)串口創(chuàng)建并初始化一個(gè)循環(huán)隊(duì)列以存儲(chǔ)準(zhǔn)備發(fā)送的信息。然后進(jìn)入線(xiàn)程的主體循環(huán)部分,如果當(dāng)前沒(méi)有發(fā)信任務(wù)或者沒(méi)有空閑串口的情況下,該線(xiàn)程將被掛起,以節(jié)約CPU資源。如果當(dāng)前存在發(fā)信任務(wù)且存在空閑串口,該線(xiàn)程將把需要發(fā)送的信息存儲(chǔ)到相應(yīng)串口外設(shè)的發(fā)送數(shù)據(jù)寄存器(TDR),同時(shí)更新串口狀態(tài),然后外設(shè)將數(shù)據(jù)通過(guò)引腳發(fā)送出去。在將數(shù)據(jù)存儲(chǔ)到發(fā)送數(shù)據(jù)寄存器后,將檢測(cè)循環(huán)隊(duì)列中是否仍然存在未發(fā)送的數(shù)據(jù),如果無(wú)數(shù)據(jù)則將該串口更新為待命狀態(tài)。

為實(shí)現(xiàn)串口狀態(tài)的動(dòng)態(tài)更新,使用STM32單片機(jī)UART外設(shè)的中斷實(shí)現(xiàn),將該串口狀態(tài)寄存器的TC位置1,使能串口發(fā)送完成中斷,并更新串口的狀態(tài)。

1.3 用戶(hù)端口設(shè)計(jì)

用戶(hù)端口提供給用戶(hù)發(fā)送信息的函數(shù)接口,其設(shè)計(jì)思路如圖3所示,在用戶(hù)提交發(fā)信的原始數(shù)據(jù)時(shí),接口將進(jìn)入RTOS的臨界段,提交信息時(shí)使監(jiān)控線(xiàn)程與該接口不會(huì)同時(shí)調(diào)用同一個(gè)循環(huán)隊(duì)列。接著接口將把相應(yīng)的原始數(shù)據(jù)存儲(chǔ)到對(duì)應(yīng)串口的循環(huán)隊(duì)列之中,同時(shí)通過(guò)另一個(gè)循環(huán)隊(duì)列存儲(chǔ)對(duì)應(yīng)位置信息的長(zhǎng)度,以分割循環(huán)隊(duì)列中的不同信息段,并相應(yīng)更新對(duì)應(yīng)串口的狀態(tài)為存在需要發(fā)送的信息。

該接口的任務(wù)僅僅是將需要發(fā)送的數(shù)據(jù)存儲(chǔ)到隊(duì)列中,并更新串口的狀態(tài)。相較于傳統(tǒng)的做法,即將所需要發(fā)送的數(shù)據(jù)存儲(chǔ)到相應(yīng)串口的發(fā)送寄存器后并等待其完全發(fā)送,本系統(tǒng)的運(yùn)行所需要的時(shí)間更少,并且在保證發(fā)信完整性的情況下,解決了多個(gè)線(xiàn)程同時(shí)提出發(fā)信請(qǐng)求時(shí)傳送的沖突問(wèn)題。

2 通信發(fā)送系統(tǒng)的應(yīng)用效果

為驗(yàn)證該通信發(fā)送系統(tǒng)的可靠性和高效性,設(shè)計(jì)如下的三組實(shí)驗(yàn):第一組實(shí)驗(yàn)中將評(píng)估本文提出的通信系統(tǒng)的通信效果;第二組實(shí)驗(yàn)中將評(píng)估不使用RTOS操作系統(tǒng)且無(wú)視信息是否發(fā)送完全的方法的通信效果;第三組實(shí)驗(yàn)中將評(píng)估不使用RTOS操作系統(tǒng)但是等待信息完全發(fā)送的方法的通信效果。

實(shí)驗(yàn)在同一塊基于STM32F407IGT6設(shè)計(jì)的實(shí)驗(yàn)板(如圖4所示)上進(jìn)行,實(shí)驗(yàn)UART通信參數(shù)為:波特率115 200 b/s,8位數(shù)據(jù)位,1位停止位,無(wú)校驗(yàn)位,且不使用流控制。每一組實(shí)驗(yàn)將完成相同的任務(wù):在實(shí)驗(yàn)開(kāi)始時(shí),完成10×108次簡(jiǎn)單累加以模擬正常使用時(shí)的其他運(yùn)算(如傳感器信息處理),并在每一次累加之后發(fā)送一次內(nèi)容為0×31的信息;利用RTOS的時(shí)間戳記錄累加完成的時(shí)間,記為速度指標(biāo);在對(duì)象完成發(fā)信任務(wù)后,統(tǒng)計(jì)發(fā)送的數(shù)據(jù)數(shù)量,記錄為完整性指標(biāo)。

采用兩個(gè)同優(yōu)先級(jí)的線(xiàn)程發(fā)送不同的信息,以模擬多個(gè)同等優(yōu)先級(jí)的進(jìn)程(如電控進(jìn)程和定位進(jìn)程通常需要在同一個(gè)優(yōu)先級(jí)下共同運(yùn)行),同時(shí)需要進(jìn)行串口通信的場(chǎng)景。假設(shè)其中一個(gè)線(xiàn)程循環(huán)發(fā)送50次“1234567890”,另一個(gè)線(xiàn)程循環(huán)發(fā)送50次“ABCDEFGKIJ”,為了模擬真實(shí)的通信情況,本次實(shí)驗(yàn)的每次信息在發(fā)送完成后會(huì)等待5 ms,以模擬通信接收方處理數(shù)據(jù)的過(guò)程。

實(shí)驗(yàn)中第一組數(shù)據(jù)是使用了本文中的通信方式得到的結(jié)果,第二組數(shù)據(jù)是使用了傳統(tǒng)的不等待每個(gè)字符發(fā)送完成的發(fā)送方式得到的結(jié)果,第三組數(shù)據(jù)是使用傳統(tǒng)的等待每個(gè)字符發(fā)送完成的發(fā)送方式得到的結(jié)果。其后的第二個(gè)數(shù)字表示該組的第幾次。經(jīng)過(guò)本次實(shí)驗(yàn),得到表1所列的結(jié)果。

通過(guò)表1的實(shí)驗(yàn)結(jié)果可以發(fā)現(xiàn),第二組實(shí)驗(yàn)中消耗的時(shí)間較長(zhǎng)且無(wú)法保證通信的完整性,其中的通信結(jié)果通常是混雜著上述兩個(gè)線(xiàn)程的信息,例如“BJ0AJ0BJ0”根本無(wú)法進(jìn)行常規(guī)的通信。造成第二組通信完整度不夠的原因可能是多個(gè)線(xiàn)程在極短的時(shí)間內(nèi)調(diào)用同一個(gè)串口,造成外設(shè)需要消耗更多的時(shí)間去處理這些沖突。通過(guò)第三組實(shí)驗(yàn)可以發(fā)現(xiàn),雖然使用了一定程度上的優(yōu)化,以排除多線(xiàn)程造成的通信問(wèn)題,但是在速度上仍然有很大的提升空間。因此通過(guò)觀察第一組的實(shí)驗(yàn)數(shù)據(jù),可以使用本文的發(fā)送方式在保證多線(xiàn)程發(fā)送完整性的前提下,加快發(fā)送的速度;平均時(shí)間相較第二組數(shù)據(jù),提升了2%。同時(shí)因?yàn)槭褂脝为?dú)線(xiàn)程調(diào)度的功能,在更大量數(shù)據(jù)的情況下本文使用的通信方式也將優(yōu)于傳統(tǒng)的方法。

3 應(yīng) 用

我校參加了ABU Robocon2022中國(guó)區(qū)的賽事,自主設(shè)計(jì)了以賽題為導(dǎo)向的創(chuàng)新型機(jī)器人,機(jī)器人如圖5所示。在賽前調(diào)試中應(yīng)用本文介紹的通信發(fā)送系統(tǒng)實(shí)現(xiàn)下位機(jī)(以STM32單片機(jī)為核心的機(jī)器人系統(tǒng))與上位機(jī)(Windows操作系統(tǒng)的電腦),二者通過(guò)基于CH340芯片的串口轉(zhuǎn)換模塊實(shí)現(xiàn)波特率為115 200 b/s的串行數(shù)據(jù)通信。上下位機(jī)通信的主要任務(wù)是將機(jī)器人底盤(pán)的碼盤(pán)陀螺儀定位系統(tǒng)計(jì)算得到的位置信息發(fā)送給上位機(jī),上位機(jī)解碼數(shù)據(jù)后通過(guò)前端軟件將機(jī)器人在場(chǎng)地里的相對(duì)位置直觀地展示給調(diào)試人員,如圖6所示。下位機(jī)發(fā)送信息的頻率為100 Hz,可以實(shí)現(xiàn)實(shí)時(shí)的機(jī)器人位置監(jiān)控,同時(shí)減少通信系統(tǒng)對(duì)主體控制系統(tǒng)造成的影響。在監(jiān)視機(jī)器人位置的同時(shí),還可以通過(guò)前端分離位置信息和其他調(diào)試信息,從而減少調(diào)試人員人工分離各個(gè)種類(lèi)調(diào)試信息的工作量,尤其對(duì)于位置信息這種實(shí)時(shí)性要求極高、信息量極大的調(diào)試信息來(lái)說(shuō)是很有必要的。

4 結(jié) 語(yǔ)

針對(duì)機(jī)器人通信系統(tǒng)存在的通信沖突導(dǎo)致數(shù)據(jù)丟失的問(wèn)題,設(shè)計(jì)了一套基于UCOS-Ⅲ的STM32單片機(jī)通信發(fā)送管理調(diào)度系統(tǒng),并實(shí)驗(yàn)驗(yàn)證了所設(shè)計(jì)調(diào)度管理系統(tǒng)的有效性,所設(shè)計(jì)系統(tǒng)已經(jīng)應(yīng)用于自主設(shè)計(jì)的機(jī)器人,取得了良好的效果,并參加了ABU Robocon機(jī)器人大賽。

注:本文通訊作者為李黨超。

參考文獻(xiàn)

[1]秦緒彬,蔡曉敏,卞宇. 大學(xué)生機(jī)器人競(jìng)賽的多學(xué)科融合實(shí)踐教學(xué)研究:以江蘇省大學(xué)生機(jī)器人大賽高爾夫項(xiàng)目為例[J].電腦知識(shí)與技術(shù),2021,17(30):224-226.

[2]岳文東,康海軍,楊成彪. 利用機(jī)器人競(jìng)賽提升學(xué)生的技術(shù)素養(yǎng):以“VEX機(jī)器人工程挑戰(zhàn)賽”為例[J].實(shí)驗(yàn)教學(xué)與儀器, 2020,37(4):70-71.

[3]楊蒙蒙,鄧三星,李帥,等. 基于STM32單片機(jī)的雙足競(jìng)走機(jī)器人設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù),2022,12(5):123-126.

[4]方波,曹其新. IDC ROBOCON比賽與機(jī)器人教育的探討[J].現(xiàn)代教育技術(shù), 2011,21(3):140-144.

[5]劉青林.基于STM32的嵌入式PLC研究與設(shè)計(jì)[D].昆明:昆明理工大學(xué),2022.

[6]夏鑫,張果,王劍平, 等.實(shí)時(shí)操作系統(tǒng)uC/OS-Ⅱ串口通信的設(shè)計(jì)與實(shí)現(xiàn)[J]. 價(jià)值工程, 2017,36(19): 90-93.

[7]許迅文.開(kāi)源RTOS在STM32單片機(jī)中的應(yīng)用[J].企業(yè)技術(shù)開(kāi)發(fā),2011,30(16):37.

[8]高華. ROS2的RTOS支持?jǐn)U展研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2020.

[9]王亞,王瑞,關(guān)永,等. RGMP-ROS混合機(jī)器人操作系統(tǒng)節(jié)點(diǎn)間通信的形式化驗(yàn)證[J].小型微型計(jì)算機(jī)系統(tǒng),2015,36(10):2379-2383.

[10]邵壯. 兼容ROS的嵌入式實(shí)時(shí)機(jī)器人通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2019.

猜你喜歡
通信
基于“一級(jí)調(diào)度、兩級(jí)運(yùn)維”的通信管理體系研究①
科技資訊(2016年19期)2016-11-15 10:10:38
計(jì)算機(jī)技術(shù)在通信中的應(yīng)用
簡(jiǎn)述計(jì)算機(jī)通信網(wǎng)絡(luò)安全與防護(hù)策略
Android環(huán)境下主UI線(xiàn)程與子線(xiàn)程通信機(jī)制研究
無(wú)線(xiàn)自組網(wǎng)在野戰(zhàn)防空通信系統(tǒng)中的應(yīng)用
對(duì)數(shù)字微波通信技術(shù)的研究
平谷区| 塔河县| 达孜县| 伽师县| 静宁县| 梅州市| 明光市| 剑川县| 东山县| 肥乡县| 大方县| 永定县| 云龙县| 如东县| 长顺县| 墨脱县| 大埔区| 广丰县| 西平县| 北碚区| 定安县| 师宗县| 凤冈县| 衡山县| 夏津县| 庆云县| 铜梁县| 长沙市| 阿拉善右旗| 呼和浩特市| 南和县| 汶川县| 霍邱县| 雷山县| 勃利县| 治多县| 利辛县| 合山市| 九龙县| 增城市| 禄丰县|