STM32软件I2C读写AT24C64 - 指南

news/2025/10/24 17:03:22/文章来源:https://www.cnblogs.com/wzzkaifa/p/19163812

AT24C64存储空间大小为64Kbit,也就是65536bit,能存放65536/8 = 8192Byte数据。

写数据

1、按字节写

发送了起始信号后,第一部分要先发送从机地址,第二部分发送访问的存储地址,第三部分发送写入的一字节数据。

从机地址按硬件上EEPROM芯片的A2 A1 A0引脚接线来定义。

存储地址可以看到由13位组成,最左三位是无意义的位,因为按照上面所说,AT24C64可以存储8192个字节的数据,实际以0为起始的话就只有8191个数据,8191换算成二进制为00011111 11111111,可以看出刚好能由13位表示EEPROM内部数据的存储地址。

void AT24C64_W(uint16_t Address, uint8_t Data)
{I2C_Start();I2C_SendByte(AT24C64_Write);uint8_t ack1 = I2C_ReceiveAck();I2C_SendByte(Address>>8);I2C_ReceiveAck();I2C_SendByte(Address);I2C_ReceiveAck();I2C_SendByte(Data);uint8_t ack2 = I2C_ReceiveAck();I2C_Stop();
}
2、按页写

 与按字节写入相比,页写入在第一个字节写完后再写了x个数据,因为AT24C64每页32个字节,所以这里的x = 3,也就是再写3byte后结束按页写入。

需要注意的是,每写一个Byte的数据页内地址+1,红线画出来的地方表示当前页写满后会重新覆盖掉这一页前面的数据,而不会自动跳转到下一页。

自己写的简易版按页写数据

void AT24C64_W_Page(uint16_t Address, uint8_t *Data)
{uint8_t i;I2C_Start();I2C_SendByte(AT24C64_Write);uint8_t ack1 = I2C_ReceiveAck();I2C_SendByte(Address>>8);I2C_ReceiveAck();I2C_SendByte(Address);I2C_ReceiveAck();for (i = 0; i < 32; i++){I2C_SendByte(Data[i]);I2C_ReceiveAck();}I2C_Stop();
}

ai升级版按页写数据

  • HAL库要求:传入 (7位地址 << 1),即 0x50 << 1 = 0xA0
  • 底层行为:HAL库会在总线上发出正确的8位地址(0xA0写,0xA1读)。
  • 推荐实践:使用 HAL_I2C_Mem_Read/Write 简化操作,避免手动处理方向位。
#define AT24C64_ADDR 0x50   // I2C设备地址
/*** @brief 向AT24C64写入一页数据(最多32字节)* @param page_num  页号(0~255,共256页)* @param offset    页内偏移(0~31)* @param data      待写入数据指针* @param len      数据长度(不超过32-offset)* @return HAL_OK成功,其他失败*/
HAL_StatusTypeDef AT24C64_PageWrite(uint8_t page_num, uint8_t offset, uint8_t *data, uint8_t len) {// 参数检查if (page_num > 255 || offset > 31 || len > (32 - offset)) {return HAL_ERROR;}// 计算16位EEPROM地址(高5位为页号,低8位为页内地址)uint16_t mem_addr = (page_num << 5) | offset;uint8_t addr_buffer[2] = { (uint8_t)(mem_addr >> 8), (uint8_t)(mem_addr & 0xFF) };// 组合I2C传输数据:地址 + 数据uint8_t i2c_buffer[2 + 32];  // 地址2字节 + 数据最多32字节memcpy(i2c_buffer, addr_buffer, 2);memcpy(i2c_buffer + 2, data, len);// 启动I2C传输HAL_StatusTypeDef status = HAL_I2C_Master_Transmit(&hi2c1,                  // I2C句柄(需提前初始化)AT24C64_ADDR << 1,       // 设备地址(左移1位,HAL库要求)i2c_buffer,              // 数据缓冲区2 + len,                 // 总长度(地址+数据)HAL_MAX_DELAY            // 超时时间);// 等待写入完成(AT24C64需要约5ms内部写入周期)if (status == HAL_OK) {HAL_Delay(5);}return status;
}
  uint8_t data[32] = {0x01, 0x02, 0x20}; // 3字节数据HAL_StatusTypeDef status = AT24C64_PageWrite(1, 3, data, 3);          // 写入第1页,偏移3,地址为:0x35

