I2C-FPGA整理


######以下知识点基于EEPROM-24LC04
和AT24C64还是有一点差别的,不知道刚开始我怎么又是觉得俩是一个型号

一、信号

  • 传输数据之前有起始信号,之后有结束信号,都在SCL线为高时产生,起始信号拉低(意思是有一个从高电平到低电平的过程),结束信号拉高(有一个从低电平到高电平的过程)

  • PS:所以在产生起始信号之前sda线应该置为高电平,在产生结束信号之前sda线应该置为低电平(尤其结束信号之前是有一个高电平的非应答信号的)

  • 图为起始信号和停止信号时序图
    起始信号和停止信号时序图

  • 数据只允许在SCL为低时改变,在SCL为高时有效(即此时可被采样)

在这里插入图片描述

二、数据帧

  • 传输数据有地址帧和数据帧两种,地址帧打头,7bit(有扩展到10bit的情况)地址位,由主机发送到总线上,地址信息相同的从机会被总线选中,接着1bit操作位,1为读0为写,比如为1时就代表主机要读取从机的数据,接下来传输的数据就应该是接收,数据帧在地址帧后面传输

  • 图为起始信号+器件地址+操作位+应答信号(后面提,ACK)
    在这里插入图片描述

  • 器件地址=固定部分(如EEPROM为1010,指定器件类型)+可编程部分(也可以理解为片选,一个系统中出现多个EEPROM器件时用可编程部分101,100等做区别,可编程部分为3位,对应3个管脚pin,最多可支持8个相同EEPROM器件挂载在IIC总线上)

三、确认机制+寻址

  • 初看请跳过:若是从机想不被打断地和此主机进行通信,则结束信号应该在数据传输完毕之后再产生,可以多次发送起始信号完成多段通信,结束信号一旦产生,从机就可能被别的主机请求

  • I2C和UART,SPI接口最大的区别是它有确认机制,即8位数据之后应该加上1位应答信号(即一帧9bit),应答信号为第九个时钟周期时SCL线为高时采样得到的信号(潜台词是第九个时钟周期SCL线为低电平时就应该将SDA线置低),检测到低电平,表示从机在线,告诉主机可以继续操作(ACK),检测到高电平则表示非应答(NACK)

    1.SPI利用片选信号选择与主机进行通信的从机(芯片器件),而I2C除了发送器件地址选择从机器件之外,还需要选择操作的对象

    2.这里的操作指的是读操作或者写操作,我们知道I2C的数据帧是8bit,那么这些数据帧至少应该放在一个类似寄存器的地方吧,例如在主机里面就是将8位寄存器内的数据一位一位地发出去,所以从机里会有类似的结构。按照我目前的知识来理解,从机里有个类似栈的地方(这里只是借助栈的空间特点),栈有很多层,每一层都是一个存储单元,一个存储单元可以放8位数据

    3.由此可见,与I2C主机相通信的对象可以变为,每一次和从机的一个存储单元进行数据传输,可以把自己的8比特数据送给该存储单元,也可以读取该存储单元的数据

    4.具体的体现就是主机发送字节帧(此字节帧叫做command byte或word address)将地址指针指向与之通信的存储单元,此字节帧一般跟在地址帧后面,数据帧的前面

  • 下面是写操作和读操作的时序图

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 由图可知,读操作以非应答(1)+停止信号结束,写操作以应答(0)+停止信号结束
  • 读操作包括当前地址读,随机地址读,顺序读
  • 写操作包括字节写(单次写)和页写(连续写)
  • 另,下图为另一个IIC从机LM75的读模式

LM75的读模式

吐槽

原来项目只用到温度传感器的iic总线,我迷的很,一个多月了才发现用不着EEPROM,快乐的小辣鸡,iic可以做两个项目,就这么愉快地决定了

过了好几个月,iic项目终究还是难产了,我吐了,不管是自己写的控制端还是移植的黑金的,都只能读出全零的温度,有毒

资料夹

原子教你玩FPGA 刘军 阿东 张洋 编著

24LC04datasheet

What is I2C

IIC总线的FPGA实现

基于FPGA的IIC 协议读写 EEPROM 科研的小萌娃

IIC 时钟频率与数据传输速率的理解

IIC_FPGA控制程序设计 理实交融

关于FPGA实现I2C总线时提高可靠性的总结 FGPA

数字ic学习-IIC总线(一)之datasheet学习 第一天 芯王国

基于 FPGA 的模拟 I²C协议设计(上)FPGA技术江湖

基于 FPGA 的模拟 I²C协议设计(中)

基于 FPGA 的 模拟 I²C协议设计(下)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值