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.

[参考译文] DAC81416EVM:使用 Arduino SPI 时 DAC 输出无更新

Guru**** 2537340 points


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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1162020/dac81416evm-no-update-on-dac-outputs-with-arduino-spi

器件型号:DAC81416EVM

您好!

使用81416EVM 时、我看不到任何输出。 下面是有关我的设置的详细信息。

由于更新了 DAC 电压、我正在 Arduino 上使用 SPI。

请帮助。

连接:

Arduino Due SPI 引脚3 -> 81416EVM J8.8

Arduino 到期 SPI 引脚4 -> 81416EVM J8.4

Arduino 到期13 ->  81416EVM J8.2  

Arduino Due GND -> 81416EVM J1.31

J7.7 - 15V

J7.6 - GND

J7.5 - 5V

J7.4 - 3.3V

J7.3 - GND

J10:2-3

Arduino IDE 代码:

#include
int CSdac =13;// Arduino 上的引脚连接到调优板上的 DAC

void setup(){
SPI.beginTransaction(SPISettings(10000000、MSBFIRST、SPI_MODE1));
analogReadResolution (12);
SPI.begin(CSdac);
Serial.begin(115200);
引脚模式(Csdac、输出);
digitalWrite (CSdac、HIGH);

void loop(){
serial.println ("开始");

//设置范围0-5V
digitalWrite (CSdac、low);
SPI.transfer (0x0A);
SPI.transfer (0x00);
SPI.transfer (0x00);
digitalWrite (CSdac、HIGH);

//设置范围0-5V
digitalWrite (CSdac、low);
SPI.transfer (0x0B);
SPI.transfer (0x00);
SPI.transfer (0x00);
digitalWrite (CSdac、HIGH);

//设置范围0-5V
digitalWrite (CSdac、low);
SPI.transfer (0x0C);
SPI.transfer (0x00);
SPI.transfer (0x00);
digitalWrite (CSdac、HIGH);

//设置范围0-5V
digitalWrite (CSdac、low);
SPI.transfer (0x0D);
SPI.transfer (0x00);
SPI.transfer (0x00);
digitalWrite (CSdac、HIGH);

//加电设备
digitalWrite (CSdac、low);
SPI.transfer (0x03);
SPI.transfer (0x0A);
SPI.transfer (0x84);
digitalWrite (CSdac、HIGH);

//为所有通道加电
digitalWrite (CSdac、low);
SPI.transfer (0x09);
SPI.transfer (0x00);
SPI.transfer (0x00);
digitalWrite (CSdac、HIGH);

//启用广播所有频道
digitalWrite (CSdac、low);
SPI.transfer (0x05);
SPI.transfer (0xFF);
SPI.transfer (0xFF);
digitalWrite (CSdac、HIGH);

//将代码写入所有通道
digitalWrite (CSdac、low);
SPI.transfer (0x0F);
SPI.transfer (0xFF);
SPI.transfer (0xFF);
digitalWrite (CSdac、HIGH);

延迟(100000000);

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

    您好 Dharma、

    硬件配置和寄存器写入似乎正确。 请分享 SPI 线路(CS、SCLK、SDI、SDO)的示波器捕捉。 我们将看到是否存在任何计时问题。

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

    您好、安布、

    下面是 SPI 的屏幕截图。 我刚刚尝试写入一个8位数据(0x0A)来检查数据的有效性。

    器件默认处于断电模式吗? 如果是、如何更改它?

    切换引脚也有什么关系?

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

    您好!

    万用表连接在 GND (J1.31)和 OUT8 (J1.2)之间时、我可以看到10千欧姆电阻。 我猜 DAC 没有通电。

    这是一项紧急要求。 如果我缺少一些东西、请告诉我。

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

    您好 Dharma Paludugu、

    您认为 SPI 时序是错误的。

    主机控制器必须将 数据放置在 SCLK 的上升沿的 SDI 上、器件将对 SCLK 的下降沿进行采样。

    将 SPI 操作模式更改为 SCLK (CPOL =0、CPHA =1)并尝试。

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

    您好!

    我在 Arduino 中使用了 SPIMODE1。 它的 CPOL=0、CPHA =1。  

    我将再次检查。 感谢您的回答。  

    您在美国时区的同事是否也能在 当天为我提供帮助?  

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

    问题出在 SPI 模式。 即使代码中使用不同的模式、我使用的 Arduino 也不会更改模式。 解决后、就会变得简单明了。

    谢谢。