0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Verilog来实现EEPROM的读写,进行一个简单的I2C实战应用

电子工程师 来源:未知 作者:李倩 2018-08-31 17:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

I2C在芯片的配置中应用还是很多的,比如摄像头、VGA转HDMI转换芯片,之前博主分享过一篇I2C协议的基础学习IIC协议学习笔记,这篇就使用Verilog来实现EEPROM的读写,进行一个简单的I2C实战应用。

EEPROM

我使用的这个芯片是AT24C32,它手册上还有一种AT24C64,其实操作都是一样的,只是内存大小不同,AT24C32是32k(4096x8)AT24C64是64k(8192x8),

SCL设置为频率200Khz

SCL clk posedge data输入EEPROM

SCL clk negedge data输出EEPROM

SDA 双向Pin

A2,A1,A0 Device Addr default all 0,只操作一片可悬空引脚。

WP 接地正常读写,WP接Vcc写操作被禁止

字节寻址地址,是由12(AT24C32)或13bit(AT24C64)的地址组成,需要操作16位字地址高3或4位忽略即可。

Device Address 8’hA0写器件地址,8’hA1读器件地址

写字节操作

随机读字节操作

我这个芯片是双字节数据地址,所以在写数据地址时要写两次,先是高字节后是低字节。

开始结束标志

这个I2C总线的时序是一致的。

EEPROM应答

输出应答sclk的第九个周期给出,低电平应答。如果主机没有收到应答,需要重新配置。

数据传输时序

sda数据线在scl时钟的下降沿中间变化,可以避免产生误触开始结束标志。

I2C Design

i2c_start为高电平有效,传输完成后会产生一个i2c_done结束标志,表示操作完成。

I2C状态转移图

I2C写操作

(1)产生start位

(2)传送器件地址ID_Address,器件地址的最后一位为数据的传输方向位,R/W,低电平0表示主机往从机写数据(W),1表示主机从从机读数据(R)。这里按照手册给出的操作图,应该是W即低电平。ACK应答,应答是从机发送给主机的应答,这里不用管。

(3)传送写入器件寄存器地址,即数据要写入的位置。同样ACK应答不用管。

(4)传送要写入的数据。ACK应答不用管。

(5)产生stop信号

I2C读操作

(1)产生start信号

(2)传送器件地址(写ID_Address),这里按照手册给出的操作图,最低位是W即低电平。ACK。

(3)传送字地址(写REG_Address),ACK。

(4)再次产生start信号

(5)再传送一次器件地址,这里根据手册最低位是读R高电平,ACK。

(6)读取一个字节的数据,读数据最后结束前无应答ACK信号。

(7)产生stop信号。

读写操作的写器件地址和写数据地址操作是一样的,状态转移图中读写操作中这两部分复用了,根据读写标志来判断。

其他部分没啥好说的根据时序图写就行了,需要注意的一点是我们应该在sclk的高电平的中间采样数据,在sclk低电平的中间改变数据,当sclk为高电平的时候,sda为出现下降沿为start位, sda出现上升沿为stop位,所以在sclk为高电平的时候sda应该保持稳定不能随意乱动。这就又回到了数据传输有效的条件,只有在sclk为低电平期间,才允许数据变化,在高电平期间,不允许数据变化,否则就会出现起始位或结束位。

EEPROM有个仿真模型,在夏雨闻老师的书里面就有,这个模型默认是200khz的sclk驱动,仿真的时候可以将时间参数改小,我这里也分享出来。

仿真模型代码点击阅读原文可以查看。

根据仿真模型仿真的话基本不会有什么问题,需要注意的是操作的完成标志。从仿真上看到输入读写都没问题,但是stop标志没产生好,仿真看到读写操作没问题,但实际还是不行的,需要严格按照EEPROM的手册操作时序进行,差一点就不行。

我最后使用拨码开关作为读写使能,数码管显示读出来的输出,最后实现了对指定存储地址读写数据。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    30

    文章

    1370

    浏览量

    114121
  • EEPROM
    +关注

    关注

    9

    文章

    1129

    浏览量

    85522

