当前位置:网站首页>【STM32】串口通信基础知识
【STM32】串口通信基础知识
2022-07-23 06:49:00 【Coder_Ja】
通信基础知识
串行与并行
根据数据传输的方式,通信可分为串行通信与并行通信串行通信:一次只能传输一个数据位的数据,如同单车道的公路
并行通信:一次可以传输多个数据位的数据,如同多车道的公路
特性对比

传输方向
根据串行通信数据传输的方向,可将串行通信方式分为:单工、半双工、全双工单工:数据传输仅能沿着一个方向,不能反向传输
半双工:数据传输可以沿着两个方向,但不能同时发送,即发送与接收是有先后顺序的
全双工:数据传输可以沿着两个方向,且可以同时发送
半双工双方共用一条线路实现双向通信,而全双工利用两条线路,一条发数据、一条收数据。



同步与异步
同步通信:收发设备双方会使用一根信号线表示时钟信号,在时钟信号的驱动下双方进行协调、同步数据,通信中通常双方会统一规定在时钟信号的上升沿或下降沿对数据线进行采样异步通信:不使用时钟信号进行数据同步,直接在数据信号中穿插一些同步用的信号位,或者把主体数据打包,以数据帧的格式传输数据。需要双方约定数据的传输速率(波特率),以便更好地同步。
数据同步就是双方需要知道什么时候开始发数据了、什么时候数据发送结束了,否则会接收到无效数据。

串口通信
USART Universal Synchronous Asynchronous Receiver Transmitter 通用同步异步收发器,可以灵活地与外部设备进行全双工数据交换。UART与USART的区别是它只有异步通信,没有同步通信。
USART是STM32上基于串口协议来实现与外部通信的一个外设,因为串口通信协议简单、便捷,所以大多数产品中都支持串口通信,通过串口通信可以实现PC与STM32的交互,在调试与开发中有非常重要的作用。
串口通讯就是一种常用的串行通讯方式
串口通讯可分层为物理层和协议层。物理层规定通信协议中具有机械、电子功能的特性,确保原始数据在物理媒介的传播;协议层规定通讯逻辑,统一数据打包、解包标准。
物理层
串口通讯物理层主要标准是RS-232,其规定了信号的用途、通讯接口及信号的电平标准,通讯结构如下
DB9接口
不同标准的电平
控制器用TTL电平,如果要用其它标准进行控制器间的通信,需要接电平转换芯片,将TTL电平转换为其它标准电平。TTL电平传输距离较短,一般通讯距离大于40cm时传输数据就会受到干扰。
协议层
协议层中规定了数据包的内容,由起始位、主体数据、校验位以及停止位组成,通信双方的数据包格式要约定一致才能正常收发数据
- 波特率
波特率是每秒传输的码元个数。由于异步通信中没有时钟信号,所以接收双方要约定好波特率。常见的波特率有4800、9600、115200等 - 起始和停止信号
数据包的首尾是分别是起始位和停止位,起始信号由一个逻辑0的数据位表示,停止位可由0.5、1、1.5、2个逻辑1的数据位表示,双方需约定一致 - 有效数据
有效数据规定了主体数据的长度,一般为8或9位 - 数据校验
在有效数据之后,有一个可选的数据校验位。由于数据通信容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无(noparity)。
功能引脚
TX:发送数据输出引脚。RX:接收数据输入引脚。
SW_RX:数据接收引脚,只用于单线和智能卡模式,属于内部引脚,没有具体外部引脚。
nRTS:请求以发送(Request To Send),n 表示低电平有效。如果使能 RTS 流控制,当USART接收器准备好接收新数据时就会将 nRTS 变成低电平;当接收寄存器已满时, nRTS 将被设置为高电平。该引脚只适用于硬件流控制。
nCTS:清除以发送(Clear To Send),n 表示低电平有效。如果使能 CTS 流控制,发送器在发送下一帧数据之前会检测 nCTS 引脚,如果为低电平,表示可以发送数据,如果为高电平则在发送完当前数据帧之后停止发送。该引脚只适用于硬件流控制。
SCLK:发送器时钟输出引脚。这个引脚仅适用于同步模式。

USART有五个引脚;UART只有异步通信,只有两个引脚。
串口引脚接法: TX接RX,RX接TX
边栏推荐
- Beifu PLC and C transmit structure type variables through ads communication
- 专题讲座5 组合数学 学习心得(长期更新)
- [JS advanced] basics of regular expressions - about regular expressions you want to know_ 01
- 【PART 2】OAK-D+TurtleBot3机器人项目全解析
- 【记录】golang跨平台编译
- Google Play应用商店可能会删除应用权限概述 转而使用新的数据安全信息组合
- Remote editing and debugging with vscode
- [graphics] ASTC texture compression format
- ModuleNotFoundError: No module named ‘setuptools_ rust‘
- 【 Visual Dispatching Software】 Shanghai Dow Ning apporte netronic download, Trial, tutoriel pour l'Organisation SMB
猜你喜欢
![Shell运算符、$((运算式))” 或 “$[运算式]、expr方法、条件判断、test condition、[ condition ]、两个整数之间比较、按照文件权限进行判断、按照文件类型进行判断](/img/65/a735ca2c2902e3fc773dda79438972.png)
Shell运算符、$((运算式))” 或 “$[运算式]、expr方法、条件判断、test condition、[ condition ]、两个整数之间比较、按照文件权限进行判断、按照文件类型进行判断

Don't be silly to distinguish these kinds of storage volumes of kubernetes

Successful joint commissioning of Vientiane Aoke and CoDeSys Technology

Learn about canvas

Beifu and C transmit real type through ads communication

Wu Enda machine learning series p31~p42

Why does the GOM engine version automatically drop the line or flash back?

欧洲“气荒”对中国有哪些影响?

The principle of Google interview questions is to analyze 12 table tennis balls, one of which is defective. Weigh it with a balance for 3 times to find it

Qt Creator .pro文件根据kit添加对应库
随机推荐
2. Les règles quantitatives
微信小程序--动态设置导航栏颜色
PHP connecting to SQL Server
C language insert sort (direct insert sort)
China leads the United States in another emerging technology field and stands at the commanding height of scientific and technological innovation
MySQL index transaction & JDBC programming
PHP获取当前时间戳三位毫秒 - 毫秒时间戳
同花顺开户风险性大吗,安全吗?
Debug No5 basic lighting
Learn to use canvas to build line chart, bar chart and pie chart
MySQL面试题
Point target simulation of SAR imaging (I) -- mathematical model
"100 Android interview questions" I brushed angrily for Dachang
Knowledge map: basic concepts
浅谈Anroid设备的CPU类型以及so文件的放置目录
【可视化调度软件】上海道宁为SMB组织带来NETRONIC下载、试用、教程
Client does not support authentication protocol requested by server; consider upgrading MySQL client
深入理解微信小程序的底层框架(一)
Shell运算符、$((运算式))” 或 “$[运算式]、expr方法、条件判断、test condition、[ condition ]、两个整数之间比较、按照文件权限进行判断、按照文件类型进行判断
ModuleNotFoundError: No module named ‘setuptools_ rust‘