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

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

3天内不再提示

I2C笔记分享

XL FPGA技术交流 2024-08-13 18:19 次阅读

SCL:上升沿将数据输入到每个EEPROM器件中;下降沿驱动EEPROM器件输出数据。(边沿触发)

SDA:双向数据线,为OD门,与其它任意数量的OD与OC门成"线与"关系。

一、协议

1.空闲状态 I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线, 由两条信号线各自的上拉电阻把电平拉高。

2.起始位与停止位的定义:

起始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。

停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。

3.ACK

发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平,表示接收器已经成功地接收了该字节;

应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲

之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,

以通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。

4.数据的有效性:

I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。

5.数据的传送:

在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。数据位的传输是边沿触发。

一个字节的数据在发送过程中是先传输高位(MSB),再传输低位(LSB).

1.设备寻址

主设备发送起始位,这会通知总线上的所有设备传输开始了,接下来主机发送设备地址,与这一地址匹配的slave将会发送一个应答,再强调一下,如果地址匹配,从机

会在设备地址发送后发送一个应答,这样主设备就寻址到了对就该设备地址的从设备。

2.延时处理

如果从机没有准备好,就会把SCL拉低。

主设备写数据到从机:(写一个寄存器地址)

1、主设备发送起始位;

2、主设备发送8位的从机地址(其中最低位是读写控制位(0:写,1:读)此时是写,高7位是从机地址位)

3、从机应答

4、主设备发送8位的从机寄存器地址

5、从机应答

6、主设备发送数据

7、从机应答

8、发送停止位

注:(1)步骤6和步骤7可以重复。

(2)应答信号是低电平

主设备读取从机数据:(一个寄存器地址)

1、主设备发送起始位;

2、主设备发送8位的从机地址(其中最低位是读写控制位(0:写,1:读),高7位是从机地址位),此时是写

3、从机应答

4、主设备发送8位的从机寄存器地址

5、从机应答

6、主设备发送停止位

7、主设备发送起始位

8、主设备发送8位的从机地址(其中最低位是读写控制位(0:写,1:读),高7位是从机地址位),此时是读

9、从机应答

10、从机发送数据

11、主机应答(NACK)

12、从机释放总线,主机发送停止位。

主设备读从机多个地址:

1、起始位

2、主设备发送从机地址写

3、主设备发送从机寄存器地址1

4、主设备发送从机地址读

5、读数据1(注意:从步骤5到步骤6是没停止)

6、起始位

7、主设备发送从机寄存器地址2

8、主设备发送从机地址读

9、读数据2

10、起始位

停止位

在I2C总线上传输的数据都是8bit位为单位的,所以当主机要往从机写数据时时序如下:

1、发送start信号
2、发送7位地址+1个读写位0(0表示写,1表示读)
3、从机收到地址后,发送ACK应答信号
4、主机收到应答信号后发送要写的8位数据
5、若从机收到主机发送的数据,发送ACK应答信号
6、如果主机要继续写,那么回到步骤4,如果写完了那么发送stop信号,终止通信

当主机要从从机读取数据时时序如下:

发送start信号

1、发送7位地址+1个读写位1(0表示写,1表示读)
2、从机收到地址后,发送ACK应答信号
3、主机收到应答信号后等待接收从机的数据
4、从机发送主机要读取的数据
5、若主机收到从机发送的数据,发送ACK应答信号
6、如果主机要继续读,那么回到步骤4,如果读完了那么发送stop信号,终止通信

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

    关注

    28

    文章

    1447

    浏览量

    122121
  • I2C总线
    +关注

    关注

    8

    文章

    384

    浏览量

    60642
