1.CUBEMAX配置
2.代码部分
#include "i2c_hal.h"
void eeprom_write(uint8_t addr,uint8_t data)
{
I2CStart();
I2CSendByte(0xa0);//主机告诉从机我要写了
I2CWaitAck();
I2CSendByte(addr);//主机告诉从机要写哪个地址的数据
I2CWaitAck();
I2CSendByte(data);//往地址中写入数据
I2CWaitAck();
I2CStop();//三段代码,一个stop,一个start,有start一定有stop
HAL_Delay(20);
}
uint8_t eeprom_read(uint8_t addr)
{
I2CStart();
I2CSendByte(0xa0);//主机给从机发地址,锁定了从机的地址
I2CWaitAck();//等待回应
I2CSendByte(addr);//告诉它我要读取哪个地址的数据
I2CWaitAck();
I2CStop();
I2CStart();
I2CSendByte(0xa1);//主机告诉从机,我要开始读了
I2CWaitAck();
uint8_t data=I2CReceiveByte();//从机给主机一个数据
I2CSendNotAck();//主机不给从机回应
I2CStop();
return data;//一定要记得返回data
}
uint8_t data1,data2;
void setup()
{
I2CInit();
eeprom_write(0,10);
eeprom_write(1,20);
data1=eeprom_read(0);
data2=eeprom_read(1);
}