13.EEPROM

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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值