24C02 读写代码,基于STM32F030

简介: 24C02 读写代码,基于STM32F030

EEPROM可以掉电保存数据,是一种在产品中经常使用的器件,24Cxx 系列更是被广泛采用。下面是的工程在 24LC02 上调试通过,实现了字节读写,和页读写,MCU 是 STM32F030。采用了 MCU 的硬件 I2C 控制器。

24LC02硬件连接:A2,A1,A0 接 GND, 地址为 A0。WP 接 GND,允许写入。24LC02 Page size 是 8 Bytes, 一共 256 个字节大小。如果要移植代码到其它芯片,需要注意 Page size 和页地址的不同。

https://github.com/TopSemic/STM32_Controller_24C02

网上有很多抱怨使用硬件 I2C 控制器不稳定,采用 GPIO 模拟 I2C 时序的同学。我们还是不推荐用模拟的方法,它会耗费比较多的MCU 系统时间。硬件 I2C 其实也是可以稳定运行的,需要注意以下几点:

1. 看一下芯片勘误表 Errata,有没有已知 Bug。

2. I2C 操作中途被打断,或受到脉冲干扰,SCL, SDA 可能被拉低锁死。尝试用 SCL 产生 9 个时钟脉冲让从器件或主控制器释放总线。这种方法可以解决掉绝大部分问题。这里需要注意,拉低总线的并不一定是从器件,有客户在总线锁死后,把 SCL SDA 线割断后发现这两根线任然是拉低的 (主控制器模块因为时序问题进入死锁)。

3. 总线上加具有总线恢复功能的缓冲器,如 LTC4307。

4. 选用带复位输人的 I2C 从器件。

5. 控制 I2C 从设备的电源,死锁后重新上电。

采用哪些方法,还是要综合考虑可靠性要求和成本。

扩展阅读资料:

I2C specification and user manual

http://www.nxp.com/documents/user_manual/UM10204.pdf

下面是实测的 24C02 读写时序






相关文章
|
Web App开发 Rust 算法
【密码学】一文读懂ChaCha20
好久没写新的加密算法的原理了, 这次所选取的加密算法结构比较简单, 一起来看一下吧。
10697 154
【密码学】一文读懂ChaCha20
|
3月前
|
机器学习/深度学习 人工智能 数据中心
大模型时代的底牌:深度解密英伟达全架构GPU指令集、带宽与物理封锁
本文深度解析英伟达全系GPU在大模型时代的定位与价值:从Blackwell(RTX 50/B200)到Pascal(1080 Ti/P40),横跨六大架构,聚焦算力、显存、NVLink、指令集四大维度,揭秘“刀法”逻辑与极客实战策略,堪称本地LLM硬件选型终极指南。(239字)
1253 6
|
芯片
一文搞懂I2C协议-硬件基础
I2C总线是由飞利浦在80年代初设计的,以允许位于同一电路板上的组件之间能够轻松通信。其大大简化了电路的设计,早期的电视机中很多地方用到了I2C这种通信方式。飞利浦半导体于2006年迁移到了NXP。I2C名称翻译为“ Inter IC”。有时,该总线称为IIC或I²C总线。I2C总结的基本的特征
1987 0
|
自然语言处理 搜索推荐 开发者
通义灵码 2.5.4 版【**编程智能体**】初体验
通义灵码2.5.4版是一款强大的编程智能体工具,支持VSCode和PyCharm插件安装。其核心能力包括工程级变更、自动感知项目框架、自主使用编程工具及终端命令执行等,大幅提升开发效率。通过智能体模式,用户可轻松实现从任务描述到代码生成、修改、运行的全流程自动化。例如,输入需求即可生成Gradio应用代码并自动运行,界面美观且操作流畅。该工具紧密集成开发环境,适配个性化编程习惯,为开发者带来高效便捷的编程体验。
1464 12
|
API 语音技术
基于Asterisk和TTS/ASR语音识别的配置示例
基于Asterisk和TTS/ASR语音识别的配置示例如下:1. 安装Asterisk:首先,确保你已在服务器上成功安装Asterisk。可以选择从Asterisk官方网站下载最新版本的安装包并按照指南进行安装。2. 安装TTS引擎:选择适合你需求的TTS(Text-to-Speech)引擎,如Google Text-to-Speech、Microsoft Azure Cognitive Services等。按照所选TTS引擎的文档和指示进行安装和配置。3. 配置Asterisk:编辑Asterisk的配置文件,通常是`/etc/asterisk/extensions.conf
338 5
|
C语言 Python
一个高效的C语言命令行解析库
一个高效的C语言命令行解析库
1144 0
|
算法 API 开发者
【Qt UI相关】Qt中如何控制 窗口的最大化、最小化和关闭按钮?一文带你掌握用法
【Qt UI相关】Qt中如何控制 窗口的最大化、最小化和关闭按钮?一文带你掌握用法
3975 1
|
XML 机器学习/深度学习 监控
性能监控之Telegraf+InfluxDB+Grafana NVIDIA GPU实时监控
【6月更文挑战12天】性能监控之Telegraf+InfluxDB+Grafana NVIDIA GPU实时监控
1084 0
|
存储 芯片
STM32速成笔记(十一)—EEPROM(AT24C02)
本文详细介绍了什么是AT24C02,介绍了它的引脚,读/写时序,给出了应用实例和详细的程序设计。最后,简单介绍了AT24C02的应用场景。
3467 0
STM32速成笔记(十一)—EEPROM(AT24C02)
|
芯片
单片机中GPIO八种工作模式详细分析
单片机中GPIO八种工作模式详细分析
1172 0