STM32 通用同步/异步收发器

news2024/10/26 13:32:26

目录

串行通信基础

串行异步通信数据格式

USART介绍

USART的主要特性

USART的功能

USART的通信时序

USART的中断


串行通信基础

在串行通信中,参与通信的两台或多台设备通常共享一条物理通路。发送者依次逐位发送一串数据信号,按一定的约定规则被接收者接收。由于串行端口通常只是规定了物理层的接口规范,所以为确保每次传送的数据报文能准确到达目的地,使每一个接收者能够接收到所有发向它的数据,必须在通信连接上采取相应的措施。

串行异步通信数据格式

无论是RS-232还是RS-485,均可采用通用异步收发数据格式。 通用异步收发器(Universal Asynchronous Receiver/Transmitter,UART)通信的数据格式如图

串行同步同步通信是由1~2个同步字符和多字节数据位组成,同步字符作为起始位以触发同步时钟开始发送或接收数据;多字节数据之间不允许有空隙,每位占用的时间相等;空闲位需发送同步字符。 串行同步同步通信传送的多字节数据由于中间没有空隙,因而传输速度较快,但要求有准确的时钟实现收发双方的严格同步,对硬件要求较高,适用于成批数据传送。串行同步收发通信的数据格式如图

STM32的USART工作原理

通信是嵌入式系统的重要功能之一。嵌入式系统中使用的通信接口有很多,如UART、SPI、I2C、USB和CAN等。其中,UART是最常见、最方便、使用最频繁的通信接口。在嵌入式系统中,很多微控制器或者外设模块都带有UART接口

USART介绍

通用同步/异步收发器可以说是嵌入式系统中除了GPIO外最常用的一种外设。USART常用的原因不在于其性能超强,而是因为USART简单、通用。自Intel公司20世纪70年代发明 USART以来,上至服务器、PC之类的高性能计算机,下到4位或8位的单片机几乎都配置了USART接口,通过USART,嵌入式系统可以和绝大多数的计算机系统进行简单的数据交换。USART接口的物理连接也很简单,只要2~3根线即可实现通信。 SM32F103微控制器的小容量产品有2个USART,中等容量产品有3个USART,大容量产品有3个USART+2个UART。

USART的主要特性

USART主要特性如下:

(1)全双工,异步通信。

(2)NRZ标准格式。

(3)分数波特率发生器系统。发送和接收共用的可编程波特率,最高达10.5Mb/s。

(4)可编程数据字长度(8位或9位)。

(5)可配置的停止位(支持1或2个停止位)。

(6)LIN主发送同步断开符的能力以及LIN从检测断开符的能力。当USART硬件配置成LIN时,生成13位断开符;检测10/11位断开符。

(7)发送方为同步传输提供时钟。

(8)IRDA SIR编码器/解码器。在正常模式下支持3/16位的持续时间。

(9)智能卡模拟功能。智能卡接口支持ISO7816-3标准中定义的异步智能卡协议;智能卡用到0.5和1.5个停止位。

(10)单线半双工通信。

(11)可配置的使用DMA的多缓冲器通信。在SRAM中利用集中式DMA缓冲接收/发送字节。 (12)单独的发送器和接收器使能位。

(13)检测标志:接收缓冲器满;发送缓冲器空、传输结束标志。

(14)校验控制:发送校验位、对接收数据进行校验。

(15)四个错误检测标志:溢出错误、噪声错误、帧错误、校验错误。

(16)10个带标志的中断源:CTS改变、LIN断开符检测、发送数据寄存器空、发送完成、接收数据寄存器满、检测到总线为空闲、溢出错误、帧错误、噪声错误、校验错误。

(17)多处理器通信:如果地址不匹配,则进入静默模式。

(18)从静默模式中唤醒:通过空闲总线检测或地址标志检测。

(19)两种唤醒接收器的方式:地址位(MSB,第9位),总线空闲。

USART的功能

任何USART双向通信至少需要两个引脚:接收数据输入(RX)和发送数据输出(TX)。 RX:接收数据串行输入。通过过采样技术区别数据和噪声,从而恢复数据。 TX:发送数据串行输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活,并且不发送数据时,TX引脚处于高电平。在单线和智能卡模式中,此I/O被同时用于数据的发送和接收。

(1)总线在发送或接收前应处于空闲状态。

(2)一个起始位。

(3)一个数据字(8或9位),最低有效位在前。

(4)0.5、1.5、2个的停止位,由此表明数据帧结束。

(5)使用分数波特率发生器-12位整数和4位小数的表示方法。

(6)一个状态寄存器(USART_SR)。

(7)数据寄存器(USART_DR)。

(8)一个波特率寄存器(USART_BRR),12位的整数和4位小数。

(9)一个智能卡模式下的保护时间寄存器(USART_GTPR)。 在同步模式下需要引脚CK:发送器时钟输出。此引脚输出用于同步传输的时钟。这可以用来控制带有移位寄存器的外部设备(如LCD驱动器)。时钟相位和极性都是软件可编程的。在智能卡模式下,CK可以为智能卡提供时钟。

