目录
前言
不重复造轮子系列。MCP4725是一种数据转换芯片,是用来将数字信号转换成电压信号的,称为DAC,跟ADC是反着来的。这文章介绍并提供了一种可以在STM32F1上面快速部署的MCP4725驱动程序,希望对兄弟们有帮助。其他种类的芯片可能需要修改一些细节。
适用情况
1.使用的是STM32F1
2.MCP4725的DAC芯片。
注意事项
1.这个程序是软件模拟IIC,可以使用任意可以配置成input/output的引脚。
2.不同的主控芯片需要调试一下兼容性。
3.当你的DAC和跟随器为5V时,必须保证后端器件也为5V供电,也就是保证供电电压一致,不然会出现烧板子的情况。
硬件连接示意图
使用方法
1.将程序加载后添加到自己的STM32F1工程中,编译正常无报错可以进行下一步。
2.打开MCP4725config.h文件,可以看见以下宏定义:
3.参考你自己的硬件连接,将SCL和SDA改成自己需要的引脚,引脚的宏定义如下图:
4.设置DAC的参考电源,在我使用的MCP4725中标明了参考电压是电源电压,所以我这里直接用5000(单位:毫伏),手册上如下图:
5.设置初始化时的初始电压,如果后续不需要更改电压,就可以直接设置为想要的电压,如果后续需要更改电压,那么在初始化后使用以下函数更改DAC输出电压:
void MCP4725_WriteData_Voltage(u16 Vout);//写入电压(单位:毫伏)
6.设置DAC的通讯地址,具体方法写在下文,这里我的地址为0xC0
7.在工程里面先调用MCP4725.h文件,并调用初始化函数,就可以了,初始化后还想更改电压就用刚刚说的函数就可以了,示例:
#include "MCP4725.h"
void main(void)
{
//各种初始化
MCP4725_Init();
//后续需要更改DAC电压
MCP4725_WriteData_Voltage(3000);//3V
//后续需要更改DAC电压
MCP4725_WriteData_Voltage(2500);//2.5V
}
通讯地址的查询方法
可以看见我这里的地址为0xC0,高四位是固定的器件代码:1100。也就是0xC。低四位中的高三位为地址位,如下图所示:
其中A2和A1为出厂自带,会写在编号上面,如下图:
这里我选的是MCP4725A0T-E/CH,所以A2和A1为00。而A0体现来引脚连接上,芯片上有个A0,连接电源就是1,连接地就是0,在我的硬件上面我将A0脚接地,所以A0也是0,故而地址位为0xC0,地址不同或者想修改地址的同学可以按照这个方法来计算自己的通讯地址。
验证DAC是否输出正确
使用万用表测量运放输出脚,看测量到的电压是否和初始化后/更改后的电压相同。有一点不同是正常的,具体请看下表:
资源下载
结尾
写文不易,如果这篇文章对你有帮助的话,请帮我点一个免费的赞,收藏也行(︶.̮︶✽),不定期更新一些比较实用的东西。程序有什么BUG或者文章有纰漏可以在评论区提出。