ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

EEPROM 24C0x 的理解

EEPROM 24C0x 的理解 参考文章AT24C02、04、08、16 操作说明 - schips - 博客园单字节写入Start 起始发送器件写地址0xA0→ 等待 ACK发送 EEPROM 内部内存地址8bit→等待 ACK发送要写入的 1 字节数据 →等待 ACK发送 STOP 停止信号✅必须 Stop才会启动内部烧写芯片进入内部写周期 tWR ≈5ms。时序总结Start → 0xA0[W] → ACK → MemAddr → ACK → Data → ACK → STOP页写Start 起始写器件地址0xA0 →ACKEEPROM 起始内存地址→ACK连续发送最多 16 个数据字节每发 1 字节24C08 返回 ACK中途不要发 STOP我认为页起始地址可以发16个如果不是起始地址发16个会覆盖这页头部数据全部数据发完发送 STOP 停止芯片启动一次内部 tWR5ms 烧写。时序Start→0xA0[W]→ACK→MemAddr→ACK→Data1→ACK→Data2→ACK...DataN→ACK→STOP读操作3 种读模式当前地址读Current Address Read随机读Random Read指定任意内存地址读顺序读Sequential Read连续批量读24C08 内部自带8 位地址计数器每次读写之后硬件自动把内部地址 1读到地址 0xFF 之后会回卷到 0x00。1、当前地址读 Current Address Read不发送内存地址直接读上一次操作结束后的那个内部地址。 24C08 内部保存了上次访问后的地址指针。总线流程Start发从机读地址0xA1→ 等待 ACK24C08 输出当前地址的 1 字节数据主机发 NACK非应答Stop 结束时序Start → 0xA1(R) → ACK → Data ←(从机输出) → NACK → STOP2、随机读 Random Read你波形里的最常用指定任意 EEPROM 内存地址读取 1 字节。 技巧要读地址需要先做一次 “伪写”把内存地址发给芯片不发 Stop用重复起始 Repeated‑Start 切换到读模式。总线流程Start器件写地址0xA0→ ACK发送你要访问的 EEPROM内存地址8bit → ACK(假装要写后面发重新读)Repeated‑Start重复起始不发 Stop器件读地址0xA1→ ACK24C08 输出该地址的 1 字节数据主机 NACKStopStart → 0xA0(W) → ACK → MemAddr → ACK → Repeated‑Start → 0xA1(R) → ACK → Data → NACK → STOP3、顺序读 Sequential Read批量连续读在【当前地址读】或者【随机读】的基础上主机回复 ACK 而不是 NACK24C08 会自动地址 1继续输出下一个地址的数据可以一口气读很多字节。流程基于随机读接着连续读多字节Start0xA0(W) → ACK目标起始内存地址 → ACKRepeated‑Start0xA1(R) → ACK读第 1 字节主机返回 ACK告诉芯片我还要继续读下一个读第 2 字节主机返回 ACK…… 循环读到最后一个字节的时候主机发 NACK通知芯片不再继续读Stop重点区分 ACK/NACK主机发 ACK还要继续读下一个字节主机发 NACK读完了结束传输地址溢出行为读到 0xFF 之后下一个会回卷到 0x00不会停止。下面的表先跳过型号比特容量字节容量单页长度总页数计算总页数地址说明要点AT24C022Kbit256Byte8Byte256÷832 页A2A1A0 全部为硬件片选仅 8 位片内地址AT24C044Kbit512Byte16Byte512÷1632 页借用器件地址最低位 P 作为 A89 位地址分为两块 256ByteAT24C088Kbit1024Byte16Byte1024÷1664 页占用器件地址 2 位高位地址 A8、A94 块 256ByteAT24C1616Kbit2048Byte16Byte2048÷16128 页占用器件地址 3 位高位地址8 块 256ByteAT24C3232Kbit4096Byte32Byte4096÷32128 页不再借用器件地址固定 1 字节器件地址 2 字节片内地址AT24C6464Kbit8192Byte32Byte8192÷32256 页双字节片内地址32 字节 / 页概念控制字里包含器件地址和读或写信息 控制字 就当作 器件地址控制字一个字节 固定格式1 0 1 0 A2 A1 A0 R/W其中1 0 1 0是固定的A2 A1 A0是器件硬件地址 R/W 写0 读1内存地址一个字节0-255AT24C022Kbit 2048/8 256{Byte}页长度 8Byte超页会页内回绕,写9个字节会覆盖第一个一页8个数据 第一页地址是 0x00-0x08 第二页 0x09-0x0F 256/832页C2的 A2 A1 A0 可以组成8个地址所以可以使用8个C02C4 512个字节内地址都是0-0xFF 256个所以要占用A0等A0这时也叫P控制字1 0 1 0 A2 A1 P R/WP0或1 相当于256*2512字节C8P占用了 A1 A0 组成4个块 4*256C16 P占用了A2 A1 A0 8个块 8*256每个块地址是0-FF 8个FFC4 C8 C16 页写一次都是可以写16个字节页地址为 0x00 0x10 0x20...F0 间隔0x1024C32/6432 字节 / 页地址是16位地址发送地址高低位 在发数据 页首间隔 0x20可通过A2A1A0 挂8个AT24C3232Kbit ÷8 4096Byte 地址范围0x0000 ~ 0x0FFF12 位有效地址128 页 ×32ByteAT24C6464Kbit ÷8 8192Byte 地址范围0x0000 ~ 0x1FFF13 位有效地址256 页 ×32Byte横向对比速记24C028 字节 / 页页首间隔 0x0824C04/08/1616 字节 / 页页首间隔 0x1024C32/6432 字节 / 页页首间隔 0x20
返回列表