[STM32] 4-1 UART与串口通信

文章目录

前言

  • 本笔记内容,为本人依据B站UP主"铁头山羊"视频内容(本人为其粉丝),归纳整理总结而来,如有侵权,联系立即删除,同时有想详细了解的也可进行观看bilibili铁头山羊 。

  • 硬件:STM32F103C8T6

  • 软件:Keil

4-1 UART与串口通信

串口简介

  • transmit-发送

  • receive-接收

串口接线

复制代码
RX -> TX
TX -> RX
VCC -> VCC
GND -> GND

数据帧

  • 数据帧传输是数据传输的最基本单元

串口的数据帧格式

空闲位
  • 持续高电平
起始位
  • 输出一个低电平
数据位
  • LSB First(Least Significant Bit First)先传最低有效
校验位(位于数据位内部)
奇偶校验
复制代码
(1)数'1'的个数;
(2)'1'的个数为奇数位;
(3)'1'的个数为偶数位。
停止位
  • 表示帧的结束,高电平

  • 长度可以取:0.5,1,1.5,2

异步通信和波特率

同步通信

  • 收发双方共享时钟

异步通信

  • 收发双方不共享时钟

波特率

  • 波特率:每秒传输码元的个数

  • 正常通信的条件

    • 采用相同的波特率

    • 采用相同的数据帧格式

流控的概念

  • 数据传输完成后的反馈,防止数据丢失

串口流控的工作原理

复制代码
(1)TX:数据发送
(2)RX:数据接收
(3)CTS(Clear To Send):可以发送。低电平有效,发送方有效。
(4)RTS(Request To Send):请求发送。低电平有效,接收方有效。

随堂测试

问题1:说出Tx、Rx、CTS、RTS、VCC、GND的作用

复制代码
答:
(1)Tx:发送数据;
(2)Rx:接收数据;
(3)CTS:可以发送;
(4)RTS:可以接收;
(5)VCC:供电引脚,如果通信的一方需要给另一个引脚供电,那么就要将通信双方的VCC进行连接;
(6)GND:提供参考电压。

问题2:串口的数据帧最多包含多少个位?

复制代码
答:
(1)1位起始位,8位有效数据位,1位校验位,2位停止位;
(2)最多包含12位。

问题3:说出奇校验和偶校验的规则

复制代码
答:
(1)奇校验:数据里的 "1" 太多或太少,补个校验位让 "1 的总数" 变成奇数(补 1 或补 0);
(2)偶校验:数据里的 "1" 太多或太少,补个校验位让 "1 的总数" 变成偶数(补 1 或补 0)。

问题4:通信双方应当如何选择数据帧格式和波特率?

复制代码
答:
(1)采用相同的数据帧格式;
(2)采用相同大小的波特率大小。

问题4:通信双方应当如何选择数据帧格式和波特率?

复制代码
答:
(1)采用相同的数据帧格式;
(2)采用相同大小的波特率大小。
相关推荐
龙亘川2 分钟前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
程序喵大人7 分钟前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
Raas10043 分钟前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
一木 之林1 小时前
Dify学习笔记 03 · RAG检索增强生成:三代范式、评估与落地(第40-45、55-56集)
笔记·小程序·交互·dify
专注仿真1 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
jimy12 小时前
C++ 中的 `T&&`:右值引用与转发引用
开发语言·c++
呆呆虫122 小时前
用 orjson 加速 SerpBase 响应解析:基准对比与注意事项
开发语言·php
三佛科技-134163842123 小时前
过认证72W碳化硅方案(12V6A)主控HN1562+HN36228V 典型应用电路、变压器参数分享
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
心疼你的一切3 小时前
Python自动发邮件实战定时发报表
大数据·开发语言·python
Zwawa4 小时前
串口为什么会丢字节:从轮询到中断和环形缓冲区
c语言·单片机·嵌入式