基于GM8125的单片机多串口通信电路的设计与实现

2011-07-03 06:38钱震宇肖昌汉
船电技术 2011年11期
关键词:波特率单通道子程序

钱震宇 肖昌汉

(海军工程大学,武汉 430033)

1 引言

随着单片机在工业控制等领域的应用越来越广泛,在很多场合,需要单片机独立的作为下位机对现场的信号进行采集与处理,并与上位机进行通信,这往往会遇到单片机的串口不够用的情况,所以需要对串行口进行扩展。

在这个开发案例中需要完成一个串行口的三收一发的电路,所以一般的双串口单片机不满足要求,需要专门的串口扩展芯片来完成所需的功能,经查阅了相关资料,常用的芯片有GM8125和SP2538等,但是考虑到通信波特率的要求,SP2538的子串口的通信波特率最高只有 9600bps,无法满足所需的要求,所以采用GM8125设计相关电路。

2 GM8125芯片介绍[2]

GM8125 可以将一个全双工的标准串口扩展成 5 个标准串口,并能通过外部引脚控制串口扩展模式:单通道工作模式和多通道工作模式,即可以指定一个子串口和母串口以相同的波特率单一的工作,也可以让所有子串口在母串口波特率基础上分频同时工作。

该芯片工作在多通道模式下时,子串口能主动响应从机发送的数据,并由母串口发送给主机,同时返回子串口地址。该模式使每个从机的发送要求都能被及时地响应,即使所有从机同时有发送要求,数据也不会丢失,基本实现了主控单元和外设通讯的实时性。该芯片母串口和子串口的工作波特率可由软件调节,而不需要修改外部电路和晶振频率。

芯片的主要特征如下:

1) 采用写控制字的方式对芯片进行控制,各子串口波特率可调(统一调节),数据格式10位或11 位可选;

2) 单通道模式下,最高波特率支持

20Mbps;多通道模式下,子串口最高波特率38400bps,子串口数:5 个;

3) 由一个引脚选择芯片的工作方式是单通道工作模式还是多通道工作模式、在单通道工作模式下,芯片工作无需初始化设置,工作串口由地址线控制选择、在多通道工作模式下,各子串口的波特率等于母串口波特率的 6 分频,接收时地址线 SRADD2~0 向 MCU返回接收子通道的地址,MCU接收到母串口送来的数据后就可根据SRADD2~0 状态判断数据是从哪一个子串口送来的;发送时先由MCU 选择子串口再向母串口发送数据;

4) 与标准串口通讯格式兼容,TTL 电平输出,宽工作电压:2.3~6.7V,输出波特率误差小于0.2%,输入波特率误差要求小于2.8%,每bit采样16 次,提高数据正确性,输入地址引脚有50~80 kΩ Pull-Down 电阻,其它输入引脚有50~80 kΩ Pull-Up 电阻(OSCI 除外)。

3 串口扩展电路的硬件实现

硬件部分:由51单片机和GM8125组成的主控模块,RS-422模块,看门狗模块。

1) 主控模块:GM8125的输出地址线STADD0~2由单片机P0.0~P0.2控制,完成对发送子串口的选择控制;输入地址线 SRADD0~2由单片机的P0.4~P0.6控制,检测判别串口数据来源;MS模式引脚选择由P3.6控制,实现单通道和多通道的选择,读写命令字的控制;RST复位引脚和 P3.7相连,单片机上电后对其进行复位操作;单片机的TX和RX分别与GM8125的RX0和TX0相联,完成单片机与GM8125之间的数据传送,在多通道初始化时写命令字,对GM8125的通信方式进行设置。

2) RS-422模块:采用MAX488构成全双工的串口模块,完成串口信号差动发送、接收。

RS-422A是由RS-232C发展而来,定义了一种平衡接口,解决了RS-232C的通信距离短,通信速率不高的缺点。这里用MAX232完成计算机串口和TTL/CMOS电平的转换。MAX488主要是用来完成RS-232C和RS-422A的信号转换,使串口信号差动发送、接收,抑制共模干扰。

3) 看门狗模块:MAX813作为系统的看门狗电路有两个作用:

Ⅰ. 程序异常的监控:当系统程序跑飞,不能正常工作时,对单片机复位。

Ⅱ. 电源电压异常的监控:当电源太低不足以使系统正常工作时,促使系统保存现场的重要数据,单片机低功耗工作;当电源正常后,单片机继续工作。

图1 串口扩展硬件连接示意图

4 软件的设计思路及流程

本系统主要完成的是对下位机发送来RS-422串口数据进行及时的转发,判断串口数据的来源,做出相应的处理。

本系统对每个串口的数据都建立了相应的存储区,下一次的数据都对前一次的数据进行覆盖,当系统检测到某个下位机发来的数据已经完全接收到后,就会依据设定的通信协议发送给上位机。

软件分为:主监控程序,初始化子程序,串口中断接收子程序,发送子程序,现场保护子程序。

主监控程序:对各个标识符进行监控,调用相应的处理和发送程序。

初始化子程序:对单片机寄存器的清零,设置单片机的串口通信速率和方式,对 GM8125写对应的命令字,设置它的串口通信速率和方式,并在程序中做相关的检验,测试初始化是否成功。

串口中断接收子程序:串口的数据采用中断接收的方式,响应的速度较快,有利于通信的实时性要求。

发送子程序:把接收到的某个端口的数据做相应处理后,发送至上位机。

现场保护子程序:当单片机的工作电压太低时,单片机迅速响应中断,把重要数据保存至寄存器区并低功耗工作,系统电压正常后,在恢复现场重新工作。

在单片机的主监控程序和串口中断接收程序中加入喂狗指令,以防系统跑飞,加强系统的抗干扰能力。

程序的流程图如图2。

图2 串口扩展软件流程图

5 实测效果

经过对实际设备的安装调试,板卡能达到要求,通信良好,抗干扰的能力较好,取得满意的效果。此板卡也可应用于其他单片机控制系统中。

[1]杨治洁. 单片机原理与应用. 北京: 北京科海电子出版社, 2009.

[2]GM8125技术手册. 成都国腾微电子有限公司.

[3]郭惠, 解书钢. Pretel 99SE常用功能与应用. 北京: 电子工业出版社, 2008.

猜你喜欢
波特率单通道子程序
UART 波特率检测电路的FPGA 设计算法与实现
基于联合聚类分析的单通道腹部心电信号的胎心率提取
CAN 总线波特率自适应程序设计
波特率自适应的CAN驱动在嵌入式Linux下的实现①
基于感知掩蔽深度神经网络的单通道语音增强方法
基于扩频码周期性的单通道直扩通信半盲分离抗干扰算法
浅谈子程序在数控车编程中的应用
采用6.25mm×6.25mm×1.8mm LGA封装的双通道2.5A、单通道5A超薄微型模块稳压器
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序