1.求串口波特率转换的实现??
武汉波仕电子有限公司孙汉华 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波特率K2K1K0波特率波特率转换器的内部有一个带双串口的单片机。 单片机自动完成两个串口之间的数据交换。
单片机程序用C语言编写,核心功能就是先将两个串口UART1和UART2根据跳线设置的状态进行波特率等初始化设置,然后随时将UART1接收的数据立即送到UART2的发送区、以及将UART2接收的数据立即送到UART1的发送区。 核心代码如下: //串口1发送字符数组函数 void Uart1_Sendstr(uchar len,uchar stemp[]) { uchar i=0; for(i=0;i { TI=0; SBUF=stemp[i]; while(TI==0); TI=0; } } //串口2发送字符数组函数 void Uart2_Sendstr(uchar len,uchar s[]) { uchar i=0; while(len--) { Uart2_Senddat(s[i]); i ; } } // ★★主函数★★★void main(){ uchar Uart1Set=0,Uart2Set=0; PortInit(); //按键端口初始化 Uart1_Init(); //串口1初始化 Uart2_Init(); //串口2初始化 Uart1Set=J2; Uart1Set=(Uart1Set Uart1Set=(Uart1Set switch(Uart1Set) { case 0x00:TH1=0xFF;TL1=0xFF;break; // 115200 case 0x01:TH1=0xFE;TL1=0xFE;break; // 57600 case 0x02:TH1=0xFD;TL1=0xFD;break; // 38400 case 0x03:TH1=0xFA;TL1=0xFA;break; // 19200 case 0x04:TH1=0xF4;TL1=0xF4;break; // 9600 case 0x05:TH1=0xE8;TL1=0xE8;break; // 4800 case 0x06:TH1=0xD0;TL1=0xD0;break; // 2400 case 0x07:TH1=0xA0;TL1=0xA0;break; // 1200 default:break; }本文介绍的串口波特率转换的硬件方法和单片机代码,对不同波特率之间的串口通信具有一定的使用价值。
波特率转换器的优点在于使用简单方便,不足之处在于只能够转换波特率而没有对数据位、停止位、校验位进行转换,而且对于不常见的波特率的转换还需要定做。如果要实现功能全面的波特率等各种格式的全面转换,还是要用计算机加上专门的波特率转换软件,通过对计算机的两个串口进行波特率等格式的设置,而两个串口在计算机内部进行数据透明传输。
我们已经以另外文章《串口波特率转换的纯软件实现》予以了介绍。
2.如何用串口调试助手来修改串口波特率?
用法如下:**先"我的电脑"\"属性"\"硬件"\"设备管理器"\"端口",看你的电脑有几个COM**在"串口调试助手"中,*选串口号(选上面步骤中显示的COM号,有的电脑多个串口的话,COM号是设好的,你就多试几次,看哪个串口对哪个COM号)*选波特率(一般为9600,如果连外设的话,查看外设的说明书,里面会说)*数据位\停止位一般为8\1,同样要查看外设的说明书*按"打开串口"按钮(一般会有红灯,按钮提示变为"关闭串口"*如果要"十六进制显示"的话,就在其复选框前打勾*一般会在大的框中显示接收的数据
小的框中用来填写发送的数据(同样要"十六进制发送"的话,就在其复选框前打勾,可选"自动发送"--会自动不停地发送数据--或不选,而是自己按"手动发送"按钮)**如果是两台电脑都用调试助手通信的话,"波特率\校验位\数据位\停止位"要设一致**如果是一台电脑两个串口用调试助手通信的话,"串口"就不能选一样的,不然一个打开,另一个就打不开了~~~~~~我想到的就这么多了,哎,今天第一次回答问题,平时都是自己提问~~~~
3.设置串口1波特率
3F8H COM1的寄存器地址 设置为18H ,对应下表可以知道意思是
波特率为4800bps。
3FBH 线路控制寄存器地址,设置成0x80,具体意思看此寄存器具体表示方式。
3F9H中断允许寄存器 设置成00 意思应该是允许中断。
********************************************
我不清楚你上面的寄存器每一位表示的含义,其实寄存器设置就是将16进制的数据转化成二进制,然后看每一位的具体意思,比如上面你说的D7为1就是表示选择除数锁存器。
4.请问串口调试工具中波特率如何设置
1、我想用FPGA实现一个数据包的收发模块,想用RS232串口调试,FPGA产生的数据速率是不是一定要和串口调试工具中波特率的设置匹配?
回答:这个是肯定的。
2、为什么调试工具发送的数据能够接收,但FPGA内部产生的数据接收不到?
调试工具发射的数据能接受,说明你的FPGA接收部分逻辑正确。
FPGA内部产生的数据接收不到:说明你的发射逻辑有问题,你需要认真看串口数据格式协议,比如开始位,校验位,以及波特率相关的时钟,比如里面用到的16倍时钟。。等。网上有现成的关于UART的代码,你可以去找找。或者先做仿真,确保时序对,然后再调试。
希望你早日完成任务。。
转载请注明出处windows之家 » win10设置串口波特率