STM32单片机(九)USART串口----第一节:USART串口协议

news2025/1/18 5:44:46

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。
☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋。
🌙专栏目标:实现从零基础入门51单片机和STM32单片机,力求在玩好单片机的同时,能够了解一些计算机的基本概念,了解电路及其元器件的基本理论等。

⭐️ 专栏主要内容: 主要学习STM32单片机的功能、各个模块、单片机的外设、驱动等,最终玩好单片机和单片机的外设,全程手敲代码,实现我们所要实现的功能。
🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。
💑专栏主页:http://t.csdn.cn/HCD8v

本学习过程参考:https://space.bilibili.com/383400717

STM3单片机安装软件、各种资料以及源码的路径:
链接:https://pan.baidu.com/s/1snD0uuTfMhchFqOMWvAiHA?pwd=asdf#list/path=%2F
提取码:asdf

链接里压缩包的解压密码:32

本大节主要学习USART的相关知识,包含九小节:
第一小节主要学习USART串口协议的理论基础知识
第二小节主要学习USART串口外设的理论基础知识
第三小节是对第一、二小节的内容写一个串口发送程序进行练习
第四小节是对第一、二小节的内容再写一个串口发送+接收的程序进行练习
第五小节主要学习USART串口数据包的理论基础知识
第六小节是对第五小节的内容写一个串口收发HEX数据包程序进行练习
第七小节是对第五小节的内容再写一个串口收发文本数据包程序进行练习
第八小节主要了解MyMcu串口下载的知识
第八小节主要了解STLINK Utility串口下载的知识
最终附上所有的源代码;

本小节主要学习USART串口协议的理论基础知识。

文章目录

  • 一、STM32通信接口介绍
  • 二、串口通信
  • 三、硬件电路
  • 四、电平标准
  • 五、串口参数及时序
  • 六、串口时序
  • 七、串口通信总结

一、STM32通信接口介绍

在这里插入图片描述

  • 以上通信接口,STM32C8T6均支持;
  • USART包含TX和RX两个引脚,也叫TXD和RXD;TX(Transmit Exchange)是数据发送脚,RX(Receive Exchange)是数据接收脚;数据按照协议在这些引脚上进行输入和输出,从而实现通信;
  • USART是全双工的模式;全双工是指通信双方能够同时进行双向通信,一般来说,全双工的通信都有两根通信线;比如串口,一根TX发送,一根RX接收;
  • USART是异步通信,所以需要通信双方约定一个采样频率,并且还需要加一些帧头帧尾等进行采样位置的对齐;
  • USART的电平是单端电平,也就是说它们引脚的高低电平都是对GND的电压差;所以单端通信的双方必须共地,也就是把GND接在一起;

二、串口通信

在这里插入图片描述

  • 上图的底部三幅图,左边是USB转串口模块, 上面的芯片是CH340;这个芯片可以把串口协议转换为USB协议,它一边是USB口,可以插在电脑上,另一边是串口的引脚,可以和支持串口的芯片连接在一起;这样就能实现串口和电脑的通信了;中间的图是陀螺仪传感器模块;右边是蓝牙串口模块;

三、硬件电路

在这里插入图片描述

  • 上图就是串口的接线图
  • 一般串口通信模块都有四个引脚,VCC、TX、RX、GND;VCC和GND是供电,TX和RX是通信的引脚;串口通信的TX、RX、GND是必须要接的;上面的VCC,如果两个设备都有独立供电,那么VCC可以不接;

四、电平标准

在这里插入图片描述

  • 单片机中最常用的就是TTl电平;

五、串口参数及时序

在这里插入图片描述

  • 上图底部的两张时序图,就是串口发送一个字节的格式,这个格式是串口协议规定的
  • 串口中,每一个字节都装载在一个数据帧里面,每个数据帧都有起始位、数据位和停止位组成,左图中数据位有8个,代表一个字节的8位;右图的数据位有9个,除了一个字节的8位外,最后一位是奇偶校验位;
  • 串口的参数包括波特率、起始位、数据位、校验位、停止位等
  • 波特率的用途是规定串口通信的速率;
  • 串口的空闲状态是高电平,也就是没有数据传输的时候,引脚必须要置高电平,作为空闲状态;然后需要传输的时候,必须要先发送一个起始位,这个起始位必须是低电平,来打破空闲状态的高电平,产生一个下降沿,这个下降沿就告诉接收设备,这一帧数据要开始了;
  • 同理,当数据发送结束时必须有一个停止位,用于数据帧间隔,固定为高电平;同时这个停止位也是为下一个起始位做准备;
  • 所以起始位固定为0,产生下降沿,表示传输开始;停止位固定为1,把引脚恢复成高电平;
  • 数据位是低位先行,也就是先发送低位,再发送高位;比如要想发送0x0F,也就是00001111,波形如下图所示:
    在这里插入图片描述

