This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DAC8565EVM:DAC 连接问题

Guru**** 2376610 points
Other Parts Discussed in Thread: DAC8565
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1500356/dac8565evm-dac-connecton-issue

器件型号:DAC8565EVM
主题:DAC8565中讨论的其他器件

工具/软件:

TI 团队大家好、

我目前正在努力将 DAC8565与 ESP32连接起来、但我没有观察到预期引脚(JMP9 - Out A)上有任何输出。 以下是我的设置、连接和代码的详细信息:

连接:

  • MOSI (ESP32) →μ s DIN (DAC)

  • CS (ESP32) →μ s 同步(DAC)

  • SCLK (ESP32) →μ s SCLK (DAC)

  • AVDD →μ s 5V

  • IOVDD →μ s 3.3V

  • LDAC VREFL →μ s GND

  • 使能 →μ s 保留为默认值(未主动驱动)

  • RST 在代码中设置为高。

我们测量的是输出 JMP9 (OUT A)

我随函附上以下资料供您参考:

  • 在通信期间捕获的 SPI 时序图

  • 用于通信的 Arduino 代码、使用 SPI MODE2。

尽管采用此设置、但未从 DAC 观察到任何输出。 我希望您能就可能出现的问题或可能丢失的问题提供指导。

#include <SPI.h>

// Pin mapping
#define DAC_CS     5   // SYNC
#define DAC_RST    18  // RST
#define SPI_MOSI   19
#define SPI_SCLK   23

void sendDAC8565(uint8_t cmd, uint8_t addr, uint16_t value) {

  // Build the 24-bit frame
  uint8_t firstByte  = (cmd << 4) | (addr & 0x0F);
  uint8_t secondByte = (value >> 8) & 0xFF;
  uint8_t thirdByte  = value & 0xFF;
  

  digitalWrite(DAC_CS, LOW);     // SYNC low to start

  uint8_t data[]={firstByte,secondByte,thirdByte};
  SPI.transfer(data,3);

  digitalWrite(DAC_CS, HIGH);    // SYNC high to latch
}

void setup() {
  // Init SPI
  SPI.begin(SPI_SCLK, -1, SPI_MOSI, DAC_CS); // CLK, MISO (unused), MOSI, SS
  SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE1));

  pinMode(DAC_CS, OUTPUT);
  digitalWrite(DAC_CS, HIGH);
  
  pinMode(DAC_RST, OUTPUT);
  digitalWrite(DAC_RST, HIGH); // Enable the DAC

  Serial.begin(115200);
}

void loop() {
  // Send value to channel A, write and update
  uint8_t command = 0b0011; // Write and update
  uint8_t address = 0b0000; // DAC-A

  uint16_t dacValue = 32768; // Mid-scale (2.5V if REF=5V)

  sendDAC8565(command, address, dacValue);

  Serial.println("DAC value sent.");
  delay(1000);
}

期待您的支持。

此致、
Amara Rakesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Amara、  

    您说 ENABLE 保留为默认值(不由 Arduino 驱动)、但 EVM 上有两种可能的默认状态。 所有数字信号也是如此。 您能否确保 JMP1 - 4配置正确? ENABLE 应接地(JMP1闭合)、JMP3应打开、以便您能够通过代码驱动 RST。  

    请确保、该 EVM 上没有板载电源(除了基准)。 是否从外部提供3.3V 和5V 电压?  

    JMP9为 VREFL。 您的测量位置是否正确?

    此致、

    凯蒂恩·琼斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Katlynne Jones、

    感谢您的快速答复。

    1. 我目前正在使用 JMP1–JMP4的默认设置、因为我并不完全知道所需的配置。

    2. 使能 节点 GND 、和 RST 保持打开(JMP3打开)。

    3. 我正在提供 3.3V 至 IOVDD 5V 至 AVDD 使用外部电源。

    4. 对我之前的消息中的混淆表示歉意—我实际上是在测量输出 JMP11

    您能分享的建议配置吗 JMP1–JMP4 ? 此外、我还附上了 SPI 时序图—您能帮助验证它是否正确吗?

    此致、
    Amara Rakesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Amara、  

    如果您想通过 Arduino 控制信号、请让跳线保持打开状态。 如果您不是通过 Arduino 控制信号、则应闭合跳线以将信号接地或使其保持开路、从而将信号上拉至 IOVDD。 您需要使能端和 LDAC 接地、RST 连接到 IOVDD 才能正常运行。  

    您发送的 SPI 数据看起来正确、可使用 您存储在每个通道的临时寄存器中的数据来加载所有 DAC 通道。 如果您之前没有将任何数据写入临时寄存器、则输出将保持为0V。 您可以尝试写入0x348000。

    此致、

    凯蒂恩·琼斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Katlynne Jones:

    感谢您分享0x348000命令—这对我来说是完美的。 我能够修改代码中的 DAC 值、并成功观察到相应的输出电压。

    我有几个后续问题:

    1. 您提到、"如果之前没有将任何数据写入临时寄存器..." —您能否说明在使用之前应发送哪些特定命令0x308000

    2. 如何配置和使用单个 DAC 通道(例如、仅限 DAC-A)而不是同时更新所有四个通道?

    3. 目前我使用的 VREFH 为2.5V。 如果我想提高基准电压、允许的最大值是多少、正确的方法是什么? 在这种情况下、我是否应该禁用内部基准并改用外部基准?

    我感谢您的持续支持、并期待您的指导。

    此致、
    Amara Rakesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Amara、  

    每个 DAC 通道都有一个临时(缓冲器)寄存器和一个有效寄存器。 您之前执行的命令是将临时(缓冲区)寄存器数据加载到活动寄存器中、从而更新输出。 如果代码0位于临时寄存器(默认)中、那么您只需将0移动到有效寄存器、而这些寄存器将将输出设置为0V。  

    此命令矩阵应帮助您了解要写入哪些代码:

    0x348000会触发高亮显示命令:

    如果您希望使用0x30000使用来自其临时寄存器的数据更新所有输出:

    您需要首先写入每个临时寄存器、并使用 DB18和 DB17选择要写入的通道:

    您还可以写入每个通道的临时寄存器、并通过以下命令同时更新仅该通道的输出:

    最大基准电压由以下条件决定: AVDD–(VREFH + VREFL)/2 > 1.2V。  从技术角度而言、最大电压为 AVDD、即 VREFL 为 AVDD/2。

    此致、

    凯蒂恩·琼斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Katlynne Jones:

    感谢您以如此详细的方式解释一切-这对我非常有帮助

     此致、
    Amara Rakesh