首页 > 其他分享 >UART

UART

时间:2025-01-18 22:55:30浏览次数:1  
标签:引脚 UART 串口 低电平 通信 发送 寄存器

UART

1. 理论知识

1.1 通讯常见概念

  1. 串行通信和并行通信分别指什么?
    串行通信是按位传输,一次传输一位。并行同学是多位同时传输。

    串行通信 并行通信
    通信距离
    抗干扰能力
    传输速率
    成本
  2. 单工、半双工和全双工的区别。
    三者主要是描述通信方向的不同

    名称 通信方向
    单工 数据只能单向传输
    半双工 数据可以从A到B,也可以从B到A,但同一时间只能一个方向
    全双工 同一时间,数据可以A到B,也可以B到A
  3. 同步通信和异步通信的区别。
    同步通信在数据传输过程中要与时钟信号一一对应,而异步通信两边各自根据约定好的频率发送和接收数据。同步通信会比异步通信多一根信号线。

1.2 串口通信协议参数

串口通信的定义等见博客:https://www.cnblogs.com/yangyang13/p/18664776
此篇主要介绍STM32的串口控制与应用。
USART工作流程如下图:

image-20250118210745806

  1. 功能引脚说明
    TX:发送数据的输出引脚;
    RX:接收数据的输入引脚;
    SW_RX:数据接收引脚,只用于单线和智能卡模式,属于内部引脚,无外部引脚;
    nRTS:请求发送(Request to Send),n表示低电平有效。使能RTS流控制,如果USART做好接收数据准备,nRTS就会变成低电平;接收寄存器装满时,就把nTRS置为高电平。仅适用硬件流控制。
    nCTS:清除发送(Clear to Send),n低电平有效。使能RTS流控制,发送器在发送下一帧数据前检测nCTS。如果为低电平,则可以发送数据;高电平则在发送完当前数据帧后停止发送。

  2. 波特率产生
    发送器和接收器波特率相同,通过设置BRR寄存器来实现
    image-20250118212143584

    APB2一般是72MHz,APB1是36MHz

    image-20250118212403441

    需要的波特率是115200,则对应的分频值应该是:39.0625,把这个值写入到BRR寄存器中。39.0625的小数部分:0.0625 * 16 = 1, 整数部分是:39(0x27)。

image-20250118212705219

所以写入到BRR寄存器的值是:0x0271。

2. 实践验证

2.1 寄存器方式

验证的硬件环境:stm32最小系统板+串口板
实现逻辑:

2.2 库函数方式

标签:引脚,UART,串口,低电平,通信,发送,寄存器
From: https://www.cnblogs.com/yangyang13/p/18678993

相关文章

  • UART通信_深入理解(理论+实践)
    UART通信_深入理解(理论+实践)1.理论知识1.1定义和概述UART是"通用异步收发器"(UniversalAsynchronousReceiver/Transmitter)的缩写,通常简称为UART。是一种异步串行通信接口,用于将数据通过串列通信进行传输。1.2硬件组成常见的串口板会有四根线,VCC供电线、GND地线、T......
  • UART/SPI/I2C 协议——(1)三者区别
    1. UART,SPI,I2C区别汇总特性UARTSPII2C通信方式串行、异步通信串行、同步通信串行、同步通信传输速率较低(9600-115200bps)高速(通常超过1Mbps)较慢(通常在100kbps到400kbps)引脚数量2根(TX和RX)4根(MOSI,MISO,SCLK,CS)2根(SDA,SCL)连接方式点对点通信主从模式(1主与......
  • UART异步串行通信协议
    UART概述UART的定义USART指通用同步收发器,UART指通用异步收发器这些通用收发器提供了一种灵活的方式与外部设备进行单工/半双工/全双工方式的数据交互,并且可选择多种波特率,支持多种通信协议和功能模式等UART的类别STM8S单片机片内总共有3个串口资源:UART1/2/3(STM8S105则只......
  • SpringBoot 整合 Quartz 定时任务框架
    本文没有聊到 Java 其他的实现定时任务的方法啥的~,只是对使用Quartz做了一个小实践一、简单聊一聊QuartzQuartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz其实就是通过一个调度线程不断的扫描数据库......
  • 在FreeRTOS中使用HAL_UART_Transmit函数时
    voidSeria2_Printf(char*format,...){ charString[200]; va_listarg; va_start(arg,format); vsprintf(String,format,arg); va_end(arg); HAL_UART_Transmit(&huart2,(uint8_t*)&String,strlen(String),HAL_MAX_DELAY);}在FreeRTOS中使用HAL_UART_Tra......
  • UART基础知识
    UART(UniversalAsynchronousReceiver/Transmitter,通用异步收发器)是一种广泛应用于嵌入式系统中的串行通信协议,用于设备间的数据传输。1.UART的基本原理UART是一种异步通信协议,无需额外的时钟信号,通过约定的波特率实现通信。数据通过串行方式逐位传输,起始位和停止位用于......
  • 解决Spring boot集成quartz时service注入失败为null的问题
    解决Springboot集成quartz时service注入失败为null的问题一、报错信息二、代码任务类源代码配置类原代码三、注入失败原因四、解决的思路11、任务类修改2、配置类修改五、解决的思路2一、报错信息java.lang.NullPointerException:nullatfarbun.server.schedul......
  • UART信号测试:确保通信质量
    在现代电子系统中,串行通信是实现数据交换的核心手段之一。UART(通用异步收发传输器)作为一种常见的串行通信协议,被广泛应用于嵌入式设备、微控制器及其他低速通信系统中。UART信号的可靠性直接影响着通信系统的稳定性和数据传输的准确性。因此,进行UART信号测试是确保设备正常工作......
  • (十).NET6.0 搭建基于Quartz组件的定时调度任务
    1.添加Quartz定时器组件2.新建类库项目Wsk.Core.QuartzNet,并且引用包类库项目。然后新建一个中间调度类,叫QuartzMiddleJob3.新建一个Job工厂类,叫YsqJobFactory,用来获取刚刚创建的中间调度类的服务4.新建一个通用执行计划类,叫YsqJobSchedule,用于每次任务都通过该计划进行......
  • 扩展您的串口设备 EU104数据转发芯片可独立设置通讯速率和参数 将1个UART接口扩展为4
    扩展您的串口设备EU104数据转发芯片可独立设置通讯速率和参数将1个UART接口扩展为4个EU104是一款数据转发芯片,具有5个UART接口。它可以将1个UART接口扩展为4个UART接口,主接口的通讯速率可以达到460800bps,子接口的通讯速率最高可达到38400bps。每个接口的通讯速率可以由软件独立......