首页 > 其他分享 >嵌入式通信协议-- I²C 协议篇(IIC)

嵌入式通信协议-- I²C 协议篇(IIC)

时间:2024-10-08 17:17:59浏览次数:10  
标签:接收器 -- 主机 通信协议 发送 从机 IIC 发送数据 发送器

目录

总述: 

1.1主机和从机

1.2发送器和接收器

1.3总结

2.1 I²C 通信过程

第一步:主机发送起始信号:

第二步:主机发送从机地址(寻址):

第三步:从机应答信号:

第四步:发送器发送数据:

第五步:接收器发送应答信号:

第n步:循环步骤4、5

最后一步:主机发送停止信号:

3 时钟同步

4.三种经典时序

4.1主机向从机发送数据

4.2.从机向主机发送数据

4. 3主机先向从机发送数据,然后从机再向主机发送数据


总述: 

I²C半双工总线(可以互相发送接收,但不能同时进行) ,串行通信(每次发送一个bit),可以连续发送多个字节(使用同一个时钟),主要用于近距离、低速的芯片之间的通信;I²C支持多个主设备和多个从设备连接在同一总线上每个设备都有一个唯一的地址,用于区分不同的设备

1.1主机和从机

I²C总线是一种多主机总线,连接在I²C总线上的器件分为主机和从机主机有权发起和结束一次通信,而从机只能被主机呼叫;

1.2发送器和接收器

发送器:发送器是指在特定时刻向总线上发送数据的设备,主机在发送数据时充当发送器,而从机在回应主机请求时也可以充当发送器。

接收器:接收器是指在特定时刻接收数据的设备。类似于发送器,当主机请求数据时,从机成为接收器;而当从机需要将数据发送给主机时,主机则成为接收器。

1.3总结

主机和从机的区别在于谁发起通信和控制总线,而发送器和接收器的区别在于当前正在进行的数据传输方向

2.1 I²C 通信过程

第一步:主机发送起始信号

主机通过在数据线(SDA)上产生一个特定的起始信号,启用I²C总线。这表示通信的开始。

SCL为高电平时,SDA由高变低表示起始信号  

SCL为高电平时,SDA由低变高表示停止信号

第二步:主机发送从机地址(寻址)

主机接着发送一个字节,包含目标从机的地址和读/写方向的指示(高7位通常为地址,低位表示方向)。这个地址使从机识别出自己是目标设备。

这里需要注意的是:总线上所有的从机接收到主机发送的字节都会进行与自己地址匹配,如果相同,则被确认被主机寻址,然后根据最低为0或者1来确定自己是发送器还是接收器。

最低位'0'表示主机发送数据,'1'表示主机接收数据;

  从左至右,前七位数据,最后一位读写位

第三步:从机应答信号

被寻址的从机会在收到地址后,发送一个应答信号(ACK),通知主机它已准备好进行通信。

第四步:发送器发送数据

发送器(可以是主机或从机)发送一个字节的数据到总线上。

第五步:接收器发送应答信号

接收器(可以是主机或从机)在接收到数据后,发送一个应答信号(ACK)给发送器,确认收到数据。

发送器发送完一个字节数据后,接收器必须发送1位应答位来回应发送器即一帧共有9位.

第n步:循环步骤4、5

以上步骤会重复进行,直到所有需要传送的数据字节都完成。

最后一步:主机发送停止信号

通信完成后,主机发送一个停止信号,释放总线,使其他设备能够使用总线。

3 时钟同步

在SCL为低电平时,SDA线上的信号可以变化,发送器可以将数据位置于SDA线上。(发送1bit数据)。

当SCL变为高电平时,接收器读取SDA线上的数据,此时SDA线的数据必须保持不变。(读取1bit数据)。

4.三种经典时序

 灰色为主机,白色为从机

4.1主机向从机发送数据

主机结束通信两种情况:主机向从机发送完数据,从机不再应答或者主机发送完不想发了。

4.2.从机向主机发送数据

主机结束通信两种情况:从机向主机发送完数据,主机不再应答或者从机发送完不想发了。

4. 3主机先向从机发送数据,然后从机再向主机发送数据

主机向从机发送数据,从机应答或者不应答,主机restart 建立通信,省略掉了stop的步骤,变为从从机器接收数据,知道最终主机结束通信

