stm硬件iic读不出数据_IIC与Verilog不得不说的故事

本文详细介绍了如何使用Verilog实现STM硬件的IIC通信,包括IIC协议的原理、步骤、状态,以及与EEPROM的交互。重点讨论了在实现过程中遇到的问题,如地址位数不匹配、数据传输的细节,并提供了相应的解决方案。同时,文章还提到了不同类型的EEPROM访问方式和写入周期的重要性。
摘要由CSDN通过智能技术生成
252a9b8d8c364e443f035805d8ba4f5f.gif

目录

一、前言

二、软硬件平台

软件平台 

硬件平台

三、IIC与EEPROM

IIC简介

     1.  写操作大致步骤

     2.  读操作大致步骤

     3.  IIC总线有以下几种状态

     1.  空闲状态

     2.  起始信号和结束信号

     3.  数据传输状态

     4.  应答信号/非应答信号

     5.  从机地址

EEPROM简介

EEPROM从机地址EEPROM数据地址EEPROM的五访问方式

1.  字节写(BYTE WRITE)

2.  页写(PAGE WRITE)

3.  当前地址读(CURRENT ADDRESS READ)

4.  随机读(RANDOM READ)

5. 连续读(SEQUENTIAL READ) EEPROM写入周期

四、模块设计

1.功能目标参考资料

2.IIC驱动模块(iic_driver)

3.IIC驱动模块的接口定义IIC驱动模块信号设计 

     1.竞争冒险

     2.为什么要倍频

     3.下降沿触发与多重驱动

4.IIC多时钟域数据同步

5.IIC驱动模块(iic_driver)最终实现

五、仿真与测试

六、总结

正文

9d4b1590e8b27cdcf2c14d4b3e8c2fa2.png

一、前言

笔者是一名FPGA资深小白,跟着正点原子已经编写了不少Verilog代码,但是始终没有找到Verilog 的感觉。在大佬的推荐下,遂决定按照自己的思路重新进行历程的编写,以增强对Verilog的应用能力。恰巧正点原子的历程中EEPROM未曾亲手编写,于是决定自己设计信号以实现iic协议。

iic协议并不复杂,但笔者近乎用了半个月的时间(别说了,我太菜了!!!)才彻底实现EEPROM 的随机读/写操作。本文会记录笔者的思路以及实现方式,故会贴出笔者写过的但不能用的Verilog代码。最终可以使用的iic协议代码会贴在文章最末,以供指正批评

虽然本代码是笔者自己设计实现的,但参考了多种历程的思路与实现方式,笔者会在文中提及处注明所参考文章的链接。iic协议并不复杂,实现方式也多种多样,但通过使用Verilog描述iic的硬件逻辑电路确实是一件很有意思的事

9d4b1590e8b27cdcf2c14d4b3e8c2fa2.png

二、软硬件平台

软件平台

1.    操作系统:win10

2.    开发套件:Vivado 2019.2

3.    仿真工具:Vivado自带仿真工具

硬件平台

1.    FPGA型号:Xilinx公司的zynq7020

2.    EEPROM型号:Microchip公司的AT24LC04B

9d4b1590e8b27cdcf2c14d4b3e8c2fa2.png

三、IIC与EEPROM

IIC简介

IIC(Inter-Integrated Circuit) 其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在上世纪80年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL

所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的S

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值