基于STM32的IO設(shè)備模擬器設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引 言
近年來,各國為各自利益逐漸加強(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)試周期,而模擬器可以較好地解決這些問題。此模擬器無需深入了解設(shè)備的通信協(xié)議與響應(yīng)數(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à)比最高的一款 ARM 微控制器,最高工作頻率可達(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, 即 16 MB,可用于存儲(chǔ)字庫和其他用戶數(shù)據(jù),系統(tǒng)掉電后數(shù) 據(jù)不丟失,滿足了本設(shè)計(jì)的數(shù)據(jù)存儲(chǔ)要求。設(shè)置 SPI 為全雙 工、主機(jī)模式、8 位幀格式傳輸,高位在前,具有 CRC 校 驗(yàn)功能 [5]。SPI 波特率預(yù)分頻值為 256 分頻,傳輸速度為36 MHz/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)的通信方式,即 RS232,RS485,理論上可實(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)。
(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í)器 中斷每隔 1 s 進(jìn)入一次,在中斷時(shí)間間隔執(zhí)行自加操作,以一 定的格式將時(shí)間間隔寫入 FLASH 保存,便于后續(xù)讀取。
(3)為了保證上位機(jī)指令與設(shè)備響應(yīng)正常匹配,W25Q128 中的數(shù)據(jù)存儲(chǔ)格式如圖 5 所示。
模擬器模擬設(shè)備時(shí)析出有效數(shù)據(jù),程序流程如圖 6 所示。
4 結(jié) 語
本設(shè)計(jì)以模擬美國 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)中的作用。