I/O扩展电路GM8166在嵌入式锅炉系统中的应用
锅炉控制系统是一个典型的大惯性、大滞后、多变量的过程控制系统,涉及到压力、温度、水位等多个物理参数的检测与控制,需要同时控制循环泵、补水泵、加热装置、自动排除故障等。该系统有32路数字输入信号、32路数字输出信号、11路模拟量输入信号和8路模拟量输出信号,因此所需要的硬件电路多,控制复杂,笔者以atmel公司的at91rm9200为处理器设计出了一款具有32位高速数据处理能力,处理速度可达200mi/s,并配有lcd、触摸屏、sd卡、cpld、音频、网络、usb及串行接口等多项功能的嵌入式工业锅炉控制系统。
本文引用地址:https://www.eepw.com.cn/article/21230.htm在系统设计过程中,遇到了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口的扩展,最高工作频率为10mhz,用于配合mcu完成对多个外围电路的控制和信号采集工作。同时可接入spi总线,满足了更多需求,设计时充分考虑了工作温度范围要求和抗电磁干扰能力,完全适用于工业领域。
cm8166的主要特性如下:
提供32位并行数据i/o口,可通过模式选择实现8位、16位、24位、32位的数据转换,也可通过普通i/o口模拟串口实现0-32任意位数据转换;
既可实现串并/并串转换,又可实现并行口切换输入/输出功能;
所有i/o口均内接上拉电阻;
锁存输出,有输出锁存控制端;
有级联输入/输出端,方便实现级联;
具备spi总线接口,可方便地接入spi总线;
与ttl兼容;
工作电压为2.7v-6.5v;
最大输出电流为10ma,最高工作频率为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=0:允许并行输入置数,oc/en=1:串行移位,禁止并行输入。
le:并行输出数据锁存信号,le=0表示并行输出数据锁存;le=1表示并行输出数据不锁存。
sel:接入spi总线控制信号,接入spi总线时,sel引脚固定接地,不需要接入spi总线时,sel引脚接固定电源。
modsel:并串/串并转换模式和并行口转换模式选择信号,modsel=0;选择并串/串并转换模式;modsel=1;选择并行口切换模式。
sp/mux:并串和串并转换选择信号,sp/mux=0;选择并行输入串行输出模式,sp/mux=1:选择串行输出并行输出模式,并行口切换模式下兼做1路输入3路输出和3路输入1路输出选择信号,sp/mux=0:选择1路输出3路输出模式;sp/mux=1:选择3路输入1路输出模式。
m0、m1:工作方式控制信号,m0m1为00时为8位数据传输模式,01时为16位数据传输模式,10时为24位传输模式,11时为32位数据传输模式。
pdata:32位输入/输出数据口。
sdata:(mosi):串行数据输入/输出口;spi总线工作模式下做为mosi口。
cdata:输入/输出级联数据口,并行输入串行输出模式下为输入口,串行输入并行输出模式下为输出口。
4 gm8166在嵌入式锅炉中的应用
4.1 硬件电路设计
gm8166共有三大功能,满足三种不同应用。串并/并串转换功能为并行口比较紧张的系统通过串口扩展32位并行口;并行口切换功能可以将1组8位并行口扩展成3组8位并行口,通过控制信号在3组并口中切换完成输入/输出功能;spi总线功能使该器件可以接入spi总线中作为从设备进行数据收/发,同样完成串并转换的功能,这里笔者采用两个gm8166器件分别实现32数据并行输入串行输出转换和32数据的串行输入并行输出转换,扩展为64位i/o口,从而实现对锅炉控制系统数字量输入输出信号的控制与传输,gm8166与at91rm9200的硬件原理图如图2。

如图2所示,at91rm9200的pa口与gm8166连接。gm8166-1设为32位数据串行输入并行输出模式:at91rm9200通过pa0口连续发送32位数据到gm8166-1,在该模式下,当reset信号为“1”时,gm8166移位寄存器复位,即所有的寄存器的值都为0;当csn为0,reset为0,同时有时钟输入时,gm8166对移位寄存器进行移位,32个时钟信号后,32位数据全部输出到寄存器输出口,由le和oc/en控制pdata[31:0]的输出状态,从而实现对锅炉的控制。
gm8166-2设为32数据并行输入串行输出模式:at91rm9200通过pa12口连续接收32位数据,在该模式下,当reset信号为1时,gm8166移寄存器复位,即所有寄存器的值都为0;当csn为0,reset为0,oc/en信号为0时,同时来一个时钟上升沿,gm8166将输入端口(32位)数据并行保存到寄存器中;当reset为0和oc/en信号为1时,gm8166对移位寄存器进行移位,从而实现对锅炉信号的采集。
4.2 软件设计
本系统软件均采用c语言编写。软件示例如下。
4.2.1 32位数据串行输入并行输出转换


4.2.2 32位数据并行输入串行输出转换


如图2所示,用pa1作为gm8166-1的clk,用pa0作sdata,用pa11作为gm8166-2的clk,用pa12作sdata,用软件模拟产生串行接口的传输过程,编程时,应注意gm8166的内部移位寄存器都是在 clk的上升沿移位时,所以读入时应在clk的上升沿之后读入sdata的状态,写出时应在clk上升沿之前置sdata相应电平。
5 结束语
嵌入式锅炉控制器中使用了两个gm8166器件,实现了锅炉中22个温度、压力、水位、燃烧机、风机等状态的检测和10个手动按键的输入;32个水泵、变频器、燃烧机、风机的启停以及轻重油选择、报警等开关量的输出,解决了使用8255等通用并行i/o电路所带来的成本高,功耗大和占用电路板面积大等系统结果设计与安装方面的问题。
评论