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.

[参考译文] DAC8771:DSDO 设置为1后、DAC8771保持菊花链状态

Guru**** 2390755 points
Other Parts Discussed in Thread: DAC8771, DAC8775, DAC8775EVM, LP38798

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/868012/dac8771-dac8771-stays-in-daisy-chain-after-dsdo-is-set-to-1

器件型号:DAC8771
主题中讨论的其他器件: DAC8775、鳄鱼夹DAC8775EVMLP38798

您好!

在启用/配置任何 BBC ARM (仅 AVDD=12.1V、启用内部基准)之前、我将测试 DAC8771 SPI 通信。  

我 选择通道0 (REG=0x03;DATA=0x0030)来禁用默认菊花链。 设置复位配置以启用内部基准(REG=0x2、DATA=0x0013)。

电源复位后、从器件进行的所有读取尝试(例如、状态 REG=0x0B 或 POR CONFIG REG=0x2)均表明器件仍处于菊花链模式。 (MISO 是延迟24位的最后一条命令的回波;用户位也是0)。 我还尝试  在启动时通过寄存器(REG=0x1;DATA=0x0001)复位器件。

 未启用/配置 BBC 时(通过0x06和0x07)、器件是否默认为菊花链模式? 或者还有其他问题吗?

[BBC 目前已被禁用、因为 BBC 的 VPOS 和 VNEG 将用于为模拟开关供电(具有3.3V SPI)-目前未连接]。

注意:我使用 EVAL 板测试 DAC8775、并注意到我必须在读取命令中将 NOP=[0x00、0x00、0x00]替换为[0xFF、0xFF、0xFF];在 EVAL 板的测试点使用 MSP432和 Python 进行测试、并且正在工作。 我使用 DAC8771尝试了0x00和0FF、但没有任何作用。

