專利名稱:基于stm32f103ve芯片模擬多組uart接口的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)接收和發(fā)送,特別是涉及基于STM32F103VE芯片模擬多組UART接口的方法。
背景技術(shù)STM32F103VE芯片以及同類型的芯片,一般只有二至三組UART (UniversalAsynchronous Receiver/Transmitter,通用異步接收/發(fā)送裝置)接口,超過五組UART接口的基本沒有。但是有些應(yīng)用場(chǎng)合的設(shè)備,需要更多組UART接口以連接不同的硬件設(shè)備,例如預(yù)付費(fèi)監(jiān)控水表系統(tǒng)采集器,在設(shè)計(jì)時(shí)需要九個(gè)UART接口同時(shí)進(jìn)行并獨(dú)立工作,最多五個(gè)UART接口顯然不然滿足需要。如果使用UART擴(kuò)展芯片則價(jià)格高且電路復(fù)雜;如使用通信專用多UART接口 MCU的話,其MCU成本極高,并且其軟件與硬件開發(fā)成本也隨這升高,開發(fā)過程中又要學(xué)習(xí)新的開發(fā)環(huán)境并要做大量的文檔閱讀,開發(fā)過和可控性差。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題在于避免上述現(xiàn)有技術(shù)的不足之處而提出一種基于STM32F103VE芯片模擬多組UART接口的方法;該方法在現(xiàn)有硬件的基礎(chǔ)上,能夠?qū)崿F(xiàn)更多組同時(shí)工作且相互獨(dú)立的UART接口,以滿足設(shè)備通信連接的需要,且無須增加或采用更加昂貴的硬件,節(jié)約硬件成本。
本發(fā)明解決所述技術(shù)問題可以通過采用以下技術(shù)方案來實(shí)現(xiàn)
提出一種基于STM32F103VE芯片模擬多組UART接口的方法,包括如下步驟,
A.選定芯片的至少兩組GPIO口作為模擬UART接口 ;
B.當(dāng)各組模擬UART接口中任一組有發(fā)送請(qǐng)求時(shí),令芯片的第一定時(shí)器啟動(dòng),第一定時(shí)器每隔一段時(shí)間中斷一次,以使模擬UART接口完成發(fā)送任務(wù),發(fā)送時(shí)中斷僅僅只是模擬物理層將多組模擬UART接口的TX數(shù)據(jù)位送出,并通知數(shù)據(jù)鏈路層對(duì)要發(fā)送的數(shù)據(jù)位進(jìn)行組織;
C.各組模擬UART接口的RX引腳中任一出現(xiàn)中斷請(qǐng)求則觸發(fā)接收請(qǐng)求,同時(shí)令芯片的第二定時(shí)器啟動(dòng),第二定時(shí)器每隔一段時(shí)間中斷一次,中斷時(shí)只采樣各模擬UART接口接收端口狀態(tài)并保存到緩沖區(qū),當(dāng)接收到停止位時(shí)將數(shù)據(jù)發(fā)送到模擬物理層行數(shù)字濾波以得到接收字節(jié),之后再把接收到的字節(jié)數(shù)據(jù)傳遞給數(shù)據(jù)鏈路層,最終通過網(wǎng)絡(luò)層傳遞給應(yīng)用層。本發(fā)明方法最多能模擬八組UART接口。同現(xiàn)有技術(shù)相比較,本發(fā)明基于STM32F103VE芯片模擬多組UART接口的方法的技術(shù)效果在于1·充分利用STM32F103VE芯片的八組GPIO 口(General Purpose InputOutput,通用輸入/輸出)和兩個(gè)定時(shí)器的現(xiàn)有資源,模擬出2-8組UART接口,滿足了設(shè)備需要更多UART接口的需要,且無須增加或采用更為昂貴的芯片等硬件,節(jié)約硬件成本;2.模擬的多組UART接口與其他MCU內(nèi)部硬件UART只是在物理層表現(xiàn)不同,其他各層完全相同,極大方便了程序的移植與硬件升級(jí)。
圖I是模擬UART接口的發(fā)送流程示意 圖2是模擬UART接口的接收流程示意圖。
具體實(shí)施方式
以下結(jié)合附圖所示之優(yōu)選實(shí)施例作進(jìn)一步詳述。本發(fā)明實(shí)施例基于STM32F103VE芯片模擬多組UART接口的方法,包括如下步驟,
A.選定芯片的至少兩組GPIO口作為模擬UART接口 ;
B.如圖I所示,當(dāng)各組模擬UART接口中任一組有發(fā)送請(qǐng)求時(shí),令芯片的第一定時(shí)器啟動(dòng),第一定時(shí)器每隔一段時(shí)間中斷一次,以使模擬UART接口完成不小于9600bps的發(fā)送任 務(wù),發(fā)送時(shí)中斷僅僅只是模擬物理層將多組模擬UART接口的TX數(shù)據(jù)位送出,并通知數(shù)據(jù)鏈路層對(duì)要發(fā)送的數(shù)據(jù)位進(jìn)行組織;
C.如圖2所示,各組模擬UART接口的RX引腳中任一出現(xiàn)中斷請(qǐng)求則觸發(fā)接收請(qǐng)求,同時(shí)令芯片的第二定時(shí)器啟動(dòng),第二定時(shí)器每隔一段時(shí)間中斷一次,中斷時(shí)只采樣各模擬UART接口接收端口狀態(tài)并保存到緩沖區(qū),當(dāng)接收到停止位時(shí)將數(shù)據(jù)發(fā)送到模擬物理層行數(shù)字濾波以得到接收字節(jié),之后再把接收到的字節(jié)數(shù)據(jù)傳遞給數(shù)據(jù)鏈路層,最終通過網(wǎng)絡(luò)層傳遞給應(yīng)用層。由于STM32F103VE芯片有八組GPIO 口可以利用,因此本發(fā)明方法最多能模擬八組UART 接口。根據(jù)設(shè)備連接的需要,模擬的UART接口可以在2-8組中任意選擇設(shè)定,設(shè)計(jì)的共同點(diǎn)在于定時(shí)中斷只是進(jìn)行GPIO的輸入輸出,運(yùn)行耗時(shí)極短,數(shù)據(jù)位的收發(fā)處理均放在模擬UART接口物理層的任務(wù)中,每增加一個(gè)接口則加多一個(gè)物理層任務(wù)的實(shí)例。不同在于,根據(jù)需要模擬UART接口組數(shù)的多少,相應(yīng)設(shè)計(jì)第一定時(shí)器和第二定時(shí)器的中斷間隔時(shí)間的長(zhǎng)短,以保證設(shè)備系統(tǒng)的穩(wěn)定運(yùn)行。下面以適用于適用于預(yù)付費(fèi)監(jiān)控水表采集器,需模擬四組UART接口為例,結(jié)合圖I和圖2,說明下模擬UART接口的發(fā)送和接收的原理過程,其它組數(shù)此處就不再贅述。數(shù)據(jù)發(fā)送如圖I所示,當(dāng)四組模擬UART接口中任一組有發(fā)送請(qǐng)求時(shí),令芯片的第一定時(shí)器啟動(dòng),第一定時(shí)器每隔104. 17us中斷一次,以使模擬UART接口完成不小于9600bps的發(fā)送任務(wù),發(fā)送時(shí)中斷僅僅只是模擬物理層將多組模擬UART接口的TX數(shù)據(jù)位送出,并通知數(shù)據(jù)鏈路層對(duì)要發(fā)送的數(shù)據(jù)位進(jìn)行組織;中斷程序極短。數(shù)據(jù)接收如圖2所示,四組模擬UART接口的RX引腳中任一出現(xiàn)中斷請(qǐng)求則觸發(fā)接收請(qǐng)求,同時(shí)令芯片的第二定時(shí)器啟動(dòng),第二定時(shí)器每隔17. 36us中斷一次,中斷時(shí)只采樣各模擬UART接口接收端口狀態(tài)并保存到緩沖區(qū),當(dāng)接收到停止位時(shí)將數(shù)據(jù)發(fā)送到模擬物理層行數(shù)字濾波以得到接收字節(jié),之后再把接收到的字節(jié)數(shù)據(jù)傳遞給數(shù)據(jù)鏈路層,最終通過網(wǎng)絡(luò)層傳遞給應(yīng)用層。定時(shí)中斷只是進(jìn)行了 GPIO的采樣,其執(zhí)行時(shí)間極短,不會(huì)給系統(tǒng)造成影響。由于多次采樣確定一個(gè)數(shù)據(jù)位,其數(shù)據(jù)通信的可靠性得到保障。以上內(nèi)容是結(jié)合具體的優(yōu)選技術(shù)方案對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種基于STM32F103VE芯片模擬多組UART接口的方法,其特征在于包括如下步驟, A.選定芯片的至少兩組GPIO口作為模擬UART接口 ; B.當(dāng)各組模擬UART接口中任一組有發(fā)送請(qǐng)求時(shí),令芯片的第一定時(shí)器啟動(dòng),第一定時(shí)器每隔一段時(shí)間中斷一次,以使模擬UART接口完成發(fā)送任務(wù),發(fā)送時(shí)中斷僅僅只是模擬物理層將多組模擬UART接口的TX數(shù)據(jù)位送出,并通知數(shù)據(jù)鏈路層對(duì)要發(fā)送的數(shù)據(jù)位進(jìn)行組織; C.各組模擬UART接口的RX引腳中任一出現(xiàn)中斷請(qǐng)求則觸發(fā)接收請(qǐng)求,同時(shí)令芯片的第二定時(shí)器啟動(dòng),第二定時(shí)器每隔一段時(shí)間中斷一次,中斷時(shí)只采樣各模擬UART接口接收端口狀態(tài)并保存到緩沖區(qū),當(dāng)接收到停止位時(shí)將數(shù)據(jù)發(fā)送到模擬物理層行數(shù)字濾波以得到接收字節(jié),之后再把接收到的字節(jié)數(shù)據(jù)傳遞給數(shù)據(jù)鏈路層,最終通過網(wǎng)絡(luò)層傳遞給應(yīng)用層。
2.如權(quán)利要求I所述的基于STM32F103VE芯片模擬多組UART接口的方法,其特征在于最多能模擬八組UART接口。
3.如權(quán)利要求I所述的基于STM32F103VE芯片模擬多組UART接口的方法,其特征在于各所述模擬UART接口的通信速率不小于9600bps。
4.如權(quán)利要求I所述的基于STM32F103VE芯片模擬多組UART接口的方法,其特征在于該方法適用于預(yù)付費(fèi)監(jiān)控水表采集器。
全文摘要
本發(fā)明涉及一種基于STM32F103VE芯片模擬多組UART接口的方法,包括如下步驟,A.選定芯片的至少兩組GPIO口作為模擬UART接口;B.當(dāng)各組模擬UART接口中任一組有發(fā)送請(qǐng)求時(shí),令芯片的第一定時(shí)器啟動(dòng),第一定時(shí)器每隔一段時(shí)間中斷一次,發(fā)送時(shí)中斷僅僅只是模擬物理層將多組模擬UART接口的TX數(shù)據(jù)位送出;C.各組模擬UART接口的RX引腳中任一出現(xiàn)中斷請(qǐng)求則觸發(fā)接收請(qǐng)求,同時(shí)令芯片的第二定時(shí)器啟動(dòng),第二定時(shí)器每隔一段時(shí)間中斷一次,中斷時(shí)只采樣各模擬UART接口接收端口狀態(tài)并保存到緩沖區(qū)。
文檔編號(hào)G06F13/38GK102880576SQ20121005946
公開日2013年1月16日 申請(qǐng)日期2012年3月8日 優(yōu)先權(quán)日2012年3月8日
發(fā)明者王炎喜, 董有議, 熊金華 申請(qǐng)人:深圳市華旭科技開發(fā)有限公司