读数据

1.当前地址读取数据。

2.选定地址读取数据 。

3.连续读取数据。

void AT24C64_R(uint16_t Address, uint8_t *PBUff, uint16_t datalen)
{uint8_t i;I2C_Start();I2C_SendByte(AT24C64_Write);I2C_ReceiveAck();I2C_SendByte(Address>>8);I2C_ReceiveAck();I2C_SendByte(Address);uint8_t ack4 = I2C_ReceiveAck();I2C_Start();I2C_SendByte(AT24C64_Read);uint8_t ack3 = I2C_ReceiveAck();for (i = 0; i < datalen - 1; i++){PBUff[i] = I2C_ReceiveByte();I2C_Ack();}PBUff[datalen - 1] = I2C_ReceiveByte();I2C_NAck();I2C_Stop();
}

注意:写完数据建议等待5ms,等待数据写入完成

AT24CXXX容量

总容量(Byte容量) = 页数 × 页内字节单元数。

AT24CXXXbit容量Byte容量页数页内字节单元数
AT24C01    1Kbit128Byte16页 8Byte
AT24C02    2Kbit    256Byte32页 8Byte
AT24C04    4Kbit    512Byte32页16Byte
AT24C08    8Kbit    1024Byte64页 16Byte
AT24C16    16Kbit2048Byte128页  16Byte
AT24C32    32Kbit    4096Byte128页  32Byte
AT24C6464Kbit8192Byte256页32Byte
AT24C128    128Kbit    16384Byte256页64Byte
AT24C256    256Kbit    32768Byte512页 64Byte

参考文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/945495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bcc

bcc原理从内核中获取数据。 整个工具的核心原理是利用 eBPF 技术,在内核中与块设备 I/O 相关的关键函数上设置探针(Tracepoint),从而在几乎无开销的情况下捕获 I/O 请求的开始和结束时间,计算出延迟,并将结果存入…

手写ibatis

通用 Mapper:提供通用的 CRUD 方法。条件构造器:支持链式调用,构建查询条件。分页查询:支持 Oracle 的分页查询。连表查询:支持 JOIN 查询。指定字段查询:支持动态选择查询字段。注解支持:通过注解配置实体类和…

读书笔记:解锁数据库查询新姿势:函数索引让你的搜索又快又准

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学…

国产IPD项目管理软件推荐|别再靠 Excel 推 IPD 了!帮你把IPD流程从“纸上”搬进系统

本文盘点了国内能真正支撑 IPD 流程落地的几款软件,从配置灵活、可视化程度高的飞书项目,到深度面向研发的禅道,覆盖制造业、硬件、互联网等多场景。看完你就能判断:哪一款最适合你的组织,帮你实现从立项到评审、…

【源码解读之 Mybatis】【核心篇】--第7篇:ParameterHandler参数处理机制

【源码解读之 Mybatis】【核心篇】--第7篇:ParameterHandler参数处理机制第7篇:ParameterHandler参数处理机制 1. 学习目标确认 1.0 第6篇思考题解答 在深入学习ParameterHandler参数处理机制之前,让我们先回顾并解…

[linux] 文件夹可写权限的关闭和打开

设置仅可读:chmod -R a-w <folder_path>打开写权限:chmod -R 766 <folder_path>

2025年教室护眼灯厂家权威推荐榜单:led教室灯/幼儿园教室灯/教室照明灯具源头厂家精选

随着社会对青少年视觉健康的日益关注,教室照明环境已成为学校建设的重点环节。专业的教室护眼灯不仅能有效降低学生近视发生率,还能提升学习效率。本文将基于行业调研与公开数据,对当前市场上具有代表性的教室护眼灯…

2025年自动定量灌装机厂家权威推荐榜单:称重灌装机/膏状灌装机/瓶灌装机源头厂家精选

在当今工业化进程中,自动定量灌装设备作为生产线核心环节,其技术水平直接影响企业生产效益与产品质量。随着智能制造的深入推进,灌装设备行业正经历着从机械化向数字化、智能化的重要转型。本文将基于行业数据与技术…

