当前位置: 首页 > news >正文

通信协议感悟

        本文结合个人所学,简要讲述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通信为例,通信过程是开始信号-应答信号-数据信号-应答信号-结束信号。但实际通信过程可能是结束信号-开始信号-应答信号-数据信号-应答信号-结束信号。之所以要在通信开始前,发个结束信号,是为了避免上次通信对本次通信造成干扰。

 

 

 

相关文章:

通信协议感悟

本文结合个人所学,简要讲述SPI,I2C,UART通信的特点,限制。 1.同步通信 UART,SPI,I2C三种串行通讯方式,SPI功能引脚为CS,CLK,MOSI,MISO;I2C功能引…...

IDEA几大常用AI插件

文章目录 前言列表GPT中文版TalkXBito AIIDEA自带的AI 前言 最近AI、GPT特别火,IDEA里面又有一堆插件支持GPT,所以做个专题比较一下各个GPT插件 列表 先看idea的plugins里支持哪些,搜索“GPT”之后得到的,我用下来感觉第一第二和…...

51单片机学习第六课---B站UP主江协科技

DS18B20 1、基本知识讲解 2、DS18B20读取温度值 main.c #include<regx52.h> #include"delay.h" #include"LCD1602.h" #include"key.h" #include"DS18B20.h"float T; void main () {LCD_Init();LCD_ShowString(1,1,"temp…...

sadTalker本地编译

SadTalker一款开源的可生成逼真的人像动画的工具。它利用深度学习技术&#xff0c;根据输入的图像和音频&#xff0c;生成具有生动表情和动作的视频。用户可以通过上传照片或使用预设的模型&#xff0c;轻松创建个性化的动画内容. 以上是官网的图, 下边是本地部署生成的,效果差…...

强化学习核心概念与公式总结

强化学习核心概念与公式总结 1. 核心概念 1.1 智能体(Agent)和环境(Environment) 智能体:学习和做决策的实体环境:智能体交互的外部系统1.2 状态(State) 描述环境在特定时刻的情况1.3 动作(Action) 智能体可以执行的操作1.4 奖励(Reward) 环境对智能体动作的即时反馈1.5 策…...

基础算法--双指针【概念+图解+题解+解释】

更多精彩内容..... &#x1f389;❤️播主の主页✨&#x1f618; Stark、-CSDN博客 本文所在专栏&#xff1a; 数据结构与算法_Stark、的博客-CSDN博客 其它专栏&#xff1a; 学习专栏C语言_Stark、的博客-CSDN博客 项目实战C系列_Stark、的博客-CSDN博客​​​​​​ 座右铭&a…...

国产化系统/鸿蒙开发足浴店收银源码-收缩左侧———未来之窗行业应用跨平台架构

一、左侧展开后 二、代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head><title></title><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><style t…...

如何从硬盘恢复丢失/删除的视频

您是否想知道是否可以恢复已删除的视频&#xff1f; 幸运的是&#xff0c;您可以使用奇客数据恢复从硬盘驱动器、SD 卡和 USB 闪存驱动器恢复已删除的视频文件。 你有没有遇到过这样的情况&#xff1a;当你随机删除文件以释放空间时&#xff0c;你不小心按下了一些重要视频的…...

《Effective C++》第三版——设计与声明(1)

参考资料&#xff1a; 《Effective C》第三版 注意&#xff1a;《Effective C》不涉及任何 C11 的内容&#xff0c;因此其中的部分准则可能在 C11 出现后有更好的实现方式。 条款 18&#xff1a;让接口容易被正确使用&#xff0c;不易被误用 好的接口很容易被正确使用&…...

数值计算的程序设计问题举例

### 数值计算的程序设计问题 #### 1. 结构静力分析计算 **涉及领域**&#xff1a;工程力学、建筑工程 **主要问题**&#xff1a;线性代数方程组&#xff08;Linear Algebraic Equations&#xff09; **解释说明**&#xff1a; 在结构静力分析中&#xff0c;我们需要解决复杂的…...

Java之方法的使用

