MCP4922 SPI DAC 在 FireBeetle ESP32 上的测试

2024-01-194545
AI 快速预览详细 收起
本文介绍了如何在FireBeetle ESP32上使用MCP4922双通道12Bit SPI DAC芯片进行测试。通过示波器验证了输出精度,并提供了详细的代码和连接方式。MCP4922通过SPI接口与ESP32连接,支持2.7-5.5V供电,适用于需要高精度模拟信号的应用场景。
之前有介绍过,ESP32没有 DAC 引脚,但是可以通过 PWM 来进行模拟,这次入手了 MCP4922 这款双通道 DAC 芯片。它使用 SPI 接口,提供12Bit的输出精度。芯片引脚定义如下:

MCP4922 SPI DAC 在 FireBeetle ESP32 上的测试图1

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


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

  1. #include <MCP492X.h> // Include the library
  2. #define PIN_SPI_CHIP_SELECT_DAC 25 // Or any pin you'd like to use
  3. MCP492X myDac(PIN_SPI_CHIP_SELECT_DAC);
  4. void setup() {
  5.   // put your setup code here, to run once:
  6.   myDac.begin();
  7. }
  8. void loop() {
  9.   for (int i=0;i<4096;i++) {
  10.       myDac.analogWrite(0, i);
  11.       myDac.analogWrite(1, 4095-i);
  12.       delay(1);
  13. }
复制代码
代码运行后使用示波器进行测试,结果如下:

MCP4922 SPI DAC 在 FireBeetle ESP32 上的测试图2

修改代码,loop如下:

  1. void loop() {
  2.    myDac.analogWrite(0, 0);
  3.    myDac.analogWrite(0, 4095);
  4. }
复制代码
可以看到波形如下:

MCP4922 SPI DAC 在 FireBeetle ESP32 上的测试图3

参考:
本文使用的库:



创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -