周靈江,金 杰,丁小洪,朱 陽,章家會,金 辰,朱鴻博
(國網浙江臨海市供電有限公司,浙江 臨海 317000)
STM32 系列微控制器是一款基于ARM Cortex-M3 內核的嵌入式應用產品[1]。由于其高性能、低成本、低功耗的特性使其應用領域不斷擴大,對于高效開發和利用更為重要。
STM32CubeMX 軟件是意法半導體(ST)公司推出的STM32 系列單片機的圖形化配置工具,開發者可利用其提供的可視化引腳、外設、時鐘等配置功能,快速完成工程的建立、初始化[2-3]。基于MATLAB 和STM32CubeMX 聯合開發的STM32-MAT 工具箱,它提供的MCU CONFIG 模塊可以配置STM32CubeMX 軟件所支持的STM32 芯片,同時它還包含幾乎所有STM32 芯片上的資源。在嵌入式軟件開發過程中,可以結合Matlab&Simulink 已有的模塊實現復雜的控制算法與嵌入式編程。在STM32CubeMX 軟件配置的基礎上,快速為STM32 芯片實現圖形化設計、早期驗證、代碼自動生成和文檔自動化[4]。Embedded Coder 生成的C 代碼MDK 工程文件,編譯、下載后直接在單片機上運行,進一步簡化了代碼集成過程[5]。
隨著國家電網公司用電信息采集系統建設的推進,對采集成功率的要求越來越高[6-7]。
RS485 作為國際通用串口通信標準,在用電信息采集系統中得到了廣泛應用,對電能表乃至整個用電采集系統的安全經濟運行都有重要意義[8]。RS485 通信系統越來越龐大,再加上供電系統復雜的電磁環境,使RS485 通信網絡的穩定性面臨嚴峻考驗。從現場維護的實際經驗來看,RS485 總線傳輸的擁堵、阻塞以及不穩定是用電信息采集不成功的原因之一。
基于STM32 的RS485 適配器能夠很好解決電信息采集系統RS485 通信網絡的穩定性問題。
系統電路結構連接關系如圖1所示[9]。

圖1 系統電路結構連接關系
STM32 單片機最小系統由STM32F103ZET6 單片機、時鐘電路、復位電路、JTAG 接口構成。時鐘電路采用的晶振頻率為8 MHz,復位電路包含上電復位和按鍵復位。JTAG接口用于給STM32 單片機下載固件或調試程序。
電源模塊采用電平轉換芯片AMS1117-3.3、一個5 V 轉 3 V 穩壓電源芯片,內部集成有過熱保護與限流電路。供電模塊還有供電狀態指示燈。
本設計使用MAXIM 公司生產的MAX485 芯片。MAX485 是用于RS485 通信的低功耗收發器,每個器件中都具有一個驅動器和一個收發器,芯片引腳及引腳說明如圖2所示。RE/DE 為發送接收使能端,高電平發送數據,低電平接收數據。
軟件系統的設計任務具體如下:①利用STM32CubeMX平臺進行初始化配置后,生成初始化MDK 工程;②在Matlab&Simulink 圖形化環境下,使用STM32-MAT 工具箱及Simulink 模型進行應用層軟件的開發。

圖2 RS485 芯片引腳及引腳說明
STM32cubeMX 是一款圖形化軟件設置工具,支持STM32全系列芯片,用戶可以非常方便地配置MCU的引腳、時鐘、外設等,并且支持自動生成工程項目文件[10]。
3.1.1 時鐘配置
時鐘配置界面如圖3所示,外部晶振通過鎖相環(PLL)倍頻得到PLLCLK,之后得到系統時鐘72 MHz[11]。

圖3 時鐘配置界面
3.1.2 I/O 口配置
通過STM32I/O 口的輸入輸出,從而驅動MAX485 數據的輸入輸出,配置界面如圖4所示。主MAX485 芯片RO輸出接入STM32芯片INPUT引腳,MAX485芯片的RE/DE、DI 輸入引腳接入STM32 芯片OUTPUT 引腳。從MAX485芯片的RO 輸出分別接入至STM32 芯片的INPUT 引腳,但14 路從MAX485 芯片的RE/DE、DI 引腳并接為并由STM32芯片的兩個定義為OUTPUT 形態的I/O 口引腳控制。
3.1.3 計時器配置
STM32 需要實時掃描主從MAX485 芯片RO 引腳的狀態,為保證掃描的實時性,需要計時器定時操作。在STM32CubeMX 界面初始化和使能中斷即可,TIMER2 中斷使能如圖5所示。在Matlab&Simulink 圖形化環境中,對計時器進行應用配置。

圖4 I/O 口配置界面

圖5 TIMER2 中斷使能
3.2.1 計時器配置及中斷
STM32-MAT 工具箱中時鐘模塊,時鐘配置界面如圖6所示。在界面中配置時鐘頻率為100 000 Hz,即0.01 ms 中斷一次。有效提高了采集MAX485 的RO 狀態的分辨率。時鐘中斷模型如圖7所示,在中斷模型中進行數據處理過程模型的搭建。

圖6 Matlab&Simulink 時鐘配置界面

圖7 時鐘中斷模型
3.2.2 RS485 適配器處理原則及軟件實現
RS485 適配器設計分為接收到數據集中器數據后的處理規則、電能表數據接收后的處理規則。
電能表數據接收后的處理規則:當RS485 適配器接收到數據集中器發送來的數據時,RS485 適配器把收到的數據通過電能表連接的14 個RS485口發出去。以實現連接到RS485適配器上的每個設就像都在同一條總線上一樣。這時RS485適配器就要把收到的數據同步傳送給下面的每個RS485 口。 下位機數據接收后的處理規則:當RS485 適配器接收到與電能表連接的14 個RS485 口發送來的數據時,RS485 適配器要把收到的數據通過與數據集中器連接的RS485 發送給數據集中器,使連接到RS485 適配器上的每個設備就像都在同一條總線上一樣。當多個RS485 同時接收到數據時,適配器僅選擇一個口的數據發送給上位機,并報警提示[12]。
Stateflow 是有限狀態機的圖形實現工具,可用于解決事件驅動系統中復雜的邏輯問題。有限狀態機又稱事件驅動系統,是指系統在條件發生變化時從一個狀態轉換到另外一個狀態。有限狀態機輸入輸出如圖8所示。

圖8 有限狀態機輸入輸出
圖8中,計數器、RS485 狀態變量作為事件輸入至狀態機。有限狀態機輸出各MAX485 芯片數據信號持續時間以及各MAX485 芯片的同步控制信號。
有限狀態機內部狀態切換如圖9所示。

圖9 有限狀態機內部狀態切換圖
利用 STM32CubeMX 平臺進行初始化配置,并在Matlab&Simulink 圖形化環境下進行應用軟件模型的搭建,有效提高了軟件的可靠性及復用性。
本設計介紹了基于STM32F103 單片機的RS485 適配器開發過程。STM32CubeMX 和MATLAB/Simulink 的STM32 MAT 模型庫的使用,使RS485 適配器的功能實現更為方便快捷,極大提高了設計開發效率,提高了RS485 適配器的可維護性及長期運行可靠性。目前,RS485 適配器已在電信息采集系統成功應用,有效減少了現場運維人員的工作量。