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:DAC 通道未更新

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1289540/dac81416evm-dac-channels-not-getting-updated

器件型号:DAC81416EVM
主题中讨论的其他器件:REF5025DAC81416

您好!

我正在使用 teensy 4.1控制器来启动与 DAC 81416 EVM 板的 SPI 通信、并将值'65535 '和'0'发送到 DAC 通道0。  

连接如下:

TEENSYS 引脚6 (CS)- J8.2

Teensy 引脚11 (SDI)- J8.4

TEENSIS 引脚12 (SDO)- J8.3

Teensy 引脚13 (SCLK)- J8.8

TEENSIS 引脚6 (3.3V)- J8.5

TEENSEY GND - J8.6

我在 J7上提供电源、如下所示:

J7.3 - GND

J7.5 - VCC / VAA - 5V

J7.6 - VSS --15V

J7.7 - VCC -+15V

EVM 板上的跳线配置如下:

J2 -开路

J3 -开路

J9 -已关闭

J10 - 1-2:J8.5上为3.3V (来自 teensy 4.1)

J11 - 1-2:来自 REF5025的 Vref

J12 - 2-3:J7.6 (-15V)上的 VSS

我正在使用以下代码:

香港特区政府

#包含
#包含  //包含新的 SPI 库:

const int CS = 6


