1. 概述
MiniSTM32 开发板板载的 EEPROM 芯片型号为 24C02。该芯片的总容量是 256个字节,该芯片通过 I2C 总线与外部连接。这里直接采用原子板上的 AT24C02 ,主要是软件编程方面的学习。
2. 硬件连接
![b3b0938cdc84437895fd9907c5e749d2.png](https://i-blog.csdnimg.cn/blog_migrate/1673652c7b398b10b1737f48167d7693.png)
A2、A1、A0 三个引脚直接接地。供电:(VCC = 2.7V to 5.5V)
器件地址设置:
![a5c158b200287e2b0982651f3ff2cc33.png](https://i-blog.csdnimg.cn/blog_migrate/11d21bbc4d7731dbf6f98717da9eb1b7.png)
对于AT24C02:Addr--->0xA0(写)/ 0xA1(读)。
单字节写入:
![b2e077051b298edd1988f172e506a4ca.png](https://i-blog.csdnimg.cn/blog_migrate/f9c6dda2558b6227f3f3eee10ed27f99.png)
//--------------------------------------------------------------------------------------------------------------------------// 函 数 名: ee_at24cxx_write_byte// 功能说明: eeprom写一个字节数据// 形 参: write_addr:写入地址// write_byte:写入数据// 返 回 值: 无// 日 期: 2020-03-22// 备 注: eeprom小于16K bits// 作 者: by 霁风AI//--------------------------------------------------------------------------------------------------------------------------bool ee_at24cxx_write_byte(uint16_t write_addr, uint8_t write_byte){
I2c_Start();
I2c_SendOneByte(AT24CXX_ADDR | ((write_addr / 256) <1)); //发送设备地址+数据地址高3位(<16K:1010 + p2p1p0 + r/w)
if (I2c_WaitAck(I2C_WAIT_TIME) == I2C_NACK)
{
return false;
}
I2c_SendOneByte(write_addr % 256); //设备地址低8位
if (I2c_WaitAck(I2C_WAIT_TIME) == I2C_NACK)
{
return false;
}
I2c_SendOneByte(write_byte); //写入的数据
if (I2c_WaitAck(I2C_WAIT_TIME) == I2C_NACK)
{
return false;