在IrDA模式里需要下列引脚:

(1)IrDA_RDI:IrDA模式下的数据输入。

(2)IrDA_TDO:IrDA模式下的数据输出。

在硬件流控模式下需要以下引脚:

(1)nCTS:清除发送,若是高电平,在当前数据传输结束时阻断下一次的数据发送。

(2)nRTS:发送请求,若是低电平,表明USART准备好接收数据。

1. 波特率控制

波特率控制即图下部虚线框的部分。通过对USART时钟的控制,可以控制USART的数据传输速度。 USART外设时钟源根据USART的编号不同而不同:对于挂载在APB2总线上的USART1,它的时钟源是fpcLk2;对于挂载在APB1总线上的其他USART(如 USART2和USART3等),它们的时钟源是fpcLk1。以上USART外设时钟源经各自USART的分频系数——USARTDIV分频后,分别输出作为发送器时钟和接收器时钟,控制发送和接收的时序。 通过改变USART外设时钟源的分频系数USARTDIV,可以设置USART的波特率。

2. 收发控制

收发控制即图的中间部分。该部分由若干个控制寄存器组成,如USART控制寄存器(Control Register)CR1、CR2、CR3和USART状态寄存器(Status Register)SR等。

3. 数据存储转移

数据存储转移即图8-3 上部灰色的部分。它的核心是两个移位寄存器:发送移位寄存器和接收移位寄存器。这两个移位寄存器负责收发数据并进行并串转换。

1)USART数据发送过程 当USART 发送数据时,内核指令或DMA外设先将数据从内存(变量)写入发送数据寄存器(TDR)。然后,发送控制器适时地自动把数据从TDR加载到发送移位寄存器,将数据一位一位地通过Tx引脚发送出去。

2)USART数据接收过程 USART数据接收是USART数据发送的逆过程。

USART的通信时序

可以通过编程USART_CR1寄存器中的M位,选择8或9位字长。 在起始位期间,TX引脚处于低电平,在停止位期间,TX引脚处于高电平。空闲符号被视为完全由1组成的一个完整的数据帧,后面跟着包含了数据的下一帧的开始位。断开符号被视为在一个帧周期内全部收到0。在断开帧结束时,发送器再插入1或2个停止位(1)应答起始位。发送和接收由一共用的波特率发生器驱动,当发送器和接收器的使能位分别置位时,分别为其产生时钟。

USART的中断

STM32F103系列微控制器的USART主要有以下各种中断事件:

(1)发送期间的中断事件包括发送完成(TC)、清除发送(CTS)、发送数据寄存器空 (TXE)。

(2)接收期间的中断事件包括空闲总线检测(IDLE)、溢出错误(ORE)、接收数据寄存器非空(RXNE)、校验错误(PE)、LIN断开检测(LBD)、噪声错误(NE,仅在多缓冲器通信)和帧错误(FE,仅在多缓冲器通信)。 如果设置了对应的使能控制位,这些事件就可以产生各自的中断

串口操作的常用HAL 函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2210451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

乐鑫ESP32-S3无线方案,AI大模型中控屏智能升级,提升智能家居用户体验

在这个由数据驱动的时代,人工智能正以其前所未有的速度和规模改变着我们的世界。随着技术的不断进步,AI已经从科幻小说中的概念,转变为我们日常生活中不可或缺的一部分。 特别是在智能家居领域,AI的应用已成为提升生活质量、增强…

linux下编译鸿蒙版curl、openssl

一.环境准备 1.参考说明 NDK开发介绍:https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/napi/ndk-development-overview.md 2.NDK下载 点击介绍页面中的链接可以跳转到相应下载页面: 下载相应版本: 下载完毕后解压到指定目…

Matlab详细学习教程 MATLAB使用教程与知识点总结

Matlab语言教程 章节目录 一、Matlab简介与基础操作 二、变量与数据类型 三、矩阵与数组操作 四、基本数学运算与函数 五、图形绘制与数据可视化 六、控制流与逻辑运算 七、脚本与函数编写 八、数据导入与导出 九、Matlab应用实例分析 一、Matlab简介与基础操作 重点内容知识…

第2章 STM32最小系统介绍

第2章 STM32最小系统介绍 1. STM32最小系统组成 2. STM32启动模式 1.STM32最小系统组成 (1)电源电路 (2)复位电路 (3) 晶振电路 (4)下载电路 可打开开发板原理图查看 2.STM32启动模式 在STM…

Postman最新V11版本关键更新一览

Postman作为接口测试中,被广泛应用的一款主流工具,以其丰富的功能,灵活方便的使用方式,广受欢迎。最新发布的V11版本则在向协作平台转型的过程中一路狂奔,增加大量全新的协作支持。下面我们就一起来看看都有哪些变化吧…

基于Arduino的泡茶机器人

打造你的完美泡茶助手 引言 你是否曾遇到过泡出的茶太淡或太苦?通过这个项目,你可以创建一个设备,为你的茶包提供完美的浸泡时间。只需附上一个茶包并放置你的杯子,设备就会开始工作!它将完美地按照你的喜好浸泡你的…