收藏 人收藏

    评论

    相关推荐

    I2C总线学习笔记

    I2C在小P以前接触的设计中大多只用到400k的速率,EVB的设计中更经常发现实现不了就降速到100k。现在突然再看看I2C,发现原来还有更高的速率规范,最高都已经到5M了。
    的头像 发表于 10-25 14:35 1275次阅读
    <b class='flag-5'>I2C</b>总线学习<b class='flag-5'>笔记</b>

    i2c总线ppt(I2C总线器件应用)

    I2C总线器件应用第一节 I2C总线器件应用概述I2C总线工作原理I2C总线系统结构I2C总线系统结构如图7-1所示。其中,SCL是时钟线,
    发表于 08-13 17:34 0次下载

    i2c总线的特点

    i2c总线的特点:2 I2C 总线使设计人员和厂商都得益.. 3 2.1 设计人员的得益.. 4 2.2 厂商的得益. 5 3 介绍I2C 总线规范 6 4
    发表于 08-05 09:05 26次下载

    I2C总线规范与I2C器件C51读写程序

    I2C总线规范与I2C器件C51读写程序:本文简要介绍了I2C总线,并给出了I2C器件的C51读
    发表于 08-22 17:51 93次下载

    I2C Guid I2C指南

    I2C Guid  I2C指南 The I2C bus is used in a wide rangeof applications because it is simpleand
    发表于 04-23 13:55 36次下载

    什么是i2c总线

    什么是i2c总线  下载请点击: i2c总线协议中文版 
    发表于 11-05 09:26 2877次阅读

    i2c

    单片机i2c总线操作;单片机i2c总线操作;单片机i2c总线操作;
    发表于 05-17 11:09 35次下载

    基于I2C接口隔离的应用笔记

    I2C总线是一种双线制双向总线,用于集成电路之间的低速/短速离通信。本应用笔记简要介绍了I2C总线集中于其物理层,讨论了隔离I2C接口需要客服的挑战。
    发表于 09-21 17:15 9次下载
    基于<b class='flag-5'>I2C</b>接口隔离的应用<b class='flag-5'>笔记</b>

    I2C和SPI学习笔记

    I2C通信协议I2C通信原理I2C通信原理:I2C是一种半双工通信方式,主要时钟线SCL和数据线SDA构成,速率一般为400Mbps总线信号有三种:开始信号;结束信号;应答信号当时钟线
    发表于 12-22 19:20 0次下载
    <b class='flag-5'>I2C</b>和SPI学习<b class='flag-5'>笔记</b>

    硬件I2C与模拟I2C

    硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C;一般也较为稳定,但
    发表于 12-28 19:14 79次下载
    硬件<b class='flag-5'>I2C</b>与模拟<b class='flag-5'>I2C</b>

    ESP32 之 ESP-IDF 教学(六)——I2C数据总线(I²C

    ESP32 之 ESP-IDF 学习笔记(六)【I2C数据总线(I²C)】文章目录ESP32 之 ESP-IDF 学习笔记(六)【
    发表于 12-28 19:25 22次下载
    ESP32 之 ESP-IDF 教学(六)——<b class='flag-5'>I2C</b>数据总线(<b class='flag-5'>I</b>²<b class='flag-5'>C</b>)

    ESP32学习笔记I2C

    今天我们来玩儿I2C
    的头像 发表于 07-14 14:56 1439次阅读
    ESP32学习<b class='flag-5'>笔记</b>:<b class='flag-5'>I2C</b>

    I2C子系统SW Architecture

    I2C SW Architecture 【driver 驱动层】由普通驱动工程师负责,【i2c 核心层】由 Linux 提供,【i2c 核心层】以下由芯片原厂负责。 I2C 子系统
    的头像 发表于 07-22 16:01 784次阅读
    <b class='flag-5'>I2C</b>子系统SW Architecture

    I2CI3C的区别有哪些

    I2CI3C 主要区别如下: I2C 虽然也是两条线,但是很多时候传感器需要一条额外的中断线,来告诉主控数据已经准备好。I3C 允许从设备直接在总线上产生中断,不再需要一条额外的
    的头像 发表于 07-22 16:20 5901次阅读
    <b class='flag-5'>I2C</b>和<b class='flag-5'>I3C</b>的区别有哪些

    i2c采样是上升沿吗?

    i2c采样是上升沿吗?  I2C采样是指在I2C总线上对数据进行采样。在I2C总线上,数据的传输是通过2条线传递。一条是时钟线(SCL),另
    的头像 发表于 09-19 17:16 2020次阅读