FPGA视角--I2C接口

I2C接口特性

2根线

SDA串行数据线(双向数据线)
SCL串行时钟线(必须由主设备发出)

串行的8位双向数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s。

FPGA与I2C设备之间的总线关系结构

FPGA与I2C设备之间的总线结构

举例说明

I2C协议的通信参数包括设备驱动号,地址和数据;

  1. 设备驱动号用来区分总线中不同的驱动设备;
  2. 地址和数据没有固定位宽,一般是以字节作为单位,也就是8个bit。编写FPGA逻辑时,需依据驱动设备手册中的规则编写。

下面举个EEPROM的例子来说明一下I2C的通信过程,型号为AT24C256C,FPGA做主控制器。
该例子中的EEPROM是16位地址寻址,8位数据传输;支持任意单地址的字节读写及页读写。

硬件外围结构
这里A0、A1、A2是硬件外部拉死的,作为设备寻址的一部分。

基本时序

总线时序的基本要求中,SDA的数据状态需要在SCL高电平时保持,变化应发生在SCL的低电平时。
I2C基本时序
上图中可以看出总线中的4类动作:开始数据传输停止应答

  1. 开始动作:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据;
  2. 结束动作:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据;
  3. 数据传输动作:在开始条件以后,时钟信号SCL的高电平周期期问,当数据线稳定时,数据线SDA的状态表示数据有效,即数据可以被读走,开始进行读操作。在时钟信号SCL的低电平周期期间,数据线上数据才允许改变。每位数据需要一个时钟脉冲。
  4. 应答动作:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。FPGA向受控单元发出一个信号后,等待受控单元发出一个应答信号,FPGA接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

一个完整的字节写时序

在这里插入图片描述

一个完整的字节读时序

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

三一九六

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

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

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

打赏作者

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

抵扣说明:

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

余额充值