崔永在 張春慧 李雪茜
摘 要:MCU STM32性能強(qiáng)、性價(jià)比高,因而廣泛用于各種嵌入式設(shè)備;嵌入式設(shè)備種類繁多;串口硬件形式也變化多樣;繁雜多樣的串口配置也導(dǎo)致了STM32調(diào)試的問題;鑒于此;總結(jié)了各種開發(fā)場景下常用串口硬件接口、軟件配置方法,嘗試了一種基于多串口通用底板工具實(shí)現(xiàn)的免配置直接通過串口軟件進(jìn)行設(shè)備調(diào)試的方法;可以簡化STM32開發(fā)過程,實(shí)現(xiàn)快速搭建硬件平臺(tái),調(diào)通互聯(lián)設(shè)備。解決每個(gè)開發(fā)項(xiàng)目所面對(duì)調(diào)測問題,迅速形成原理樣機(jī),加快開發(fā)過程。
關(guān)鍵詞:STM32串口連接;多串口調(diào)試;串口通用底板
1 引言
生活中智能手環(huán)、微型四軸、掃地機(jī)器人、工業(yè)自動(dòng)化控制等大多基于STM32,可見隨著物聯(lián)網(wǎng)終端和便攜設(shè)備的大量使用,會(huì)有越來越多的STM32設(shè)備被開發(fā)使用到更多場景下。串口作為MCU的重要外部接口,同時(shí)也是軟件開發(fā)的重要調(diào)試手段,其重要性不言而喻[1] [8]。
考慮到現(xiàn)有網(wǎng)絡(luò)和設(shè)備的狀況,新技術(shù)的使用目前只能在部分領(lǐng)域和地區(qū)使用。而占主導(dǎo)地位的串行通信技術(shù)因其連接簡單、使用靈活方便、數(shù)據(jù)傳遞可靠,造價(jià)低廉等優(yōu)點(diǎn),在工業(yè)監(jiān)控、數(shù)據(jù)采集、智能控制和實(shí)時(shí)控制系統(tǒng)中得到普遍應(yīng)用[2]。
正是串行通信的連線少、成本低,因此它在數(shù)據(jù)采集和控制系統(tǒng)中得到了廣泛的應(yīng)用,產(chǎn)品也是多種多樣[3]。據(jù)調(diào)查,目前國際上已有上百種嵌入式設(shè)備,這一類產(chǎn)品的特點(diǎn)是體積較小,需要外部輸入的信息和對(duì)外輸出的信息多,因此要求單片機(jī)體積小且I/O多.然而串口的硬件卻有多種形式,應(yīng)用的外接的串口設(shè)備及配置方法不盡相同,操作卻花式多樣 [5]。正是因?yàn)檫@些問題而限制了它往更多的領(lǐng)域發(fā)展.這時(shí)就出現(xiàn)了技術(shù)瓶頸,需要我們找到其他的途徑來獲得期望得到的效果.能夠有效的解決不同串口通信統(tǒng)一配置的問題,實(shí)現(xiàn)大量的串口與一個(gè)或多個(gè)主機(jī)之間的穩(wěn)定,安全的串口通信[6]。
研究多串口通用底板技術(shù)可簡化串口的雙向通訊功能,傳輸數(shù)據(jù),編程調(diào)試的繁瑣操作,并且會(huì)大大縮短開發(fā)周期。用在串口數(shù)據(jù)采集通信系統(tǒng)中,編程效率與移植性將不斷增強(qiáng),同時(shí)適合于對(duì)通信質(zhì)量要求較高,傳輸距離較遠(yuǎn)的應(yīng)用場合[7]。
2 基本概述
多串口通訊底板技術(shù)集成常見的TTL與RS232兩種形式的串口外,還可以直接提供給外接的設(shè)備直接使用,免除了硬件的連接和驅(qū)動(dòng)的配置,保證系統(tǒng)拿到以后免配置直接可以通過串口軟件直接進(jìn)行設(shè)備的調(diào)試。
編程者可以通過上位機(jī)的串口助手,發(fā)送任意的指令進(jìn)行測試。發(fā)送的指令可以通過上位機(jī)直接轉(zhuǎn)發(fā)給STM32接收串口后,通過另一個(gè)串口轉(zhuǎn)發(fā)給串口測試設(shè)備,然后從測試設(shè)備反饋的指令結(jié)果通過STM32反饋給上位機(jī)進(jìn)行檢測。
3 主要內(nèi)容
STM32開發(fā)模塊都具備可以配置使用的多個(gè)串口,一般有5-8個(gè)同步串口(USART)和異步串口(UART)。這些串口都可以用于對(duì)外連接調(diào)測設(shè)備,或者用于調(diào)測的信息顯示。外連的設(shè)備包括各種衛(wèi)星(北斗、銥星等)通信模塊,無線通信模塊(GPRS、3G、4G模塊),傳感器(煙霧、聲音、震動(dòng)等)。一般的串口硬件形式有兩種,一種是TTL,另一種是RS232。兩種形式主要區(qū)別在于信號(hào)電平不同[10]。
1.指令模式發(fā)送
根據(jù)目前串口對(duì)聯(lián)設(shè)備測試指令的具體形式,以及可以用于發(fā)送測試的各種指令,形成系統(tǒng)測試的發(fā)送和反饋信息回路。同時(shí),為了保證適應(yīng)于各種情況下的開發(fā),采用不封裝具體指令的方式,使用可以發(fā)送任意指令的串口助手作為測試的人機(jī)界面接口,方便用戶根據(jù)具體的要求測試連接的對(duì)接設(shè)備 [9]。
實(shí)現(xiàn)方式如下:
(1)通過串口檢測的軟件,通過指令方式發(fā)送指令到STM32。
(2)STM32串口接收到指令后,將指令直接發(fā)送給連接的另一個(gè)串口的設(shè)備。
(3)對(duì)接的設(shè)備對(duì)接收的指令執(zhí)行,同時(shí)將指令執(zhí)行結(jié)果反饋給STM32。
(4)STM32將對(duì)接測試設(shè)備反饋的指令信息,輸出給測試用的串口顯示界面。然后,完成整個(gè)系統(tǒng)的硬件連接,驅(qū)動(dòng)配置和軟件調(diào)測。
2. STM32驅(qū)動(dòng)配置及開源軟件設(shè)置
因?yàn)榇诘挠布喾N形式,為了同時(shí)可以對(duì)接TTL形式硬件接口,或者是RS232形式硬件接口,采用集成TTL和RS232轉(zhuǎn)換模塊的形式,通過跳線的方式來實(shí)現(xiàn)兩者直接的信號(hào)電平轉(zhuǎn)換。
2.1 STM32的硬件配置和中斷轉(zhuǎn)發(fā)方式
因?yàn)榕渲枚鄠€(gè)串口,需要將中斷的等級(jí)設(shè)置好,本項(xiàng)目以5個(gè)串口為例,將串口中斷都設(shè)置成組1中(NVIC_PriorityGroup_1),中斷優(yōu)先級(jí)為1,子優(yōu)先級(jí)為0。為了便于調(diào)測使用,可以將其中的兩個(gè)作為測試展示使用,其他的串口可以暫時(shí)關(guān)閉,在項(xiàng)目需要的時(shí)候,通過USART_ITConfig(USART_X, USART_IT_RXNE, ENABLE)的方式打開串口即可直接使用。
4 實(shí)驗(yàn)
在很多的實(shí)驗(yàn)與實(shí)際生產(chǎn)中,串口在 STM32 應(yīng)用最多的是“打印”程序信息,一般在硬件設(shè)計(jì)時(shí)都會(huì)預(yù)留一USART 通信接口連接電腦,用于在調(diào)試程序是可以把一些調(diào)試信息“打印”在電腦端的串口調(diào)試助手工具上,從而了解程序運(yùn)行是否正確、如何出錯(cuò)具體哪里出錯(cuò)等等。
實(shí)驗(yàn)結(jié)果
在實(shí)驗(yàn)中串口通訊的數(shù)據(jù)包由發(fā)送設(shè)備通過自身的TXD接口傳輸?shù)浇邮赵O(shè)備得RXD接口,在協(xié)議層中規(guī)定了數(shù)據(jù)包的內(nèi)容,具體包括起始位、主體數(shù)據(jù)(8位或9位)、校驗(yàn)位以及停止位,通訊的雙方必須將數(shù)據(jù)包的格式約定一致才能正常收發(fā)數(shù)據(jù)。當(dāng)開發(fā)板與上位機(jī)之間通過USB線連接,成功安裝USB轉(zhuǎn)串口驅(qū)動(dòng)與CH341驅(qū)動(dòng)后,可以把一些調(diào)試信息“打印”在電腦端的串口調(diào)試助手工具上。
(1)收發(fā)字符信息
以USART_SendData(pUSARTx,ch)函數(shù)為基礎(chǔ)建立的函數(shù)可以向上位機(jī)發(fā)送數(shù)據(jù),利用FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG)讀取發(fā)送數(shù)據(jù)寄存器的狀態(tài)來 等待發(fā)送寄存器將數(shù)據(jù)成功發(fā)送。還可使用重定向后的printf()函數(shù)與getchar函數(shù),向串口調(diào)試助手收發(fā)數(shù)據(jù)。如:在上位機(jī)上用串口調(diào)試助手發(fā)送一個(gè)字符X,STM32在收到字符后返回給上位機(jī),顯示"I got X",串口波特率設(shè)定為9600bps。使用printf()函數(shù)。
(2) 串口指令控制
通過串口調(diào)試工具向串口發(fā)送控制信號(hào):1-小燈亮;0-小燈暗。即在串口中斷(UART2)接收到之后進(jìn)行處理,判斷,如果接收到的字符為1,則控制小燈亮,如果接收到的字符為0,則控制小燈暗.同時(shí)USART2獲得相關(guān)數(shù)據(jù),再發(fā)送到STM32的LCD屏顯示指令編碼,以及照明持續(xù)的時(shí)間。
串口是絕大多數(shù) MCU 中不可或缺的一個(gè)外設(shè),同時(shí)也是我們開發(fā)中經(jīng)常使用的一種調(diào)試手段,所以在STM32的應(yīng)用中,利用某串口進(jìn)行設(shè)備的調(diào)試,尤為重要。
4 結(jié)束語
為實(shí)現(xiàn)免配置直接可以通過串口軟件直接進(jìn)行設(shè)備的調(diào)試,本文設(shè)計(jì)了一個(gè)串口通用底板開發(fā)方式。該設(shè)計(jì)兼容了各種開發(fā)需求下通用的軟硬件系統(tǒng),可以通過串口收發(fā)數(shù)據(jù),并具備輸出顯示調(diào)試串口,幫助在STM32和互聯(lián)設(shè)備連接時(shí),調(diào)試之間的連通信息。
參考文獻(xiàn):
[1] 張?jiān)矗?卞鴻巍. 組合導(dǎo)航計(jì)算機(jī)高效多串口通訊技術(shù)實(shí)現(xiàn)[J]. 計(jì)算機(jī)測量與控制, 2009(06):149-151+175.
[2] 姚予疆. 通信設(shè)備接口協(xié)議手冊(cè)[M].2005.
[3] 趙炯等. 串行數(shù)據(jù)傳輸協(xié)議的剖析研究.計(jì)算機(jī)工程.2004,5.
[4] 劉忠誠. 基于STM32的嵌入式多串口服務(wù)器的研究與設(shè)計(jì)[D].
[5] http://www.openedv.com/
[6] 劉忠誠. 基于STM32的嵌入式多串口服務(wù)器的研究與設(shè)計(jì)[D].
[7] 張淑清. 嵌入式單片機(jī)STM32設(shè)計(jì)及應(yīng)用技術(shù)[M]. 國防工業(yè)出版社, 2015.
[8] 焦江麗, 李鳳蓮. 以ARM Cortex-M3為基礎(chǔ)的STM32開發(fā)板的設(shè)計(jì)與實(shí)現(xiàn)[J]. 中國新通信, 2013, 000(009):94-96.
[9] 郭勇,何軍.STM32單片機(jī)多串口通信仿真測試技術(shù)研究[J].無線電工程, 2015.
[10] 牛洪濤. "RS—232電平與TTL電平之間的轉(zhuǎn)換."?計(jì)算機(jī)與通信?12(1997):39-40.
[11]RICHARDBARNETT, LARRYO'CULL. 嵌入式C語言編程與Microchip PIC[M]. 清華大學(xué)出版社, 2005.
省級(jí)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目:S201910453051
(泰山學(xué)院-物理與電子工程學(xué)院? ?271000)