0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

I2C总线上主设备和从设备的连接关系

ARM与嵌入式 来源:ARM与嵌入式 2023-06-23 21:50 次阅读

I2C总线是一种同步、双向、半双工的两线式串行接口总线。这里,半双工的含义是指在任意给定的时刻,只有一个方向上是可以通信的。

I2C总线最早由Philips半导体公司于20世纪80年代研发面市。I2C最初的设计目标是为微处理器/微控制器系统与电视机外围芯片之间的连接提供简单的方法。 I2C总线由两条总线组成:串行时钟线SCL和串行数据线SDA。 SCL线——负责产生同步时钟脉冲。 SDA线——负责在设备间传输串行数据。 I2C总线是共享的总线系统,因此可以将多个I2C设备连接到该系统上。连接到I2C总线上的设备既可以用作主设备,也可以用作从设备。 主设备负责控制通信,通过对数据传输进行初始化/终止化,来发送数据并产生所需的同步时钟脉冲。 从设备则是等待来自主设备的命令,并响应命令接收。主设备和从设备都可以作为发送设备或接收设备。无论主设备是作为发送设备还是接收设备,同步时钟信号都只能由主设备产生。 在相同的总线上,I2C支持多个主设备的同时存在。图1-1显示了I2C总线上主设备和从设备的连接关系。 50c8f4b4-11a5-11ee-962d-dac502259ad0.png50e184de-11a5-11ee-962d-dac502259ad0.png 当总线空闲时,SDA 和SCL 都处于高电平状态,当主机要和某个从机通讯时,会先发送一个开始条件,然后发送从机地址和读写控制位,接下来传输数据(主机发送或者接收数据),数据传输结束时主机会发送停止条件。传输的每个字节为8 位,高位在前,低位在后。

开始条件:SCL 为高电平时,主机将SDA 拉低,表示数据传输即将开始。

从机地址:主机发送的第一个字节为从机地址,高7 位为地址,最低位为R/W 读写控制位,1 表示读操作,0 表示写操作。

一般从机地址有7 位地址模式和10 位地址模式两种,如果是10 位地址模式,第一个字节的头7 位是11110XX 的组合,其中最后两位(XX)是10 位地址的两个最高位,第二个字节为10 位从机地址的剩下8 位,如下图所示: 50ff7638-11a5-11ee-962d-dac502259ad0.png

应答信号:每传输完成一个字节的数据,接收方就需要回复一个ACK(acknowledge)。写数据时由从机发送ACK,读数据时由主机发送ACK。当主机读到最后一个字节数据时,可发送NACK(Notacknowledge)然后跟停止条件。

数据:从机地址发送完后可能会发送一些指令,依从机而定,然后开始传输数据,由主机或者从机发送,每个数据为8 位,数据的字节数没有限制。

重复开始条件:在一次通信过程中,主机可能需要和不同的从机传输数据或者需要切换读写操作时,主机可以再发送一个开始条件。

停止条件:在SDA 为低电平时,主机将SCL 拉高并保持高电平,然后在将SDA 拉高,表示传输结束。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6926

    浏览量

    88867
  • 主机
    +关注

    关注

    0

    文章

    987

    浏览量

    35091
  • I2C总线
    +关注

    关注

    8

    文章

    389

    浏览量

    60858

原文标题:I2C总线

