zoologist 发表于 2024-1-19 12:06:01

MCP4922 SPI DAC 在 FireBeetle ESP32 上的测试

之前有介绍过,ESP32没有 DAC 引脚,但是可以通过 PWM 来进行模拟,这次入手了 MCP4922 这款双通道 DAC 芯片。它使用 SPI 接口,提供12Bit的输出精度。芯片引脚定义如下:


引脚编号名称介绍
1Vdd供电 2.7-5.5V
2NC空
3CS#SPI CS 引脚
4SCKSPI Clock
5SDISPI MOSI
6NC空
7NC空
8LDAC#锁存,只有为低时,芯片才会从 Vouta和Voutb输出电压
9SHDN#关闭,为低芯片停止工作
10Voutb输出B电压引脚
11Vrefb输出B 的参考电压,可以接入Vss到Vdd 以内的电压.这次测试接入了Vdd(3.3V)
12Vss地
13Vrefa输出A 的参考电压,,可以接入Vss到Vdd 以内的电压.这次测试接入了Vdd(3.3V)
14Vouta输出A的电压引脚


这次测试基于 https://github.com/michd/Arduino-MCP492X提供的库文件,代码如下:

#include <MCP492X.h> // Include the library

#define PIN_SPI_CHIP_SELECT_DAC 25 // Or any pin you'd like to use

MCP492X myDac(PIN_SPI_CHIP_SELECT_DAC);

void setup() {
// put your setup code here, to run once:
myDac.begin();
}

void loop() {
for (int i=0;i<4096;i++) {
      myDac.analogWrite(0, i);
      myDac.analogWrite(1, 4095-i);
      delay(1);
}
代码运行后使用示波器进行测试,结果如下:

修改代码,loop如下:
void loop() {
   myDac.analogWrite(0, 0);
   myDac.analogWrite(0, 4095);
}
可以看到波形如下:

参考:1.   https://www.microchip.com/en-us/product/MCP4922#2.   https://ua726.co.uk/2012/12/22/testing-the-mcp4922-with-an-arduino/ 本文使用的库:


页: [1]
查看完整版本: MCP4922 SPI DAC 在 FireBeetle ESP32 上的测试