STM32F0单片机入门——用 I2C HAL 库读写24C02
1.24C02介绍
24C02 现在基本是开发板的标配,对于需要掉电存储的应用来说确是不二选择。现在单片机因为内部集成了Flash存储器,一般也都支持数据的掉电保存,但相对于 24C02 这种 EEPROM 来说,使用单片机内部的 Flash 有一些需要注意的问题:a.Flash 写入数据之前需要先执行擦除操作,而且擦除以扇区为单位。b.Flash读写次数比 EEPROM 少很多。c.容易误操作,把 Flash 内部的代码擦除掉。
d.影响中断的响应时间。
24C02 有 256 字节的数据,一般说来也够用了。它的地址是可以通过引脚配置的,这样一条 I2C 总线上就可以挂多个 24C02。如下:
我们把 A2,A1,A0 都接地,这样地址为 A0。然后 SCL,SDA 脚接 MCU 的 PB8 和 PB9。需要注意 SCL,和 SDA 需要加上拉电阻。
2.代码
下面我们在一个 I2C 例程上面修改代码来实现 24C02 的读写。大家可以看到使用库函数的好处,基本上不用看 STM32F030 的手册,很快就能实现我们想要实现的功能。我们用 Keil 打开下面这个工程:
STM32Cube_FW_F0_V1.11.0ProjectsSTM32F030R8-NucleoExamplesI2CI2C_TwoBoards_ComPollingMDK-ARMProject.uvprojx
Step 1, 把 I2C 地址改为跟我们硬件一致:
Step 2, 根据实际使用的 I2C 模块和引脚进行配置:
Step 3, 把地址模式改为 7BIT:
Step 4, 操作EEPROM,我们不使用例子中的 HAL_I2C_Master_Transmit 和 HAL_I2C_Master_Receive,这两个函数适用于两个 I2C 器件之间进行数据传输。我们这里要用的是下面这两个函数:HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, // 使用的 I2C 模块的 Handle 的指针uint16_t DevAddress, // I2C 器件的地址,这里是 24C02 的地址 0xA0uint16_t MemAddress, // 存储器内部地址uint16_t MemAddSize, // 存储器内部地址位数 8BIT or 16BIT ?uint8_t *pData, // 发送数据缓冲区指针uint16_t Size, // 数据长度uint32_t Timeout // 超时设置
);
HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, // 使用的 I2C 模块的 Handle 的指针uint16_t DevAddress, // I2C 器件的地址,这里是 24C02 的地址 0xA0uint16_t MemAddress, // 存储器内部地址uint16_t MemAddSize, // 存储器内部地址位数 8BIT or 16BIT ?uint8_t *pData, // 接收数据缓冲区指针uint16_t Size, // 接收数据长度uint32_t Timeout // 超时设置);
在此我们写入数据用的 24C02 的 Page Write 命令,每次写入 8个字节的数据,然后存储器写入地址加 8。要注意每次执行完写入命令后,需要有一个延时,等待 EEPROM 内部处理完该指令后才能继续写入。这个延时要查手册,不同的厂家可能有不同的数值。读出时可以连续的读出数据,无需等待。
下面是写入数据的波形,0xA0 是器件地址,0x28 是 24C02 内部存储器地址,之后是 8个字节数据。
读出数据的波形:
注意:
在使用硬件 I2C 操作时,有时候会遇到死锁问题。在此情况下,可以把 SCL,SDA 引脚初始化为 GPIO,如此例中的 PB8, PB9 然后连续翻转 SCL 引脚送出 9 个时钟脉冲,既可以使 I2C 从死锁的状态复位。然后再重新初始化 I2C 模块,进入正常 I2C 操作。
参考资料:
PM0215 STM32F0xxx Cortex-M0 programming manualUM1785 Description of STM32F0 HAL and low-layer drivers24C02 DatasheetSTM32F030 Datasheet

图片新闻
最新活动更多
-
7月3日立即报名>> 【在线会议】英飞凌新一代智能照明方案赋能绿色建筑与工业互联
-
7月22-29日立即报名>> 【线下论坛】第三届安富利汽车生态圈峰会
-
7.30-8.1火热报名中>> 全数会2025(第六届)机器人及智能工厂展
-
7月30-31日报名参会>>> 全数会2025中国激光产业高质量发展峰会
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
-
精彩回顾立即查看>> 【在线会议】Solution Talks |Computex 2025关键趋势深读
推荐专题
- 1 数智破局·生态共生:重构全球制造新引擎 2025 WOD制造业数字化博览会即将在沪盛大启幕
- 2 【重磅来袭】6月17日上海见!全球智造巨头聚首,60余场前沿论坛,制造业数字化盛会邀您共启数智破局之旅!
- 3 安森美正式参评“维科杯·OFweek 2025中国工业自动化与数字化行业优秀产品奖”
- 4 当数智工业邂逅大湾区,看PHIIDF2025如何破界,链动全球!
- 5 抢先解锁!全数会2025机器人及智能工厂展览会核心亮点速递
- 6 【最后召集】6月17-19日,60+论坛剧透制造业未来,200+全球巨头携制造业黑科技齐聚,制造业数字化转型巅峰盛会即将启幕!
- 7 硬核登场!凌科LP-12系列 90°工业级连接器上市,打造行业高可靠连接解决方案
- 8 欧姆龙正式参评“维科杯·OFweek 2025中国工业自动化与数字化行业优秀产品奖”
- 9 世界计量日盛会启幕,聚焦测量体系变革:质量、效率与动力
- 10 4.77 亿募资!年赚 1.11 亿的智能配电 “小巨人” 冲刺创业板,在手订单超 6 亿!
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论