文章出处:【微信号:ARM与嵌入式,微信公众号:ARM与嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    I2C总线物理拓扑结构及特征

    I2C总线上的每一个设备都可以作为主设备或者设备,而且每一个
    发表于 09-09 09:25 1309次阅读

    飞凌嵌入式ElfBoard ELF 1板卡-i2c设备通讯编程示例之i2c硬件原理

    同一条i2c总线上,并通过地址来区分不同的设备。(五)写时序下图完整的展示了主机向机写一个字节的时序图,需要注意的包括:当主设备通过
    发表于 10-28 08:58

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-i2c设备通讯编程示例之i2c硬件原理

    同一条i2c总线上,并通过地址来区分不同的设备。(五)写时序下图完整的展示了主机向机写一个字节的时序图,需要注意的包括:当主设备通过
    发表于 10-29 16:29

    【我是电子发烧友】【转】 I2C总线协议详解

    电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。  (2I2
    发表于 07-20 22:29

    I2C 总线协议图解

    ,SPI和uart为双工。2I2C总线特征 I2C总线上的每一个设备都可以作为主设备或者
    发表于 08-01 16:12

    I2C总线是什么

    I2C总线I2C总线(读做“IC”或“I2C
    发表于 07-21 09:03

    arduino读取I2C总线上连接设备的地址

    这两天研究了一下I2C总线,发现有好多I2C设备的地址并不知道,当然有的可以在网上查的到,但是如果遇到用过的I2C器件,
    发表于 11-23 16:58 11.2w次阅读

    i2c总线的起始和终止的条件

    尽量选用带复位输人的I2C器件,I2C总线死锁产生的原因可以发现I2C
    发表于 12-06 15:48 2.9w次阅读
    <b class='flag-5'>i2c</b><b class='flag-5'>总线</b>的起始和终止的条件

    I2C总线的工作原理解析

    、400kbps和3.4Mbps。大多数常见的控制器只支持100-和400kbps两种模式。I2C总线支持一个主设备多个设备,或者多个
    发表于 08-23 15:55 6636次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>总线</b>的工作原理解析

    树莓派怎样连接多个I2C设备

     简单。 i2c是一辆公共汽车。总线的目的是与多个设备通信。将设备并行连接到同一i2c
    的头像 发表于 11-13 09:27 1.9w次阅读
    树莓派怎样<b class='flag-5'>连接</b>多个<b class='flag-5'>I2C</b><b class='flag-5'>设备</b>

    嵌入式内核及驱动开发-09IIC子系统框架使用(I2C协议和时序,I2C驱动框架,I2C设备驱动开发,MPU6050硬件连接

    文章目录I2c协议和时序I2c介绍I2c硬件连接I2c总线的信号
    发表于 12-06 14:06 17次下载
    嵌入式内核及驱动开发-09IIC子系统框架使用(<b class='flag-5'>I2C</b>协议和时序,<b class='flag-5'>I2C</b>驱动框架,<b class='flag-5'>I2C</b><b class='flag-5'>从</b><b class='flag-5'>设备</b>驱动开发,MPU6050硬件<b class='flag-5'>连接</b>

    传感器i2c与arduino连接_Nodemcu I2C接口连接Arduino

    数据后即刻检查接收方的确认信号,以确定接收方是否成功的接收到数据。I2C的工作模式I2C的工作模式分为:主模式(Master mode)和模式(Slave mode),主设备启动与
    发表于 12-17 18:01 1次下载
    传感器<b class='flag-5'>i2c</b>与arduino<b class='flag-5'>连接</b>_Nodemcu <b class='flag-5'>I2C</b>接口<b class='flag-5'>连接</b>Arduino

    I2C主设备设备的一般通信过程

    物理I2C接口有两根双向线,串行时钟线(SCL)和串行数据线(SDA)组成,可用于发送和接收数据,但是通信都是由主设备发起,设备被动响应,实现数据的传输。
    的头像 发表于 04-25 14:36 1.1w次阅读

    i2c detect扫描i2c总线上设备

    i2cdetect:用于扫描i2c 总线上设备 Usage: i2cdetect [ - y] [ - a] [ - q | - r]
    的头像 发表于 07-27 16:16 1.2w次阅读
    <b class='flag-5'>i2c</b> detect扫描<b class='flag-5'>i2c</b><b class='flag-5'>总线上</b>的<b class='flag-5'>设备</b>

    I2C串行总线协议是什么?I2C总线有哪些优点?

    1982年发明并推广,用于连接智能传感器和存储器器件,以及控制和监控外设。该协议是一种主从式通信协议,允许多个设备连接到同一总线上,并在
    的头像 发表于 09-12 11:18 1591次阅读