IIC控制设计读写EEPROM

IIC控制设计

本博文完全参考小梅哥(下面是链接)

IIC协议详解+Uart串口读写EEPROM

IIC模块是比较好理解,但个人觉得比较难实现。这里的读为随机读数据,即自己可以指定读取那一个数据。若不进行虚写操作,就会造成独处的数据其实是上次写入的地址。同时读取后数据指针加一。
接下来简单分析小梅哥代码的思想。(魔咒呀魔咒~)

IIC简述

一共有两根线进行控制
sda为inout类型,数据总线
scl为时钟总线

  1. 最多一次只能写入16 bytes的数据(页写)
    IIC控制设计读写EEPROM_第1张图片
  2. 时钟周期在100K - 400K之间

时序描述

IIC控制设计读写EEPROM_第2张图片
开始位与停止位的时序。
2.
IIC控制设计读写EEPROM_第3张图片
只有在SCL总线为高的时候,数据有效,同时不允许在电平期间改变数据。
3.
IIC控制设计读写EEPROM_第4张图片
第一个八位数据的发送。
在第九个的时候,需要释放sda给其高组态。由从机响应ack。同时检测数据是否传输正确。
4.
IIC控制设计读写EEPROM_第5张图片
单字节写操作
5.
IIC控制设计读写EEPROM_第6张图片
随机读操作

状态机

代码实现

你可能感兴趣的:(FPGA逻辑篇)