串口通信协议

news/2024/11/17 20:44:58/

同步通信和异步通信

同步通信:需要时钟信号的约束,在时钟信号的驱动下两方进行数据交换,一般会选择在上升沿或者下降沿进行数据的采样,以及时钟极性和时钟相位【eg.SPI,IIC】。

异步通信:不需要时钟信号的同步,通过(起始位,数据帧,奇偶检验位....)的格式进行数据的传输,但是需要设定相应的波特率,来确定相同的传输频率

物理层:

电平转换芯片我用的是CH340、PL2303、CP2102、FT232

设备A借助串口的发送和接受引脚连接到电平转换芯片TXD和RXD,然后接借助电平转换芯片将TTL电平转化为USB电平,然后连接到给电脑端。

协议层

 串口协议的一个数据包,由起始位,数据帧,奇偶检验位,停止位组成,

1)空闲位

UART协议规定,当总线处于空闲状态‘1’为高电平,表示当前电路在数据传输。

2)起始位和停止信号

因为空闲状态是高电平,所以起始位要是一个低电平,表示数据传输的开始。

1个停止位:停止位位数的默认值。
2个停止位:可用于常规USART模式、单线模式以及调制解调器模式。
0.5个停止位:在智能卡模式下接收数据时使用。
1.5个停止位:在智能卡模式下发送和接收数据时使用。

停止位越多,数据传输的越稳定,但是当前的数据传输的速度也就越慢。

3)有效数据

有效数据传输的长度为5-9位,先发送低位,再发送高位,低电平为0,高电平为1。

4)数据的检验

奇检验:数据帧加上检验位的1个数为奇数则检验成功,反之则检验失败。

偶检验:数据帧加上检验位的1个数位偶数则检验成功,反之则检验失败。

5)波特率

每秒传输的bit,eg:9600,1秒传输9600bit,相当于传输一个bit需要1/9600=104.2us。

USART框图理解【重点!!!】

 CPU通过总线往DR寄存器写入数据,数据被并行的传入到TDR【发送数据寄存器】,然后并行的传入到移位寄存器,移位寄存器将数据串行一位一位的发送出去,接收数据也是一样的步骤,串行的发送的接收移位寄存器,然后并行的发送到接收数据寄存器【RDR】,然后并行的发送给CPU(CPU读取数据)

 

代码详解:深度理解STM32的串口实验(寄存器)【保姆级教程】_夜路难行々的博客-CSDN博客_stm32串口寄存器


http://www.ppmy.cn/news/8398.html

相关文章

Go 并发

来自 《Go 语言从入门到实战》 的并发章节学习笔记,欢迎阅读斧正,感觉该专栏整体来说对有些后端编程经验的来说比无后端编程经验的人更友好。。 Thread VS Groutine 创建时默认 Stack 大小:前者默认 1M,Groutint 的 Stack 初始化…

uniCloud云开发----4、uniCloud云开发进阶使用方法

uniCloud云开发进阶使用方法前言1、云对象的importObject的创建和使用(1)创建云对象(2)编辑云对象(3)在.vue文件中调用云对象(4)在.vue文件中调用方法2、客户端直接连接数据库(1)直接在客户端引…

Threejs实现鼠标点击人物行走/镜头跟随人物移动/鼠标点击动画/游戏第三人称/行走动作

1,功能介绍 Threejs获取鼠标点击位置、实现鼠标点击人物行走、人物头顶显示名称标签、镜头跟随人物移动并且镜头围绕人物旋转,类似游戏中第三人称、鼠标点击位置有动画效果,如下效果图 2,功能实现 获取鼠标点击位置,…

《Nuitka打包实战指南》实战打包OpenCV-Python

实战打包OpenCV-Python 打包时解决掉的问题: ModuleNotFoundError: No Module named cv2ImportError: numpy.core.multiarray failed to import打包示例源码: 请看文章末尾 版本信息: opencv-python==4.5.1.48 numpy==1.23.2 Nuitka==0.6.19.1 打包系统: Windows10 64…

【Python】sklearn机器学习之Birch聚类算法

文章目录基本原理sklearn调用基本原理 BIRCH,即Balanced Iterative Reducing and Clustering Using Hierarchies,利用分层的平衡迭代规约和聚类,特点是扫描一次数据就可以实现聚类, 而根据经验,一般这种一遍成功的算…

AlphaGo简易版MuGo源码解析

文章目录前言源码实现MuGo的输入数据模型的搭建模型的训练参考链接结语前言 自从AlphaGo横空出世,战胜李世石后,AI围棋如雨后春笋一般遍地开花。阅读DeepMind的论文有时还是隔靴搔痒,只有钻到代码里,才能一探究竟。于是&#xff…

Spring 核心概念 IOC/DI IOC容器 Bean

目录 一:代码书写现状 二:核心思想 一:代码书写现状 常规操作如上,但存在着问题,将项目上线后,需要将数据层进行更换,更换如下: 数据层更换后,业务层也需要进行更换,更换如下: 数据…

spring boot 实现搜索引擎的设计思想

实现思路 索引构建模块 搜索模块 数据库模块 索引模块 对于搜索一个东西,我们很自然的能想到遍历去查找。比如我要查找一本书叫 《红楼梦》,那么我直接在所有结果中进行遍历查找,当我们找到书名为《红楼梦》的结果时,就代表我们…