864浏览
查看: 864|回复: 0

[ESP8266/ESP32] MCP4922 SPI DAC 在 FireBeetle ESP32 上的测试

[复制链接]
之前有介绍过,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

参考:
本文使用的库:



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail