当前位置: 首页 > news >正文

STM32通用同步异步收发器(USART)

通用同步异步收发器—–USART
通讯方式:
1、串行通讯
2、异步/同步
3、全双工

物理层
RS232标准
这里写图片描述
两个通讯设备的“DB9 接口”之间通过串口信号线建立起连接,串口信号线中使用“RS-232标准”传输数据信号。由于 RS-232电平标准的信号不能直接被控制器直接识别,所以这些信号会经过一个“电平转换芯片”转换成控制器能识别的“TTL 标准”的电平信号,才能实现通讯。

协议层
这里写图片描述
串口通讯的数据包由发送设备通过自身的 TXD 接口传输到接收设备的 RXD 接口。在串口通讯的协议层中,规定了数据包的内容,它由启始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据。

STM32的USART构架
这里写图片描述

1、引脚功能
TX:发送数据输出引脚
RX:接收数据输入引脚
SW_RX:芯片内部引脚

2、数据寄存器
发送接收数据,主要是对数据寄存器进行操作
(数据寄存器)TDR和 RDR都是介于系统总线和移位寄存器之间。串行通信是一个位一个位传输的,发送时把 TDR 内容转移到发送移位寄存器,然后把移位寄存器数据每一位发送出去,接收时把接收到的每一位顺序保存在接收移位寄存器内然后才转移到 RDR。

3、控制器
发送器:
当发送使能位 TE 置 1 之后,发送器开始会先发送一个空闲帧(一个数据帧长度的高电平),接下来就可以往 USART_DR 寄存器写入要发送的数据。在写入最后一个数据后,需要等待 USART 状态寄存器 (USART_SR)的 TC 位为 1,表示数据传输完成,如果USART_CR1 寄存器的 TCIE 位置 1,将产生中断。
在发送数据时,编程的时候有几个比较重要的标志位我们来总结下。
名称 描述
TE 发送使能
TXE 发送寄存器为空,发送单个字节的时候使用
TC 发送完成,发送多个字节数据的时候使用
TXIE 发送完成中断使能
接收器
如果将 USART_CR1 寄存器的 RE 位置 1,使能 USART 接收,使得接收器在 RX 线开始搜索起始位。在确定到起始位后就根据 RX 线电平状态把数据存放在接收移位寄存器内。接收完成后就把接收移位寄存器数据移到 RDR 内,并把 USART_SR 寄存器的 RXNE 位置
1,同时如果 USART_CR1寄存器的 RXNEIE 置 1 的话可以产生中断。
在接收数据时,编程的时候有几个比较重要的标志位我们来总结下。
名称 描述
RE 接收使能
RXNE 读数据寄存器非空
RXNEIE 接收缓冲区非空中断使能

4、小数波特率生成

5、校验控制

6、中断控制
这里写图片描述

相关文章:

  • STM32 I2C学习
  • STM32定时器学习---基本定时器
  • C语言小知识(1)
  • C语言小知识(2)
  • STM32 GPIO的几种工作模式
  • STM32高级定时器(1)
  • STM32 高级定时器(2)
  • C语言指针基础
  • 指针与二维数组
  • 单链表的学习
  • 单链表的排序+手机通讯录源码
  • QT模式对话框
  • Qlable显示文本和图片
  • 工具按钮QToolButton
  • 组合框
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • django开发-定时任务的使用
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • 搞机器学习要哪些技能
  • 技术胖1-4季视频复习— (看视频笔记)
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 跨域
  • 与 ConTeXt MkIV 官方文档的接驳
  • 在Mac OS X上安装 Ruby运行环境
  • #### go map 底层结构 ####
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (4.10~4.16)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (论文阅读40-45)图像描述1
  • (四)鸿鹄云架构一服务注册中心
  • (转)iOS字体
  • .net core Swagger 过滤部分Api
  • .net refrector
  • .NET单元测试
  • .NET学习全景图
  • @WebServiceClient注解,wsdlLocation 可配置
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [.NET]桃源网络硬盘 v7.4
  • [<死锁专题>]
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [FROM COM张]如何解决Nios II SBTE中出现的undefined reference to `xxx'警告
  • [iOS]iOS获取设备信息经常用法
  • [J2ME]如何替换Google Map静态地图自带的Marker
  • [Leetcode] 寻找数组的中心索引
  • [LeetCode]Balanced Binary Tree
  • [LeetCode]—Copy List with Random Pointer 深度复制带“任意指针”的链表
  • [LeetCode]—Rotate Image 矩阵90度翻转
  • [Linux]使用CentOS镜像与rpm来安装虚拟机软件