协议类基础——I2C

39 篇文章 6 订阅
23 篇文章 39 订阅

脉冲:低电平变为高电平
发送的数据必须是8位的。

接线

在这里插入图片描述
SCL:clock
SDA:data

电路图

在这里插入图片描述

I2C总线设备互连

在这里插入图片描述
对于这两条线,可以挂有多个设备
既然有多个设备,那开发板要访问连接的设备,怎么分辨设备1和设备2呢?

每一个I2C设备中都有一个地址,当传输的值等于这个地址时,目标设备才会回应

开始信号与结束信号

在这里插入图片描述

  • 开始信号:时钟信号保持高电平,数字信号从高电平变为低电平
  • 结束信号:时钟信号保持高电平,数字信号从低电平变为高电平

接在I2C总线的设备收到开始信号时就准备接收数据;接收到结束信号时就停止接收数据

数据传输与响应信号

在这里插入图片描述
传输流程

  • 1、发送器的SDA转为低电平,开始发送数据(此时主机的SCL是高电平)
  • 2、主机的SCL在发送信号后,会从低电平到高电平反复变化。低电平的时候数据可以发送变化,但当高电平时,发送器发送的数据应该要保持稳定。
    这时因为,接在i2c总线上的设备需要在SCL为高电平的时候采集数据

响应信号
接收器在收到8位数据后,在第9个时钟周期,拉低SDA电平。
然后接收器释放这条SDA线。由于有上拉电阻的存在,电平在下一个时钟周期又变回高电平。
在这里插入图片描述

发送器检测到这个引脚变成低电平后,就知道这个设备完成了数据的接收。

在这里插入图片描述

单字节数据的传输流程

在这里插入图片描述

  • 1、开始信号后,发送器的SCL先变为低电平。然后按时间周期发送脉冲。
    这时,发送器的电平应保持稳定。因为接在i2c总线的设备,读取信息是在脉冲时读取
  • 2、8位数据发送结束后。在SCL第9个时钟周期,发送器和接收器的SDA都变为低电平。
    发送器的SDA为低电平,SCL为高电平,这是结束信号。
    接收器的SDA为低电平,这是接收到8位数据的应答信号。
  • 3、在第9个时钟周期后,若没有其他信息,则释放I2C总线,接收完毕的从机两条线释放。
    由于上拉电阻的存在,全部变为高电平。

其中8位数据可以是:

  • 7位设备地址,1位读写选项
  • 8位内存地址
  • 8位数据

I2C控制器

发送器的SCL时钟,不可以太快。如果太快的话,有可能接收器反应不过来。
所以要根据接收器的存储芯片的要求,来设置发送器的I2C控制器

当想发送数据时,只要把发送的数据,时钟等信息丢给响应的寄存器即可。

在I2C总线上是允许连接多个设备的,那怎么去访问目标设备而不影响到其他的设备呢。
下一个目录介绍

I2C总线的传输流程

在这里插入图片描述

七位地址模式下的写操作格式

在这里插入图片描述

  • 1、若想访问这个设备。首先发送机发送一个起始信号。
  • 2、然后发送8位数据。其中前七位是从机的地址,最后一位是读写选项。
    如果从机中有符合此地址的,就返回一个Ask响应信号。
    选择写(0),意为发送机向目标从机发送数据。
    选择读(1),意为发送机从目标从机读取数据。
  • 3、第二个字节用于发送数据,收到后从机返回一个响应信号。
  • 4、结束后发送机

设备地址的查看

  • 地址的值需要看I2C的芯片手册
  • 在这里插入图片描述
    在这里插入图片描述
    第5-7位是由这三个引脚决定的,如果这三个引脚都接0,那么就都是0.
    最后一位是读或者写

七位地址模式下的读操作格式

在这里插入图片描述
和前面一样,只是读写选项选择了读。

但是从从机读的数据有什么含义,又要去看I2C设备手册了。
比如主机jz2440接上了一块存储芯片。那么要读写某的地址,这个要求一定能满足。
接下来看芯片手册。

读的流程

在这里插入图片描述
注释:
– 1:从机地址
– 2:主机想要获取数据的地址
– 3:和1一样的从机地址
– 4:读取的数据

既然要读,主机就需要把想要读的地址先写给对方
告诉从机,主机需要哪个地址的数据
流程如下:

  • 1、主机先发送地址寻找从机,选择写,找到后发送8位地址给从机
    这个8位地址是从机上的地址,是主机想要获取数据的地址
  • 2、再次发送地址寻找刚刚的从机,这时选择读,SDA上会产生相应的信号
  • 3、结束后主机发送结束信号

以上每8个字节从机都相应后,从机都会在第9个字节返回相应信号。

写的流程

在这里插入图片描述
流程如下:

  • 1、首先发送地址寻找从机,并选择写
  • 2、发送主机写入从机中的地址
  • 3、发送要写入的8位数据

以上每8个字节从机都相应后,从机都会在第9个字节返回相应信号。

本篇以2440为例,实际数据格式请根据手册

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Spark!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值