数通--3

一、动态路由 内部 路由器之间要互联互通,必须遵循相同的协议 企业内部用 IGP,企业之间用BGP RIP(已淘汰,不考) 距离就是长短,矢量就是方向,即路由的出接口 一台路由器 A 配好RIP,…

【Fargo】5:根据网络带宽动态调整发送速率

根据网络带宽动态调整发送速率 原理:这个简单实现的原理是 改变包的发送速率就可以改变发送码率了。例如1秒发1000个1KB 的包,带宽8Mbps,如果带宽是4Mbps,那么1秒发500个就够了。D:\XTRANS\thunderbolt\ayame\zhb-bifrost\player-only\worker\src\fargo\zhb_uv_udp_sender.…

好书分享《大模型应用开发极简入门》

本书为大模型应用开发极简入门手册,为初学者提供了一份清晰、全面的“可用知识”,带领大家快速了解GPT-4和ChatGPT的工作原理及优势,并在此基础上使用流行的Python编程语言构建大模型应用。 通过本书,你不仅可以学会如何构建文本生…

大数据开发基础实训室设备

大数据实验实训一体机 大数据实验教学一体机是一种专为大数据教育设计的软硬件融合产品,其基于华为机架服务器进行了调优设计,从而提供了卓越的性能和稳定性。这一产品将企业级虚拟化管理系统与实验实训教学信息化平台内置于一体,通过软硬件…

微软十月补丁星期二发现了 118 个漏洞

微软将在2024 年 10 月补丁星期二解决 118 个漏洞,并且有证据表明发布的 5 个漏洞被野蛮利用和/或公开披露,尽管微软尚未将其中任何一个漏洞评定为严重漏洞。 在这五个漏洞中,微软列出了两个已被利用的漏洞,这两个漏洞现在都已列…

【2025】springboot贫困地区捐助系统(源码+文档+调试+答疑)

🍅 简介:2000精品计算机源码学习 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 文末获取源码 目录 一、以下学习内容欢迎领取: 二、文档资料截图: 三想了解更多,请收藏、评论、留言&#xff1a…

python如何对变量赋值

Python 中的变量赋值不需要类型声明。 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 等号()用来给变量赋值。 等号(&…

GitHub简介与安装使用入门教程

1、Git与GitHub的简介 Git是目前世界上最先进的分布式控制系统,它允许开发者跟踪和管理源代码的改动历史记录等,可以将你的代码恢复到某一个版本,支持多人协作开发。它的核心功能包括版本控制、分支管理、合并和冲突解决等,其操作…

FP7126:DC-DC降压恒流LED芯片,65536级高辉无频闪调光 支持大功率舞台灯

产品概述: FP7126是在恒定关闭时间模式下工作的平均电流模式控制LED驱动器IC。具有稳定输出恒流的能力。FP7126不产生峰值到平均的误差,因此大大提高了LED电流的精度、线路和负载调节,输出的LED电流精度为2%。而不需要任何回路补偿或高侧电流…

通义灵码 Visual Studio 下载安装指南(附安装包)

文章目录 前言一、下载和安装指南方法 1:从插件市场安装方法 2:下载安装包安装方法 3:登录并开启智能编码之旅 二、使用指南总结 前言 通义灵码是基于通义大模型的智能编程辅助工具,它提供了多种强大的功能,旨在助力开…

02 线性结构——数组(特性、优缺点、基本使用、可变长的动态数组)

目录 1 数组基础知识 1.1 认识数组 1.2 数组的声明 1.3 数组的特性 2 数组的优缺点 2.1 优点 2.1.1 查找容易 2.1.2 高效的访问和修改 2.2 缺点 2.2.1 插入和删除效率低 2.2.2 扩展相对繁琐 3 数组的基本使用 3.1 遍历数组 3.2 修改数组元素 4 可变长的动态数组…

Nature 正刊丨突变与ecDNA形成尿路上皮癌症演变的相互作用

01摘要 晚期癌症是一种常见的致死性疾病,其特征是明显的遗传异质性1。在这项研究中,我们研究了由内源性和外源性诱变过程引起的基因组特征的进化及其与复杂结构变异(SV)的相互作用。我们叠加了癌症患者匹配序列肿瘤的突变特征和系…

设计模式之组合模式(Composite)

一、组合模式介绍 组合模式(Composite Pattern) 的定义是:将对象组合成树形结构以表示整个部分的层 次结构。组合模式可以让用户统一对待单个对象和对象的组合。 如在windows操作系统中的目录结构,其实就是树形目录结构,可以通过 tree /f 命令…

81.【C语言】数据结构之空间复杂度

目录 1.定义 2.例题 计算下列代码中BubbleSort函数的空间复杂度 解: 3.练习 1.求下列代码的空间复杂度 解: 2.求下列代码的空间复杂度 解: 1.定义 对一个算法在运行过程中临时占用存储空间大小的量度,不是程序占用了多少bytes的空间,通常用多少个变量来衡量,也使用大…