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.

[参考译文] BP-DAC81404EVM/BP-DAC61402EVM GUI 运行时错误

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1015397/bp-dac81404evm-bp-dac61402evm-gui-runtime-error

主题中讨论的其他器件:UNIFLASHDAC81404EVMDAC81404

我遵循 BP-DAC81404EVM 、BP-DAC61402EVM 的用户指南。

 在2.1.1软件安装中,

EVM 软件与 MicrosoftRegisteredWindowsRegistered7、8和10操作系统兼容。 。
软件位于 GUI Composer 库中。 在中搜索 BP-DAC81404EVM 或 BP-DAC61402EVM
GUI Composer 库。 使用向下箭头符号下载软件。 有两个
下载:BP-DAC81404EVM 或 BP-DAC61402EVM GUI 和相应的 GUI Composer Runtime。
既可以下载这两个文件、也可以只下载 EVM GUI;可以通过下载运行时文件
EVM GUI。 该软件也可以在线运行;但是、只有在固件和之后才能运行
驱动程序已升级。 将软件下载到 PC 后、导航到下载文件夹、和
运行 BP-DAC81404EVM 或 BP-DAC61402EVM 软件可执行文件...

我的问题是我已经为 EVM 板下载了 GUI 运行时。 但是、当我运行它时、它会显示错误、如下所示:

 

