AT24C02 cubemx
时间: 2024-12-28 09:19:41 浏览: 6
### 使用STM32 CubeMX配置和操作AT24C02 EEPROM
#### 配置CubeMX项目
为了通过STM32CubeMX配置并操作AT24C02 EEPROM,需先创建一个新的STM32工程,并选择合适的MCU型号。对于大多数应用来说,STM32F1系列是一个不错的选择。
在Pinout & Configuration界面中找到I2C外设模块,将其激活以便用于通信[^2]。接着设置参数如下:
- **Mode**: I2C Mode
- **Clock Speed**: 根据需求设定(通常为100kHz)
- **Own Address 1**: 不适用 (除非作为从设备)
- **Duty Cycle**: 快速模式下才有效果;标准模式保持默认即可
- **ACK**: 启用应答功能以确认接收到的数据包无误
- **Analog Filter**: 开启模拟滤波器有助于减少噪声干扰
- **Digital Noise Filter**: 数字抗噪等级依据实际环境调整
完成上述步骤之后保存配置文件并生成初始化代码框架。
#### 编写读取/写入函数
接下来,在自动生成的源码基础上补充具体的EEPROM访问逻辑。下面给出了一组简单的例子来展示如何实现基本的功能——向指定地址处存储单个字节以及从中取出相同长度的信息片段[^4]。
```c
#include "main.h"
// 假定已经定义好了 hi2c1 句柄变量...
void WriteOneByteToEeprom(uint8_t deviceAddress, uint16_t memAddress, uint8_t value){
HAL_StatusTypeDef status;
status = HAL_I2C_Mem_Write(&hi2c1,
deviceAddress << 1, // 设备地址左移一位得到7位格式
memAddress,
I2C_MEMADD_SIZE_8BIT,
&value,
sizeof(value),
100);
if(status != HAL_OK){
Error_Handler();
}
}
uint8_t ReadOneByteFromEeprom(uint8_t deviceAddress, uint16_t memAddress){
HAL_StatusTypeDef status;
uint8_t readValue;
status = HAL_I2C_Mem_Read(&hi2c1,
deviceAddress << 1, // 设备地址左移一位得到7位格式
memAddress,
I2C_MEMADD_SIZE_8BIT,
&readValue,
sizeof(readValue),
100);
if(status != HAL_OK){
Error_Handler();
}
return readValue;
}
```
以上两段程序分别实现了对特定内存位置执行一次性的数据存入与提取动作。需要注意的是`deviceAddress`应该对应于目标器件的实际物理地址,而`memAddress`则是内部寄存器偏移量或者是用户想要操纵的具体单元格索引号。
#### 测试验证
最后一步就是编译链接整个工程项目并将固件烧录到目标板上进行调试测试了。可以尝试调用刚才定义好的API接口来进行一些基础的操作实验,比如往某个固定区域里边填充几个已知数值然后再试着把它们重新加载回来加以比较校验其一致性。
阅读全文