linux串口最高波特率

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux串口最高波特率相关的知识,希望对你有一定的参考价值。

一般最大一一5二00,建议不要尝试更高波特率,我曾经设置一个CDMAmodem波特率为一一5二00以上,好像是二三XXXX,结果再也无法连上,不得不返厂恢复,分析,可能是PC的串口硬件不支持那么高波特率,虽然设备支持。怎么说呢,传统的9针是没有办法的,虽然可设定数值有很多,两台计算机实现的是一一5.二K与工业通讯,通常最大达到一9.二K,工业非数据型,默认9陆00通用型,比较稳定,而且也是一些谐振设备比较推荐的波特率但如果是虚拟串口,则不不受此限制,可以设得更大,比如USB转串口出来的,以及其他接口方式转换在串行输出,但看具体情况而定,USB转出的,最大能达到T一标准,即一.5 参考技术A 调试用的芯片是FT2232H,看手册可以达到12M baud,于是来到内核中看FTDI的驱动。

drivers/usb/serial/ftdi_sio.c中已经写了比较清楚如何设置其他自定义的波特率,主要步骤是

设置波特率为38400
用ioctl设置ASYNC_SPD_CUST标识,以及custom_divisor
custom_divisor是baud_base/目标波特率的值,baud_base的值可以从ioctl获取到,如果熟悉单片机的话,类似于外设从时钟源设置的分频系数

参考代码如下:

/* 获取参数 */
struct serial_struct SerialOrigin, SerialSet;
if((ioctl(Fd, TIOCGSERIAL, &SerialOrigin))<0)
LogD(MOD_TAG, "BAUD: error to get the serial_struct info:%s", strerror(errno));
return -1;

/* 设置标志位,设置系数 */
SerialOrigin.flags = ASYNC_SPD_CUST;
SerialOrigin.custom_divisor = SerialOrigin.baud_base / Baud;
LogD(MOD_TAG, "custom_divisor = %d", SerialOrigin.custom_divisor);
if((ioctl(Fd, TIOCSSERIAL, &SerialOrigin)) < 0)
LogD(MOD_TAG, "Set serial ATTR failed :%s", strerror(errno));
return -1;

/* 读出来看看 */
if(ioctl(Fd, TIOCGSERIAL,&SerialSet) < 0)
LogD(MOD_TAG, "Get serial ATTR failed :%s", strerror(errno));
return -1;
else
LogD(MOD_TAG, "Set serial port success: baud = %d, custom_divisor = %d, baud_base = %d",
Baud, SerialSet.custom_divisor, SerialSet.baud_base);

串口1波特率115200bps,pA9引脚的输出速度设置为多少MHZ

参考技术A 设置串口1波特率为115200MHz。
波特率是系统中单位时间内传输的码元(脉冲)个数。
由于对于串口协议而言,码元是2进制的,所以波特率在数值上和比特率是等价的。当波特率为115200时,本质就是串口每秒传送115200个bit的数据量。

以上是关于linux串口最高波特率的主要内容,如果未能解决你的问题,请参考以下文章

esp32串口波特率最大是多少

STM32 usb虚拟串口 最大速度可以达到多少 波特率可以设置到多少

串口1波特率115200bps,pA9引脚的输出速度设置为多少MHZ

linux 怎么查看串口波特率

串口简单的操作

STM32串口波特率怎么设置?使用库直接设置吗?像51那样寄存器的设置?