1 引言
鍋爐控制系統是一個典型的大慣性、大滯后、多變量的過程控制系統,涉及到壓力、溫度、水位等多個物理參數的檢測與控制,需要同時控制循環泵、補水泵、加熱裝置、自動排除故障等。該系統有32路數字輸入信號、32路數字輸出信號、ll路模擬量輸入信號和8路模擬量輸出信號,因此所需要的硬件電路多,控制復雜,筆者以Atmel公司的AT91RM9200為處理器設計出了一款具有32位高速數據處理能力,處理速度可達200 MI/s,并配有LCD、觸摸屏、SD卡、CPLD、音頻、網絡、USB及串行接口等多項功能的嵌入式工業鍋爐控制系統。
在系統設計過程中,遇到了I/O口嚴重不足的問題。雖然AT91RM9200具有122個通用I/O口,但嵌入式系統本身的各項功能實現占用了大量的I/O口,剩下用于鍋爐控制的已不多,所以需要進行I/O口擴展。一般采用的解決方案是利用74HC573、74LS164、74LS165、82C55等電路來實現I/O擴展,但使用上述器件存在PCB面積增大、成本高等缺點。這里筆者采用兩個成都國騰微電子有限公司開發的GM8166電路,通過串行輸入并行輸出、并行輸入串行輸出轉換即可完成鍋爐32路數字輸入和32路數字輸出控制的I/O口擴展。
2 GM8166的主要特點
GM8166通過串行輸入并行輸出、并行輸入串行輸出、并入并出轉換完成I/O口的擴展。最高工作頻率為10 MHz,用于配合MCU完成對多個外圍電路的控制和信號采集工作。同時可接入SPI總線,滿足了更多需求。設計時充分考慮了工作溫度范圍要求和抗電磁干擾能力,完全適用于工業領域。
CM8166的主要特性如下:
提供32位并行數據I/O口,可通過模式選擇實現8位、16位、24位、32位的數據轉換,也可通過普通I/O口模擬串口實現0~32任意位數的數據轉換;
既可實現串并/并串轉換,又可實現并行口切換輸入/輸出功能;
所有I/O口均內接上拉電阻;
鎖存輸出,有輸出鎖存控制端;
有級聯輸入/輸出端,方便實現級聯;
具備SPI總線接口,可方便地接入SPI總線;
與TTL兼容;
工作電壓為2.7 V~6.5 V;
最大輸出電流為lO mA,最高工作頻率為10MHz;
工作環境溫度范圍為-40℃~85℃,滿足工業級標準。
3 GM8166的系統結構和引腳功能
3.1 系統結構
GM8166由控制模塊、移位寄存器模塊和I/O口模塊組成。圖1為GM8166的系統結構框圖。
3.2 引腳功能
GM8166采用QFP52和SDIP52兩種封裝形式。
用戶可根據需要進行選擇。GM8166的引腳功能說明如下:
Reset:復位信號,高電平復位。
CLK:時鐘信號,上升沿有效。
CSN:片選信號,低電平有效。
OC/EN:串行輸入并行輸出轉換或并行口切換輸入/輸出時做并行輸出允許控制信號:OC/EN=0:并行輸出允許;OC/EN=1:并行輸出禁止。并入串行輸出模式下作為并行輸入置數和串行移位控制信號:OC/EN=O:允許并行輸入置數;OC/EN=1:串行移位,禁止并行輸入。
IE:并行輸出數據鎖存信號,LE=0表示并行輸出數據鎖存:LE=1表示并行輸出數據不鎖存。
SEL:接入SPI總線控制信號,接入SPI總線時,SEL引腳固定接地,不需要接入SPI總線時,SEL引腳接固定電源。
MODSEL:并串/串并轉換模式和并行口切換模式選擇信號,MODSEL=0:選擇并串/串并轉換模式;
MODSEL=1:選擇并行口切換模式。
SP/MUX:并串和串并轉換選擇信號,SP/MUX=O:選擇并行輸入串行輸出模式;SP/MUX=l:選擇串行輸入并行輸出模式。并行口切換模式下兼作1路輸入3路輸出和3路輸入1路輸出選擇信號,SP/MUX=0:選擇1路輸入3路輸出模式;SP/MUX=1:選擇3路輸入1路輸出模式。
M0、M1:工作方式控制信號,MOMl為00時為8位數據傳輸模式,01時為16位數據傳輸模式,10時為24位傳輸模式,1l時為32位數據傳輸模式。
PDATA:32位輸入/輸出數據口。
SDATA(MOSI):串行數據輸入/輸出口;SPI總線工作模式下做為MOSI口。
CDATA:輸入/輸出級聯數據口,并行輸入串行輸出模式下為輸入口;串行輸入并行輸出模式下為輸出口。
4 GM8166在嵌入式鍋爐中的應用
4.1 硬件電路設計
GM8166共有三大功能,滿足三種不同應用。申并/并串轉換功能為并行口比較緊張的系統通過串口擴展32位并行口;并行口切換功能可以將l組8位并行口擴展成3組8位并行口,通過控制信號在3組并口中切換完成輸入/輸出功能;SPI總線功能使該器件可以接入SPI總線中作為從設備進行數據收/發,同樣完成串并轉換的功能。這里筆者采用兩個GM8166器件分別實現32位數據的并行輸入串行輸出轉換和32位數據的串行輸入并行輸出轉換,擴展為64位I/O口,從而實現對鍋爐控制系統數字量輸入輸出信號的控制與傳輸。GM8166與AT9lRM9200的硬件原理圖如圖2。
如圖2所示AT91RM9200的PA口與GM8166連接。GM8166-l設為32位數據串行輸入并行輸出模式:AT91RM9200通過PA0口連續發送32位數據到GM8166-1。在該模式下,當Reset信號為‘1’時,GM8166移位寄存器復位.即所有的寄存器的值都為‘0’;當CSN為‘O’,Reset為‘0’,同時有時鐘輸入時,GM8166對移位寄存器進行移位,32個時鐘信號后,32位數據全部輸出到寄存器輸出口,由LE和OC/EN控制PDATA[31:0]的輸出狀態,從而實現對鍋爐的控制。
GM8166-2設為32位數據并行輸入串行輸出模式:AT91RM9200通過PAl2口連續接收32位數據。在該模式下,當Reset信號為‘1’時,GM8166移位寄存器復位,即所有寄存器的值都為‘0’;當CSN為‘0’,Reset為‘0’,OC/EN信號為‘O’時,同時來一個時鐘上升沿,GM8166將輸入端口(32位)數據并行保存到移位寄存器中;當Reset為‘O’和OC/EN信號為‘1’時,GM8166對移位寄存器進行移位,從而實現對鍋爐信號的采集。
4.2 軟件設計
本系統軟件均采用C語言編寫。軟件示例如下。
4.2.1 32位數據串行輸入并行輸出轉換

4.2.2 32位數據并行輸入串行輸出轉換

如圖2所示,用PAl作為GM8166-l的CLK,用PA0作SDATA,用PAll作為GM8166-2的CLK,用PAl2作SDATA,用軟件模擬產生串行接口的傳輸過程。編程時,應注意GM8166的內部移位寄存器都是在CLK的上升沿移位的,所以讀入時應在CLK的上升沿之后讀入SDATA的狀態,寫出時應在CLK上升沿之前置SDATA相應電平。
5 結束語
嵌入式鍋爐控制器中使用了兩個GM8166器件,實現了鍋爐中22個溫度、壓力、水位、燃燒機、風機等狀態的檢測和10個手動按鍵的輸入;32個水泵、變頻器、燃燒機、風機的啟停以及輕重油選擇、報警等開關量的輸出,解決了使用8255等通用并行I/O電路所帶來的成本高、功耗大和占用電路板面積大等系統結構設計與安裝方面的問題。