【STM32】USART串口协议
1 通信接口
通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统
通信协议:制定通信的规则,通信双方按照协议规则进行数据收发
USRT:TX是数据发送引脚,RX是数据接受引脚;
I2C:SCL是(Serial clock)时钟,SDA(Serial Data)是数据;
SPI:SCLK是时钟(Serial Clock),MOSI(Master output Slave Input)主机输出数据脚,MISO(Master intput Slave output)主机输入数据脚,CS(chip select) 片选:用于指定通信对象;
CAN通信:引脚CAN_H、CAN_L,用两个引脚表示差分数据;
USP通信:引脚是DP(Data positive)和DM(Data Minus)(D+/D-),也是差分数据脚。
全双工:同时双向通信,一般有两根通信线(一根发,一根收);
I2C和SPI有单独时钟线,所以它们是同步的,接收方可以在时钟信号的指引下进行采样。
USART、I2C、SPI都是单端电平,即它们引脚的高低电平都是对GND的电压差,还需要GND
CAN和USB是差分信号,它是靠两个差分引脚的电压差来传输信号的,不需要GND。提高抗干扰特性
1.1 串口通信
串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信
单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大地扩展了单片机的应用范围,增强了单片机系统的硬件实力
USB转串口模块:把串口协议转换成USB协议
陀螺仪传感器模块、蓝牙串口模块
1.2 硬件电路
简单双向串口通信有两根通信线(发送端TX和接收端RX)
TX与RX要交叉连接
当只需单向的数据传输时,可以只接一根通信线
当电平标准不一致时,需要加电平转换芯片
1.3 电平标准
电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种;
TTL电平:+3.3V或+5V表示1,0V表示0
RS232电平:-3~-15V表示1,+3~+15V表示0
RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(差分信号)
1.4 串口参数及时序
波特率:串口通信的速率(Band、比特率)
波特率是1000bps,表示1m发送1000位,每一位的时间就是1ms
起始位:标志一个数据帧的开始,固定为低电平
串口的空闲状态是高电平,打破高电平
数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行
校验位:用于数据验证,根据数据位计算得来(奇偶校验)
停止位:用于数据帧间隔,固定为高电平
发送0xf的电平
串口中,每一行字节都装在一个数据帧里,每个数据帧由起始位、数据位、停止位组成的;第二张图多了校验位。
1.5 串口时序
发送0x55,无校验,波特率是9600,一位的时间是1/9600 = 104us
低位先行(0101 0101)-》(1010 1010)
发送0xAA,无校验,波特率是9600,一位的时间是1/9600 = 104us
低位先行(1010 1010)-》(0101 0101)
下面同理
发送0x55,无校验,波特率是4800,一位的时间是1/4800 = 208us
低位先行(0101 0101)-》(1010 1010)
发送0x55,加了偶校验,波特率是4800,一位的时间是1/4800 = 208us
低位先行(0101 0101)-》(1010 1010),不用增加1
停止位也是可以设置的
上图的停止位是一位,下图的停止位是两位。
2 USART简介
USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发器
USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里
自带波特率发生器,最高达4.5Mbits/s
可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2)
可选校验位(无校验/奇校验/偶校验)
支持同步模式、硬件流控制、DMA、智能卡、IrDA、LIN
STM32F103C8T6 USART资源: USART1(APB2)、 USART2(APB1)、 USART3(APB1)
2.1 USART框图
先忽略寄存器,看引脚部分。左上角有TX和RX,就是发送和接收引脚,后面几个暂时不用管。
右上角是发送数据寄存器和接收数据寄存器,这两个寄存器占用同一个地址。
TDR是只写的,数据写到TDR中;RDR是只读的,数据从RDR读出。
发送移位寄存器的作用是:把一个字节的数据一位一位地移出去,正好对应串口协议的波形数据位。
工作方式:例如某时刻给TDR写入0x55这个数据,在寄存器里存储是0101 0101,此时硬件检测写入了数据,就会检查当前移位寄存器是不是有数据正在移位,如果没有,这个0101 0101就会立刻全部移动到发送移位寄存器,准备发送;当数据从TDR移动到移位寄存器时,会置一个标志位TXE,发送寄存器空,检查这个标志位如果置1了,就可以在TDR写入下一个数据了。当TXE置1时,数据其实没有发送出去,只要数据从TDR转移到发送移位寄存器了,TXE就会置1,就可以重新写入数据了。
然后发送移位寄存器就会在下面这里的发生控制器的驱动下,向右移位,然后一位一位的把数据输出到TX引脚,这里实现向右移位的,所以正好和串口通信规定的低位先行是一致的。当数据移位完成后,新的数据就会再次自动的从TDR转移到发送移位寄存器里来;如果当前移位还没有完成,TDR的数据就会进行等待,一旦移位完成,就会立刻转移过来。有了TDR和移位寄存器的双重缓存,可以保证连续发送数据的时候,数据帧之间不会有空闲。简单来说,数据一旦从TDR转移到移位寄存器了,不管有没有完成,就立刻把下一个数据放在TDR等着,一旦移完了,新的数据就会立刻跟上。
接收端类似的。数据从RX引脚通向接收移位寄存器,在接收器控制驱动下,一位一位的读取RX电平,先放在最高位,然后向右移,移位8次之后,就能接收一个字节了,低位先行,所以接收移位寄存器是从高位往低位这个方向移动的,之后当一个字节移位完成后,这一个字节的数据就会整体的一下子转移到接收数据移位寄存器RDR里,在转移的过程中也会置一个标志位RXNE(TX Not Empty,接收数据寄存器非空),当检测到RXNE置1后,就可以把数据读走了,同样,这里也是两个寄存器进行缓存,当数据从移位寄存器转移到RDR时,就可以直接接收下一位帧数据了,这就是USART的整个工作流程。
下面是发送器控制,用来控制发送移位寄存器工作的,接收器控制是控制接收移位寄存器工作的。
左边有硬件数据流控,如果发送设备发送的太快,接收设备来不及处理,就会出现数据覆盖丢失的现象,有了流控,可以避免这个问题。两个引脚,nRTS和nCTS,nRTS是请求发送,是输出脚(能不能接收);nCTS是清除发送,是输入脚(接收信号),n是低电平有效。(TX和CTS是一对,RX和RTX是一对)。
右边是用于产生同步的时钟信号。
相关文章:

