關(guān)明江 嚴(yán)厚偉
(中國船舶重工集團(tuán)公司第七二三研究所 江蘇省揚(yáng)州市 225001)
通常來講,矩陣開關(guān)就是以矩陣形式排列的開關(guān),可以通過開關(guān)控制靈活實(shí)現(xiàn)信號之間的互聯(lián)。開關(guān)網(wǎng)絡(luò)是矩陣開關(guān)的重要組成部分,擔(dān)負(fù)著控制信號流向的任務(wù),是實(shí)現(xiàn)自動測試接口設(shè)計的關(guān)鍵[1]。在自動測試設(shè)備中,矩陣開關(guān)主要用來做信號切換,靈活分配系統(tǒng)的測試資源。自動測試設(shè)備中的信號開關(guān)系統(tǒng)通常由兩個或多個矩陣開關(guān)組成,按照各種接口標(biāo)準(zhǔn)相互連接。在大型電子裝備中也常用到了開關(guān)矩陣。
本文基于STM32F103 為控制核心設(shè)計了一種控制電路,主要通過與高性能的以太網(wǎng) 控制芯片W5100 組合來實(shí)現(xiàn)對矩陣開關(guān)的控制,同時把需要保存的參數(shù)存儲在AT24C32 的E2PROM 中,并且進(jìn)行了STM32F103 的軟件編寫,在某開關(guān)矩陣電路進(jìn)行了實(shí)際應(yīng)用。
該控制電路的設(shè)計,主要功能包含:一組25 個TTL 電平的輸出接口,作為矩陣開關(guān)的開關(guān)控制信號;網(wǎng)絡(luò)接口,通過UDP 協(xié)議與計算機(jī)通信,實(shí)現(xiàn)計算機(jī)對矩陣開關(guān)的控制;記錄當(dāng)前矩陣開關(guān)的開關(guān)狀態(tài),作為斷電開機(jī)后的矩陣狀態(tài)與斷電前一致;剩余接口可預(yù)留液晶顯示屏接口或者其余控制接口,為以后擴(kuò)展使用。
STM32 作為意法半導(dǎo)體推出的一種高性能的ARM 芯片,具有以下特點(diǎn)[2]:STM32F103 采用ARM 公司的高性能32 位Cortex-M3內(nèi)核,消耗功率低,具有睡眠,停止和待機(jī)三種省功率模式,最高工作頻率72MНz,可實(shí)現(xiàn)單周期乘法和硬件除法,片上集成最大512KB 的Flash 存儲器,最大64KB 的SRAM 存儲器,采用2.0-3.6V的電源供電,兼容5V 的I/O 管腳,最高可達(dá)80 個IO 口,STM32集成有上電復(fù)位、掉電復(fù)位和可編程的電壓探測器,使用4-16MНz的晶振,內(nèi)嵌8MНz 和40 kНz 兩個RC 振蕩電路,供CPU 時鐘使用的PLL,用于校準(zhǔn)RTC 的32kНz 的晶振。
STM32F103 具有最多可達(dá)80 個IO 口,足以滿足該矩陣開關(guān)的控制設(shè)計需要。
網(wǎng)絡(luò)通信核心控制器為W5100,W5100 是一款多功能的單片網(wǎng)絡(luò)接口芯片,它內(nèi)部集成了全硬件的TCP/IP 協(xié)議棧,W5100 提供3 種接口訪問方式:直接并行總線、間接并行總線和SPI 總線。W5100 與MCU 接口非常簡單,就像訪問外部存儲器一樣,我們無需深入了解TCP/IP 協(xié)議,也無需考慮以太網(wǎng)的控制,只需訪問網(wǎng)絡(luò)控制器的寄存器,并靈活創(chuàng)建和選擇TCP 及UDP 套接字(Socket)函數(shù)就可以簡單地實(shí)現(xiàn)網(wǎng)絡(luò)通信[3],且不需要操作系統(tǒng)的支持,其具有硬件電路簡單、編程方便等特點(diǎn),解決了一般嵌入式設(shè)計的軟件設(shè)計復(fù)雜、網(wǎng)絡(luò)編程工作量大等問題。
基于STM32 的矩陣開關(guān)控制電路系統(tǒng)框圖如圖1 所示。
該電路主要包括:STM32F103 作為主控制器,是該控制電路的核心。主要功能包含通過SPI 口與網(wǎng)絡(luò)接口芯片W5100 連接,完成計算機(jī)顯控界面與該控制電路的通信;通過IO 口連接電平驅(qū)動芯片對矩陣開關(guān)中的開關(guān)進(jìn)行控制;通過I2C 總線對E2PROM進(jìn)行讀寫,E2PROM 主要記錄保存最終的開關(guān)狀態(tài)作為下次開機(jī)時候的開關(guān)初始狀態(tài)使用;電源驅(qū)動芯片為整個電路提供供電需求,JTAG 口作為STM32 的程序下載和在線調(diào)試的接口;晶振為STM32 提供時鐘;復(fù)位電路完成STM32 的上電復(fù)位和加電時候的手動開關(guān)復(fù)位。

