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

news/2025/2/13 0:44:13/

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括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.ppmy.cn/news/539329.html

相关文章

为什么调试很重要?gdb调试分析问题

为什么调试很重要? 一、引言二、调试的定义和分类2.1、调试的定义2.2.、调试的分类 三、调试的重要性四、调试的步骤和技巧4.1、定位问题4.2、重现问题4.3、分析问题4.4、解决问题4.5、调试技巧 五、简单的GDB调试示例:六、总结 一、引言 💡 …

【NLP】PageRank、TextRank算法的原理解析

一、说明 PageRank是经典的网页热度评分算法,在自然语言的热词提取也有同样的意义(TextRank);本文详细叙述该算法的原理,配合部分代码演示其原理。 二、PageRank算法的启发因素 2.1 算法兴起 PageRank (PR) 是…

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

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

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

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

视频网站存储在服务器,网络视频存储服务器

高性能多核处理器,保障了海量数据处理的稳定性; 采用模块化、抽拉式、无线缆设计,保障了系统易维护性; 支持SBB2.0国际标准架构,方便产品维护和升级; 3U精细化机箱,支持16块硬盘; 视频流转发模式下:支持1600Mbps网络转…

剪视频缺素材?收好这6个商用视频素材网站!

视频表达相对文字和图片的更高难度就是,去哪里找那么多专业的4K、8K等这些优质的超清素材?这个视频将回答大家:这完全是可以通过一些网站找到免费或者性价比较高的资源。 1、videezy:摄影师素材共享社区 https://www.videezy.com…

上传大型视频文件到服务器的技术

1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出、还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工、挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通过浏览器上传至服务器&#xf…

Web上传大型视频文件到服务器,解决方案

核心原理: 该项目核心就是文件分块上传。前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题。 * 如何分片; * 如何合成一个文件; * 中断了从哪个分片开始。…