原理图
![](https://img-blog.csdnimg.cn/img_convert/efd6575454ccf7d7246d5c835b3aabc0.png)
CubeMX配置
![](https://img-blog.csdnimg.cn/img_convert/7fb704424958556fd6bd2e42569c8908.png)
Keil代码
//24C02
uchar eeprom_read(uchar addr)
{
uchar dat;
I2CStart();
I2CSendByte(0xa0);
I2CWaitAck();
I2CSendByte(addr);
I2CWaitAck();
I2CStop();
I2CStart();
I2CSendByte(0xa1);
I2CWaitAck();
dat=I2CReceiveByte();
I2CWaitAck();
I2CStop();
return dat;
}
void eeprom_write(uchar addr,uchar dat)
{
I2CStart();
I2CSendByte(0xa0);
I2CWaitAck();
I2CSendByte(addr);
I2CWaitAck();
I2CSendByte(dat);
I2CWaitAck();
I2CStop();
}
//MCP4107
void write_resistor(uint8_t value)
{
I2CStart();
I2CSendByte(0x5E);
I2CWaitAck();
I2CSendByte(value);
I2CWaitAck();
I2CStop();
}
uint8_t read_resistor(void)
{
uint8_t value;
I2CStart();
I2CSendByte(0x5F);
I2CWaitAck();
value = I2CReceiveByte();
I2CSendNotAck();
I2CStop();
return value;
}
![](https://img-blog.csdnimg.cn/img_convert/02655910fbb85cbb3c84d11fc5e9c028.png)
蓝桥杯板子可调电阻的类型为MCP4017-104E RWB即为写入的电阻,RW很小可以忽略 也就是说写入127,得到的是100000欧姆的电阻。
引用官方的HAL底层驱动代码时,.c文件中有一个细节需要修改,不然会报错
#include "i2c.h"//错误
#include "i2c - hal.h" //正确