感谢你的帮助。

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

    Lasto、

    请多多包涵、因为大部分团队都在圣诞节假期休息。 您可以在下周的某个时候收到回复。

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

    Kevin、

    谢谢你。 一点也不匆忙。 请别着急,慢慢来。

    快乐的假期!

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

    您好 Lasto、

    很抱歉耽误你的时间。

    最后、我想您只会看到器件的预期行为。 请注意、在 PDS 的图2中、我们显示回读数据始终在下一条命令中显示、我们使用 了一个正在使用的 NOP 示例。   

      这并不意味着菊花链模式仍处于活动状态。  启用菊花链模式基本上会告诉器件在前24位移位后持续输出数据时钟。  例如、如果您有两个采用菊花链配置的器件并为48位数据计时、则第一个 DAC 将锁存最高有效24位、第二个 DAC 将锁存最低有效24位。  如果您使硬件保持不变并禁用菊花链模式、并且时钟频率为相同的48位、则两个器件都不会锁存任何数据、因为它们会将帧视为无效长度。

    谢谢、

    Paul

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

    您好 Paul、

    没问题。

    我的道歉似乎在这里引起了混乱。 我遇到的关键问题是、我无法从器件寄存器(固件中)读回数据。 我开始研究 SPI 信号。

    我的问题是、我的"读取命令"被复制为"回读数据" 、同时在 PDS 的图2中发送 NOP 赞扬。

    例如、如果我设置一个寄存器(状态 REG=0x0B 或 POR CONFIG REG=0x2或用户位)并尝试在固件中读回它、我将获得"Read Command"命令的值。 使用相同的固件从 DAC8775-EVAL 读取寄存器时没有问题(通过测试点发送 SPI 命令)。

    我不确定、但我认为当 DAC8775-EVAL GUI 开箱即用时、我已经看到过这种行为、也就是说、如果不是所有寄存器都已配置(我必须调整 GUI 设置才能从寄存器读取值-例如、状态寄存器= 0x0B)。

    我同意您的注释 "请注意、在 PDS 的图2中、我们显示回读数据始终显示在下一个命令中"、但 我假设您引用 的是 PDS 的图2中显示为 SDO 上"垃圾"段的上一个"NOP"命令。  

    如果您需要进一步的信息或澄清、请告诉我。

    此致。

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

    您好 Lasto、

    要进行澄清、请在执行以下操作时:

    1、写入(0x040001)-将值0x0001写入寄存器0x04

    2.写入(0x84wxyz)-为寄存器0x04发出读取命令、其中 wxyz 为"无关位"

    3.写入(0x000000)-发出 NOP 命令、在此命令期间、回读数据应出现在 SDO 上。

    您在帖子中是否说过、在步骤3中、您只会看到0x84wxyz 命令的回波、而不是预期的"0x840001"(读取命令但具有有效数据)?

    谢谢、

    Paul

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

    尊敬的 Paul:

    是的。

    我为上述三条命令连接了 SPI 走线(黄色=MOSI、浅蓝色=CLK、深蓝色=MISO、红色=CS、每分段5V)

    [注意在 发出这些写入命令之前、我调用了选择 BBC0和 Ch0、以确保根据 PDS 将"禁用菊花链"标志设置为寄存器0x03的位4 ]。 目前英国广播公司没有供应。

    感谢你的帮助。 如果您需要任何其他信息、请告诉我。

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

    您好 Lasto、

    您确切地向寄存器0x03写入什么值? 是否可以启用 CRC? 这可能只是导致 SDO 引脚回显响应、因为其他命令无效。

    谢谢、

    Paul

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

    我发送到0x03的是 0x0030。 下面显示了 SPI 跟踪(解决问题的道歉)。 下面还列出了函数调用。

    感谢你的帮助。 如果您需要更多数据或测试、请告诉我。

     寄存器= 0x03、数据= 0x0030  

    void _DAC_select_channel (uint8_t ch){// ch={0、1、2、3}
    
    uint8_t FIRST_ch_bit = 5;//对于多通道 DAC、通道位为{5、6、7、8}
    uint8_t disable_菊花 链= 1;
    uint8_t dsdo_bit = 4;
    
    uint8_t SEL_ch = DAC_MULTI_CHANNEL? 通道:0;
    if (<DAC_CHANNEL_COUNT){
    uint8_t data[]={0x00、0x00};
    uint16_t dec = 1 <<(FIRST_ch_bit+SEL_ch);
    if (disable_daise_chain)
    Dec |= 1 << dsdo_bit;
    uint8_t mask = 0xFF;
    uint8_t MSB =(十进制>> SSI_DATA_width)和 MASK;
    uint8_t lsb =十进制和掩码;
    _SPI_DAC_WRITE (DAC_CHANGE_SEL_REG、MSB、lsb);
    }
    //否则通道
    无效} 

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

    是否有任何图像分辨率较低的想法? 您是否以高频率进行通信?  

    因此、在重新读取该线程后、我认为我们可能走错了路。  该器件仅在菊花链模式下运行、或禁用 SDO 引脚。  没有"禁用菊花链"功能。  尽管我承认 DSDO 位的措辞令人困惑。

    让我们尝试一下。  跳过代码中的所有配置。  不要写入配置寄存器0x03。  只需打开器件电源、然后发出以下三条命令:

    1、写入(0x040001)-将值0x0001写入寄存器0x04

    2.写入(0x84wxyz)-为寄存器0x04发出读取命令、其中 wxyz 为"无关位"

    3.写入(0x000000)-发出 NOP 命令、在此命令期间、回读数据应出现在 SDO 上。

    您应该会看到回读。   

    我担心、当您写入0x03时、会出现问题。  考虑到噪声范围很高、我想知道数据是否被误锁、而您实际上正在设置 CREN 位。  这将启用 CRC、器件将拒绝所有其他命令、但器件仍会在下一条命令中回显拒绝的数据。  此外、如果您正确写入0x03、SDO 引脚将为高阻态、您将看不到任何响应。

    请进行测试。

    谢谢、

    Paul

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

    尊敬的 Paul:

    我通过将引脚44置为低电平(通过1K 欧姆连接到3.3V)来复位了硬件复位。 然后执行了三条命令。

    我包含了以下时钟设置的代码(线迹为1us/div)。 我假设时钟极性和相位正常。 [上一个快照的低分辨率是由于桌面软件的设置所致]

    请注意、通过 TI 数字隔离器从 MSP432发出的 SPI 为3.3V、而 DSO 为5V、因为我使用的是内部 VDD。  

    我还尝试了软件复位并等待了几秒钟、然后重新运行这三条命令-结果相同。

    非常感谢您的帮助。 如果您需要其他测试、请告诉我。

    1、写入(0x040001)-将值0x0001写入寄存器0x04

    写入(0x840110)  

    写入(0x000000)  

    时钟设置

    G_systemClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
    SYSCTL_OSC_MAIN |
    SYSCTL_USE_PLL |
    SYSCTL_CFG_VCO_480)、120000000); 
    //初始化后默认使用 SSI 来支持 DAC
    MAP_SSIConfigSetExpClk (SSI2_base、g_systemClock、DAC_SPI_MODE、
    SSI_MODE_MASTER、(g_systemClock/40)、SSI_DATA_width); 

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

    尊敬的 Paul:

    很抱歉、由于我的上一个帖子遗漏了测试的结论、"硬件重置没有任何影响、菊花链仍然处于活动状态"。

    谢谢

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

    您好 Lasto、

    我刚用 DAC8775 EVM 尝试过这种方法、没有遇到任何问题。  我验证了 NOP 的性质无关紧要(0x000000或0xFFFFFFF)、您也可以再次发送读取命令、但仍然有效。

    我还将订购 DAC8771 EVM、以确保正常运行。

    当我的想法很低时、让我们澄清一些事情、以确保我们不会错过任何东西:

    1、此 SPI 总线上是否有其他器件?

    2.在您的范围内,我看到时钟边沿上有一些明显的振铃。  我过去曾看到过这些问题、尤其是在这是"飞线"设置的情况下。  示波器探头通常会改善这种情况、因此当您断开探头连接时、它们可能会更糟。  您如何连接此板? 是否可以在器件引脚和小电容器(<100pF)之前添加一些串联电阻。

    3.您能共享原理图吗?

    4.如果您减慢时钟速度、有什么变化吗?

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

    尊敬的 Paul:

    我附加了3个文件(2个 DAC8771和数字隔离器的原理图;以及6层电路板的概述)。 答案如下:

    1、此 SPI 总线上是否有其他器件?

    不是在此测试期间、只有 DAC8771。 有 ADC 和模拟开关(我拆下了开关并断开了 ADS 的 MISO)。 MOSI、CLK 和仍仅与 ADC 共享(但单独的 CS)。 我在随附的数字隔离器原理图中用两个红色"X"标记了这些变化(Schematic、ISO7740DBQ_ISO7741DBQ_for_MSP432E_DAC_SPI_Isolation.pdf)

    2.测试点通过"飞线"和鳄鱼夹连接到探头。 对于 MOSI、CLK 和 CS 线路、我有零电阻器可替换为33欧姆(但对于 MISO、则不能替换)。

    3.共享3个文件;如果您需要更多信息,请告诉我。

    4.我会减慢时钟速度、然后重新测试并保持您的发帖。

    再次感谢。

    DAC8771原理图

    e2e.ti.com/.../schematic_5F00_DAC8771.pdf

    SPI 线路数字隔离器的原理图

    e2e.ti.com/.../schematic_5F00_ISO7740DBQ_5F00_ISO7741DBQ_5F00_for_5F00_MSP432E_5F00_DAC_5F00_SPI_5F00_Isolation.pdf

    布局概述

    e2e.ti.com/.../Layout_5F00_Overview.pdf

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

    尊敬的 Paul:

    关于时钟速度:

    4.如果您减慢时钟速度、有什么变化吗? 否。(时钟因系数2、4和8而减慢)

    谢谢

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

    您好 Lasto、

    您是否能够配置 DAC? 例如、您是否能够仅通过写入器件即可获得电压输出变化?  器件是否可以处于接口只是处于虚拟模式的某种复位状态?  您能否验证所有电源电压?

    谢谢、

    Paul

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

    尊敬的 Paul:

    我从未尝试在 DAC8771上启用 BBC ARM。 换句话说、我当前在禁用 BBC 的同时使用 SPI 通信(因此会出现通道故障)

    [正如我在原始帖子中提到的、我认为通过 TI GUI (第二个选项卡)读取/写入寄存器也是开箱即用 DAC8775 EVAL 上的一个问题、直到我启用了 BBC 和选定的频道。]

    我测量了电源、BBC 和 Vout 电压:

    * AVDD/PVDD = 12.1V (我的 DAC8775 EVAL 在 AVDD=8.5V 时可完全正常工作);

    * BBC - VPOS=0.7V 且 VNEG=-150mV; 因为 BBC 未启用 (即、从未在 DAC8771上配置寄存器0x07的位1:0)  

    * Vout =< 0.5mV (根据您的指令、寄存器0x04 = 0x0001、0x05位于 RESET=0x0000)

    下面是我通常配置 BBC 的方式(在 DAC8775-EVAL 上、通过测试点与 MSP432的 SPI 配合工作正常)

    void DAC_enable_all_BBC (){
    uint8_t ch=0;
    uint8_t output_range_data=0x0;
    for (ch=0;<DAC_CHANNEL_COUNT;ch++){
    DAC_SELECT_BUCK_BOOST_converter (ch);
    DAC_SELECT_CHANNEL (ch);
    output_range_data = DAC_GET_ch_output_range (ch);
    if (output_range_data < 4 ||(output_range_data > 7 && output_range_data < 12)
    DAC_SET_BUK_BOOST_converter_configuration (0x01、0x08、0x07、0x03);
    否则{// if (output_range_data > 3 &&(output_range_data <8)|| output_range_data >= 12)
    DAC_SET_BUK_BOOST_converter_configuration (0x00、0x08、0x07、0x03);
    }
    }
    _spi_dac_flush ();
    } 

    如果您需要任何测试或数据、请告诉我。

    谢谢

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

    您好 Lasto、

    您能否尝试启用 DAC8771上的直流/直流转换器? 我想对我们能够成功写入 DAC 有一定的信心。   如果我们无法写入 DAC、那么我怀疑有一些原理图问题、即器件处于某种 POR 状态、数字接口只是回显输入。

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

    尊敬的 Paul:

    我尝试启用通道0的直流/直流转换器以钳位至+/-15V (reg=0x07、data=0x061F)、但它不起作用。  

    因此、我似乎无法写入寄存器。 此外、我假设我们已经验证了禁用直流/直流转换器(将00写入0x07 1:0位)不会影响 SPI 通信。  

    我发送了上述 DAC8771和 ISO7741DBQ 数字隔离器的原理图。 我检查了引脚44的复位电压、该电压为高电平(3.25V)、引脚45 (警报)也为高电平(3.21V)。  选择通道0时、我仍在向 DSDO 位写入1。

    如果您需要其他信息、测试或原理图、请告诉我。

    谢谢

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

    尊敬的 Paul:

    还有另外两种可能、(1)我的固件可能会导致问题(调用序列或时序);(2) DAC 和隔离器电源序列问题。

    固件:我使用相同的固件与 DAC8775EVM 进行通信、其中 SPI 命令通过 测试点(而不 是通过 SM-USB-DIG)执行。 尽管我在寄存器的写入和读取方面没有遇到任何问题、DAC8775的运行无可挑剔;但我必须在启动时重置并启用 BBC、才能读取状态和其他寄存器。  可能是我没有遵循正确的启动顺序、但之后一切都正常。

    电源:我有两个3.3V (LDO)电源、一个 (数字)为隔离器供电、另一个(模拟)连接到~复位和~警报。 DAC AVDD 来自 TI LP38798SD 降压转换器。

    谢谢

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

    校正 TI LP38798是一款 LDO。

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

    您好 Lasto、

    启用直流/直流转换器有几个步骤。  我们如何尝试仅启用基准。  

    尝试重置器件、只需写入 REFEN 位(寄存器0x02值0x0010)、您就可以测量 REFOUT/IN 引脚上的电压。

    此外、您能否验证在为器件供电时看到 VPOS 上的电压大约为3.4V?

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

    尊敬的 Paul:

    正如您所建议的、由于某种原因、复位引脚似乎未保持低电平状态(可能是无效接触)。 现在我可以读取状态寄存器、它通过了上面建议的读取测试。

    基准电压现在为5V。

    但 VPOS 为-0.5V 而非3.4V (我使直流/直流转换器的两个桥臂都钳位至+/-15V、但我禁用了通道输出)。 VNEG=-1.3V。

    您是否建议在禁用直流/直流时 VPOS 应为3.4V?

    谢谢。  

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

    我的理解是、假设提供 PVDD 和 AVDD、VPOS 应为~3.4V。  启用直流/直流转换器时会发生什么情况?

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

    尊敬的 Paul:

    以下是禁用直流/直流的 VPOS 和 VNEG 的值

    *直流/直流禁用- VPOS=0.7V 且 VNEG=-150mV; 未启用 BBC 时( 即寄存器0x07至00的位1:0)

    *启用直流/直流- VPOS=-475mV 和 VNEG=-1.29V; 启用 BBC 时( 即寄存器0x07至11的位1:0)

    如果我们需要获取直流/直流信号(例如、LP 到 Ln 之间的电压)、请告诉我。

    注意:虽然原理图与 EVM 原理图相同、但我通过旁路电容器(一个是模拟开关、当前已从电路板上移除、另一个是运算放大器/缓冲器)将 VPOS 和 VNEG 连接为其他两个器件的电源。 对于每个电源轨(VPOS 和 VNEG)、每个器件的总旁路电容为10uF。 如有必要、如果您向我发送了 E2E 邀请、我可以通过 PM 向您发送 DAC 和相关器件的原理图。  

    与参考设计(EVM)一样、VPOS 和 VNEG 也在 输出端口的 BAV99-7-F 之间进行连接。

    谢谢

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

    下面介绍了基于 SPI 布线的寄存器设置:

    状态寄存器为0x1740、表示 DC/DC Pg=0 (不好);0x17C0的预期值(因为我要将 UBT 设置为1)

    SPI 正在正确读回器件的所有寄存器。 基准电压为5.02V。

    禁用直流/直流时、寄存器0x07设置为0x061C ( 禁用直流/直流时设置为0x061F)

    在设置寄存器0x07之前、寄存器0x06设置为0x0001

    谢谢!

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

    您好 Lasto、

    您可以将原理图通过电子邮件发送至 frost@ti.com 吗?

    谢谢、

    Paul

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

    您好 Lasto、

    让我们将此主题标记为已解决、我可以通过电子邮件支持 DCDC 问题。  我认为这是一个微小的原理图错误、因此与其他用户无关。

    谢谢、

    Paul

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

    尊敬的 Paul:

    我完全同意、正如您所建议的、是由于复位引脚接触导致器件无法将数据从移位寄存器移动到器件寄存器。

    非常感谢您的帮助。