首页 > 其他分享 >通信协议整理

通信协议整理

时间:2024-12-26 22:42:00浏览次数:5  
标签:SCL 主机 通信协议 传输 数据位 SDA 整理 I2C

通信特征

(从数据传输方向上):

  • 单工:数据只能单一方向传输;
  • 半双工:数据能在两个方向传输,但同一时刻只能在一个方向;
  • 双工:数据能同时在两个方向传输;

I2C

I2C在物理层上有SCL和SDA两条线将主机和从设备连接,并有上拉电阻连接。I2C通信的工作逻辑如下:
image

SCL工作逻辑:

  • 空闲时为高电平,通信开始后拉低
  • 通信过程中,SCL低电平时主机在SDA上设置数据(电平信号),高电平时从机读取SDA的电平信号。

仲裁

对于多主机、多节点,所有SDA或SCL都会通过上拉电阻连接到高电平,意味着I2C总线在理论上只能由一对主机、节点进行数据传输。各个主机通过监视SDA、SCL,直至停止条件发生、总线进入空闲时才开始传输消息。

如果出现多个主机同时开始传输,就需要进行仲裁:最先将SDA信号电平拉低的主机为仲裁获胜者,失败者立即暂停传输

UART

异步通信协议,物理层上包括TX、RX两条数据传输的接线和共地的接线。

两个设备之间的UART通信需要有相同的波特率,以保持收发速率一致。

UART的传输以数据帧为单位,数据帧格式有两种,分别是无校准位(8位数据位)和有校准位(9位数据位)。

数据帧如下图:( 起始位+8位数据位/9位数据位(带奇偶检验)+停止位(1or2) )image

SPI

SPI是同步、全双工,仅支持一主多从。物理层上包含:

  1. SCK时钟线
  2. MISO、MOSI数据线
  3. CS/NSS/SS片选:每个从机设备都有一个自己的片选线,置低电平时,该设备被选择与主机通信

SPI在时钟空闲时的电平(高/低)、数据线采样的时钟边沿(奇数沿/偶数沿)是可以配置的。

参考:
[I2C] ADI整理发布的I2C,PMbus,SMbus入门教程,难得的好文章(含中文版)

标签:SCL,主机,通信协议,传输,数据位,SDA,整理,I2C
From: https://www.cnblogs.com/zero-000/p/18625288

相关文章

  • 百度地图超级多点卡顿问题整理
    基于目前项目中百度地图的版本等原因,选择用mavgl解决。相关参考文档如下:https://lbsyun.baidu.com/solutions/mapvdata在public的index页面中引入<scriptsrc="https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.51/dist/mapvgl.min.js"></script><scriptsrc="https://mapv.......
  • C#知识整理-泛型
    泛型是为所存储或使用的一个或多个类型具有占位符(类型形参)的类、结构、接口和方法。泛型集合类可以将类型形参用作其存储的对象类型的占位符;类型形参呈现为其字段的类型和其方法的参数类型。泛型方法可将其类型形参用作其返回值的类型或用作其形参之一的类型。泛型的优点包括:代......
  • C#知识整理-文件处理(基础)
    C#中提供处理文件的类库集中在System和System.IO,所以在处理文件之前需要引入对应类库VisualStudio提供nuget来安装对应的包搜索System.IO并进行安装,安装前请先检查支持的版本varfolder="d:\\testfolder";varfile="d:\\testfolder\\test.txt......
  • Java重要面试名词整理(五):Redis
    文章目录Redis高级命令Redis持久化RDB快照(snapshot)**AOF(append-onlyfile)****Redis4.0混合持久化**管道(Pipeline)**StringRedisTemplate与RedisTemplate详解**Redis集群方案gossip脑裂RedisLuaRedisMultiLockRedis红锁缓存相关问题**缓存穿透****缓存失效(击穿)****......
  • 国内ChatGPT中文版镜像网站整理合集【12月持续更新】
     一、ChatGPT中文镜像站① https://chat.lify.vip支持GPT4、4o和o1,支持MJ绘画②Github项目:ChatGPT中文版镜像网站 支持GPT-4、4o和o1什么是镜像站   镜像站(MirrorSite)是指通过复制原始网站内容和结构,创建的备用网站。其主要目的是在原始网站无法访问时,提供相......
  • 最近刚刚整理的免费获取股票数据接口API(实时数据、历史数据、CDMA、KDJ等指标数据)配有
    以下所有接口,均可在浏览器中直接测试!沪深两市股票列表API接口链接(可点击验证):https://api.mairui.club/hslt/list/b997d4403688d5e66a【实时数据接口】沪深两市实时交易数据接口API接口链接(可点击验证):https://api.mairui.club/hsrl/ssjy/000001/b997d4403688d5e66a1、p......
  • 2025年Java面试合集,终于整理好了
    进大厂是大部分程序员的梦想,而进大厂的门槛也是比较高的,所以这里整理了一份阿里、美团、滴滴、头条等大厂面试大全,其中概括的知识点有:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、SpringBoot、SpringCloud、RabbitMQ、Kafka、Linux......
  • Patroni 流程整理目录-初始化
    Patroni流程整理目录-初始化2.初始化数据库的初始化在Postgresql类的__init__函数中,在这个函数中对当前的数据库做了一系列的调整,初始化一系列实例、设置一些配置信息,查看状态和更新信息等等。而将节点加入集群或者初始化集群时,则是调用ha类中的函数进行初始化,如post_bootstra......
  • Patroni 流程整理-主循环
    Patroni流程整理目录3.主循环主循环在Patroni类的_run_cycle函数中进行,在这个函数中调用Ha类的循环函数run_cycle,每循环一次调用一次,而不是开启Ha的循环,并且在这里进行重载配置文件。在这个主循环中重点是Ha类的_run_cycle函数,在这个函数中对集群的各种状态做出检查,并且采用......
  • C#知识整理-类(Class)
    关键字:struct:结构体class:类interface:接口abstract:定义抽象类或抽象方法使用sealed:密封类,不可继承的类void:表示无返回值 抽象类(abstractclass)抽象类不能被实例化。抽象类的用途是提供一个可供多个派生类共享的通用基类定义。例如,类库可以定义一个抽象类,将其用作多个类......