原文标题:基于FPGA的I2C读写EEPROM

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32CubeMx入门教程(7):I2C读写应用

    导语“本次 教程使用CubeMx配置I2C进行I2C总线设备的数据读写操作,使用EEPROM作为实验对象”
    发表于 07-12 11:34 6420次阅读
    STM32CubeMx入门教程(7):<b class='flag-5'>I2C</b>的<b class='flag-5'>读写</b>应用

    I2C读写时序分析和实现思路

    上篇推文对I2C总线的特性进行了介绍和描述。对于开发者而言,最重要的是编码I2C读写时序驱动。本篇推文主要总结和分享I2C总线主机端通信的
    发表于 10-01 16:54 3703次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>读写</b>时序分析和<b class='flag-5'>实现</b>思路

    i2cEEPROM读写,计数

    i2cEEPROM读写,计数,附程序代码
    发表于 11-30 15:01

    I2C协议以及I2C读写EEPROM

    I2C协议以及I2C读写EEPROM实验文章目录I2C协议以及I2C
    发表于 08-23 08:25

    使用I2CEEPROM进行操作

    篇《I2C协议详解》我们了解了I2C的操作流程,这篇,我们就使用I2C
    发表于 12-13 08:19

    如何通过i2c连续读写eeprom

    我用verilog自制了i2c模块,将电路下载到fpga中,在读写eeprom时出现问题,不
    发表于 03-29 10:22

    Verilog HDL实现I2C总线功能

    简述了I2C总线的特点;介绍了开发FPGA时I2C总线模块的设计思想;给出并解释了用Verilog HDL实现部分I2C总线功能的程序,以及
    发表于 10-19 10:49 104次下载

    PIC的读写I2C程序

    PIC的读写I2C程序 TITLE " TWO WIRE/I2C BUS INTERFACE WITH PIC16
    发表于 01-16 11:41 2124次阅读

    Verilog HDL实现I2C总线功能

    摘要: 简述了I2C总线的特点;介绍了开发FPGA时I2C总线模块的设计思想;给出并解释了用Verilog HDL实现部分I2C总线功能的程
    发表于 06-20 13:17 7130次阅读
    用<b class='flag-5'>Verilog</b> HDL<b class='flag-5'>实现</b><b class='flag-5'>I2C</b>总线功能

    I2C读写EEPROM

    【*】程序简介 -工程名称:基本读写EEPROM -实验平台: 秉火STM32 F429 开发板 -MDK版本:5.16 -ST固件库版本:1.5.1 【 !】功能简介: 读写板载的 I2C
    发表于 12-13 15:12 23次下载

    STM32F10x _硬件I2C读写EEPROM(标准外设库版本)

    STM32F10x_硬件I2C读写EEPROM(标准外设库版本)
    的头像 发表于 03-25 11:11 1.2w次阅读
    STM32F10x _硬件<b class='flag-5'>I2C</b><b class='flag-5'>读写</b><b class='flag-5'>EEPROM</b>(标准外设库版本)

    STM32F10x_ 模拟I2C读写EEPROM

    STM32F10x_模拟I2C读写EEPROM
    的头像 发表于 03-25 11:13 1.1w次阅读
    STM32F10x_ 模拟<b class='flag-5'>I2C</b><b class='flag-5'>读写</b><b class='flag-5'>EEPROM</b>

    STM32学习之I2C协议(读写EEPROM

    EEPROM)。# I2C协议(读写EEPROM)1、SCL2、SDA二、代码1.
    发表于 11-30 15:21 34次下载
    STM32学习之<b class='flag-5'>I2C</b>协议(<b class='flag-5'>读写</b><b class='flag-5'>EEPROM</b>)

    如何使用I2C EEPROM

    电子发烧友网站提供《如何使用I2C EEPROM.zip》资料免费下载
    发表于 02-03 09:53 0次下载
    如何使用<b class='flag-5'>I2C</b> <b class='flag-5'>EEPROM</b>

    CW32单片机I2C接口读写EEPROM芯片介绍

    CW32单片机I2C接口读写EEPROM芯片介绍
    的头像 发表于 11-09 17:42 2314次阅读
    CW32单片机<b class='flag-5'>I2C</b>接口<b class='flag-5'>读写</b><b class='flag-5'>EEPROM</b>芯片介绍