修饰符 返回值 方法名称&#xff08;形式参数&#xff09;{ } 当无参数的时候形式参数中什么都不写。 列如求两个数相加 修饰符可有可无。 方法重载&#xff1a; 1.方法名相同 2.参数列表不同 3。返回值不影响重载...

sudo 命令:掌握系统权限控制,实现安全高效管理

一、命令简介 ​sudo​ 命令允许系统管理员授权普通用户执行特定命令&#xff0c;并以管理员身份运行这些命令&#xff0c;通常需要输入用户自己的密码。 ​​ sudo 全称是"substitute user do"&#xff0c;意为“替用户做”&#xff0c;也就是“以另一个用户的身…...

AndroidStudio导入so文件

点击app 右键依次选择New-Floder-JNI Floder 创建jni目录 将需要的so文件拷贝到jni目录 在app目录下&#xff0c;build.gradle文件的android{}中添加&#xff1a; sourceSets {main{jniLibs.srcDirs [src/main/jni]}}点击一下Sync Project with Gradle Files 然后编译生成AP…...

Kuebernetes 群集基于 Docker 部署

Kuebernetes 群集基于 Docker 部署 实验报告资源列表基础环境一、准备 Docker1、安装 Docker 二、安装 Kubeadm 工具1、配置 yum 源2、安装 Kubeadm 工具 三、初始化 Master 节点1、配置 Master 节点2、常见故障 四、Node 节点加入集群五、部署网络插件&#xff08;CNI&#xf…...

追随 HarmonyOS NEXT,Solon v3.0 将在10月8日发布

Solon &#xff08;开放原子开源基金会&#xff0c;孵化项目&#xff09;原计划10月1日发布 v3.0 正式版。看到 HarmonyOS NEXT 将在 10月8日启用公测&#xff0c;现改为10月8日发布以示庆贺。另外&#xff0c;Solon 将在2025年启动“仓颉”版开发&#xff08;届时&#xff0c;…...

服装时尚与动漫游戏的跨界联动:创新运营与策划策略研究

摘要&#xff1a;本论文聚焦于服装时尚与动漫游戏的跨界联动现象&#xff0c;深入探讨其在运营和策划方向的策略与实践。通过对相关理论的梳理和实际案例的分析&#xff0c;阐述了跨界联动的背景、意义、模式以及面临的挑战。研究发现&#xff0c;成功的跨界联动能够实现品牌价…...

Redis中String类型的常用命令(append,getrenge,setrange等命令)

Redis----String命令 前言.常见的String存储类型. 常见命令1. set 命令2. get 命令3. mget命令与mset命令4. setnx命令5. setex与psetex命令6. incr与incrby与incrbyfloat命令7. decr与decrby命令8. append命令9. getrange和setrange命令10. strlen命令. 前言. 常见的String存…...

深度拆解:如何在Facebook上做跨境电商?

国内社交媒体正在逐渐兴盛&#xff0c;海外也不例外。在数字营销的新时代&#xff0c;Facebook已成为跨境电商不可或缺的平台之一。通过Facebook的巨大流量&#xff0c;卖家可以更好的触及潜在消费者&#xff0c;以实现销售增长。本文就深度拆解一下&#xff0c;卖家如何利用Fb…...

为啥数据需转换成tensor才能参与后续建模训练

将数据转换为Tensor&#xff08;张量&#xff09;格式用于深度学习和机器学习模型训练&#xff0c;主要是出于以下几个关键原因&#xff1a; 数值计算的效率&#xff1a;Tensor&#xff08;由PyTorch、TensorFlow等库提供&#xff09;是在GPU上执行高效的数值运算的数据结构。相…...

leetcode:380. O(1) 时间插入、删除和获取随机元素

实现RandomizedSet 类&#xff1a; RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时&#xff0c;向集合中插入该项&#xff0c;并返回 true &#xff1b;否则&#xff0c;返回 false 。bool remove(int val) 当元素 val 存在时&#xff0…...

【Kanzi 资源系统完全笔记】

一、Resource 的类层次结构Kanzi 中所有资源&#xff08;Resource&#xff09;都继承自 Object 基类。下图是常见的资源继承体系&#xff08;根据图片整理&#xff09;&#xff1a;Object└── Resource├── GPUResource # 位于 GPU 显存中的资源&#xff08;纹理、…...

