STM32笔记15--串口通信基本原理

2023-11-05

15.1、串行通信接口背景知识

15.2、STM32F1串口框图讲解

参考资料:《STM32开发指南--库函数》5.3,usart串口文件夹/第九章,串口实验

1、串行通信接口背景知识

首先,处理器与外部通信有两种常见方式:并行通信和串行通信:

(1)并行通信:原理是数据各个位同时传输,优点是传输速度快,缺点是占用引脚资源多。

(2)串行通信:原理是数据各个位按顺序传输,优点是占用引脚资源少,缺点是速度慢。

其次,在串行通信的基础上,传输又分为:单工,半双工和全双工:
(1)单工:只支持数据在一个方向上的传输;

(2)半双工:允许数据在两个方向上的传输,但在某一个时刻,只允许数据在一个方向上的传输,实际是一种切换方向的单工通信;

(3)全双工:允许数据同时在两个方向上传输,因此,全双工通信要求通信两端都有接收和发送数据的能力;

再次,串行通信还可以分为同步通信和异步通信,

(1)同步通信指的是,带同步时钟信号的通信方式,数据的传输以时钟上升沿或者下降沿来触发的。例如SPI通信、IIC通信等

(2)异步通信指的是,不带有时钟信号的通信方式,在异步通信中要求通信双方事先约定好波特率,也就是通信的速度,例如UART(通用异步收发器)、单总线等

 2、STM32F1串口通信框图讲解

2.1、STM32的串口通信接口

UART:通用异步收发器

USART:通用同步异步收发器

以STM32F103ZET6为例,共有3个USART和2个UART

2.2、UART异步通信方式引脚连接示意图

 上图中,RxD:数据输入引脚,用于接收数据;TxD:数据输出引脚,用于发送数据。

下图为STM32F1系列五个串口对应的输入,输出引脚:

 2.3、STM32串口异步通信需要定义的参数

PS:奇偶校验位:所谓奇偶校验位,分别是奇校验和偶校验,如果是奇校验,就是在传输的数据最后一位补1或0,使得传输的数据共有奇数个1,偶校验的思想同理可得。

2.4、对USART框图的讲解

CPU接收数据时的路径:

 CPU发送数据时的路径:

需要注意的是,如果是异步通信方式,那么无论是发送还是接收数据,都需要约定好波特率,那么波特率是怎么产生的呢,波特率的产生如下图:

 发送器时钟和接收器时钟产生了发送端和接收端的波特率,这两个时钟都来源于最下方的波特率发生器。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32笔记15--串口通信基本原理 的相关文章

  • 浅拷贝和深拷贝的区别

    浅拷贝和深拷贝 总结 浅拷贝对象数据共享 深拷贝是一个完全独立的对象 因此对象数据不共享 浅拷贝 Shallow Copy 浅拷贝是指创建一个新的对象 但是该新对象只是原始对象的一个副本 具体而言 浅拷贝会创建一个新的对象 并将原始对象的引
  • matlab 载波调制,考虑载波和采样频率的2PSK调制 MATLAB仿真

    功能 生成psk调制信号 创建日期 2016 7 27 创建人 Alice 764499604 qq com clear all close all clc max 100 g zeros 1 max g randint 1 max 长度为
  • 5000月薪与50000月薪的Linux运维的区别

    做 运维 感觉像网管怎么办 新工作运维3个多月 天天就是维护重启服务器 更新代码 感觉这样下去几年后就没有什么竞争力了 这是知乎的一个热门运维问题 也是很多刚进入运维工作的同学面临的心境 确实 运维 可能是分水岭最明显的职位之一 有的人毕业
  • Docker修改容器内部文件的方法

    Docker修改容器内部文件的方法一共有三种 下面进行一一介绍 1 进入容器内部修改 使用下面的命令以命令行的形式可以进入容器的内部对文件进行修改 docker exec it 容器ID bin bash 不过里面没有vim 需要自行安装

