通用异步串口扩展芯片GM8123/25的原理和应用
GM8125引脚说明:
RST:复位引脚,低电平有效。复位后默认子串口工作波特率为1200bps,数据长度为11位(带校验位);
MS:模式选择引脚,控制芯片工作在多通道模式下还是单通道模式下。多通道模式下兼做读/写命令字选择引脚;
SRADD0~2:接收子串口地址线;
STADD0~2:发送子串口地址线;
RXD0、TXD0:母串口收/发引脚;
RXD1~5、TXD1~5:子串口1~5收/发引脚;
下面给出主机发送和接收的控制程序,以C51为例:
#include <reg51.h>
sbit MS=P3^6; //GM8125工作模式控制
sbit RESET=P3^7; &
nbsp; //GM8125复位引脚控制
unsigned char SendBuff[5]={0xaa,0x45,0x67,0xbc,0xc9};
unsigned char ReceiveBuff0;
。。。。。。
unsigned char Contr_data;
unsigned char ADD;
unsigned char i=0;
。。。。。。
void main(void)
{
TMOD = 0x20; //指定定时器1工作在方式2
IE = 0x90; //开串行口中断
SCON=0xc0; //串行口工作在方式3
TH1 = 0xf8; //装入定时器1初值,设置主机工作波特率为7200bps
TL1 = 0xf8;
PCON=0x00;
。。。。。。
RESET=0; //对GM8125进行复位操作
Delay(); //延时子程序
RESET=1;
Delay();
Contr_data=0xfc; //装入命令字初值
TR1=1; //启动定时器1
MS=0; //GM8125工作在写命令字模式下
P0=0x00; //置GM8125命令字地址
SBUF=Contr_data; //设置GM8125子串口波特率为19200bps,母串口波特率为115200bps
while(TI==0);
TI=0;
Delay();
(可读取命令字的内容验证写入结果是否正确)
TR1=0; //定时器1停止
TH1 = 0xff; //装入定时器1初值,设置主控MCU工作波特率为115200bps
TL1 = 0xff;
PCON=0x80;
TR1=1; //启动定时器1
/*主控MCU发送/接收程序*/
ADD=0x1f; //子通道1发送地址
P1=ADD; //选择GM8125子通道1发送
SBUF=SendBuff[i];
while(TI==0);
TI=0;
i++;
(以此方式分别向5个子串口发送数据)
《通用异步串口扩展芯片GM8123/25的原理和应用(第2页)》