参考文献:主动光式颜色传感器技术详解. 感为智能科技. [2024-04-17]&创客学院技术文档

标签:接收器,--,主机,通信协议,发送,从机,IIC,发送数据,发送器
From: https://blog.csdn.net/qq_63152518/article/details/142746693

相关文章

  • Linux文件系统
    目录一、认识磁盘​二、操作系统对磁盘进行逻辑抽象1.扇区数组sectordisk_array[N]2.逻辑区块数组LBAblocks[N]3.磁盘分区三、文件系统1.文件系统结构2.如何拿到文件inode号?3.如何确定文件在哪个分区?一、认识磁盘一个磁盘由多个盘片组成,每个盘片有两个盘面和一......
  • 很好也很贵?OpenAI Realtime API 一手体验和 Voice AI 的未来 |播客《编码人声》
       「编码人声」是由「RTE开发者社区」策划的一档播客节目,关注行业发展变革、开发者职涯发展、技术突破以及创业创新,由开发者来分享开发者眼中的工作与生活。 OpenAIRealtimeAPI发布了,你准备好了么? RealtimeAPI让开发者可以构建近乎实时的「语音到语音」的体验,......
  • 订单交易平台五:短信登录验证界面(从0到1的过程)
    1.短信验证界面(版本一)1.1视图函数accont.py中#先定义form类classSmsLoginForm(forms.Form):role=forms.ChoiceField(required=True,label='角色',choices=(('2','客户'),('1','管理员')),w......
  • Centos8 配置阿里镜像源
    ##下周jdk17包#curl-O http://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz#tarxvfjdk-17_linux-x64_bin.tar.gz DockerfileFROMdocker.m.daocloud.io/centos:8#下载并安装OpenJDK17 COPYjdk-17.0.12/usr/local/jdk#设置JAVA_HOME环......
  • React学习起始
    一、准备工作react是一个用于构建用户界面的JavaScript库脚手架安装:npxcreate-react-app(脚手架名称)react-basic(包名)--------等同于maven构建项目的性质启动项目:yarnstartornpmstart注:全局安装缺点:太久没初始化项目,就得重新装 二、基本使用1导包2创建元素3渲染元......
  • 广州wms智能仓储管理系统 盈致WMS系统服务商
    wms智能仓储管理系统是一种用于管理仓库操作和库存流动的软件系统,旨在提高仓库管理效率、降低成本、减少错误和优化库存控制。以下是WMS智能仓储管理系统的主要功能和特点: 入库管理:WMS系统可以实现对入库货物的接收、分拣、上架和入库操作的管理,包括扫描条形码、RFID识别等技......
  • 上海相机卡​不识别数据恢复
    当相机卡(如SD卡)出现不识别的情况时,数据恢复是一个关键的问题。以下是一些建议的步骤和方法,用于尝试恢复相机卡上的数据:一、初步检查与尝试1.重新插拔相机卡:首先,将相机卡从相机或读卡器中取出,检查是否有灰尘或污垢附着在金属触点上。使用干净的棉签或软布轻轻擦拭金属触点,确保......
  • 智能充气泵解决方案
    智能充气泵,作为一种现代化的气体压缩工具,已经广泛应用于汽车、摩托车、自行车轮胎以及各类球类的充气需求中。它通过内置的压力传感器实时检测气体压力,并通过微处理器精确控制马达的工作状态,以实现高效、安全的气体压缩和充气过程。智能充气泵的核心部件包括压力传感器、微处......
  • P10641 BZOJ3252 攻略
    题目链接简要题意给定一个有\(n\)个结点的树,树有点权且点权为正整数。现选取\(k\)条从根结点出发到叶子结点的简单路径,求这些路径的并集上所有结点的点权之和的最大值。主要算法贪心,树链剖分,(线段树合并)思路一个显然的贪心,每次选一点点权和最大的链,再讲这条链清为0。正......
  • T-SQL——关于表提示:WITH(NOLOCK)
    目录1.关于With(NOLOCK)2.关于在视图上使用WITH(NOLOCK)3.关于WITH(NOLOCK)与WITH(READPAST)区分4.关于WITH(NOLOCK)产生架构锁5.参考1.关于With(NOLOCK)NOLOCK等价于:READUNCOMMITTED,即允许脏读。不发出共享锁来防止其他事务修改当前事务读取的数据,并且其他事务设置的排他锁不会......