通用异步串口扩展芯片GM8123/25的原理和应用
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;
while(TI==0);
TI=0;
i++;
(以此方式分别向5个子串口发送数据)
REN = 1;
(等待接收处理)
}
void CommReceive(void) interrupt 4
{
if(RI)
{
switch(P1&0x07) //判断SRADD0~2的状态确定接收数据来自哪一个子串口
{
case 0:
{ReceiveBuff0=SBUF; //读命令字存入ReceiveBuff0
}
break;
case 1:
{ReceiveBuff1=SBUF; //子通道1接收的数据存入ReceiveBuff1
}
break;
。。。。。。
default:
break;
}
RI = 0;
}
}
该芯片的单通道模式适用于各从机不需要同时工作的系统,具体应用方法在此不做详述,请参考国腾微电子有限公司发布的《GM812X应用手册》。
四.结束语
利用GM8123/25进行串口扩展,有以下优点:
1、 控制简单。该芯片利用软件设置工作方式,最大限度地减少控制线,不需要占用太多主机的系统资源,同时又保证使用的简便性。
2、 应用灵活。该芯片具备两种工作模式、多种工作波特率、10位或11位数据帧长可选,用户可根据自己的系统需求灵活选择。
3、 通用性强。该芯片设计时充分考虑各种用户的需求,保证了芯片的通用性,与标准串口通讯格式完全兼容,同时提供多种可选设置,适用于大多数串口通讯系统。
4、 工作波特率高。该芯片子串口在单通道模式下波特率支持20Mbps,多通道模式下支持38400bps,此波特率完全能满足一般的串口通讯的需求。
5、 性能稳定。硬件实现串口比软件实现串口更能保证串行通讯的稳定性,同时每bit采样16次,保证了数据的正确性。
6、 波特率误差小。输出波特率误差小于0.2%,输入波特率误差要求小于2.8%。
该芯片不足之处在于:不满足超低功耗应用要求;多通道模式下,所有子串口工作波特率只能设置成统一值,不适用于各从机工作波特率不一致、又要求同时工作的系统。