随机推荐

  • Qt Translation 遇到的一些问题总结

    文章目录 坑1 无法生成ts文件 坑2 ts文件的中文乱码 坑3 不能直接翻译全局变量 静态变量 符号常量字符串 官方文档 Internationalization with Qt 贴一个比较好的总结 Qt中 软件多语言国际化翻译的方法与步
  • C#使用Tesseract

    C 使用Tesseract 前言 上篇文章讲述了 Tesseract orc的安装和使用 这片文章讲一讲在net平台上面如何使用 Tesseract orc 没有那么复杂的安装教程 我在使用的时间还是基于Framework 在网上下载了好多
  • Xmind8 绿色版安装教程

    特别说明 软件仅供技术交流 请勿用于商业及非法用途 如产生法律纠纷与本人无关 Xmind是一款非常专业的思维导图软件 收费好几百元 不过还是很多用户 因为目前用的最多 也简单易用 XMind界面友好 功能优秀 可用性极强 从而数百万人选择了
  • linux系统编程(十一)线程同步(完结)

    文章目录 1 线程同步 1 1 同步概念 1 1 1 线程同步 1 1 2 数据混乱原因 1 2 互斥量mutex 1 2 1 主要应用函数 1 2 1 1pthread mutex init函数 1 2 1 2 pthread mutex
  • Qt设置字体类型及添加字体文件

    Qt 添加字体文件 1 设置支持的字体 QFont font font setFamily 填写字体名称 2 通过字体文件来设置字体 字体的名称可以是自带的 也可以是外部的 如果是外部字体文件 则需要获取字体名称 使用QFontDataba
  • 表格的标签介绍

  • Javaweb实现员工信息管理系统

    员工信息管理系统 一 项目介绍 1 项目用到的技术栈 开发工具 idea 语言 java js html ajax 数据库 MySQL 服务器 Tomcat 框架 mybatis jQuery layui 2 项目实现功能 管理员 部门负责
  • go 进阶 三方库之 go-redis

    目录 一 基础 初始化连接 使用示例 1 常用操作与string 2 操作hash类型 3 操作list 4 操作set 5 操作zset 6 发布与订阅 7 事物操作 8 执行Lua脚本 二 基于redis实现分布式锁 封装锁结构体 lu
  • 机器学习——生成分类数据的坐标系边界需要用到的技术方法

    0 前言 如果遇到一种应用场景需要将x轴数据和y轴数据所有点映射到坐标系中 需要得到坐标系中x和y映射的坐标点 就要用到meshgrid把x和y映射到坐标系中 然后把得到的结果用ravel把结果转成一维的 用np c 把x数据和y数据堆叠在
  • HTML01

    若有 double p x 10 int i 5 使指针变量 p指向元素 x 5 的语句为 正确答案 A 你的答案 A 正确 p x i p x p x i p x i 设函数fun和实参数组的说明形式为 void fun char ch
  • 解决Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“报错

    Microsoft Visual C 14 0 or greater is required Get it with Microsoft C Build Tools 具体报错如下 Building wheel for cyac pyproj
  • 老猿学5G:融合计费基于流计费的触发器Triggers

    前往老猿Python博文目录 一 概述 每个触发条件都是一个可计费事件 SMF中的功能体CTF在用户上网时达到一定条件就会向CHF上报流量 而CTF什么时候触发流量上报是由CTF中的触发器来控制的 当用户UE发起上网行为时 SMF中的CTF
  • 汇编逆向-Qt

    Qt源码解析 索引 汇编逆向 授权破解示例分析 问题模拟 运行环境 x64dbg Windows 10 Qt5 12 3 示例代码 使用Qt显示当前时间 模拟一般授权软件的时间判断逻辑 当时间超过授权日期后就提示授权过期 没有Qt经验的同学
  • Java中方法定义和调用的学习

    方法其实就是若干语句的功能集合 参数 原料 就是进入方法的数据 返回值 原产物 就是从方法中出来的数据 定义方法的完整格式 修饰符 返回值类型 方法名称 参数类型 参数名称 方法体 return 返回值 修饰符 现阶段的固定写法 publi
  • VSCode 之 设置 settings.json 配置文件

    这篇文章主要介绍了 VSCode settings json 配置 文中通过示例代码介绍的非常详细 对大家的学习或者工作具有一定的参考学习价值 VSCode 从插件库里安装 eslint 和 prettier 两个 插件 也 实现自动格式化
  • 微信小程序怎么和后台服务器交互

    要实现微信小程序和后台服务器之间的交互 可以使用以下方式 1 小程序发起HTTP请求 后台服务器接收和处理请求 返回相应结果 这是最常用的方式 可以使用小程序提供的wx request API来发送HTTP请求 后台服务器可以使用任何语言和
  • 获取动画状态机中动画片段的时间长度

    获取动画状态机中动画片段的长度 非常简单的代码 public float GetClipLength Animator animator string clipName if null animator string IsNullOrEmp
  • wps保存后怎么恢复

    单击窗口左上角的 WPS文字 或WPS表格 在出现的菜单中单击 备份管理 也可以通过任务窗格 文件菜单等 好多入口 单击右下角的 查看其他备份 按钮 找一下有没有你要的历史文档
  • jenkins学习笔记第十六篇 Jenkins·配置 Publish Over SSH 插件——访问远程服务器

    一般而言 Jenkins 不单单需要做到将远程仓库里的代码进行编译或者打包 还需要将编译后的代码上传到远程服务器 并且执行一些其他的命令 即 Github代码 编译得到war包 上传远程服务器 执行远程命令 Jenkins 是通过 SSH
  • STM32笔记15--串口通信基本原理

    15 1 串行通信接口背景知识 15 2 STM32F1串口框图讲解 参考资料 STM32开发指南 库函数 5 3 usart串口文件夹 第九章 串口实验 1 串行通信接口背景知识 首先 处理器与外部通信有两种常见方式 并行通信和串行通信