配置SYS和时钟
https://blog.youkuaiyun.com/hmxm6/article/details/136636793
配置I2C
I2C Speed Mode: IIC模式设置 快速模式和标准模式。实际上也就是速率的选择。
I2C Clock Speed:I2C传输速率,默认为100KHz
Fast Mode Duty Cycle:快速模式下的I2C占空比
Clock No Stretch Mode: 时钟没有扩展模式
Primary Address Length selection: 从设备地址长度 设置从设备的地址是7bit还是10bit 大部分为7bit
Dual Address Acknowledged: 双地址确认
Primary slave address: 从设备初始地址
查看原理图对应引脚
注意事项
AT24C02有不同型号,对应每页的字节不同
型号 | 容量bit | 容量byte | 页数 | 字节/页 | 器件寻址位 | 可寻址器件数 | WordAddress位数/字节数 |
---|---|---|---|---|---|---|---|
AT24C32 | 32k | 4K | 128 | 32 | A2A1A0 | 8 | 12/2 |
AT24C64 | 64k | 8K | 256 | 32 | A2A1A0 | 8 | 13/2 |
AT24C128 | 128k | 16K | 256 | 64 | A1A0 | 4 | 14/2 |
AT24C256 | 256k | 32K | 512 | 64 | A1A0 | 4 | 15/2 |
AT24C512 | 512k | 64K | 512 | 128 | A2A1A0 | 8 | 16/2 |
I2C设备地址
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
1 | 0 | 1 | 0 | A2 | A1 | A0 | R/~W |
写入数据
每次写入数据不得超过页字节数
测试代码
头文件
#ifndef __BSP_I2C_EEPROM_H__
#define __BSP_I2C_EEPROM_H__
#ifdef __cplusplus
extern "C" {
#endif
#include "stm32f4xx.h"
#define EEPROM_ADDRESS 0xA0
#define EEPROM_MAX_TRIALS 300
#define I2Cx_TIMEOUT_MAX 300
#define EEPROM_PAGESIZE 8
// 初始化
void I2C_EEPROM_Init(I2C_HandleTypeDef i2cHandle);