通信协议感悟

server/2024/10/9 6:26:32/

        本文结合个人所学,简要讲述SPI,I2C,UART通信的特点,限制。

1.同步通信

        UART,SPI,I2C三种串行通讯方式,SPI功能引脚为CS,CLK,MOSI,MISO;I2C功能引脚为SCL,SDA,SCL就是时钟线。UART功能引脚为Tx,Rx。时钟线用于发送端和接收端时钟同步,所以SPI,I2C是同步通信,UART是异步通信。因为时钟线的存在,SPI,I2C通信双方的频率可以有一定的差别,如发送方时钟频率为32MHz,接收方频率为33MHz。UART因为没有时钟线,所以发送方和接收方必须保持一致的时钟频率,以降低误码率。

2.引脚设置

        I2C采用开漏输出,需要接上拉电阻,才能提供高电平,4700Ω是常见上拉电阻。SPI和UART引脚复用后,采用推挽模式。需要注意的是,接收引脚都采用输入模式。另外,在配置输出引脚电平时,要先配置电平,再配置方向。避免先配置方向,再配置电平,操作一结束就出现沿跳变(上升沿/下降沿)信号,给系统造成干扰。

f5984fabe90a4279874cc8f624046ce8.png

d1159ba117014c87b84779560b68ea50.png

8e56cf81cb444e43a1bfd042e5c75c2b.png

3.传输特点

        SPI通信速率高达几十Mbps,在PCB设计过程中,通常会加RC滤波电路,减少高频信号的干扰。I2C在标准模式下,通信熟虑为400kbps,高速模式下最高可达3.4MHz。UART常见波特率有9600,115200,但我最高用过2M的波特率(比特率=波特率∗log2N,二进制情况下,波特率与比特率相等)。为了减少丢包,我必须加上帧头帧尾数据长度,CRC冗余校验,并采用错误重传机制。

        三种协议的最大通讯速率关系为:SPI>I2C>UART。SPI通信速率最快,因为SPI软件协议最简单,没有数据应答的过程,SPI主机发送1bit,SPI从机接收1bit,无校验应答过程。I2C通信协议较为复杂,包括开始信号,应答型号,结束信号。UART协议没有时钟线,发送方,接收方,必须保持时钟一致,否则会出现误码。前两者多用于同一PCB板上元器件之间的通信,而UART的传输长度较远,可用于不同设备间通信。uart若采用RS232电平,UART传输距离可达30m(但通信速率不超过20kbit/s);若要超过30m,则需将TTL电平转为RS485差分信号。UART通信距离限制,主要是由于电压信号的衰减,当高电平信号(eg:3.3v)传出一定距离后,可能衰减为1.5V,这时,接收方有可能把高电平识别为低电平,接收数字信号可能由1变0。

       另外,协议使用过程中有些小技巧。以I2C通信为例,通信过程是开始信号-应答信号-数据信号-应答信号-结束信号。但实际通信过程可能是结束信号-开始信号-应答信号-数据信号-应答信号-结束信号。之所以要在通信开始前,发个结束信号,是为了避免上次通信对本次通信造成干扰。

 

 

 


http://www.ppmy.cn/server/129141.html

相关文章

Golang | Leetcode Golang题解之第455题分发饼干

题目&#xff1a; 题解&#xff1a; func findContentChildren(g []int, s []int) (ans int) {sort.Ints(g)sort.Ints(s)m, n : len(g), len(s)for i, j : 0, 0; i < m && j < n; i {for j < n && g[i] > s[j] {j}if j < n {ansj}}return }

设计模式-职责链模式

职责链模式&#xff08;Chain of Responsibility&#xff09;:通过给多个对象请求处理的机会&#xff0c;减少请求的发送者和接受者之间的耦合。将这些对象链接起来&#xff0c;在链中传递请求&#xff0c;知道有一个对象处理这个请求。 职责链模式就是把多个处理者连起来形成…

【Android】浅析六大设计原则

【Android】浅析六大设计原则 六大设计原则是软件开发中常用的设计原则&#xff0c;用来帮助开发者编写灵活、可维护、可扩展的代码。它们是面向对象设计&#xff08;OOD&#xff09;的核心&#xff0c;遵循这些原则能够避免代码中的常见问题&#xff0c;比如代码难以修改、难…

知识改变命运 数据结构【java对象的比较】

0&#xff1a;前言 在基本数据类型中&#xff0c;我们可以直接使用号比较是否相等&#xff0c;还记的学堆哪里时候&#xff0c;插入一个数据&#xff0c;就会与其他数据进行比较&#xff0c;当时我们传入的是Integer类型&#xff0c;在Integer类里面已经实现了compare。 如果…

YOLOv10改进策略【注意力机制篇】| 2024 SCI TOP FCAttention 即插即用注意力模块,增强局部和全局特征信息交互

一、本文介绍 本文记录的是基于FCAttention模块的YOLOv10目标检测改进方法研究。FCAttention是图像去雾领域新提出的模块能够有效整合全局和局部信息、合理分配权重的通道注意力机制&#xff0c;使得网络能够更准确地强调有用特征&#xff0c;抑制不太有用的特征&#xff0c;在…

ffmpeg录制视频功能

本文目录 1.环境配置2.ffmpeg编解码的主要逻辑&#xff1a;3. 捕获屏幕帧与写入输出文件4. 释放资源 在录制结束时&#xff0c;释放所有分配的资源。5.自定义I/O上下文6.对于ACC编码器注意事项 1.环境配置 下载并安装FFmpeg库 在Windows上 从FFmpeg官方网站下载预编译的FFmpeg…

关系数据库标准语言SQL(11,12)

目录 带有EXISTS谓词的子查询 exists谓词 例子 not exists谓词 例子 不同形式的查询间的替换 用EXISTS/NOT EXISTS实现全称量词 用EXISTS/NOT EXISTS:实现逻辑蕴涵 集合查询 并操作UNION 交操作INTERSECT 差操作EXCEPT 基于派生表的查询 select语句的基本格式 带有…

为什么MySQL不建议使用delete删除数据

在MySQL数据库管理中&#xff0c;虽然DELETE语句是一个常用的操作&#xff0c;用于从表中删除记录&#xff0c;但在某些情况下&#xff0c;频繁使用DELETE删除数据可能会带来一系列潜在的问题。以下是对MySQL不建议使用DELETE删除数据的详细解释&#xff1a; 1. 磁盘空间浪费与…