内联 CSON()
{
 digitalWrite (CS、LOW);
内联 CSOFF()
{
 digitalWrite (CS、HIGH);

void write_reg (uint8_t reg、uint16_t wdata)
{
 uint8_t lsb =((uint16_t) wdata >> 0)0xFF
 uint8_t MSb =((uint16_t) wdata >> 8)0xFF
  
 SPI.beginTransaction(SPISettings(16000、MSBFIRST、SPI_MODE1);
 // SPI.setClockDivider(SPI_CLOCK_DIV64);
 CSON()
 delayMicroseconds(10)
 // Serial.println ("希尔");
 spi.transfer (reg );
 //Serial.println ("和你?");
 SPI.transfer (msb);
 spi.transfer (lsb);
 CSOFF()
 delayMicroseconds(10)
 spi.endTransaction ();

setup()
{
 Serial.begin(9600);
 引脚模式(CS、输出);
 引脚模式(11、输入);
 Pin 模式(12、输出);
 pinMode (13、输出);
 digitalWrite (CS、HIGH);
 //delay (5000);
 SPI.begin();
 延迟(1000);
 WRITE_reg (0x030x0084);// SPIC既然 DEV-PWDWN=0
 WRITE_reg (0x040x00FC);// GENCONFIG:Ref-PWDWN=0
 WRITE_reg (0x050x0000);// BRDCONFIG:DACx-BRDCAST-EN=0
 WRITE_reg (0x060x0000);// BRDCONFIG:DACx-SYNC-EN=0
 WRITE_reg (0x090x0000);// DACPWDWN:DACx-PWDWN=0、x={A、B、C、D}
 WRITE_reg (0x0A0x0000);// DACx-RANGE=0b0000、即0-5V
 WRITE_reg (0x0B0x0000);// DACx-RANGE=0b0000、即0-5V
 WRITE_reg (0x0C0x0000);// DACx-RANGE=0b0000、即0-5V
 WRITE_reg (0x0D0x0000);// DACx-RANGE=0b0000、即0-5V
 延迟(1000);
 //DAC 初始化
 WRITE_reg (0x10、0xFFFF); // DAC-A (MID 代码)
 WRITE_reg (0x11、0xFFFF);// DAC-B (完整代码)
 WRITE_reg (0x12、0xFFFF);// DAC-B (完整代码)
 WRITE_reg (0x13、0xFFFF);// DAC-B (完整代码)
 WRITE_reg (0x14、0xFFFF);// DAC-B (完整代码)
 WRITE_reg (0x15、0xFFFF);// DAC-B (完整代码)
 WRITE_reg (0x16、0xFFFF);// DAC-B (完整代码)
 WRITE_reg (0x17、0xFFFF);// DAC-B (完整代码)
 WRITE_reg (0x18、0xFFFF);// DAC-B (完整代码)
 WRITE_reg (0x19、0xFFFF);// DAC-B (完整代码)
 WRITE_reg (0x1A、0xFFFF);// DAC-B (完整代码)
 WRITE_reg (0x1B、0xFFFF);// DAC-B (完整代码)
 WRITE_reg (0x1C、0xFFFF);// DAC-B (完整代码)
 WRITE_reg (0x1D、0xFFFF);// DAC-B (完整代码)
 WRITE_reg (0x1E、0xFFFF);// DAC-B (完整代码)
 WRITE_reg (0x1F、0xFFFF);// DAC-B (完整代码)

void loop()
{
 //通道1将变为高电平1秒,然后变为低电平

 WRITE_reg (0x10,65535);
 延迟(1000);
 WRITE_reg (0x10、0);
 延迟(1000);

 serial.println ("循环完成");
香港特区政府

 当我在测试点 TP6、7、8、10上进行检查时、可以看到 SPI 信号。

但我在 DAC 通道上看不到任何输出。  

此处还附加了逻辑分析仪的输出屏幕截图(由于某种原因、其中的地址和值输出不准确)

请告诉我为什么会出现这个问题。  

谢谢你:)

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

    尊敬的 Lalita:  

    您能否移除 J11上的跳线、并且只写入命令来为内部基准供电。 还请使用示波器测量该命令期间的 SPI 信号并共享一个屏幕截图。 检查 REF 引脚、查看内部基准是否上电。 如果在示波器上未正确看到此命令、则您的 SPI 库可能存在问题、必须首先进行调试。 您也可以在不将 SPI 信号连接到 EVM 的情况下测量这些信号、以首先验证它们是否具有正确的格式。  

    此致!

    K·琼斯  

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

    这是从控制器发送的 SPI 输出的屏幕截图:
    前2个图像是控制器侧显示的 SPI 输出、示波器读数表示 MISO (蓝色)和 CS (黄色)。
    最后2个图像是通过将 Gen Config 寄存器的位14设置为0在代码中激活 DAC 的内部基准时的 SPI 输出。 J11保持开路。 当我在 J1.7上测量电压时、结果显示为2.5V。

      

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

    尊敬的 Lalita:  

    只需确认一下、如果您写入多个命令以将 GEN 配置中的位14设为0和1、您是否能够切换基准并看到 J1.7上的2.5V 电压开启和关闭? 您的屏幕截图并不能真正传达发送正确的命令、但最好知道您能够控制参考。 如果您可以对屏幕截图添加注释以发送什么命令、也会有所帮助。 现在、我不想查看 MISO (SDO -从 DAC 输出的串行数据)线路、直到我们确认您能够 通过 MOSI (SDI -从 DAC 输入的串行数据)线路成功写入 DAC。  

    此致!

    K·琼斯

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

    尊敬的 Katlynne:  

    我现在明白你的意思了。 无论我向 Gen Config 寄存器写入0还是1、DAC EVM 板上的基准引脚都不会变为低电平。 它始终显示为2.5V。  

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

    尊敬的 Lalita:  

    因此 、看起来 SPI 写入 没有工作。 您是否可以编写以下命令、并发送每个命令的另一张屏幕截图、示波器上显示了 SCLK 和 SDI 引脚、逻辑分析仪上显示了 SCLK、SYNC 和 SDI? 尝试放大、以便写入占用 每个屏幕截图中的整个窗口 (SYNC 下降沿到 SYNC 上升沿)。  

    寄存器0x03、数据0x0040

    寄存器0x04、数据0x0000

    检查基准水平

    寄存器0x04、数据0x0400

    检查基准水平

    寄存器0x04、数据0x0000

    检查基准水平

    寄存器0x05、数据0x5555

    最后一个命令旨在帮助我们了解您的控制器正在发送正确的数据。 SDI 引脚  在每个时钟上都应切换为低电平和高电平以发送数据0x5555。  

    此致!

    K·琼斯  

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

    寄存器0x04、数据0x0000

    检查基准水平

    寄存器0x04、数据0x0400

    检查基准水平

    您能向我解释一下,我们在这里到底在做什么? 从数据表中可以看出、这意味着将 Gen Config 寄存器的位10设置为0、检查基准电平、然后将位10设置为1、检查基准电平。 但这是该寄存器的保留位之一。

    另外、如果你看看我的代码、我在之前对 GEN config 寄存器进行编程时犯了一个错误、现在我注意到了。 这就是我无法控制基准的原因。 在我向寄存器发送正确的值之后、基准实际上正在切换至2.5V 和0V。

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

    尊敬的 Lalita:

     

    由于可以切换 DAC81416的内部基准、因此 SPI 通信似乎在工作。

    请按照说明检查 DAC81416的基本功能、如下所述-

    a.重启 EVM 电源并测量 TP4、TP5、TP11和 TP13上的电源电压

    b.将这些值写入相应的寄存器-  

       1.在 SPIC73 (0x73)中写入0x0A04 - 为 DAC81416器件上电  

       2.  在 GENCONFIG (0x04)中写入0x7F00 - 您可以使用板载 REF5025基准或写入0x3F00、以启用 DAC81416的内部基准          (J11 >引脚[1-2]-打开该引脚、同时启用  DAC81416的内部基准)

       3.在  DACPWDN (0x09)中写入0x0000 -为各个 DAC 通道上电

       4. 在  DACn_DATA 中写入0x8000 (n = 0x10至0x1F)- 用于将各个 DAC 通道输出配置为2.5V (所有通道的默认输出电压范围为0V - 5V)

      

    c.如果您仍然无法  在 DAC 通道上看到任何输出、请参阅部分 7.6时序要求 的说明  

     

    如果您仍然无法配置 DAC 通道输出电压、请告诉我们。

     

    谢谢。

    桑贾伊

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

    感谢您的反馈。 看起来我的评估板存在问题、但当我在新电路板上尝试相同的操作时、它可以正常工作。