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.

[参考译文] TINA/Spice/DAC101S101:使用DAC101S101时出现数据输出问题

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/642796/tina-spice-dac101s101-data-output-problem-using-dac101s101

部件号:DAC101S101
主题中讨论的其他部件:TINA-TI

工具/软件:TINA-TI或Spice模型

你好  

我是DAC101sS101的新成员和新成员。

我正在 将DAC101S101与Arduino SPI一起使用,但问题是我在输出时没有获得作为输入发送的数据。

例如,通过Arduino代码,我输入SPI.transfer16 (oxaa00),这意味着它应该为我提供4.88 (160/1024)=0.76V的输出

但我得到的却是3.79v

此论坛是否会帮助我获得测试代码或我可能出错的内容。

我会非常感谢的。

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

    欢迎来到E2E社区。 我们将尝试跟踪问题的根本原因以解决此问题。

    二进制十六进制数据0xAA00为1010.101万-00000000。0万。 数据表中的数据格式描述了两个不在乎位,接着是两个断电位,然后是10个DAC数据位,最后是两个不在乎位。 参考您输入的0xAA00数据,该数据细分为10-1010000000-00。 该模式应将设备置于断电模式,100kOhm至GND,其余设备被禁用,但数据寄存器中的十进制数字为640。 我不确定3.79V在输出上的显示方式,因为设备应该处于断电模式。

    到目前为止提供的数据中缺少的是Arduino SPI总线的时钟相位和时钟极性配置,这些数据可以解释器件如何以意外方式运行。 使用时钟极性0时钟相位应配置为0,同时数据在SCLK的上升沿计时。 使用CPOL = 1时,CPHA也应该为1。

    也许您可以提供SPI总线事务的示波器捕获,我们可以解决正在发生的事情。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    非常感谢您的帮助,这是一个非常紧迫的问题。

    请在下面找到Proteus 8中所需的配置。一旦我将极性设置为SPIMODE-1,它具有您所提到的所需特性

    它为我提供了正确的输出。 十进制640表示输出电压=5*(640/1024)=3.1伏。请检查并确认现在是否正常?

    此外,如果我想通过SPI向DAC发送两个不同的字节,如何实现?

    请您也帮我解决这个问题。

    我将非常感谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外
    它为我提供了大量的十进制数(如5000等)的输出,这些数字将超过它的限制。
    但当我输入0-1023之间的十进制数时,它不起作用。
    请帮帮我。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sarmad,

    很遗憾,我对您的问题都不是很理解。

    由于SPI通信帧的宽度为16位或2个字节,因此有关发送多字节的第一个问题似乎已经解决。

    关于第二个问题,您的第一个帖子似乎表明您已成功建立通信,并正在与DAC进行通信并取得预期结果。 发生了什么变化? 能否再次描述SPI帧的确切内容而不是十进制数字?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Kevin,

    很抱歉,让我解释一下情况。

    是的,您对第一个问题的看法正确,问题已解决。

    我的第二个问题涉及以下情况。

    我正在尝试使用Arduino并使用DAC101S101来制作SAR ADC。

    请参阅随附的SAR ADC示意图。

    下面是我在Arduino和DAC101S101以及比较器的帮助下尝试实现的代码。

    对于(int i=9; i>=0; i--)

    SAR = SAR |((uint16_t) 1 << I);

    //设置当前DAC输出  
    DigitalWrite (SS,高);
    DigitalWrite (SS,低);

    字节模式= 0b0.0001万;       //将模式编号放在此处。  

    byte firstbyte=(模式<4)|(SAL>>6);//  使其完全像2位不在乎-10断电模式-10位-10 2位不在乎
    byte secondbyte=sar<2;

     

    SPI.transfer (firstbyte);
    SPI.transfer (辅助字节);

    DigitalWrite (SS,高);

     

    如果我将数据从SAR错误地发送到DAC,请更正我。

     

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

    SAR ADC的分辨率是多少? 我想您从SAR接收的数据的分辨率比DAC的分辨率高,因为您建议使用"5000"十进制数据。 您需要位移或以其他方式将SAR中的数据转换为DAC的正确格式和分辨率。

    您似乎已成功与DAC通信。 您现在面临的问题似乎更多地是您正在开发的系统或产品级别的主题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kevin,


    非常感谢您的帮助和友好回复。
    你真的非常乐于助人。

    是的,我已成功与微控制器通信DAC。
    我的SAR ADC分辨率为10位。
    是的,我得到了一些不达标的结果。 是的,你说得对,就像我之前提到的帖子中提到的,位移代码或
    翻译是否适合我们的DAC101S101?

    我的SAR是我们需要的16位,我唯一能做的改变是以我认为正确的格式转换数据。
    请帮助我将正确格式的数据从SAR发送到DAC101S101。
    我将非常感谢你的这一善意行为。

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

    Sarmad,

    到目前为止,我对SAR ADC或其输出数据格式一无所知,因此我无法为您提供有关此翻译的任何指导。 如果它是一个具有16位数据的直接16位SPI事务,则需要转移此事务,以便在将底部6个LSB传输到DAC之前截断它们。 鉴于SPI事务中到DAC的2个LSB并不关心位,您只需4位移位即可摆脱。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kevin,
    非常感谢您的友好回复和帮助。
    尽管如此,我仍将解决此问题,您已开始与我的DAC101S101通信。

    谢谢你

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

    请解释一下正常模式和断电模式之间的区别
    DAC101S101的多少?


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

    这在数据表第18页底部和第19页的前两段中进行了说明。 您是否有一个比页面上描述的内容更详细的问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kevin,
    非常感谢您的回复。

    是的,我已经阅读了数据表的这一部分,但我的问题是,当我在二进制数01-00-1000000000-00中提供512个十进制数时,它应该提供输出
    在我的情况下,2.5 的VA为5 V,而是为我提供了1.25。
    我也使用SPI调试器检查了它,数据输入的顺序如上所述是正确的。
    但当我提供VA = 10 v时,输出电压为4 v,并给出正确的输出,但问题是最大电压VA应低于6.5 v
    请您帮助我在这种情况下应该怎么做吗?
    我的SPI首先为8 MHz MSB,而Cpol=1和CPHI=1。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sarmad,

    我想我在第一篇关于前两个MSB的文章中,没有看到您配置设备的模式。 在这两个位中使用二进制01时,器件设置为断电模式,VOUT引脚处的输出阻抗为1kOhm至GND。 此外,根据数据表,内部偏置发生器,输出放大器,电阻器串和所有其他线性电路都处于断电模式。 MSB应为00,以便在正常操作中进行配置。

    我还注意到,当我最初建议时,基于数据表文本的时钟极性和相位设置时,其中包括SCLK线路上的逆变器。 根据第9页和第10页上的时间图,实际读取了下降SCLK边缘上的数据。 因此CPOL = 0,CPHA = 1或CPOL = 1,CPHA = 0。 很抱歉,我不知道为什么此数据表的文本中包含如此多不同的SPI接口计时解释。
x 出现错误。请重试或与管理员联系。