串口波特率转换的实现

武汉波仕电子有限公司孙汉华 027-51518044 串口通信,就是RS-232/RS-485通信,要求通信的双方波特率等通信格式一样才可以通信成功。可是在许多情况下,两种不同格式比如不同波特率的串口也要相互通信,这就必须进行串口波特率等格式的转换。本文介绍了如何实现串口波特率的转换。如果串口设备1与串口设备2之间需要通信,但是它们之间的通信波特率不一样。实现串口波特率的转换的原理就是利用波特率转换器的两个串口,称为串口A和串口B,分别设置为不同的波特率。串口A的波特率通过产品的J2、J1、J0来设置,串口B的波特率通过产品的K2、K1、K0来设置,见表格。其中串口A按照串口A设置的波特率接收串口设备1的数据并且立即从串口B按照串口B设置的波特率发送出去,同样串口B以串口B设置波特率收到串口哦设备2的数据立即从串口A以串口A设置的波特率向串口设备1发送出去。
RS-232波特率转换器用于实现不同波特率的RS-232口的通信转换,纯硬件跳线设置,无需任何软件设置。还可以与RS-232/485转换器配合使用,可以实现RS-485的不同波特率之间的通信。串口波特率转换器的外形为DB-9/DB-9转接盒大小,如图的产品左边串口A为DB-9孔的RS-232口,右边串口B为DB-9针的RS-232口,上边为波特率设置的跳线,下面为5V电源接线端子。左边DB-9孔可以直接外插计算机的RS-232口,右边的DB-9针引脚分配同计算机的RS-232口,但是都只有RXD、TXD、GND三根线。波特率转换器的两边的串口可以分别独立设置波特率,见下表。0-断开,1-短路。独有波仕零延时自动收发转换技术,确保适合所有格式的串口软件包括16进制!串口A的波特率设置 串口B的波特率设置J2J1J0 波特率K2K1 K0 波特率 0 0 0 1200 0 0 0 1200 0 0 1 2400 0 0 1 2400 0 1 0 4800 0 1 0 4800 0 1 1 9600 0 1 1 9600 1 0 019200 1 0 019200 1 0 138400 1 0 138400 1 1 057600 1 1 057600 1 1 1115200 1 1 1115200 波特率转换器的内部有一个带双串口的单片机。单片机自动完成两个串口之间的数据交换。单片机程序用C语言编写,核心功能就是先将两个串口UART1和UART2根据跳线设置的状态进行波特率等初始化设置,然后随时将UART1接收的数据立即送到UART2的发送区、以及将UART2接收的数据立即送到UART1的发送区。核心代码如下: //串口1发送字符数组函数 void Uart1_Sendstr(uchar len,uchar stemp[]) { uchar i=0; for(i=0;i