FPGA频率测量实战:从原理到实现,三种方法深度解析与选型指南

1. FPGA频率测量的工程意义与挑战 在数字电路设计中&#xff0c;频率测量就像给信号"把脉"&#xff0c;是评估系统健康状况的基础操作。想象你正在开发一款智能温控器&#xff0c;需要精确测量风扇转速信号&#xff1b;或者设计无线通信模块&#xff0c;要监控本振频…...

开源项目本地化实战:从Presentify翻译项目看国际化协作

1. 项目概述&#xff1a;一个被忽视的开源宝藏如果你是一个经常需要做演示、录屏或者线上教学的开发者、讲师或者知识分享者&#xff0c;那你一定遇到过这个痛点&#xff1a;如何在屏幕上清晰地标注你的鼠标点击、按键操作&#xff0c;让观众能毫不费力地跟上你的思路&#xff…...

模块二-数据选择与索引——08. 条件筛选

08. 条件筛选 1. 概述 条件筛选是数据分析中最常用的操作之一。通过布尔表达式&#xff0c;可以快速筛选出满足特定条件的数据行&#xff0c;实现数据过滤、异常检测、子集提取等功能。 import pandas as pd import numpy as np# 创建示例数据 np.random.seed(42) df pd.DataF…...

谷歌seo如何发布外链? 新站首月发布的频率与节奏

域名注册后的前30天&#xff0c;谷歌爬虫会对新站点进行密集的抓取与记录。这个阶段的站点就像一张白纸&#xff0c;每一个外源信号都会被放大记录。很多站长习惯在上线首周就去购买几百条低质链接&#xff0c;试图拉高权重&#xff0c;但这往往会导致站点在沙盒期停留更久。根…...

Excel数据同步ERP/CRM太麻烦?一个Python脚本搞定多系统自动填充(基于GoBot)

Excel数据同步ERP/CRM太麻烦&#xff1f;一个Python脚本搞定多系统自动填充&#xff08;基于GoBot&#xff09; 每次月底看着财务同事在ERP系统里逐条录入Excel数据&#xff0c;市场部同事又在CRM里重复同样的操作&#xff0c;这种低效场景你一定不陌生。数据在不同系统间的孤岛…...

零代码到全球上线:我用 Dify + EdgeOne Pages 为跨境电商打造了一个 7×24 小时 AI 智能客服

文章目录每日一句正能量目录1. 引言&#xff1a;一个独立站卖家的深夜焦虑2. 技术选型&#xff1a;为什么选择 Dify EdgeOne Pages&#xff1f;3. 场景拆解&#xff1a;跨境电商客服的三大核心痛点3.1 痛点一&#xff1a;意图混杂&#xff0c;一句话可能包含多个需求3.2 痛点二…...

【限时公开】谷歌内部未文档化Gemini JavaScript SDK隐藏能力:流式响应中断控制、上下文压缩率提升63%实测数据

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Gemini JavaScript SDK核心能力概览 Gemini JavaScript SDK 是 Google 官方提供的轻量级客户端库&#xff0c;专为在浏览器和 Node.js 环境中无缝集成 Gemini 模型能力而设计。它抽象了底层 HTTP 请求、…...

AD导出Gerber到CAM350拼板全流程避坑指南(附文件漏导出自查清单)

AD导出Gerber到CAM350拼板全流程避坑指南&#xff08;附文件漏导出自查清单&#xff09; 在硬件产品开发中&#xff0c;PCB设计到生产的转换环节往往隐藏着诸多"暗礁"。我曾亲眼见过一个团队因为钻孔文件覆盖问题导致生产延误两周&#xff0c;损失近十万元。本文将分…...

基于图特征选择与XGBoost的电动公交预测性维护模型构建

1. 项目概述&#xff1a;从数据洪流到精准预警的挑战在电动公交的日常运营中&#xff0c;车辆控制器局域网&#xff08;CAN&#xff09;总线每秒都在产生海量的传感器数据&#xff0c;从电池电压、电机温度到刹车片厚度&#xff0c;这些数据流如同车辆的“生命体征”。预测性维…...