之前有介绍过,ESP32没有 DAC 引脚,但是可以通过 PWM 来进行模拟,这次入手了 MCP4922 这款双通道 DAC 芯片。它使用 SPI 接口,提供12Bit的输出精度。芯片引脚定义如下:
引脚编号 | | | | | | | | | | | | | | | | | | | | | | | | | | 锁存,只有为低时,芯片才会从 Vouta和Voutb 输出电压 | | | | | | | | | 输出B 的参考电压,可以接入Vss到Vdd 以内的电压.这次测试接入了Vdd(3.3V) | | | | | | 输出A 的参考电压,,可以接入Vss到Vdd 以内的电压.这次测试接入了Vdd(3.3V) | | | |
- #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);
- }
复制代码
可以看到波形如下:
参考: 本文使用的库:
|