文章目录
- 前言
- 一、查看MCP4017芯片手册
- 二、MCP4017在开发板上的电路图
- 三、工程配置
- 四、MCP4017读写函数编写
- 总结
前言
MCP4017是一个可编程电阻,通过写入数值可以调节电阻值的大小。
一、查看MCP4017芯片手册
在这里我们只需要关注MCP4017即可。下面的几个重要点我为大家解读一下。
1.MCP4017是一个7bit的网络,7bit就代表10进制的0-127,这里的意思就是,MCP4017有128个档位可以调节。
下面这个图说明了我们能写入0-127这128个数值控制这些开关,达到控制分压的效果,注意我们写入的只能是整数不能是其他的数值。
2.MCP4017最小的电阻值是100Ω,很多人可能会误认为最小电阻是0,但是把他调节到最小时他还是存在一个最小电阻的,这里大家特别注意。
3.MCP4017使用的是IIC通信协议。
二、MCP4017在开发板上的电路图
前面AT24C02的文章中已经给大家讲过了,IIC的两根线分别是接到了PB6和PB7上面的。
MCP4017和一个10K的电阻并联分压,调节MCP4017的电阻值即可改变分压的大小。R17后面有一个PB14,这个我们后面再给大家介绍,通过这个引脚我们可以测出分压的大小。
三、工程配置
这里直接复制AT24C02中所写的代码即可。
四、MCP4017读写函数编写
这个图我这里就不带大家细看了,大家有什么不懂的就直接看我前面的AT24C02的文章,这个MCP4017其实是比AT24C02要简单的,下去自己分析一下。
函数我直接给大家了。
//写MCP4017
void MCP4017_Write(uint8_t val)
{
I2CStart();
I2CSendByte(0x5E);
I2CWaitAck();
I2CSendByte(val);
I2CWaitAck();
I2CStop();
}
//读MCP4017
uint8_t MCP4017_Read(void)
{
uint8_t val;
I2CStart();
I2CSendByte(0x5F);
I2CWaitAck();
val = I2CReceiveByte();
I2CSendNotAck();
I2CStop();
return val;
}
总结
MCP4017和AT24C02一样都是使用到了IIC协议的,重要的是能看懂读写时序图。