写入0-127对应阻值为0-100KΩ。数值增大时相当于W向A移动。
一、导入官方软件IIC程序:
无需对CubeMX配置,使用软件IIC进行通信,在官方程序中,I2CInit()含有配置引脚的操作。
使用前在main函数初始化中调用I2CInit();
二、代码部分:
为方便操作,直接在i2c_hal.c中写MCP4017相关函数
写入阻值:
void MCP4017_write(uint16_t Kohm){
I2CStart();
I2CSendByte(0x5E);
I2CWaitAck();
I2CSendByte((uint16_t )((float)Kohm / 100 * 127));
I2CWaitAck();
I2CStop();
HAL_Delay(5);
}
读操作:
uint8_t MCP4017_read(){
uint8_t data = 0;
I2CStart();
I2CSendByte(0x5F);
I2CWaitAck();
data = I2CReceiveByte();
I2CSendNotAck();
I2CStop();
HAL_Delay(5);
return data;
}
由于0-127对应的阻值为0-100KΩ,故需要对这两个值进行映射。读出的数值应除127后乘以100即为响应的阻值。