工具/软件:
大家好:
我们目前正在使用 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)); } }
原理图:
