靳俊杰+李欣+徐銘
摘 要:為解決實(shí)驗(yàn)室某些海洋觀測(cè)類IO設(shè)備價(jià)格昂貴、體積較大、數(shù)量較少的問題,文中設(shè)計(jì)了一款I(lǐng)O設(shè)備模擬器。IO模擬器是一款模擬IO設(shè)備指令與相應(yīng)響應(yīng)的模塊,系統(tǒng)以STM32F103為主控制器件,將Keil MDK-ARM作為軟件平臺(tái),通過學(xué)習(xí)實(shí)際IO設(shè)備的指令與響應(yīng),模擬出實(shí)際IO設(shè)備的通信協(xié)議。文中主要介紹了模擬器的硬件搭建及軟件設(shè)計(jì)。經(jīng)實(shí)驗(yàn)驗(yàn)證,該模擬器可在實(shí)驗(yàn)室的系統(tǒng)聯(lián)合調(diào)試中代替實(shí)際設(shè)備,也可以解決實(shí)際設(shè)備數(shù)量不足的問題。
關(guān)鍵詞:模擬器;STM32;FLASH;設(shè)備學(xué)習(xí)
中圖分類號(hào):TP39;TM5 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2018)02-00-03
0 引 言
近年來,各國(guó)為各自利益逐漸加強(qiáng)了海洋研究,海洋觀測(cè)方法日趨多樣化,海洋觀測(cè)平臺(tái)成為研究海洋的重要途徑[1]。海洋觀測(cè)平臺(tái)由MCU控制,外圍接若干海洋設(shè)備終端,如采用溫鹽深儀傳輸海洋溫度、鹽度、壓力;多普勒流速剖面儀傳輸海流流速、流向等數(shù)據(jù)。一個(gè)成功的海洋觀測(cè)平臺(tái)的開發(fā)需要首先經(jīng)過實(shí)驗(yàn)室的聯(lián)合調(diào)試。
若干個(gè)課題組協(xié)同工作時(shí),經(jīng)常共同使用有限個(gè)設(shè)備終端,或者存在訂貨周期過長(zhǎng)、設(shè)備出海等問題,導(dǎo)致聯(lián)合調(diào)試時(shí)因某些設(shè)備缺位而延長(zhǎng)系統(tǒng)調(diào)試周期,而模擬器可以較好地解決這些問題[2]。此模擬器無需深入了解設(shè)備的通信協(xié)議與數(shù)據(jù)格式,只需對(duì)實(shí)際設(shè)備實(shí)現(xiàn)一次操作,即可學(xué)習(xí)實(shí)際設(shè)備的通信協(xié)議,最終達(dá)到代替實(shí)際設(shè)備參與系統(tǒng)調(diào)試的目的。
1 總體設(shè)計(jì)
系統(tǒng)總體結(jié)構(gòu)如圖1所示。
本文設(shè)計(jì)的模擬器由STM32F103微處理器模塊、供電模塊、LED燈指示模塊、存儲(chǔ)模塊、串口模塊、按鍵構(gòu)成。按鍵用于系統(tǒng)硬件復(fù)位,撥動(dòng)開關(guān)選擇系統(tǒng)工作模式,LED燈指示系統(tǒng)的運(yùn)行狀態(tài),存儲(chǔ)模塊用于存儲(chǔ)系統(tǒng)數(shù)據(jù),防止掉電丟失。其工作方式分為兩種,一種是學(xué)習(xí)實(shí)際設(shè)備的指令與響應(yīng)及實(shí)際設(shè)備收到指令與發(fā)出響應(yīng)的時(shí)間間隔,學(xué)習(xí)數(shù)據(jù)存入FLASH;另一種是模擬實(shí)際設(shè)備,在收到上位機(jī)指令后,通過字符匹配FLASH中的指令,延長(zhǎng)實(shí)際設(shè)備收到指令與發(fā)出響應(yīng)的時(shí)間間隔,回復(fù)與指令對(duì)應(yīng)的響應(yīng)。模擬器工作簡(jiǎn)圖如圖2所示。
2 硬件設(shè)計(jì)
2.1 存儲(chǔ)模塊
STM32F103內(nèi)核為Cortex-M3,采用ARM V7構(gòu)架,是現(xiàn)今性價(jià)比最高的一款A(yù)RM微控制器,最高工作頻率可達(dá)72 MHz,該芯片具有64 kB SRAM,512 kB FLASH,擁有快速的中斷處理[3]。本設(shè)計(jì)使用了芯片的USART1、USART3、Timer3、Timer7及SPI接口。
串行外圍設(shè)備接口(Serial Peripheral Interface,SPI)是一種全雙工,高速、同步的通信總線,在芯片的管腳上只占用四根線。本設(shè)計(jì)使用STM32F103自帶的SPI來實(shí)現(xiàn)對(duì)外部FLASH(W25Q128)的讀寫操作[4]。如圖3所示,W25Q128是華邦公司推出的大容量SPI FLASH產(chǎn)品,容量為128 Mb,即16MB,可用于存儲(chǔ)字庫(kù)和其他用戶數(shù)據(jù),系統(tǒng)掉電后數(shù)據(jù)不丟失,滿足了本設(shè)計(jì)的數(shù)據(jù)存儲(chǔ)要求。設(shè)置SPI為全雙工、主機(jī)模式、8位幀格式傳輸,高位在前,具有CRC校驗(yàn)功能[5]。SPI波特率預(yù)分頻值為256分頻,傳輸速度為36MHz/256=140.625 kHz。
2.2 串口通訊部分設(shè)計(jì)
儀器通訊通常采用串行通信和并行通信兩種方式[6]。串行通信方式具有使用線路少、成本低的優(yōu)點(diǎn),在遠(yuǎn)程傳輸時(shí),避免了多條線路特性的不一致而被廣泛采用[7]。計(jì)算機(jī)和單片機(jī)都具有串行接口,可以完成上位機(jī)與模擬器、模擬器與實(shí)際設(shè)備之間的通訊任務(wù)。如圖4所示,模擬器串口1可以實(shí)現(xiàn)兩種不同的通訊模式,通過跳線帽或者撥動(dòng)開關(guān)選擇相應(yīng)的通信方式,即RS 232,RS 485,理論上可實(shí)現(xiàn)不僅限于海洋儀器的模擬,具備較強(qiáng)的延伸性。
此設(shè)計(jì)使用SP3232芯片作為TTL轉(zhuǎn)RS 232芯片。數(shù)據(jù)傳輸速率最高為20 kb/s,最大距離為15 m??晒﹥陕反诠餐褂茫涌跒檠由焱ㄓ嵔涌?,可同時(shí)使用DB-9與三線制連接法,兩者均使用RXD、TXD、GND三條信號(hào)線,程序設(shè)計(jì)中未使用握手信號(hào),可直接發(fā)送和接收數(shù)據(jù)。RS 485隸屬于OSI模型物理層電氣特性的規(guī)定,為兩線、半雙工、多點(diǎn)通信的標(biāo)準(zhǔn)。其電氣特性和 RS 232不一樣,而是用纜線兩端的電壓差值來表示傳遞信號(hào),通訊距離為1 200 m[8]。本設(shè)計(jì)使用MAXIM公司生產(chǎn)的MAX3471,USART_RE為發(fā)送使能端,接STM32的GPIOA_8,高電平發(fā)送數(shù)據(jù),低電平接收數(shù)據(jù),接收和發(fā)送均由軟件控制。串口3與串口1的電路圖基本相同,處于學(xué)習(xí)模式時(shí)與實(shí)際IO設(shè)備連接。
2.3 狀態(tài)控制部分設(shè)計(jì)
系統(tǒng)運(yùn)行狀態(tài)由STM32的GPIOE_3的輸入邏輯電平控制,連接外部三腳撥動(dòng)開關(guān),通過判斷該引腳的輸入邏輯電平來決定模擬器的工作方式,電平狀態(tài)改變則系統(tǒng)工作狀態(tài)改變。運(yùn)行狀態(tài)指示燈(紅色LED燈)連接引腳GPIOB_5,系統(tǒng)運(yùn)行狀態(tài)不同則指示燈閃爍運(yùn)行方式改變。
2.4 供電設(shè)計(jì)
供電電路采用電平轉(zhuǎn)換芯片AMS1117-3.3,這是一個(gè)5 V轉(zhuǎn)3 V穩(wěn)壓電源芯片,內(nèi)部集成有過熱保護(hù)與限流電路。通過該芯片,可以實(shí)現(xiàn)對(duì)模擬器的3.3 V供電與5 V供電,同時(shí)也可以使用USB供電,保證了模擬器在多供電環(huán)境的使用。供電模塊還具有供電狀態(tài)指示燈(藍(lán)色LED燈)。
3 系統(tǒng)軟件設(shè)計(jì)
(1)程序初始化:初始化包括串口初始化,定時(shí)器初始化,W25Q128初始化。程序中加入了看門狗,可防止系統(tǒng)因外界環(huán)境的干擾而出現(xiàn)程序跑飛的現(xiàn)象[9]。為保證模擬器正常穩(wěn)定地工作,程序采用輪詢方式確定是否改變模擬器的工作狀態(tài)。endprint
(2)定時(shí)器在串口通信中的軟件設(shè)計(jì):USART1和USART3采用中斷接收字符方式共同使用Timer7,通過判斷接收到的兩個(gè)字符間的時(shí)間差來斷定是否為連續(xù)的數(shù)據(jù)[10]。Timer7是STM32F103自帶的兩個(gè)基本定時(shí)器之一,定時(shí)器中斷優(yōu)先級(jí)為0,高于串口優(yōu)先級(jí),采用由下至上的計(jì)數(shù)方式,10 ms進(jìn)入一次定時(shí)器中斷,定時(shí)器中斷中串口接收標(biāo)記設(shè)置為接收完成,兩個(gè)字節(jié)接收時(shí)間間隔小于10 ms即認(rèn)為這兩個(gè)字節(jié)屬于同一字符串,通過定時(shí)器來判斷接收的字節(jié)是否屬于同一次數(shù)據(jù),避免兩次數(shù)據(jù)間的干擾。將USART1和USART3接嵌入式模塊。Timer3是通用定時(shí)器,在本設(shè)計(jì)中用來記錄USART1開始透?jìng)鲾?shù)據(jù)至USART3到USART3收到外部數(shù)據(jù)之間的時(shí)間間隔,即實(shí)際設(shè)備的響應(yīng)時(shí)間,定時(shí)器中斷每隔1s進(jìn)入一次,在中斷時(shí)間間隔執(zhí)行自加操作,以一定的格式將時(shí)間間隔寫入FLASH保存,便于后續(xù)讀取。
(3)為了保證上位機(jī)指令與設(shè)備響應(yīng)正常匹配,W25Q128中的數(shù)據(jù)存儲(chǔ)格式如圖5所示。
模擬器模擬設(shè)備時(shí)析出有效數(shù)據(jù),程序流程如圖6所示。
4 結(jié) 語(yǔ)
本設(shè)計(jì)以模擬美國(guó)TELEDYN分析儀表公司的多普勒流速剖面儀(ADCP)以及Sea-Bird公司的SBE39-IM型溫鹽深儀為例,實(shí)現(xiàn)了對(duì)這些實(shí)際儀器IO功能的模擬。通過實(shí)驗(yàn)檢驗(yàn),成功實(shí)現(xiàn)了實(shí)驗(yàn)室環(huán)境下模擬器代替ADCP在定時(shí)衛(wèi)星通信系統(tǒng)中的作用以及代替SBE39-IM型溫鹽深儀在電磁耦合浮標(biāo)系統(tǒng)中的作用。
參考文獻(xiàn)
[1]謝東亞,李欣.深海海底邊界層原位監(jiān)測(cè)中電源管理系統(tǒng)的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2013,36(6):136-138.
[2]陳飛,余燁.電子測(cè)量?jī)x器IO模擬器設(shè)計(jì)[J].電子產(chǎn)品世界,2008(7):87-88.
[3]丁力,宋志平,徐萌萌,等.基于STM32的嵌入式測(cè)控系統(tǒng)設(shè)計(jì)[J].中南大學(xué)學(xué)報(bào)(自然科學(xué)版),2013(S1):260-265.
[4] STM32F1開發(fā)指南-庫(kù)函數(shù)版本[M].北京:北京航空航天大學(xué)出版社,2014.
[5]高英.串行數(shù)控信號(hào)的模擬方法在儀器設(shè)計(jì)與維修中的應(yīng)用[J].現(xiàn)代測(cè)量與實(shí)驗(yàn)室管理,1999(6):54-55.
[6]底偉.C++ Builder實(shí)現(xiàn)模擬器測(cè)控系統(tǒng)單片機(jī)與上位機(jī)之間的串口通汛[J].科技風(fēng),2009(5):58,60.
[7]歐陽(yáng)斌武.電子測(cè)量?jī)x器IO模擬器設(shè)計(jì)方案探討[J].科技資訊,2009(17):67.
[8]范逸之.C++ Builder與RS-232串行通信控制[M].北京:清華大學(xué)出版社,2002.
[9]陳宇澤,宋緒勇.嵌入式測(cè)控系統(tǒng)的設(shè)計(jì)與應(yīng)用[J].科技與創(chuàng)新,2017(15):160-161.
[10]林倩.DHT11數(shù)字溫濕度傳感器通信協(xié)議的IO模擬[J].信息通信,2017(1):206-207.endprint