MCP4725使用教程

1.前言

前面画的AD/DA的板子到了,早上刚刚焊接完成,于是就开始写程序了。原本想看一下网上的教程,但是真的找不到好教程,没办法只能自己翻手册去慢慢啃了。这不调试完毕了吗,于是就写一篇文章吧,也相当于给我自己一个参考手册。

2.IIC地址

手册上给出了如下的图片

622b391301354552a66055d341e536a1.png

看起来A0~A2都能变,但是手册上还有一句话

163afb1112f64bfa8dd7d24ea6d8567e.png

在默认状态下A1与A2的值都是00,好吧那就剩A0了

a0a44f405d904e2d8a59a8af9cddcdbf.png

也就是第六脚

当接高的时候就是110 0001也就是0x61

当接地的时候就是110 0000也就是0x60

本文章中使用地址是0x60

3.写入

原厂提供了三种写入模式

2c98520296024e9a947a743d24979f43.png

这里说一下第二种和第三种模式的区别

我们都知道EEPROM的写入是需要花费时间的,如果我们需要流畅写入时,eeprom的写入时间肯定会阻碍dac的输出;但eeprom的好处是断电保持,因此我们默认上电的dac输出就是eeprom的电压,这里大家可以根据实际需要选择合适的模式。

2.1写入寄存器

手册里给出的过程如下

653291faf3e9427585b6153ceba48898.png

这里我来一个个分析

这里是芯片地址,也就是0x60,不多说了

1b5bcceee4224b77a282e5ceb614789e.png

 关键是第二位的,一共包含两个设置信息,前端的C0~C2也就是我们刚刚说到的模式

97ddd78660ba4cc3adbd3621391e82f8.png

这里我们是只写入寄存器,那么就应该是010

1f0d8d50387a469496212e1bd00561bc.png

在设置完模式后我们还可以设置下拉电阻,芯片内部在输出前可以挂载三种电阻,以提高DAC的带载能力,这里我们测试就使用正常模式了,也就是00

ccacf2813231476f9f6825f8558c24c8.png

在图中的这些打叉的位就是不重要位,可以写0也可以写1,不过我推荐写0,否则比较麻烦

311ccd3074bd4fd5bba13d24cdee51f5.png

那么我们最后第二位就是0100 0000也就是0x40

而后面两位就是数据了,由高到低的12位

2db672ee3c7c4ac8806b6d14a47b17dd.png

但是由于IIC一次是8位数据,我们的数据被分为了两端,所以我们处理程序的时候要注意一下

125a7b14defb4ca69fec43463ab879cf.png

发送第一段的时候,可以直接右移,将低四位给忽略掉

而发送低四位的时候,可以先将高八位忽略,但是由于发送的数据是右对齐,而我们芯片内部数据是左对齐,所以我们要将处理过的数据再左移四位

我们来测试一下,这里我输出电压是1.2V

那么我的数据应该是1.2/3.3*4096=1489也就是0x5D1

波形如下

8ac59ecd2e1d4092915c415ea5449ab9.png

测试效果如下,可以看到还是准的

81c9cb86d6e249879a5bb5eb7063d9a7.jpeg

2.2写入寄存器与EEPROM

波形与上一个是类似的

67b832bd52bc406da835beecd4d896b7.png

唯一变的是C0~C2,我们要换成011

e401667061fa444da0908bf3c03241df.png

那第二位的数据也就是0110 0000也就是0x60

这次我输出1V电压那么数据应该是1/3.3*4096=1241也就是4D9

波形如下

110fa4abf2d44c8a83bbe7d574a0827c.png

实测如下

a4c4e256360a4ea8bf6eed8964b14b0f.jpeg

2.3快速读写

相较于写寄存器,快速读写会少一位数据

0cf7f47532a14ac78511406e3f41e475.png

其中第二位的第1,2个数据都是0以此表示快速模式,然后选择下拉电阻这里是00

5b6c18b7871e42b5b3ae05bc6e9f42f5.png

第二位的高四位和第三位全部都是数据,总共12位

031b7691dfdb4008a61ff6c11103cbd9.png

因此我们处理数据要重新变

82ea44a2d2374f83b283993cd685be94.png

我们第二位的数据因为都是高位,所以我们可以直接右移8位,直接把低位的数据覆盖掉,同时高位的数据会补0,刚好就是四个0,我们就不用清了,如果各位觉得不保险还可以手动清。

低八位的数据我们直接对高四位的数据清除就行了

我们来测试一下,这次测试0.8V

 波形如下

18545ac1a6744440b3dc94c74b6d970d.png

实测

04cf2e5ae36d481fad29c822cc467c9c.jpeg

没毛病

4.读取

这里说一下为什么要读取

还记得芯片里有eeprom不?啊哈!没错,这个eeprom写入也是要时间的,手册上给出的时间默认是25ms最长50ms

c8aa86e0d9b042a6aec33831575c789d.png

因此我们可以读一下数据来看看是否写入完毕了。

其过程如下

68d1b2c96c1445baa9f86e54abf4819c.png

第一位是地址,不多说了。我们从第二位开始看

首先就是判忙位,为1写入完毕,为0表示正在写入

9e8ab9a5fa0444229786fb920bc236de.png

之后是POR,这是什么?

这是复位的状态,当芯片内部发生错误时,芯片会自动复位。通过读取这一位相当于判断芯片是否正常工作

e1a39115defe4bd9968295e784811e84.png

然后是PD0,PD1,可以查看当前设置的下拉电阻

2e727c2843174c1d978b6bab91941fca.png

之后的3,4位是寄存器内部值

337d2e6a64d94ce1a6424562e4498859.png

5,6位是eeprom内部值

d0b2e47314f242ca9ab4805de2638f94.png

因此我们整段程序除开地址位一共是5位数据要读取

我们来测试一下

fb7fae5b707a474b9bf0f0e28fedbddd.png

OK,没问题

5.总结

总的来说这个DAC的读写还是比较简单的,不知道为啥网上的教程总是不放波形图,也不分析,每次干看教程总是看得人头疼,哎。

MCP2003是一款单通道、高输入阻抗、低噪声、精密放大器,适用于电池供电和低电压应用。它具有一个可编程增益为2.5或10的放大器,以及一个内部频率补偿功能。以下是一个基本的MCP2003使用教程: 1. 准备硬件:你需要MCP2003芯片,一个5V电源,以及一个适当的电路板或PCB。 2. 了解引脚:MCP2003有三个引脚:GND(接地),VCC(电源),和EN(使能/放大器切换)。你需要确保在切换放大器之前和之后,GND和VCC之间的电压保持不变。 3. 电路设计:将MCP2003放置在电路中,确保电源和接地引脚连接正确。为了实现可编程增益,你可能需要一个电阻网络连接到VCC引脚,并通过另一个电阻连接到信号输入。 4. 编程:对于MCP2003,通常不需要编程。增益是通过调整外部电阻网络来实现的。但是,这可能取决于你的具体应用和特定的电路设计。 5. 测试和调试:将你的电路连接到一个信号源,并观察其输出。你可能需要调整电阻网络或信号源的参数,以获得最佳性能。 6. 安全注意事项:在使用MCP2003时,确保电源电压在适当的范围内,并且注意保护电子元件免受电击。 7. 资料参考:如果你需要更深入的了解或支持,可以参考Microchip的技术文档,或者查找相关的网络教程和论坛。 以上只是一个基本的教程,具体应用可能需要根据你的需求和电路设计进行调整。在使用任何新的芯片或技术时,都应参考相关的数据手册和手册,以获取最准确的信息和最佳实践。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值