【STM32】USART串口协议
1 通信接口 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 USRT:TX是数据发送引脚,RX是数据接受引脚; I2C…...

淋雨试验箱
产品概述 KDZD-IPX34淋雨试验箱是对户外电子电工产品的防水性能测试的一种装置。该设备通过不同尺寸的喷嘴喷水,产品外壳表面淋水冲洗来检测防水性能。在测试物品时,将样品放在转台上,试验启动时,水流通过压力计和流量计控制水…...

02-MQ入门之RabbitMQ简单概念说明
二:RabbitMQ 介绍 1.RabbitMQ的概念 RabbitMQ 是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按…...

敏感信息泄漏怎么破?来试试极狐GitLab 的密钥检测吧
前言 在应用程序开发过程中,一个很常见的问题就是:开发人员为了本地 debug 方便,会 hardcode 一些信息,比如连接数据库的用户名、密码、连接第三方 app 的 token、certificate 等,如果在提交代码的时候没有及时删除 ha…...

go学习之网络编程
文章目录 网络编程1、网络编程的基本介绍2.网络编程的基础知识1)协议(tcp/ip)2)OSI与TCP/ip参考模型3)ip地址4)端口(port)介绍5)tcp socket编程的客户端和服务器端 3.socket编程快速入门4.经典项目-海量用户即时通讯系…...
将数组中的数逆序存放
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。 输入格式: 输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。 输出格式:…...

Unity Web 浏览器-3D WebView中有关于CanvasWebViewPrefab
一、CanvasWebViewPrefab默认设置 这个是在2_CanvasWebViewDemo示例场景文件中可以可以查看得到,可以看出CanvasWebViewPrefab的默认配置如下。 二、Web 浏览器网页和Unity内置UI的渲染顺序 1、如果你勾选了以下这个Native 2D Mode选项的话,那么Unit…...

