精华内容
下载资源
问答
  • 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开发中常见问题梳理。

     

    展开全文
  • 关于自动识别UART串口波特率的这个问题,相信有项目经验,或者认真研究过串口朋友都应该多多少少知道一点自动识别方法。 可能绝大部分知道就是通过波特率一一匹配来实现,这种方法也是最常见,而且还比较有效...
    展开全文
  • 1写在前面关于自动识别UART串口波特率的这个问题,相信有项目经验,或者认真研究过串口朋友都应该多多少少知道一点自动识别方法。可能绝大部分知道就是通过波特率一一匹配来实现,这种方法也是最常见,而且还...

    1420ef304dff7a3e7084375ffa48e441.png

    1写在前面

    关于自动识别UART串口波特率的这个问题,相信有项目经验,或者认真研究过串口的朋友都应该多多少少知道一点自动识别的方法。

    可能绝大部分知道的就是通过波特率一一匹配来实现,这种方法也是最常见,而且还比较有效的一种方法。

    上面这种方法就是大家熟知的通过软件来检测波特率的方法,其实,还有一种方法就是通过硬件自身完成波特率来检测。

    针对STM32,在ST官方其实在应用笔记和参考手册文档中都有提到。下面,我结合文档简单讲下硬件自动波特率检测的内容。

    2STM32硬件自动波特率检测

    ABR:Auto Baud Rate,自动波特率检测使接收设备能够接受来自各种以不同速率工作的发送设备的数据,无需事先建立数据速率。

    1.ABR应用地方

    • 事先不知道系统的通信速度。
    • 系统正在使用精确度相对较低的时钟源且该机制允许在不测量时钟偏差的情况下获得正确的波特率。

    2.支持ABR系列

    在STM32中,支持硬件自动波特率检测的只有部门系列才支持,之前出来比较早的系列不支持(如F1 F4),这后面推出来的系列都支持这个功能,包含最新才出来的STM32H7、G0系列都支持。

    e4b1e4f1f3904dd83b601ea0d4ed3d09.png

    当然,对于内置ABR的STM32系列设备而言,并非所有实例化USART接口均支持自动波特率检测。

    412b280a905ce80f5b997f3f57487c06.png

    3.自动波特率检测模式

    ABR是指接收设备通过检查第一个字符(通常是预先选择的标志字符)确定传入数据速率的过程。

    STM32产品上的自动波特率检测功能内置的各种模式基于不同字符模式:

    模式0:以“1”位为开头的任意字符;

    模式1:以10xx模式开头的任何字符;

    模式2:0x7F;

    模式3:0x55;

    ce234c66301058be2387b5250a69e2b0.png

    提示:

    A.在所有ABR模式下,都会在同步数据接收期间多次检测波特率,并将每一次的检测值与上一次的检测值进行比较。

    B.在7位数据长度模式下,不支持0x7F和0x55帧检测ABR模式。

    4.代码配置

    相关代码,官方提供有基于(标准外设库、HAL库的)参考例程,比如F0标准外设库参考代码:

    static void AutoBauRate_StartBitMethod(void)
    { 
      /* USART enable */
      USART_Cmd(EVAL_COM1, ENABLE);
    
      /* Configure the AutoBaudRate method */
      USART_AutoBaudRateConfig(EVAL_COM1, USART_AutoBaudRate_StartBit);
    
      /* Enable AutoBaudRate feature */
      USART_AutoBaudRateCmd(EVAL_COM1, ENABLE);
    
      /* Wait until Receive enable acknowledge flag is set */
      while(USART_GetFlagStatus(EVAL_COM1, USART_FLAG_REACK) == RESET)
      {}  
    
      /* Wait until Transmit enable acknowledge flag is set */  
      while(USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TEACK) == RESET)
      {}  
    
      /* Loop until the end of Autobaudrate phase */
      while(USART_GetFlagStatus(EVAL_COM1, USART_FLAG_ABRF) == RESET)
      {}  
    
      /* If AutoBaudBate error occurred */
      if (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_ABRE) != RESET)
      {
        /* Turn on LED3 */
        STM_EVAL_LEDOn(LED3);
      }
      else
      {
        /* Turn on LED2 */
        STM_EVAL_LEDOn(LED2);
    
        /* Wait until RXNE flag is set */
        while(USART_GetFlagStatus(EVAL_COM1, USART_FLAG_RXNE) == RESET)
        {}
    
        /* Wait until TXE flag is set */    
        while(USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TXE) == RESET)
        {}
    
        /* Send received character */
        USART_SendData(EVAL_COM1, USART_ReceiveData(EVAL_COM1)); 
    
        /* clear the TE bit (if a transmission is on going or a data is in the TDR, it will be sent before
        efectivelly disabling the transmission) */
        USART_DirectionModeCmd(EVAL_COM1, USART_Mode_Tx, DISABLE);
    
        /* Check the Transfer Complete Flag */
        while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)
        {}
      }
    
      /* USART Disable */
      USART_Cmd(EVAL_COM1, DISABLE);
    }

    5.ABR误差计算

    由USART时钟源( fCK)决定通信速率范围(尤其是最大通信速率)。接收器采用不同的用户可配置过采样技术,可区分有效输入数据和噪声,从而用于恢复数据。这可以在最大通信速率与抗噪声/时钟不准确性之间实现平衡。

    可通过编程USARTx_CR1寄存器中的OVER8位来选择过采样方法,可以是波特率时钟的16倍或8倍。

    USART时钟源频率必须与预期通信速率兼容:

    • 16倍过采样时,波特率介于fCK/65535与fCK/16之间。

    • 8倍过采样时,波特率介于fCK/65535与fCK/8之间。

    波特率误差取决于USART时钟源、过采样方法和ABR模式。

    74368d69b949e3363ef02a5ea09549aa.png

    其中:

    • 预期波特率取决于发送设备

    • 实际波特率是USART接收器使用自动波特率检测操作确定的波特率。

    6.误差

    下图来自官方测试数据,基于:fCK = 72 MHz时ABR的误差计算,115200 bits/s预期波特率

    4ec0922f49b7a53c124a0037fd0c6da8.png

    从上图可以看出:ABR模式2和3的精确度高于模式0和1;它们的波特率误差值更低。

    不过,由于预期波特率与实际波特率之间的误差小于1%,因此所有模式的结果均正常。

    物联网开发 - 直播课程 - 创客学院www.makeru.com.cn
    dd58aeeab40217c3d254b496b4ebe008.png
    物联网项目开发 - 智能小车设计 - 创客学院直播室www.makeru.com.cn
    91fcf159b4c354a5c82222cea531a714.png
    展开全文
  • 因此,全双工通信是两个单工通信方式结合,它要求发送设备和接收设备都有独立接收和发送能力异步串口常见连接方式相同端口数据传输不同端口数据传输这里必须保证通讯两端数据共地,此外还需注意不同端口间...

    | 串口是一种全双工通讯方式

    单工
    49eebc1bb8b5c796d9ec385bf5765357.png

    数据传输只支持数据在一个方向上传输

    半双工
    f05ed4d871d2caf2af96705e119fa355.png

    允许数据在两个方向上传输,在同一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信

    全双工
    13fdf0d99ecfd7a09dff6d302593e76f.png

    允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力

    异步串口常见连接方式
    5bbae8feef50e4c5051d4765efec02f6.png

    相同端口数据传输

    867a2b59982861adfc31b652f09be0d8.png

    不同端口数据传输

    这里必须保证通讯两端数据共地,此外还需注意不同端口间的电平转换,如TTL、232.

    | 异步通讯时序图

    这里以8位字长为例,进行数据传输时,接收方首先捕捉数据起始位- -由高电平到低电平的数据跳变,低电平会保持一个数据周期(空闲时,数据线保持高电平)

    a7116492d26a1bde9af1a843f7d69be1.png

    1-8-1

    紧接着起始位的是8位有效数据(低地址数据LSB在前),这里特别注意,若设置了奇偶校验,奇偶校验位会占据一位有效数据即写进数据寄存器数据的MSB位被校验位替换后发送出去,如下表所示:

    d7af574ed59f17863acfe137dd440a53.png

    最后为1位停止位,停止位为有效高电平

    | 奇偶校验

    使能校验功能后,写进数据寄存器的数据的MSB位被校验位替换后发送出去(如果选择偶校验偶数个’1’,如果选择奇校验奇数个’1’)。

    偶校验:校验位使得一帧中的7或8个LSB数据以及校验位中’1’的个数为偶数。
    例如:数据=00110101,有4个’1’,如果选择偶校验,校验位是’0’。 奇校验:此校验位使得一帧中的7或8个LSB数据以及校验位中’1’的个数为奇数。
    例如:数据=00110101,有4个’1’,如果选择奇校验,校验位是’1’。

    | 波特率的产生

    RX/TX 波特率=FCK/(16*USARTDIV )

    这里的FCK为串口模块的输入时钟频率,通常首先确定想得到的波特率,而后通过上述公式,解得USARTDIV ,进而将USARTDIV的小数和整数部分分别填入波特率寄存器(USART_BRR)的整数DIV_Mantissa和小数DIV_Fraction部分中。
    例如: 求得 USARTDIV = 25.62时,就有:DIV_Fraction = 16*0.62 = 9.92 最接近的整数是: 10 = 0x0A DIV_Mantissa = mantissa (25.620) = 25 = 0x19于是, USART_BRR = 0x19A

    | 异步串口通讯的基本配置过程

    1. 使能串口及对应引脚时钟

    2. 配置引脚,根据需要决定是否重映射

    TX输出引脚 -- 传输速率50M_hz,复用推挽输出

    RX输入引脚 -- 浮空输入

    3.串口参数初始化

    设置字长、停止位个数、是否开启校验位及选择校验方式(CR1、CR2寄存器),波特率设置

    4. 配置中断优先级

    抢占优先级、子优先级,使能中断通道

    5. 根据需要,开启串口部分中断(CR1)

    6. 使能串口(CR1)

    stm32串口有独立的收发能力,可根据需要单独开启/关闭接收、发送单元

    展开全文
  • 串口常见的波特率有4800、9600、115 200等,此处我们选用9600的波特率进行讲解。 通信信道每秒传输的信息量称为位传输速率,简称“比特率”,其单位为“每秒比特数”(bps)。比特率可由波特率计算得出,公式为 ...
  • 1写在前面关于自动识别UART串口波特率的这个问题,相信有项目经验,或者认真研究过串口朋友都应该多多少少知道一点自动识别方法。可能绝大部分知道就是通过波特率一一匹配来实现,这种方法也是最常见,而且还...
  • 1.什么是串口触摸屏触摸屏是工业控制上很常见的人机交互部件,很多设备、系统都在使用它,它至少有两个功能:显示,触摸控制。串口触摸屏是采用串行数据通信协议进行数据交换的触摸屏,具有简单、可靠、易于操作的...
  • 下面先讲一讲串口通信一些基本概念,术语。如果对串口通信比较熟悉,就当复习复习,如果哪里讲错或不到位,也可以及时指出,当作一块交流交流。这里并不对串口的编程作讲解,主要是从应用角度去讲一讲。因为更...
  • 下面先讲一讲串口通信一些基本概念,术语。如果对串口通信比较熟悉,就当复习复习,如果哪里讲错或不到位,也可以及时指出,当作一块交流交流。这里并不对串口的编程作讲解,主要是从应用角度去讲一讲。因为更...
  • 不少参加工作,甚至工作两三年工程师,都没有搞明白波特率、比特率、通信速度这些概念。今天结合一些串口、I2C等常见通信接口给大家讲讲通信领域这些概念以及区别。2概念比特率:是指每秒传送比特(bit)数。...
  • 下面先讲一讲串口通信一些基本概念,术语。如果对串口通信比较熟悉,就当复习复习,如果哪里讲错或不到位,也可以及时指出,当作一块交流交流。这里并不对串口的编程作讲解,主要是从应用角度去讲一讲。因为更...
  • 在学习嵌入式开发过程中,对于一个常见的名词-波特率,总是不能领会到他的作用与意义,今天又刚好准备用C#编写一个串口通信小助手,所以对波特率来做一个详细的了解,更加深入的领会到串口通信与嵌入式开发。...
  • 首先我们讲讲串口通信一些基本概念,术语。如果有对串口通信比较熟悉朋友,咱就当复习,如果小编哪里讲不到位,欢迎大家及时指出~提醒!今天我们不对串口的编程作讲解,主要是从应用角度讲一讲。因为更多...
  • 下面先讲串口通信一些基本概念,术语。如果对串口通信比较熟悉,就当复习,如果哪里讲不到位,欢迎及时指出。这里并不对串口的编程作讲解,主要是从应用角度去讲一讲。因为更多时候,都是产品做好了,比如...
  • 下面先讲串口通信一些基本概念,术语。如果对串口通信比较熟悉,就当复习,如果哪里讲不到位,欢迎及时指出。这里并不对串口的编程作讲解,主要是从应用角度去讲一讲。因为更多时候,都是产品做好了,比如...
  • 今天结合一些串口、I2C等常见通信接口给大家讲讲通信领域这些概念以及区别。 2、概念 比特率:是指每秒传送比特(bit)数。单位为 bps(Bit Per Second),比特率越高,每秒传送数据就越多。 波特率:表示每...
  • UART简介 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter...UART通信在工作中相当常见,项目中需要生成uart信号,在博客中记录下。uart是异步通信,因为它只有一根线就可以数据通信。不像SPI,...
  • 接触过物联网的都应该常听到过这次词-波特率。对于工程师来说,这次肯定是很熟知的,但是对于刚开始了解物联网的同学来说,就比较陌生了。下面就来为你揭开迷雾,讲讲什么是...一般常见的波特率是9600或者115200(低端
  • 蓝牙模块是电子开发经常使用模块,通常使用串口协议方式与蓝牙通信, 从而完成数据传输,串口通信很常见,用起来也很简单,几乎所有单片机都配有串口通信功能。 蓝牙模块用于小数据量无线传输,使用很...
  • 转自:https://blog.csdn.net/gq1900/article/details/51885259UART简介...UART通信在工作中相当常见,项目中需要生成uart信号,在博客中记录下。uart是异步通信,因为它只有一根线就可以数据通信。不像SPI,I2C等...
  • 转自:https://blog.csdn.net/gq1900/article/details/51885259UART简介...UART通信在工作中相当常见,项目中需要生成uart信号,在博客中记录下。uart是异步通信,因为它只有一根线就可以数据通信。不像SPI,I2C等...
  • 蓝牙模块是电子开发经常使用模块,通常使用... 但是由于需要统一传输格式,诸如波特率、 校验位等不同,所以蓝牙经常需要修改自身设定传输数据格式。 要用到软件(蓝牙测试程序)下载链接:https://pan.baid
  • 在信息传输通道中,携带数据信息信号单元叫码元,每秒钟通过信道传输码元数称为码元传输速率,简称波特率。比如I2C通信速度100KHz,SPI最大通信速度支持150Mbps。1 Baud = log2M 其中M是信号编码级数。这里...
  • 目前大多数MCU、串口通信IC等芯片或模块均支持UART通信,随着CPLD/FPGA应用得越来越广泛,用CPLD/FPGA来设计UART等接口已是数字电路设计的常见应用之一。 由于UART是异步传输,没有传输同步时钟。在CPLD/FPGAUAR....
  • 一. RG32 modem 不能发信息?... RG32 modem 波特率是否正确,SIM卡短信中心号码是否正确。 4. 所用的串口线是否良好(RG32 所有的串口线为232接口2. 3.交叉线)。 二. RG32 modem 能发信息但不能收信息? 查看...
  • 默认参数为8位数据位/无奇偶校验/1位停止位、波特率9600bps,数据传输速率:9600bps 2、查询当前设备软件版本 INFO!查询软件版本,+ATI查询模块版本 3、在使用超级终端时,当键入 AT 指令时得到奇怪字符串? ...
  • UART简介  通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。...所以串口的传输速度和其它协议速度相比是比较慢。下面具体讲解一些uart协议以及是如何通信
  • 回答:原则来说,只要串口参数(例如波特率、数据位、停止位等)相同就可以。但是MCGS不推荐这样使用,因为协议内部可能存在潜在冲突,例如对PLC某个寄存器写操作指令,有可能被误认为是对模块某个操作,进而...
  • LINUX下的串口学习

    千次阅读 多人点赞 2014-02-07 16:09:54
    1.串口通信相关知识  基础知识 2.串口编程所需要...4.波特率设置(还需要设置奇偶校验位、停止位等等) 5.常见操作(设备皆文件,用read和write读写串口) 6.开发实践 7.代码实例

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 163
精华内容 65
关键字:

常见的串口波特率