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.

[参考译文] DAC8531:DAC8531

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/700285/dac8531-dac8531

器件型号:DAC8531

您好!

我尝试 通过三线串行接口(SPI)将 DAC8531与 Arduino Mega 连接。我已经完成 Arduino IDE 中的所有连接和 skech,以写入0到65535之间的值(DAC 的输入移位寄存器为24位宽, 前六位为“不用考虑”, 接下来的两个位(PD1和 PD0)是控制位、接下来的16位是数据位-这些位在 SCLK 的第24个下降边沿传输到 DAC 寄存器。)

该计划是:

#include 

int CS = 53;//pin53从器件选择
int Data = 51;//pin51 MOSI 串行数据
int SCLK = 52;//pin52 clock


void setup (){
//将您的设置代码放在此处,运行一次:

pinMode (CS、output);
pinMode (Data、output);
pinMode (SCLK、output);

SPI.begin();
digitalWrite (CS、high);
SPI.beginTransaction (SPISettings (2000000、MSBFIRST、SPI_MODE1));
delayMicroseconds (1);
}

void loop(){
//将主代码置于此处重复运行:
DAC_Write (2622);//将 DAC 设置为~200mV
delay (3000);

}

DAC_Write (uint16_t outputByte (SPI

);transfer outputValue (
low.spi);void
命令

(putputByte);transfer (pyte (pyte)(SPI);outputByte) transfer (quit (quote);void transfer (pyte)(quit (quote)(pyte);transfer (quote)(
delayMicroseconds (1);
digitalWrite (CS、HIGH);
delayMicroseconds (1);
spi.endTransaction ();

} 

程序不起作用、Arduino 的 µC 不在 DAC 缓冲区中写入、我不知道 SPI 设置是否正确或是否一切正常。

以下是 DAC 数据表的链接 : http://www.ti.com/lit/ds/sbas192b/sbas192b.pdf

如果有人曾与该 DAC 合作、我希望获得一些意见、并在可能的情况下提供一些帮助。 非常感谢。

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

    欢迎使用 E2E、感谢您的提问。 我正在研究您的问题。 请同时提供 SPI 波形的示波器截图、以便我们了解接口是否实际配置正确。

    此致、
    Uttam Sahu
    精密 DAC 应用工程师
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Uttam、

    感谢您的帮助。这是范围:

    与 Arduino Mega IT 的通信通过引脚实现:

    D51 MOSI- 7 DIN

    D52 SCK-6 SCLK

    D53 SS- 5同步

    谢谢你。

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

    我无法从示波器快照中生成任何逻辑模式。 看起来信号未正确到达 DAC。 请检查连接并查看信号是否正常。

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

    您好、Uttam、

    我试了所有东西。 如果您可以帮助我解决 Arduino Uno / Mega 和 DAC8531之间的原理图连接以及将 数据发送到 DAC 的 sketch 程序示例、 将会非常好。我尝试了所有 SPI 模式(0、1、2、3)、不同 的通信速度、 和数据顺序(MSBFIRST 或 LSBFIRST)。在数据表中、不是 Arduino 和 DAC8531之间连接的示例。谢谢。祝您愉快。

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

    您好!

    我有该程序的更新:

    #include "spi.h"

    int dacCSpin = 53、I;
    字节 data1 = 0、data2 = 0;


    void setup(){
     PinMode (dacCSpin、输出);
     SPI.begin();
     SPI.setBitOrder(MSBFIRST);
     SPI.setDataMode(SPI_MODE1);


    void loop(){

     对于(I = 0;I < 65355;I = I + 10){
       Data1 =高字节(I);
       Data2 =低字节(I);
      
       digitalWrite (dacCSpin、low);
       SPI.transfer (0b00000000);
       spi.transfer (data1);
       spi.transfer (data2);
       digitalWrite (dacCSpin、HIGH);
      
       serial.print ("发送到 DAC:");
       serial.print(i);
       serial.print (    "二进制格式:");
       serial.println (i、bin);
       serial.println(");      
     }
     延迟(11000);


    使用此程序、我可以在示波器上看到 Arduino 启动但仍无法在 DAC 存储器中写入任何内容的三个 SPI 信号。

    SPI 时钟与 SPI MOSI

    具有 SPI MOSI 的 Vout DAC

    SPI SS-SPI MOSI

    Vref 最小值是多少?

    如果能提供建议、将不胜感激。

    谢谢你。

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

    我对没有反应表示歉意。 您是否找到了该问题的任何解决方案?

    该器件的 Vref-min 为0V。

    我无法对 SPI 模式进行太多的解释、因为重叠不清楚。 如果您可以在示波器屏幕截图上使用一些标记并使用放大视图显示转换、那将会很好。

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

    您是在这方面使用 EVM、还是这是您自己的设计? 如果它是您自己的设计、您还能提供原理图吗? 很抱歉、如果我已经提到了这一点、我错过了。

    否则、自上次发布以来、您是否有任何更新?