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 提供的库文件,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#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如下:

1
2
3
4
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/

本文使用的库:

MCP492X Datasheet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注