基于Roebi EDA实现I2C通讯之(一)I2C通讯协议理论知识

本文详细介绍了I2C通信的物理层特点,包括双线制、多设备支持、地址编码和时序规则。深入解析了I2C协议层,涵盖时序图、设备地址划分、单字节和页写操作流程。同时讨论了读写操作,如随机读和顺序读,以及具体应用实例如OV7725和OV5640摄像头的寄存器寻址方式。
摘要由CSDN通过智能技术生成

一、I2C物理层

①多设备

双线制度(SCL ; SDA)

③存储地址、器件地址

④空闲状态是高阻态,保持高电平

⑤多主机:仲裁

标准速度:100kb/s 快速:400kb/s 高速:3.4Mb/s

二、I2C协议层

(一)I2C整体时序图

①总线空闲状态(SCL:1 SDA:1)

②起始信号(SCL:1 SDA 出现下降沿)

③数据读写信号(SCL:0 →SDA数据更新;写入1bit;从机正确接收8bit,SDA拉低(ACK响应位))

④停止信号

SCL:1      SDA:上升沿

(二)i2c设备器件地址与存储地址

0:W

1:Read

由于I2C设备要配置寄存器的多少或存储容量的大小的不同,存储地址根据位宽分为单字节和2字节两种。例如后文要提到的OV7725、OV5640摄像头,两者的寄存器数量不同,OV7725摄像头需要配置寄存器较少,单个字节能够实现所有寄存器的寻址,所以他的存储地址位宽为8位;而OV5640摄像头需要配置寄存 器较多,单个字节不能够实现所有寄存器的寻址,所以他的存储地址位宽为16位,2个字节。

以EEPROM存储芯片为例,在ATMEL公司生产的AT24C系列EEPROM存储芯片中选取两款存储芯片AT24C04和AT24C64。AT24C04的存储容量为1Kbit(128byte),7位存储地址即可满足所有存储单元的寻址,存储地址为单字节即可;而AT24C64的存储空间为64 Kbit(8Kbyte),需要13位存储地址才可满足所有存储单元的寻址,存储地址为2字节。

(三)I2C读写操作

  • 写操作
I2C单字节写操作(单字节存储地址)

参照时序图,列出单字节写操作流程如下:

  1. 主机产生并发送起始信号到从机,将控制命令写入从机设备,读写控制位设置为低电平,表示对从机进行数据写操作控制命令的写入高位在前低位在后

  2. 从机接收到控制指令后,回传应答信号,主机接收到应答信号后开始存储地址的写入

  3. 按高位在前低位在后的顺序写入单字节存储地址

  4. 地址写入完成,主机接收到从机回传的应答信号后,开始单字节数据的写入

  5. 单字节数据写入完成,主机接收到应答信号后,向从机发送停止信号,单字节数据写入完成。

I2C页写操作(单字节存储地址)

单字节写操作中,主机一次向从机中写入单字节数据;页写操作中,主机一次可向从机写入多字节数据。

列出页写操作流程如下:

  1. 主机产生并发送起始信号到从机,将控制命令写入从机设备,读写控制位设置为低电平,表示对从机进行数据写操作,控制命令的写入高位在前低位在后

  2. 从机接收到控制指令后,回传应答信号,主机接收到应答信号后开始存储地址的写入。

  3. 按高位在前低位在后的顺序写入单字节存储地址

  4. 地址写入完成,主机接收到从机回传的应答信号后,开始第一个单字节数据的写入

  5. 数据写入完成,主机接收到应答信号后,开始下一个单字节数据的写入

  6. 数据写入完成,主机接收到应答信号。若所有数据均写入完成,顺序执行操作流程;若数据尚未完成写入,跳回到步骤(5);

  7. 主机向从机发送停止信号页写操作完成

所有I2C设备均支持单字节数据写入操作,但只有部分I2C设备支持页写操作;且支持页写操作的设备,一次页写操作写入的字节数不能超过设备单页包含的存储单元数。

  • 读操作

读操作可分为随机读操作和顺序读操作。

I2C随机读操作(单字节存储地址)

I2C随机读操作可以理解为单字节数据的读取

 随机读操作时序

参照时序图,列出页写时序操作流程如下:

  1. 主机产生并发送起始信号到从机,将控制命令写入从机设备,读写控制位设置为低电平,表示对从机进行数据写操作,控制命令的写入高位在前低位在后

  2. 从机接收到控制指令后,回传应答信号,主机接收到应答信号后开始存储地址的写入

  3. 按高位在前低位在后的顺序写入单字节存储地址

  4. 地址写入完成,主机接收到从机回传的应答信号后,主机再次向从机发送一个起始信号

  5. 主机向从机发送控制命令,读写控制位设置为高电平,表示对从机进行数据读操作

  6. 主机接收到从机回传的应答信号后,开始接收从机传回的单字节数据

  7. 数据接收完成后,主机产生一个时钟的高电平无应答信号

  8. 主机向从机发送停止信号,单字节读操作完成

I2C顺序读操作(单字节存储地址)

参照时序图,列出页写时序操作流程如下:

  1. 主机产生并发送起始信号到从机,将控制命令写入从机设备,读写控制位设置为低电平,表示对从机进行数据写操作,控制命令的写入高位在前低位在后;

  2. 从机接收到控制指令后,回传应答信号,主机接收到应答信号后开始存储地址的写入

  3. 按高位在前低位在后的顺序写入单字节存储地址;

  4. 地址写入完成,主机接收到从机回传的应答信号后,主机再次向从机发送一个起始信号

  5. 主机向从机发送控制命令,读写控制位设置为高电平,表示对从机进行数据读操作;

  6. 主机接收到从机回传的应答信号后,开始接收从机传回的第一个单字节数据

  7. 数据接收完成后,主机产生应答信号回传给从机,从机接收到应答信号开始下一字节数据的传输,若数据接收完成,执行下一操作步骤;若数据接收未完成,在此执行步骤(7);

  8. 主机产生一个时钟的高电平无应答信号(接收完成)

  9. 主机向从机发送停止信号,顺序读操作完成。

  • 39
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值