圖1:STM32 控制電路系統(tǒng)框圖

圖2:STM32 與W5100 連接圖

圖3:STM32 與AT24C32 的連接圖
網(wǎng)絡(luò)通信為該控制電路的核心之一,結(jié)合高性能ARM 處理器STM32 實(shí)現(xiàn)以太網(wǎng)的高速實(shí)時傳輸,STM32 完成對應(yīng)用程序的處理,W5100 實(shí)現(xiàn)數(shù)據(jù)傳輸和通信網(wǎng)絡(luò)協(xié)議的處理。STM32 與W5100 的通信采用SPI 模式,串行接口模式只需要4 個引腳進(jìn)行數(shù)據(jù)通信。這4 個引腳的定義分別為:從設(shè)備選擇(/SS)、串行時鐘(SCLK)、MOSI(主出從入)和MISO(主入從出),主控制器(SPI 的主設(shè)備)發(fā)出一系列指令與W5100 通信。
W5100 的SPI_EN引腳選擇SPI操作,SPI_EN 引腳必須通過一個10K 的電阻接到高電平,選擇W5100 的SPI 接口方式。STM32 與W5100 的連接圖如圖2 所示,其中STM32 為主模式,W5100 為從模式。
存儲芯片E2PROM 采用ATMEL 的AT24C32。AT24C32 是采用兩線串行工作方式的EEPROM,容量為32Kbits。利用I2C 總線對該芯片進(jìn)行讀寫,A0-A2:地址線,用來選擇存儲器的地址。WP:寫保護(hù),高電平拒絕寫入,低電平可以寫入,即低電平有效,如果該引腳懸空,內(nèi)部自動下拉到地。SCL:串行時鐘,用來指示什么時候數(shù)據(jù)線上是有效數(shù)據(jù)。SDA:串行數(shù)據(jù),用于數(shù)據(jù)傳送。我們可以采用STM32 自帶的I2C 總線,也可以通過IO 口模擬實(shí)現(xiàn)I2C 總線,然后與AT24C32 連接,通過IO 口控制AT24C32 的地址,實(shí)現(xiàn)對AT24C32 的讀寫。STM32 與AT24C32 的連接圖如圖3。
基于STM32 的矩陣開關(guān)控制電路,既可以實(shí)現(xiàn)與W5100 通過SPI 連接進(jìn)行網(wǎng)絡(luò)通信,也可以與AT24C32 通過I2C 總線讀寫數(shù)據(jù),它還包含其它部分,比如:時鐘電路,復(fù)位電路,電源和地的供電電路、JTAG 下載接口電路、以及備用的擴(kuò)展電路等,該控制電路的主控部分即STM32F103 的原理圖如圖4 所示。
本設(shè)計中,軟件編寫需要實(shí)現(xiàn)對W5100 的控制,從而實(shí)現(xiàn)計算機(jī)和控制電路的網(wǎng)絡(luò)通信,達(dá)到計算機(jī)對開關(guān)矩陣的控制;同時需要把接收到的網(wǎng)絡(luò)報文轉(zhuǎn)化為控制高低電平作為矩陣開關(guān)的開關(guān)控制碼,同時把開關(guān)狀態(tài)存儲在E2PROM。
流程如圖5 所示。
軟件編寫按照圖5 的操作流程,上電后首先對STM32 進(jìn)行初始化,包含配置系統(tǒng)時鐘,中斷,外設(shè)設(shè)置,SPI 口配置等,然后通過SPI 口對W5100 進(jìn)行初始化配置,設(shè)置好W5100 的工作模式、IP 地址、端口號等,然后讀出E2PROM 的矩陣開關(guān)的開關(guān)狀態(tài),并通過驅(qū)動芯片下發(fā)給矩陣開關(guān)。然后網(wǎng)口等待端口中斷接收計算機(jī)下發(fā)的UDP 報文,UDP 協(xié)議為使用端口號為不同的應(yīng)用保留其各自的數(shù)據(jù)傳輸通道。數(shù)據(jù)發(fā)送一方(可以是客戶端或服務(wù)器端)將UDP 數(shù)據(jù)包通過源端口發(fā)送出去,而數(shù)據(jù)接收一方則通過目標(biāo)端口接收數(shù)據(jù)。有的網(wǎng)絡(luò)應(yīng)用只能使用預(yù)先為其預(yù)留或注冊的靜態(tài)端口;而另外一些網(wǎng)絡(luò)應(yīng)用則可以使用未被注冊的動態(tài)端口。因?yàn)閁DP 報頭使用兩個字節(jié)存放端口號,所以端口號的有效范圍是從0 到65535。一般來說,大于49151 的端口號都代表動態(tài)端口。當(dāng)STM32 收到W5100 的端口中斷后,把收到的報文解析后通過驅(qū)動芯片給矩陣開關(guān)提供控制碼,同時把控制碼存儲到AT24C32 中供下次斷電后開機(jī)使用。
軟件編寫操作環(huán)境為Keil V4.10,采用C 語言編寫程序。該程序編寫盡量使用模塊化編程,模塊化編程是指將一個龐大的程序劃分為若干個功能獨(dú)立的模塊,對各個模塊進(jìn)行獨(dú)立開發(fā),然后再將這些模塊統(tǒng)一合并為一個完整的程序。主程序就是模塊合并的過程,主體程序調(diào)用模塊的函數(shù)是通過包含模塊的頭文件來實(shí)現(xiàn),模塊的頭文件和源文件是模塊密不可分的兩個部分,缺一不可。軟件調(diào)試界面如圖6 所示。
經(jīng)過調(diào)試驗(yàn)證,該電路能達(dá)到矩陣開關(guān)的設(shè)計要求,且該電路穩(wěn)定可靠、功耗低,能夠穩(wěn)定的實(shí)現(xiàn)對該矩陣開關(guān)的控制。
本文以STM32 作為核心控制器設(shè)計了一種矩陣開關(guān)的控制電路,并進(jìn)行了軟硬件設(shè)計。該電路通過網(wǎng)絡(luò)接口與計算機(jī)顯控軟件進(jìn)行通信,接收計算機(jī)顯控軟件發(fā)送的命令,在STM32 中對命令進(jìn)行解析,然后通過電平驅(qū)動芯片發(fā)送給開關(guān)矩陣作為其控制碼,同時把控制碼存儲在E2PROM 中,給下次開機(jī)初始化使用。該設(shè)計經(jīng)過驗(yàn)證,是一種有效的矩陣開關(guān)控制電路,同時改電路也可應(yīng)用在軍用和民用等眾多領(lǐng)域,具有應(yīng)用價值。

圖4:STM32F103 原理圖

圖5:軟件流程圖

圖6:Keil 軟件調(diào)試界面