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.

DAC71416: SPI的时钟信号SCLK为25MHz时,一半端口没输出

Part Number: DAC71416

已经对DAC71416进行了寄存器的配置,用示波器看输出波形没问题,但结果是只有单数通道有输出,双数通道无数出。VIO是3.3V

SPI的总波形,从上到下分别为SCLK,CS,SDI。

单个spi周期的波形

主要问题应该不是spi不行,因为有一半端口是正常输出的,但时钟频率不算高,说明书能到50MHz。修改时钟到12.5MHz就所有端口都正常。

  • 示波器1234波形分别对应芯片1234通道的输出。配置的输出电压范围是0-20V(0A-0Dh寄存器为0x2222)。03h为0x0A84;04h为0x3F00;05h为0x0000;09h为0x0000。

  • 您好,

    03h您配置的FSDO bit 为0,在读和菊花链(Daisy-Chain)操作时,SCLK最大频率是20MHZ,您是否使用了菊花链模式?

  • 我的SCLK是共用的,但CS和SDI是每个芯片分开的,用了4块DAC71416,用示波器看了两块DAC,都是一半端口正常一半异常

  • 您是像SPI总线上挂接多个从设备的方式使用的DAC71416,是吗?那您是怎样写入的0x10h~0x1Fh寄存器的值?您为什么没有使用 Streaming Mode?另外,您是否验证了寄存器可以正常读写,即寄存器写入后可以正确读出写入值?

  • 一次写入1个寄存器的值,没有用 Streaming Mode是因为程序上spi设定24个sclk后拉高(详细可以看图1波形,每写1个寄存器就拉高),就没改,想着应该没区别,感觉都能用。可以正常读写,之前测过SDO输出,而且正常的那一半是可以按我想要的输出波形的可以看图3的波形,如果无法写入是不会输出电压的吧。

  • 一次写入1个寄存器的值,没有用 Streaming Mode是因为程序上spi设定24个sclk后拉高(详细可以看图1波形,每写1个寄存器就拉高),就没改,想着应该没区别,感觉都能用。

    功能上是没什么区别,我这里是担心双通道寄存器写入时会不会出现问题?使用Streaming 模式时,寄存器的写入是一惯的,出现单双通道不同的概率小一些。

    可以正常读写,之前测过SDO输出,而且正常的那一半是可以按我想要的输出波形的可以看图3的波形,如果无法写入是不会输出电压的吧。

    我担心您寄存器不能完全正确写入,所以希望您写入后再读出来以验证寄存器已按期望值写入;但是读取操作支持的SCLK速率低一些。

    另外,时钟频率越高,通信波形的质量会差一些,也不能排除是信号质量的问题。

    单双通道的后端负载有区别吗?您是否可以单独配置一下一个双通道,看下双通道是否可以正确输出? 以验证下双通道没有损坏可以正常工作。

  • 早上抱着试一试的心态使用了Streaming Mode,03h寄存器是0x0088,其他寄存器与之前相同,0A-0Dh写入是0x2222,即范围设定为0-20V。

    在25MHz SCLK情况下,结果是0、1通道固定输出10V电压,我设定的是一个输出正弦波一个输出锯齿波。其他14个通道正常输出。比之前好了,但是依旧很奇怪。

    信号质量问题目前没法确定,示波器带宽只有200M,看到的波形如之前发过的图片,大问题是看不出。后端目前没有接负载,还在测试阶段,测试结果异常还没开始使用,现在是直接输出后接的示波器。在12.5M的情况下所有通道都正常,应该可以排除损坏,而且现在除了0、1通道,其他都正常了,更加验证了芯片应该是正常的。

  • 主要是想跑到50MHz,但现在25M都跑不了,不知道哪里 出了问题。

    试了一下50M的只有通道0正常。

  • 这样看程序上寄存器读写是没有问题的,感觉应该是信号质量的问题。您是否有办法改善下通信信号的质量?SPI 信号线走线有多长?是否可以串联22Ω或33Ω电阻,串联电阻后示波器查看信号质量是否有改善?

  • 已解决,不是信号质量的问题。

    再次看了好几次说明书,发现DAC输出更新之间需要至少1u的等待时间,详细可看8.3.1.2.1

    我的理解是DAC输出更新之后(CS上升沿之后)需要至少1us等待时间,在这期间写入寄存器是无效的。所以在每次更新之后(异步为写入通道寄存器,流模式为cs上升沿,同步为sync信号之后)的1us不要写入,有可能无效。

    这很好解释了为什么0、2、4…通道正常,而1、3、5…无输出,时钟较快时,还没到1us等待时间,再次写入导致异常。流模式情况下0、1通道异常也是因为这个原因。