精华内容
下载资源
问答
  • 串口波特率115200

    2021-03-15 16:04:40
    串口波特率115200 注意一点,在不使用小数寄存器的情况下,115200的波特率,串口的外设时钟最好在100M,否则串口的波特率的误差比较大,容易造成通讯失败。

    串口波特率115200

    注意一点,在不使用小数寄存器的情况下,115200的波特率,串口的外设时钟最好在100M,否则串口的波特率的误差比较大,容易造成通讯失败。

    展开全文
  • 可是在许多情况下,两种不同格式比如不同波特率的串口也要相互通信,这就必须进行串口波特率等格式的转换。本文介绍了如何实现串口波特率的转换。如果串口设备1与串口设备2之间需要通信,但是它们之间的通信波特率不...

    串口通信,就是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的波特率设置

    J2

    J1

    J0

    波特率

    K2

    K1

    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

    0

    19200

    1

    0

    0

    19200

    1

    0

    1

    38400

    1

    0

    1

    38400

    1

    1

    0

    57600

    1

    1

    0

    57600

    1

    1

    1

    115200

    1

    1

    1

    115200

    波特率转换器的内部有一个带双串口的单片机。单片机自动完成两个串口之间的数据交换。单片机程序用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<<1)|J1;

    Uart1Set=(Uart1Set<<1)|J0; //读取端口值

    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;

    }

    本文介绍的串口波特率转换的硬件方法和单片机代码,对不同波特率之间的串口通信具有一定的使用价值。波特率转换器的优点在于使用简单方便,不足之处在于只能够转换波特率而没有对数据位、停止位、校验位进行转换,而且对于不常见的波特率的转换还需要定做。如果要实现功能全面的波特率等各种格式的全面转换,还是要用计算机加上专门的波特率转换软件,通过对计算机的两个串口进行波特率等格式的设置,而两个串口在计算机内部进行数据透明传输。我们已经以另外文章《串口波特率转换的纯软件实现》予以了介绍。

    展开全文
  • 串口波特率等概念

    万次阅读 多人点赞 2017-03-31 09:41:44
    篇一 : 串口波特率等概念 1:比特率:9600bps 就是每秒中传输9600bit,也就是相当于每一秒中划分成了9600等份。 如此,那么每1bit的时间就是1/9600秒=104.16666666666666666666666666667us。约0.1ms。既然...

    篇一 : 串口波特率等概念

    1:比特率:9600bps

    就是每秒中传输9600bit,也就是相当于每一秒中划分成了9600等份。

    如此,那么每1bit的时间就是1/9600秒=104.16666666666666666666666666667us。约0.1ms。既然是9600等份,即每1bit紧接着下一个比特,不存在额外的间隔。也不管是啥起始bit,数据bit,奇偶bit,停止bit。

    2:帧格式,帧间隔。

    在电脑里,也就是超级终端等的端口设置。电脑的默认端口设置,也就是默认帧格式是:8个数据bit,1个停止bit,(起始1bit是必须的)默认无奇偶,无流控。

    则实际就是10bit为1帧。一秒中可以发送9600/10=960个帧,也就是960字符,因为一帧里只有1个字符,1字符就是帧里面的8个数据bit

    3:串口通讯

    串口当然可以连续,没有时间间隔地发送帧,默认情形下电脑在9600bps下可以发送960帧。

    但在实际工作中,在异步通讯下,一般需要一个交互过程,所以,电脑发送一个帧,或者若干帧,还需要等待从设备的应答,并不是一直发送的。有问有答地实现编程者的目标。

    4:波特率时钟

    实际上是比特率时钟,每1bit所要花费的时间周期。而波特率(实际是比特率)发生器生成的分频时钟实际是对每1bit进行采样的时钟,它是波特率时钟的16倍。

     波特率发生器实质是设计一个分频器,用于产生和RS232通信同步的时钟。在系统中用一个计数器来完成这个功能,分频系数N决定了波特率的数值。该计数器一般工作在一个频率较高的系统时钟下,当计数到N/2时将输出置为高电平,再计数到N/2的数值后将输出置为低电平,如此反复即可得到占空比50%的波特率时钟,具体的波特率依赖于所使用的系统时钟频率和N的大小。如系统时钟频率是40MHz,要求波特率是9 600[MS1],则16倍波特率时钟的周期约等于260个系统时钟周期,则计数器取260/2=130时,当计数溢出时输出电平取反就可以得到16倍约定波特率的时钟。

    (liupeng)

    也可以这么理解:40mhz晶振,最小计数脉冲是25ns,16倍波特率的频率就是16*9600,其时钟周期就是1/(16*9600)=6.5us也就是以40mhz晶振作为输入的话,计数器需要计数=6500/25=260 个计数。

    9600波特率也可理解为一种波特时钟频率,即1秒钟计数9600个,如果是16倍波特率时钟,即直接相乘就可以了。就是1秒计数9600*16=153600。

    1/(9600*16)除以(1/40000000)也就是以时钟周期除了最小时钟周期得到的就是计数的个数。简化而言就是40000000/(9600*16)=260,也就是频率直接相除就得到要分频计数器计数的个数。


    [MS1]

    40000000/(9600*16)=260.4

    串口通信必须要设定波特率,本设计采用的波特率为9 600bit/s。产生波特率的时钟频率是越高越好,这样才可产生较高且精确的波特率。设计选用50M主频率要产生9600bit/s波特率,每传送一位数据需要5208.33个时钟周期。取一个最接近的数是5 208,则波特率为9600.61,其误差约为0.006%,误码率很低可以确保通信正常。

    ( liupeng 50000000/5208=9600.61)

    5: 误差允许范围

    6:分频系数

    计数器很容易实现分频。可用lpm-counter实现。

    比如分频系数是2,那么,直接用q0作为输出即可。如果分频系数是4,那么q0,q1作为有效比特。

    总而言之,要n整数分频,即计数n后清零重计数。至于50%占空比则另外考虑。奇数分频似不易实现50%占空比。

    篇二 : 串口波特速率 如何识别你?

         UART串口,作为单片机最常用的通讯接口已经深入每一个嵌入式工程师的脑海。[www.t262.com)UART串口有着简单、实用的特性,嵌入式工程师常常用来将其作为调试系统的重要工具。UART串口的配置参数有很多,但是最常用,且需要修改的参数只有通讯波特速率这一个。可是这仅有的一个参数又常常给我们带来许多困扰。那么,我们对于串口波特速率该如何识别呢?笔者在这里介绍三种识别串口速率的方法,供大家参考。

        UART(Universal Asynchronous serial Receiver and Transmitter)异步串行接收/发送接口,是嵌入式系统里最为重要的接口之一,它不仅用于板级芯片之间的通讯,而且应用于实现系统之间的通信和系统调度中。UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输,其字符数据帧格式如下图所示:

    波特率 串口波特速率 如何识别你?

        图1 UART字符数据帧格式

        从上面图中的帧格式可以看出,UART数据帧由1个开始同步位,1个数据字,1个结束停止位,以及可选的校验位组成。由于UART为异步通讯,因此,其按位发送时必须严格遵守设定的波特率,而接收方也必须在相同的波特率下才能正确解析发送的字符数据。于是,接收方正确识别、配置波特率就相当关键了。下面笔者根据实际经验介绍三种识别串口波特率的方法:

        穷举法

        理论上,发送波特率可以设定为任意的值,但是平时我们使用的串口速率只有这么几种数值,如图2所示:

    波特率 串口波特速率 如何识别你?

        图2 常用串口波特速率

        既然知道了常用串口速率,于是我们就可以一个一个试,总会有一个是成功。当然前提是我们知道主机发送的内容是什么,否则如何才能知道串口速率正确匹配呢!这里必须注意,在设定波特率与实际波特率成倍数的情况下,是可以读出来数据——当然,数据是错误的。

        示波器法

        示波器被秒为电子工程师的“眼睛”,我们可以就用这双眼睛来“看”出串口发送数据的波特率。这里我们先排除掉高端的带有数字逻辑分析功能的示波器,因为,这样的示波器已经远超笔者的IQ了,不是我们本篇讨论的内容。

        上一部分,我们讲述了波形的帧格式,这里我们就利用波形,发送一个特殊的字符0x55(1010 1010B)。从理论上面分析,这个波形应该会产生一个按位翻转的波形效果。图3是笔者使用示波器采集下来的截图:

    波特率 串口波特速率 如何识别你?

        图3 9600bps发送0x55波形图

        看到图3所示的波形图,再加上理论分析,我们知道波形是按位翻转,于是我们使用示波器的指针功能(cursor)来直接查看波特率。如图3左上角的测量结果显示,每位翻转的频率为9.615KHz,与我们设定的频率9600kbps基本相符,可以确定此发送频率为9600bps。

        芯片自识别法

        UART串口常常用来做为固件升级使用的接口,因此,其波特率要根据上位机的实际情况而定。如果环境较差时,就需要使用低波特率的通讯。这时,自动波特率识别的方法就诞生了。下面我们以TI Stellaris里bootloader里的串口波特率自动识别源程序为例进行分析:

        int UARTAutoBaud(unsigned long *pulRatio){

        long lPulse, lValidPulses,LTEmp, lTotal;

        volatile long lDelay;

        // 配置systICk,将其值设定为最大值;

        HWREG(NVIC_ST_RELOAD) = 0xffffffff;

        HWREG(NVIC_ST_CTRL) = NVIC_ST_CTRL_CLK_SRC| NVIC_ST_CTRL_ENABLE;

        // 打开引脚的边沿触发中断

        HWREG(GPIO_PORTA_BASE + GPIO_O_IBE) = UART_RX;

        // 使能UART RXD引脚边沿触发中断

        HWREG(NVIC_EN0) = 1;

        // 采集引脚边沿中断,两个字节的边沿

        while(g_ulTickIndex < MIN_EDGE_COUNT)

        {

        }

        // 计算systick采样下来的值,对溢出进行处理

        for(lPulse = 0; lPulse < (MIN_EDGE_COUNT - 1); lPulse++){

        lTemp = (((long)g_pulDataBuffer[lPulse] -

        (long)g_pulDataBuffer[lPulse + 1]) & 0x00ffffff);

        g_pulDataBuffer[lPulse] = lTemp;

        }

        // 此循环计算两个连续脉冲之间的宽度

        for(lPulse = 0; lPulse < (MIN_EDGE_COUNT - 1); lPulse++){

        // 精确计算两个连续脉冲之间的宽度

        lTemp = (long)g_pulDataBuffer[lPulse];

        lTemp -= (long)g_pulDataBuffer[lPulse + 1];

        if(lTemp < 0) {

        lTemp *= -1;

        }

        // 验证两个边沿的脉宽是否正确,其算法如下:

        // abs(Pulse[n] - Pulse[n + 1]) < Pulse[n + 1] / PULSE_DETECTION_MULT

        // 或者

        // PULSE_DETECTION_MULT * abs(Pulse[n] - Pulse[n + 1]) < Pulse[n + 1]

        if((lTemp * PULSE_DETECTION_MULT) < (long)g_pulDataBuffer[lPulse + 1]) {

        lTotal += (long)g_pulDataBuffer[lPulse];

        lValidPulses++;

        }

        else{

        lValidPulses = 0;

        lTotal = 0;

        }

        // 7个有效脉冲,就可以计算UART串口速率

        if(lValidPulses == 7) {

        // 将最后一个脉冲加入计数器,并计算波特率

        lTotal += (long)g_pulDataBuffer[lPulse];

        *pulRatio = lTotal >> 1;

        // 返回成功标识

        return(0);

        }

        }

        // 检测失败

        return(-1);

        }

        UART串口有着这样或者那样的优点,但新兴的USB接口的USB DFU功能可以更加有效替代串口来完成固件升级;性能优越的CAN总线,其硬件价格不断下降,而且CAN总线的MAC接口更多集成在最新MCU芯片上;CAN2.0B接口正在挤压着UART接口器件的市场;对于我们普通民众,现在新型号电脑已经没有DB9串口座。在残酷的现实下,多年后也许只有我们电子工程师才会记得曾经的简单、实用的UART串口。

    展开全文
  • 4.10 如何添加其他的串口波特率? 答:添加路径内核源代码/driver/tty/serial/serial_core.c。 参考如下: ……… static const struct baud_rates baud_rates[] = { { 921600, B921600 }, { 460800, B460800 }, ...

    4.10 如何添加其他的串口波特率?
    答:添加路径内核源代码/driver/tty/serial/serial_core.c。
    参考如下:
    ………
    static const struct baud_rates baud_rates[] = {
        { 921600, B921600 },
        { 460800, B460800 },
        { 230400, B230400 },
        { 115200, B115200 },
        {  57600, B57600  },
        {  38400, B38400  },
        {  19200, B19200  },
        {   9600, B9600   },
        {   4800, B4800   },
        {   2400, B2400   },
        {   1200, B1200   },
        {      0, B38400  }
    ……………
     

    说明:
    感谢大家的关注。本文转自米尔公众号专题文章,是由米尔电子工程师基于米尔电子 i.MX6UL/i.MX6ULL产品对i.MX6UL/i.MX6ULL开发中常见问题梳理。

     

    展开全文
  • 一、分数波特率的产生 一、接收器和发送器的波特率在USARTDIV的整数和小数寄存器中的值应设置成相同。 = 这里的fck是给外设的时钟(PCLK1用于USART2、 3、 4、 5, PCLK2用于USART1)USARTDIV是一个无符号的定点数。...
  • 描述波特率(Baud Rate) 单位 bps -- 每秒传送的字节数 Byte Per Second.。(BaudRate) 模拟线路信号的速率,也称调制速率,以波形每秒的振荡数来衡量。如果数据不压缩,波特率等于每秒钟传输的数据位数,如果数据进行...
  • 之前,我们把rk3399的安卓源码编译好之后,插上USB转串口模块想进行调试以及查看启动log,发现是乱码,看了wiki后发现串口波特率是1500000,波特率很高,我用的是MobaXterm这个软件,发现没有1500000这个波特率选项...
  • 关于自动识别UART串口波特率的这个问题,相信有项目经验,或者认真研究过串口的朋友都应该多多少少知道一点自动识别的方法。 可能绝大部分知道的就是通过波特率一一匹配来实现,这种方法也是最常见,而且还比较有效...
  • 串口通信波特率

    2021-05-25 08:42:42
    波特率的定义 波特率表示每秒钟传送的码元(符号)的个数,单位是波特(Baud,symbol/s)。 与比特率的关系 通过不同的调制方式,可以...串口模式下,若波特率是9600,1秒种只能传送9600/10=960Byte数据,而不是9600/8=12.
  • STM32串口自动识别波特率

    千次阅读 2019-01-21 18:00:12
    置顶/星标公众号,不错过每一条消息! 最近有朋友问关于UART串口自动识别波特率的问题,今天就在这里写点相关内容。1写在前面关于自动识别UART串口波特率的这个问题...
  • 串口常见波特率有4800、9600、115 200等,此处我们选用9600的波特率进行讲解。 通信信道每秒传输的信息量称为位传输速率,简称“比特率”,其单位为“每秒比特数”(bps)。比特率可由波特率计算得出,公式为 ...
  • 平时使用串口打印出现乱码的绝大部分原因是串口波特率没对。那么我们怎么测量实际的波特率呢?在这之前,顺便一起回顾一下波特率的概念。什么是波特率、比特率?比特率(Bitrate) 表示每秒钟传输的 二进制 位数,单位...
  • 波特率串口调试助手,支持多种波特率,很好用!
  • 波特率(Baud Rate) 单位 bps -- 每秒传送的字节数 Byte Per Second.。(BaudRate) 模拟线路信号的速率,也称调制速率,以波形每秒的振荡数来衡量。如果数据不压缩,波特率等于每秒钟传输的数据位数,如果数据进行了...
  • 串口助手,波特率可以设置1M

    热门讨论 2012-06-19 18:06:23
    可任意设置波特率,可设置1M波特率,并且可以自动设置串口号
  • Win7+Qt5.6的高波特率串口编程

    千次阅读 2018-07-09 20:20:09
    1 概述基于工作需要,要实现高波特率串口,所以之前使用MFC编程的时候,是利用的Moxa公司的pcomm库。现在转到Qt来编程,就特别希望使用Qt自身的类和访问系统的方式来实现高波特率串口访问。毕竟,第三方库也是...
  • 串口调试工具,通过串口进行数据接收和发送,可切换ASCII和十六进制
  • 使用说明波特率就是一秒种传输0或1的个数,若波特率是9600那么它传输一位0或1的时间就是1/9600秒如果串口工作在方式一下波特率是9600晶振是11059200定时器选用TImer1的自动重装模式即1/9600=定时时间就是1/9600=(12*...
  • 常见串口术语区分

    2019-10-03 20:20:52
    COM口( cluster communication port )即串行通讯端口,简称串口,包括UART(TTL电平)、RS232、RS422、RS485等。 UART口(Universal Asynchronous Receiver/Transmitter)即通用异步收发器,是设备间进行异步通信的...
  • 波特率

    千次阅读 2018-05-02 11:33:32
    指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd,比特率为10位*240个/秒=...
  • 串口通讯,9600波特率,数据格式是8,N,1, 请问一秒可以传输多少个字节的数据? 9600,n,8,1 实际上,在发送一个字节的时候,除了需要发送8BIT数据外,还需要发送1bit开始位、1bit停止位、1bit的校验,加起来发送一个...
  • #ifndef __UART_H__ #define __UART_H__ #include <reg52.h> sfr IPH_ =0xB7;//中断优先级高位寄存器 sfr SADEN_ =0xB9;//从机地址掩码寄存器 sfr SADDR_ =0xA9;...//串口初始化装载,使用定时器1产.
  • baud rate - 波特率

    千次阅读 2016-11-29 00:12:57
    中文 :波特率、码元速率、调制速率 介绍 :单片机或计算机在串口通信时的速率。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个...
  • 然后想继续提高传输速率,就脑残+手残的设置了串口波特率为1382400(官方文档提供的) 不知道HC当时是怎么想的,也不知道他们是怎么测试的,可能他们测试最大支持的波特率就是1382400 可是1382400是个很不常见...
  • UART 波特率的认识与理解
  • 51单片机串行口波特率计算

    千次阅读 2019-06-19 21:48:58
    在这种方式下,数据从 RXD 端串行输出或输入,同步信号从 TXD 端输出,波特率固定不变,为振荡率的 1/12 。该方式是以 8 位数据为一帧,没有起始位和停止位,先发送或接收最低位。 常用于串行口外接移位寄存器,以...
  • 通俗易懂讲解什么是波特率

    千次阅读 2021-03-08 14:34:40
    接触过物联网的都应该常听到过这次词-波特率。对于工程师来说,这次肯定是很熟知的,但是对于刚开始了解物联网的同学来说,就比较陌生了。下面就来为你揭开迷雾,讲讲什么是...一般常见波特率是9600或者115200(低端
  • NXP JN5169 UART 波特率设置一、系统时钟介绍1、高速(32MHz)系统时钟1、32MHz 晶体振荡器2、高速RC振荡器2、低速(32kHz)系统时钟1、32 kHz RC 振荡器2、32 kHz 晶体振荡器3、32 kHz 外部时钟二、UART 时钟三、串口...
  • 波特率简介

    2016-05-28 19:16:00
    指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd,比特率为10位*240个/秒=2400...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,488
精华内容 2,195
关键字:

常见串口波特率