厨房电子秤芯片方案:SIC8833

本文介绍了采用SIC8833QFN32单片机开发的一款5KG量程,0.1g精度的厨房电子秤。该秤具备自动调零、2段自动标定功能,支持USB充电,并能进行模式和单位转换。用户可通过MODE和UNIT键在重量、水体积、牛奶体积模式以及公…

备份恢复:backup database format plus archivelog归档备份集路径与数据库format指定不一致

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。备份恢复:b…

在MCUXpresso IDE中建立使用静态库的工程 - 指南

在MCUXpresso IDE中建立使用静态库的工程 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

从“天书”到源码:HarmonyOS NEXT 崩溃堆栈解析实战指南

本文详解如何利用 hiAppEvent 监控并获取 sourcemap、debug so 等核心产物,剖析了 hstack 工具如何将混淆的 Native 与 ArkTS 堆栈还原为源码,助力开发者掌握异常分析方法,提升应用稳定性。作者:杨兰馨(楠瑆) 背…

2025年江苏博士后微服务公司权威推荐榜单:博士后服务团/高层次人才服务/高层次人才引进源头公司精选

汇聚顶尖人才资源,构建创新驱动发展新引擎 在创新驱动发展的时代背景下,江苏省作为科技与人才高地,对博士后等高层次人才的需求日益增长。博士后微服务机构作为连接政府、企业、高校和人才的桥梁,已成为推动区域科…

RFSOC学习记录(六)混频模式分析

RFSOC学习记录(六),简要介绍混频模式以及利用xilinx官方频率规划器介绍混频​ 混频 混频器(Mixer)是RFSOC通过ip核实现在数字域的频率搬移,主要功能是在不改变采样率的情况下,把信号的频谱中心移动到目标频率附…

每周读书与学习-JMeter主要元件详细介绍(二)函数助手

每周读书与学习是由清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书的作者推出,分享作者多年的IT从业经历,希望对很多计算机科学技术IT类专业毕业生以及IT从业者有所帮助。 1、函数助手 函数助手是…

Launcher 桌面源码笔记一(3D车模桌面)

Launcher 桌面源码笔记一(3D车模桌面)3D车模通过TaskView显示在Launcher,首先需要知道,为什么要用TaskView,而不是Activity,然后在说加载流程 1、surface比activity等效率更高,特别是针对车模跟地图等重量级场景…

Microsoft Visual C++ 运行库安装教程(最新版完整指南|DLL缺失修复方案)

前言 在 Windows 系统中,不论是开发软件、运行大型 3D 游戏,还是使用视频剪辑、图形处理工具,许多人都会遇到这样让人头疼的错误提示: *** 系统缺少 msvcp140.dll** *** 无法启动程序,因为丢失 vcruntime140_1.dl…

2025年BPM系统排名深度测评:5大主流厂商哪家适合你?

在数字化转型加速的商业环境中,企业对业务流程的精细化管理需求日益迫切。BPM系统(业务流程管理系统)作为优化流程、提升效率的核心工具,通过建模、自动化、监控与优化全流程,帮助企业打破信息孤岛、降低运营成本…

2025 年硫酸钡板生产厂家最新推荐排行榜:结合协会测评权威数据,揭晓实力企业高纯度/ct 室/牙科/辐射硫酸钡板公司推荐

引言 在射线防护领域,硫酸钡板的质量与性能至关重要。为给采购方提供可靠参考,本次 2025 年硫酸钡板生产厂家最新推荐排行榜,由中国辐射防护器材协会联合行业专家团队开展测评并发布。测评过程严格遵循《射线防护材…

2025 年最新推荐!软件验收测试公司最新排行榜,揭秘具备 CMA/CNAS 资质的靠谱品牌可靠/权威/知名的软件验收测试公司推荐

引言 据中国软件测评行业协会 2024 年度报告显示,国内软件验收测试机构合规率仅 68%,超三成机构因测评方法不规范导致测试结果偏差率达 15% 以上。在数字化转型加速的当下,科学的测评方法成为保障软件质量的核心。当…