有人曾遇到过这种情况? 有什么解决方案?

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

    您好、他达江、  

    如用户手册中所示、在 MSP 接口接头中、您可以找到相关引脚。  

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

    您好!

    有更新吗? 您是否需要更多帮助?

    此致、

    AK

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

    是的、我一直在尝试使用 Arduino UNO 与81404 EVM 板进行通信。

    对于跳线、我使用表6中的默认设置。

    对于 LaunchPad 接口引脚:

    EVM 板        不是

    3.3V       <->3.3V     

    5V        <->5V    

    LDAC      <->6     LDACz_PIN

    同步     <->10      DAC_SS_PIN

    SDIN     <->11     MOSI

    SDO     <-->    12 MISO

    SCLK    <->13    SCLK

    CLR、RST <->5      DAC_RESET_PIN

    这是我用于设置的 Arduino 代码、我从 Parswa 的帖子中复制了该代码。

    //芯片选择
    引脚模式(DAC_SS_PIN、输出);
    digitalWrite (DAC_SS_PIN、高电平);

    //复位
    引脚模式(DAC_RESET_PIN、输出);
    digitalWrite (DAC_RESET_PIN、低电平);
    延迟(10);
    digitalWrite (DAC_RESET_PIN、高电平);
    延迟(10);

    // LDACz_PIN
    PinMode (LDACz_PIN、输出);
    digitalWrite (LDACz_PIN、低电平);

    //初始化 SPI0
    serial.println ("SPI0 init...\n");
    SPI.begin();
    延迟(100);

    //写入
    WRITE_REG (0x03、0x0A84);// SPICDed:dev-PWDWN=0
    WRITE_REG (0x04、0x0);// GENCONFIG:Ref-PWDWN=0
    WRITE_REG (0x09、0x0);// DACPWDWN:DACx-PWDWN=0、x={A、B、C、D}
    WRITE_REG (0x05、0x0);// BRDCONFIG:DACx-Brdcast-EN=0
    WRITE_REG (0x0A、0x5555);// DACx-range=0b0101、即+/-5V

    函数 WRITE_REG 与 Parswa 完全相同。

    在环路中、我有

    uint16_t i = 65000;
    void loop(){
    //将主代码放在此处,重复运行:

    WRITE_REG (0x10、I%65535);// DAC-A
    WRITE_REG (0x11、I%65535);// DAC-B
    WRITE_REG (0x12、I%65535);// DAC-C
    //write_reg (0x13、(4*I)%65535);// DAC-D

    //i =(i+64)%65535;
    //delayMicroseconds (5);

    Read_reg (0x01);
    延迟(60000);

    但是、我仍然无法检测到从 TP2、4、5到 GND 的任何电压。

    我有另一个问题、我尝试从0x01读取寄存器值(DEVICEID)、仅获取0xFF。

    以下是我要阅读的代码:

    SPI.beginTransaction(settingsA);
    CSON();
    delayMicroseconds (1);
    //第一个位1是读取
    SPI.transfer (reg & 0x80);
    SPI.transfer (0x00);
    SPI.transfer (0x00);

    //再读取3个字节
    uint8_t val1 = spi.transfer (0x00);
    uint8_t val2 = spi.transfer (0x00);
    //我们只需要最后一个字节
    uint8_t val3 = spi.transfer (0x00);
    delayMicroseconds (1);
    CSOFF();
    spi.endTransaction();
    //Serial.println ("设备 ID ");
    serial.println (val1、十六进制);
    serial.println (val2、hex);
    serial.println (val3、hex);

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

    您好!

    您能否为函数布置 SPI 帧

    WRITE_REG (0x03、0x0A84);

    我需要 SYNC、SCLK 和 SDIN 示波器快照

    此致、

    AK

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

    我不知道为什么我无法继续向您的最新帖子添加答复。 因此、我必须回复我的第一个帖子。

    使用示波器将是我的最后一个选择、我只能在星期三这样做。 明天、由于新冠疫情协议、我无法回到办公室。

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

    您好!

    这是因为线程变得太大了。 没问题、您可以始终答复第一个问题、网页将始终正确显示该问题。

    现在、请为我们提供调试的示波器截图。 您所运行的 SPI 模式是什么?

    此致、

    AK

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

      

    蓝线:芯片选择、黄色:时钟。 右侧:放大

    我想问题每个字节之间存在差距。  

    黄色:时钟信号。 蓝色:MOSI/SDIN。

    BTW、Arduino UNO 的高信号为5V。 81404是否可以这样做?

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

    您好!

    5V 逻辑电路正常、没有问题

    此外、SCLK 间隙还可以、我能否将这三个值组合在一起? 同步、SCLK 和 SDI 以正确计时?

    您在 Arduino 中使用哪种 SPI 模式? 我们的器件支持模式1和2

    此致、

    AK

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

    我借用了 Parswa 的代码、他在其中使用模式0。 奇怪的是,他说这是为他工作的。

    好的、稍后我将更改为模式1尝试。

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

    上图显示了3个 SPI 引脚(顶部:时钟;中间:数据;底部:C)用于将0x0A 0x84写入寄存器0x03的信号。

    数据和时钟看起来正常。 只有 CS 具有一些尖峰、可以忽略这些尖峰。 我发现我的 GND 引脚接线错误。

    SPI 设置如下所示。 在这里、我使用 STM32开发板。

      SPI 帧看起来正常吗?

    我还想知道我的寄存器读取代码是否正常。 在 MOSI 发送3个字节的读取命令后、它继续发送3个虚拟字节、并且在平均时间 MISO 读取3个字节。

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

    您好!

    CS 线路必须保持低电平以进行3个字节的写入。 在您的图表中、我可以看到 CS 在事务之间变为高电平、这是不正确的。

    器件将忽略这些字节。 请确保 CS 信号为低电平。

    此致、

    AK

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

    最后、我在将 J17引脚1的 DAC_VDD 连接到电源后获得电压输出。 以前我认为 Launchpad 接口提供的3.3和5V 电源就足够了。

    现在、我的问题是其电压输出的稳定性是否取决于外部电源。 但愿不是如此。

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

    您好!

    输出电压的稳定性取决于 DAC 基准电压、AVDD 和 AVSS 电源。

    您是否在驱动 DAC 输出上的任何电容负载?

    此致、

    AK

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

    我的设置工作正常。 SPIC150寄存器中有一个快速 SDO (FSDO、启用半周期加速)位。 数据表第3页内容为:

    '数据在由 FSDO 位指定的 SCLK 引脚的上升沿或下降沿(默认为上升沿)从输入移位寄存器中输出。'

    然后、您将找到第36页:  

    "快速 SDO 位(半周期加速)。 当该位为0时、SDO 在 SCLK 上升沿更新。 如果该位为1、则 SDO 在 SCLK 下降沿更新。"

    如果您看到我的代码、初始化函数会将 FSDO 位设置为1。 即  

    // set SPICONFIG: DEV_PWDN=0, FSDO=1
    uint16_t def = TEMPALM_EN(1) | DACBUSY_EN(0) | CRCALM_EN(1) | DEV_PWDWN(0) | CRC_EN(0) | SDO_EN(1) | FSDO(1) | (0x2 << 6);
    write_reg(R_SPICONFIG, def);

    这就是我使用 SPI 模式0的原因(请参阅 《模拟器件 SPI 接口简介》、表1)。  

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

    你(们)好

    该器件支持 SPI 模式1和2以进行数据写入。 请参阅时序图。 时钟极性的空闲状态可以是高电平或低电平、但数据始终在 SCLK 的下降沿进行采样、SDO 可以是基于 FSDO 的任意一种采样方式。

    此致、

    AK

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

    您好、Akhilesh、我能否与您核实:对于 SPI CS 线路、只要它处于低电平、81404将接收数据;或者它必须从高电平变为低电平才能触发?

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

    您好!

    /CS (SYNC)引脚必须保持低电平至少24个 SCLK 边沿、以通过 DAC81404接收数据。 DAC 更新可通过2种方式进行。 如果器件处于同步模式、写入 DAC 数据寄存器不会自动更新 DAC 输出。 相反、更新仅在触发事件后发生。 DAC 触发信号由软 LDAC 位或 LDAC 引脚生成。 同步更新模式可实现多个 DAC 输出的同步更新。

    在异步模式下、DAC 数据寄存器写入会在/CS 上升沿立即更新 DAC 有效寄存器和 DAC 输出。

    总之、在这两种模式下、/CS 必须变为高电平才能发生 DAC 更新。 当您希望同时更新多个通道时、同步模式非常有用。

    此致、

    AK