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.

[参考译文] DAC8771:低输出振幅–REFOUT 仅为 1.5V、而不是 5V

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1532240/dac8771-low-output-amplitude-refout-only-1-5v-instead-of-5v

器件型号:DAC8771

工具/软件:

大家好:

我们目前正在使用 DAC8771 的定制 PCB、虽然基本通信和功能似乎可以正常工作、但我们遇到了一个主要问题:
输出振幅太低。 经过一些调试后、我们怀疑该问题可能与 REFOUT 引脚有关。

我们看到 REFOUT 上只有 1.5V、而不是预期的 5V 基准输出。

有关我们设置的一些详细信息:

  • 我们不使用内部降压/升压转换器。
  • 我们提供外部电源:DAC±18V。
  • SPI 接口正常工作、可以发送和接收数据。
  • DAC 配置为±24mA 电流输出模式。
  • 微处理器是 ESP32-S3

我们还测试了 REFOUT 被禁用的配置、并为 REFIN 提供了一个外部 5V 基准。 但是、在这种情况下、输出信号会变得更弱。

我们想知道:

在某些情况下、这种行为是预期行为吗?

为了启用 REFOUT 或正确使用 REFIN、我们的初始化序列是否正确?

原理图或电源设置可能是原因吗?

对于我们的方法是否正确、或者是否有人以前遇到过类似问题、我们非常感谢您提供任何反馈。

提前感谢!
Pascal Richter


初始化代码:

void initDAC8771()
{
  // Reset Register (address = 0x01)
  dac8771WriteRegister(REG_RESET, 1); // reset device
  delay(100);

  // Reset Config Register (address = 0x02)
  dac8771WriteRegister(REG_RESET_CONFIG, (1 << 4) | (1 << 2) | (1 << 1)); // enable internal reference
  delayMicroseconds(50);

  // Select buck boost converter A (address = 0x06)
  dac8771WriteRegister(REG_SELECT_BUCK_BOOST, (0 << DCA));
  delayMicroseconds(50);

  // Configuration Buck-Boost Register (address = 0x07)
  dac8771WriteRegister(REG_CONFIG_BUCK_BOOST, 0);
  delayMicroseconds(50);

  // Disable daisy chain, enable channel A (address = 0x03)
  dac8771WriteRegister(REG_SELECT_DAC, (1 << CLSLA) | (1 << CHA) | (1 << DSDO) | (0 << CREN) | (0b00 << WPD) | (0 << WEN));
  delayMicroseconds(50);

  // Config DAC Register (0x04)          OUT_EN
  dac8771WriteRegister(REG_CONFIG_DAC, (1 << 12) | (0b0111)); // Output enable and +/- 24mA current mode
  delayMicroseconds(50);

  digitalWrite(DAC_CLR, LOW);
}

void dac8771WriteRegister(uint8_t reg, uint16_t data)
{
  tx_data[0] = reg & 0x7F; // MSB is 0 (write)
  tx_data[1] = (data >> 8) & 0xFF;
  tx_data[2] = data & 0xFF;

  trans.length = 8 * 3; // 3 Byte
  trans.tx_buffer = tx_data;
  esp_err_t err = spi_device_queue_trans(spi_dac, &trans, 0);
  if (err != ESP_OK)
  {
    Serial.print("Error writing to DAC8771 register: ");
    Serial.println(esp_err_to_name(err));
  }
}


原理图:

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

    Pascal、


    我在原理图中没有看到任何看起来不寻常的内容、只是图纸中似乎没有与散热焊盘的连接。 您是否有这样的连接? 它应接地。 我不确定没有连接会导致什么问题、但我可以检查是否有任何其他评论。

    除非给基准电压加载了大量电流或在启动器件时出现问题、否则通常没有什么东西会将基准电压设置为 5V 以外的值。 电容不足以导致输出变得不稳定。

    我首先检查电源、看看它是否以任何方式加载。 如果可以、请测量从电源流出的电流以查看其是否正常(我认为在启动时,器件仅消耗 2mA)。 然后、我会检查电源、输出和数字线路的电压是否正确。

    我还会目视检查所有引脚、以确保所有引脚都正确焊接、并且没有连接或桥接器缺失。

    我将快速浏览代码,看看是否有任何其他问题,但我不认为这是一个编码问题(此外,我不是一个编码器,所以我可能会错过的东西)。


    Joseph Wu