一款计算机顶会爬取解析系统 paper info
一款计算机顶会爬取解析系统 paper info 背景项目实现的功能 技术方案架构设计项目使用的技术选型 使用方法本地项目部署使用ChatGPT等大模型创建一个ChatGPT助手使用阿里云 顶会数据量 百度网盘pfd文件json文件 Q&A github链接 :https://github.com/codebricki…...

CommonJs模块化实现原理ES Module模块化原理
CommonJs模块化实现原理 首先看一个案例 初始化项目 npm init npm i webpack -D目录结构如下: webpack.config.js const path require("path"); module.exports {mode: "development",entry: "./src/index.js",output: {path: p…...

实验4.1 静态路由的配置
实验4.1 静态路由的配置 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施1.设置交换机和路由器的基本配置。2.使用display ip interface brief命令查看接口配置信息。3.配置静态路由,实现全网互通。 六、任务验收七、任务小结 一、任务描述 某公司刚…...

Java网络编程-深入理解BIO、NIO
深入理解BIO与NIO BIO BIO 为 Blocked-IO(阻塞 IO),在 JDK1.4 之前建立网络连接时,只能使用 BIO 使用 BIO 时,服务端会对客户端的每个请求都建立一个线程进行处理,客户端向服务端发送请求后,…...

ShenYu网关注册中心之HTTP注册原理
文章目录 1、客户端注册流程1.1、读取配置1.1.1、用于注册的 HttpClientRegisterRepository1.1.2、用于扫描构建 元数据 和 URI 的 SpringMvcClientEventListener 1.2、扫描注解,注册元数据和URI1.2.1、构建URI并写入Disruptor1.2.2、构建元数据并写入Disruptor1.2.…...

探索GameFi:区块链与游戏的未来融合
在过去的几年里,区块链技术逐渐渗透到各个领域,为不同行业带来了前所未有的变革。其中,游戏行业成为了一个引人注目的焦点,而这种结合被称为GameFi,即游戏金融。GameFi不仅仅是一个概念,更是一场区块链和游…...

Windows下使用CMake编译lua
Lua 是一个功能强大、高效、轻量级、可嵌入的脚本语言。它支持程序编程、面向对象程序设计、函数式编程、数据驱动编程和数据描述。 Lua的官方网站上只提供了源码,需要使用Make进行编译,具体的编译方法为 curl -R -O http://www.lua.org/ftp/lua-5.4.6.…...

【C语言(十一)】
C语言内存函数 一、memcpy使用和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); • 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 • 这个函数在遇到 \0 的时候并不会停下来。 • 如果sourc…...

系统运行占用过高
1、CPU过高的问题排查 示例代码: public class Test { static class MyThread extends Thread { public void run() { // 死循环,消耗CPU int i 0; while (true) { i; } } } public static void main(String args[]) throws InterruptedException { ne…...

HTML---初识CSS
文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.CSS概念 CSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述HTML文档外观样式的标记语言。通过CSS,开发者可以在不改变HTML标记结构的情况…...

监控pod 容器外网请求网络带宽,过滤掉内网、基于k8spacket开发、prometheus开发export
首先安装k8spacket 安装k8spacket遇到问题,下载插件一直能不能下载成功,pod不能启动。所有手动下载处理。 helm repo add k8spacket https://k8spacket.github.io/k8spacket-helm-chart helm pull k8spacket/k8spacket打开values.yaml 文件 手动下载插…...

windows下docker环境安装
开启硬件虚拟化技术 win10中开启 Hyper-V Win10 下是否开启硬件虚拟化技术,在控制面板,启用 window 功能,找到 Hyper-V 选项,点勾选确认。如图: Windows 11 家庭中文版新增 Hyper-V选项 注意以下的解决方案来自win1…...

Python小程序 - 表格数值统计
题设:Excel表格中,计算如下图所示不同颜色(蓝、黄、桔)单元格值:各颜色填涂的单元格值的总和条件: - Excle表格中 - 分色标记,单元格有值 - 开始列(当前为D),…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...