六、串口时序

在这里插入图片描述

  • 上面列出了几个串口通信的实际波形;看完这几个波形我们就能大致理解串口是如何传输数据的了;
  • 首先左边第一个波形是发送一个字节数据0x55时,再TX引脚输出的波形;因为串口传输是从低位到高位传输的,所以第一个波形从低到高依次是1->0->1->0->1->0->1->0,所以从高到底排列的二进制数据就是01010101,也就是0x55
  • 第一个波形波特率是9600,所以每一位的时间就是1/9600,大概是104us,可以看到,上图第一个波形每一位就是100us多一点,就是104us;没发送数据的时候,空闲状态是高电平,数据帧开始,先发送起始位,产生下降沿,代表数据帧开始;数据0x55转为二进制,低位先行,就是依次发送10101010;然后这个参数是8位数据,1位停止,无校验;所以8个数据位结束后,紧跟着后面就是停止位,把引脚置回高电平,这样一个数据帧就完成了;
  • 同样的道理,左边第二个波形是发送0xAA;
  • 左边第三个波形是发送0xFF
  • 左边第四个波形是发送0x00
  • 右边的波形波特率改为了4800,也就是波特率变为一半,那相应的,波形的时长就会变为原来的两倍;
  • 右边的第二个波形加了奇偶校验位

七、串口通信总结

总结一下就是:
TX引脚输出定时反转的高低电平;RX引脚定时读取引脚的高低电平;每个字节的数据加上起始位、停止位、可选的校验位,打包成数据帧,依次输出在TX引脚,另一端RX引脚依次接收这样就完成了字节数据的传递;这就是串口通信

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

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

相关文章

【博弈论笔记】第二章 完全信息静态博弈

文章目录 第二章 完全信息静态博弈2.1 基本分析思路和方法2.1.1 上策均衡2.1.2 严格下策反复消去法2.1.3 划线法2.1.4 箭头法 2.2 纳什均衡2.2.1 纳什均衡的诞生2.2.2 纳什均衡的定义2.2.3 纳什与严格下策反复消去法2.2.4 一致预测性质 2.3 无限策略博弈和反应函数(…

性能测试的具体流程

以下是一个基本的性能测试过程,旨在帮助了解性能测试的具体流程和步骤。 1. 确定性能测试目标及指标 首先,需要确定性能测试的目标和指标,包括响应时间、吞吐量、并发用户数等方面。这些指标应该根据业务需求和用户场景进行设定&#xff0c…

Unity-Android常见的那些骚操作

老规矩,先安装unity,再安装安卓平台,安装AndroidStudio ,安装JDK,安装SDK 配置JDK 环境,在Unity里面引用SDK 和 JDK Unity中的Android Build Support下载 在Unity中的File>Building Settings>Android>Open Download Pag…

VMware Ubuntu忘记密码修改密码

目录 一、重启 二、重置密码 三、补充 一觉醒来,刚想去虚拟机爽一下Linux却发现忘记了密码? 没关系,这里有详细的步骤帮你修改密码! 一、重启 重启虚拟机,在进度条未读完前,长按shift进入GRUB系统引导…

56 KVM工具使用指南-安装 LibcarePlus

文章目录 56 KVM工具使用指南-安装 LibcarePlus56.1 安装软件依赖56.2 安装 LibcarePlus56.3 查看安装是否成功 56 KVM工具使用指南-安装 LibcarePlus 56.1 安装软件依赖 LibcarePlus 运行依赖于 libunwind、 elfutils 和 binutils,在配置了 yum 源的 openEuler 系…

SpringSecurity中授权时fastjson序列化问题

最近在复习Spring Security&#xff0c;复习的鉴权的时候出现问题。26.封装权限信息_哔哩哔哩_bilibili 如果是从B站中看到&#xff0c;直接说问题可能出现的原因&#xff1a;可能是private List<String> authorities;中的权限信息命名不规范&#xff0c;去掉get&#x…

Python基础篇(十一):装饰器

装饰器 前言1. 装饰器的定义2. 装饰器的应用3. 装饰器的语法4. func(*args, **kwargs) 前言 装饰器是Python中一种强大的函数或类修饰机制&#xff0c;用于在不修改原始函数或类代码的情况下&#xff0c;对其进行功能扩展或修改。装饰器基于函数式编程的概念&#xff0c;通过将…

【计算机网络详解】——知识点复习(期末不挂科版)

配套视频&#xff1a;湖科大教书匠 配套教材&#xff1a;计算机网络&#xff08;第8版&#xff09; 谢希仁 根据学习通要求“掌握”的部分总结的&#xff0c;有亿点点长 &#xff0c;时间来不及就掌握画 ☆ 的就好啦 目录 &#x1f552; 1. 概述&#x1f558; 1.1 三种数据交换…

[英语单词] gated; cycle gated

gate *[geit] n. 门, 牌楼, 大门, 通道, 闸 vt. 装门于 门的原始作用就显示出来了&#xff0c;就是为了在主人自由进出的同时&#xff0c;保护私有财产的安全。 如果加了-ed&#xff0c;就代表使用了动词性&#xff0c;相当于给谁谁加了一个门&#xff0c;限制其行为的自由度。…

SpringBoot 如何使用 ACL 进行访问控制

SpringBoot 如何使用 ACL 进行访问控制 在现代 Web 开发中&#xff0c;访问控制是一个非常重要的问题。访问控制可以帮助我们保护敏感信息、防止恶意攻击、维护系统安全等。Spring Security 是一个非常流行的安全框架&#xff0c;它提供了一系列的认证和授权功能&#xff0c;可…

【网络1】协议及相关命令

文章目录 1.局域网&#xff1a;CSMA/CD2.互联网&#xff1a;ARP&#xff0c;DHCP&#xff0c;NAT3.TCP协议&#xff1a;telnet&#xff0c;tcpdump&#xff0c;syn/accept队列4.HTTPS协议&#xff1a;摘要&#xff08;sha、md5、crc&#xff09;。win对文件MD5校验&#xff1a;…

【博弈论笔记】第三章 完全且完美信息动态博弈

文章目录 第三章 完全且完美信息动态博弈3.1 动态博弈的表示法和特点3.2 策略的可信性和纳什均衡的不稳定问题3.2.1 相机选择和策略的可信性问题3.2.2 纳什均衡的不稳定问题3.2.3 逆推归纳法 3.3 子博弈和子博弈完美纳什均衡3.3.1 子博弈3.3.2 子博弈完美纳什均衡 3.4 四个经典…

规则引擎--函数式编程和and/or操作符的设计

目录 Java函数编程的一些基础知识BiFunctionBinaryOperatorstream reduce And, Or操作符and 逻辑 的 Combiner 如下:or 逻辑 的 Combiner 如下:and, or的执行 接上一篇博文&#xff1a;规则引擎–规则逻辑形如“1 & (2 | 3)“的抽象&#xff0c; 重点分析一下And, Or操作符…

反射(reflection)详细讲解

反射(reflection) 反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息&#xff08;比如成员变量&#xff0c;构造器&#xff0c;成员方法等等&#xff09;&#xff0c;并能操作对象的属性及方法。反射在设计模式和框架底层都会用到加载完类之后&#xff0c;在堆…

【博弈论笔记】第四章 重复博弈

文章目录 第四章 重复博弈4.1 重复博弈引论4.1.1 重复博弈定义和意义4.1.2 重复博弈的基本概念 4.2 有限次重复博弈4.2.1 两人零和博弈的有限次重复博弈4.2.2 唯一纯策略纳什均衡博弈的有限次重复博弈4.2.3 多个纯策略纳什均衡博弈的有限次重复博弈4.2.4 有限次重复博弈的民间定…

Python学习笔记(3)--字符串定义、拼接、格式化,表达式格式化,数据输入,布尔数据类型,比较运算符

传送门>B站黑马python入门教程 目录 1.字符串定义方式2.字符串拼接3.字符串格式化3.1 常用占位符3.2 格式化时的数字精度控制3.3 快速格式化字符串 4. 表达式格式化5. 数据输入-input语句6.布尔数据类型、比较运算符 1.字符串定义方式 在 python 语法中,字符串有三种定义方式…

Python爬虫 从小白到高手 Urllib

Urllib 1.什么是互联网爬虫&#xff1f; 如果我们把互联网比作一张大的蜘蛛网&#xff0c;那一台计算机上的数据便是蜘蛛网上的一个猎物&#xff0c;而爬虫程序就是一只小蜘蛛&#xff0c;沿着蜘蛛网抓取自己想要的数据 解释1&#xff1a;通过一个程序&#xff0c;根据Url(http…

行为型模式--访问者模式

目录 概述 结构 案例实现 优缺点 优点&#xff1a; 缺点&#xff1a; 使用场景 概述 封装一些作用于某种数据结构中的各元素的操作&#xff0c;它可以在不改变这个数据结构的前提下定义作用于这 些元素的新的操作。 结构 访问者模式包含以下主要角色: 抽象访问者&am…

采用SpringBoot+Tinymce实现文章的在线预览和上传

采用SpringBootTinymce实现文章的在线预览和上传 资源在gitee中 输入信息 预览

canvas详解09-像素操作

到目前为止,我们尚未深入了解 Canvas 画布真实像素的原理,事实上,你可以直接通过 ImageData 对象操纵像素数据,直接读取或将数据数组写入该对象中。稍后我们也将深入了解如何控制图像使其平滑(反锯齿)以及如何从 Canvas 画布中保存图像。 #ImageData 对象 ImageData对象…