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.

[参考译文] DAC8760:DAC8760通过硬件 SPI 与 PSOC4连接

Guru**** 2614265 points

Other Parts Discussed in Thread: DAC8760

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/675461/dac8760-dac8760-interfacing-with-psoc4-through-hardware-spi

器件型号:DAC8760

您好!

    我需要硬件和软件方面的帮助。 我们设计了采用 PSoC 4和 DAC8760的电路板、以提供 DAC 输出。 但是、在检查时、我们从 Refout 引脚获得了700mil 的电压(该引脚又连接到 Refin 引脚)。 我们能否直接为 Refout 引脚提供5V 电压???

下面我粘贴了程序使用硬件 SPI 的代码、甚至用示波器检查我是否已成功传输数据、但在尝试读取时无法从寄存器中读取任何数据。

#include "project.h"
#include "stdio.h"

int main (空)

   
   int i=0、x、y;
   字符 str[10];
   GlobalCyIntEnable;
   
   SPI_Initialize();
   
   //SPI_1_SpiSetActiveSlaveSelect (SPI_1_SPI_SLAVE_SELECT0);
   //从器件选择为单独的引脚 SS_2
   //重置 DAC8760
   SS_2_Write (1);
   SPI_1_SpiUartWriteTxData (0x56);
   CyDelayU (SPI_DELAY);
   SPI_1_SpiUartWriteTxData (0x00);
   CyDelayU (SPI_DELAY);
   SPI_1_SpiUartWriteTxData (0x01);
   CyDelayU(50岁);
   SS_2_Write (0);
   CyDelayU (SPI_DELAY);
   
   
   //将第一个初始数据写入 DAC 数据寄存器
   SS_2_Write (1);
   CLEAR_Write (1);
   SPI_1_SpiUartWriteTxData (0x01);
   CLEAR_Write (0);
   CyDelayU (SPI_DELAY);
   SPI_1_SpiUartWriteTxData (0x00);
   CyDelayU (SPI_DELAY);
   SPI_1_SpiUartWriteTxData (0x00);
   CyDelayU(50岁);
   
   SS_2_Write (0);
   
   //为0到10V 输出写入控制寄存器
   
   SS_2_Write (1);
   SPI_1_SpiUartWriteTxData (0x55);
   CyDelayU (SPI_DELAY);
   SPI_1_SpiUartWriteTxData (0x10);
   CyDelayU (SPI_DELAY);
   SPI_1_SpiUartWriteTxData (0x01);
   CyDelayU(50岁);
   SS_2_Write (0);
   
   
   CyDelay(1000);
   
   
   for (;;)
   {
       //将10V 数据写入 DAC 数据寄存器
       
       SS_2_Write (1);
       CLEAR_Write (1);        
       SPI_1_SpiUartWriteTxData (0x01);
       CLEAR_Write (0);
       SPI_1_SpiUartWriteTxData (0xFF);
       SPI_1_SpiUartWriteTxData (0xFF);
       CyDelayU(50岁);
       SS_2_Write (0);
       CyDelay(1000);
       
       //将5V 数据写入 DAC 数据寄存器        
       
       SS_2_Write (1);
       CLEAR_Write (1);        
       SPI_1_SpiUartWriteTxData (0x01);
       CLEAR_Write (0);
       SPI_1_SpiUartWriteTxData (0x7F);
       SPI_1_SpiUartWriteTxData (0xFF);
       CyDelayU(50岁);
       SS_2_Write (0);     
       CyDelay(1000);
   }

谢谢你。

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

    尊敬的 Ranjith:

    欢迎访问 E2E 论坛!

    要回答您的第一个问题、如果您使用的是外部5V 基准、则应将其连接到 REFIN。 如果您使用内部基准、则 REFIN 应连接到 REFOUT、并应启用内部基准。

    查看您的代码、您似乎只在 SPI 数据帧中发送2个字节。 该器件需要一个24位 SPI 帧、该帧由一个地址字节后跟两个数据字节组成。 为了将数据计时到器件中、需要在锁存引脚的上升沿之前发送24位。 我认为这是你的问题。

    如果这不能解决您的问题、请提供 SCLK、DIN 的示波器捕获、并在相同的捕获上锁存以确保 SPI 帧正确、这将很有帮助。 此外、您能否提供您的电路原理图?

    谢谢、
    Garrett

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

    尊敬的 Ranjith:

    很抱歉、我之前误读了您的代码。 我看到您是如何发送三个字节的、这三个字节之间存在延迟。 如果您可以提供这些波形、我仍然希望看到示波器捕获和原理图。 这将有助于验证您的硬件设置以及 SPI 事务。

    谢谢、

    Garrett

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

    您好、Garrett、

      感谢您的回复。 我随这篇帖子附上了锁存器、时钟和 MOSI 引脚输出示波器图像。

    DOUT 与时钟

    在看到您的帖子之前使用时钟锁存

    编辑后使用时钟锁存

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经连接了5V 外部电源并检查了现在我获得的4.5V 恒定电压、但在写入数据寄存器后没有变化
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Garrett、

    我已将 SPI 选择中的时钟和数据格式与下图中的一样附加。

    谢谢、

    Ranjith。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    即使在提供该脉冲后、该问题也无法解决、我没有在该引脚上获得任何输出
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ranjith:

    感谢您提供波形。

    在您的第3个波形中、您显示了第24个时钟边沿之后的锁存上升沿、这看起来是正确的、但您是否曾事先将锁存器拉高? 最短闩锁高电平时间为40ns、因此如果您从未将其拉高、则可能会导致问题。

    当您说已连接5V 电源时、这意味着您已将5V 连接到基准? 我知道您之前说过、基准电压为700mV。 它担心基准电压不会达到5V。 您是否有可能在电路板上以某种方式短接它?

    您能否提供原理图来验证您的硬件设置?

    谢谢、

    Garrett

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

     您好、Garrett、

      我已验证引脚 Refout 和 Refin 引脚是否短路的硬件。 仍然不知道。

      当前写入数据时、首先写入控制寄存器以禁用输出、然后继续写入0x01寄存器、再再次写入控制寄存器以启用输入。

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

    尊敬的 Ranjith:

    我查看了您的原理图、没有发现会导致此问题的任何东西。 您是否测量了内部稳压器 DVDD 的电压? 它是否达到大约4.6V?  

    如果基准运行不正常、似乎存在一些硬件问题。 您是否尝试过多个 DAC8760器件或多个电路板? 电路板上可能会出现一些意外短路。

    谢谢、

    Garrett

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

    您好、Garrett、

       感谢您的回复、我获得了电压输出。 这只是在使用硬件 SPI 时、我认为脉冲未正确生成、但现在我获得 了 DAC 的电压输出、但与电流输出存在困难

    当数据寄存器为电流输出加载0时、我可以看到、ALARM 引脚如数据表中所示为高电平、但当加载任何其他数据时、ALARM 引脚驱动为低电平。 我已通过将24V 的 AVDD 和 AVSS 接地进行检查。 电流设置电阻器在内部通过配置寄存器(REXT 位)使能为0。 ISET-R 引脚(即24引脚 HTSSOP 封装的第13引脚)未连接到任何器件。

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Garrett Sorry、在前面我提到过它是配置寄存器、但它是控制寄存器
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!


    我为寄存器传输了数据、如下所示、

    用于将 DAC 设置为0至24mA 范围、仅需要电流、

    控制 0x10、0x07
    配置 0x00、0x00
    增益 0x00、0x00
    偏移 0x00、0x00

    用于 DAC 数据寄存器我所需的输出范围。


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

    尊敬的 Ranjith:

    我很高兴您能够使电压输出正常工作。 这有助于验证 SPI 传输。

    SPI 通信将 DAC 设置为0-24mA 范围并至少从您在上面发布的内容启用输出时、我没有发现任何问题? 写入 DAC 数据寄存器后、在 IOUT 测得的电流/电压是多少? 您驱动的负载是多少?

    至于警报、我建议读取状态寄存器以查看器件正在进入的警报条件。 如果 IOUT 保持开路或连接到大负载、合规电压警报将切换。 您将 IOUT 连接到了什么? 这可以解释为什么在向数据寄存器写入大于零的值后会出现报警情况。

    谢谢、
    Garrett

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

    我很高兴你能作出答复。 我已将 DAC 设置为电流输出、负载来自万用表、以测量250欧姆的输出。

    当我检查导致警报条件的原因的状态寄存器位时、结果为0x0008。 即看门狗定时器超时。 但我尚未启用看门狗计时器。 我可以确保当我向数据寄存器写入0时、Alarm 引脚保持高电平(这也适用于开路负载条件)。

    我已将10kOhm 连接到 ISET-R 引脚、并且在控制寄存器位中启用外部电阻后、可以根据写入数据寄存器的数据确定该引脚的电压变化、但我仍然没有获得电流输出。

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

    我甚至通过将数据作为0x0000传递到0x95寄存器来尝试软件复位、但警报引脚保持低电平、并尝试将0x0001写入0x56、结果仍然相同。

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

    即使我已经验证了标题为"DAC8760间歇性错误警报输出"的问题、但没有改进。

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


    我认为发现了一个问题、当我通过 SPI 将数据传递到控制寄存器时、警报引脚被激活为低电平。 只有当我为电流输出发送范围位的数据、但对电压输出正常工作时、才会发生这种情况。 因此、我检查了 ISETR 引脚输出是否从外部连接到电阻器、以便已写入的数据正常工作、但 IOUT 否 在读取状态寄存器时、我得到0x0008。 即使在将 SPI 数据设置为0x95、0x00、0x00后、警报引脚仍未恢复到其高电平状态。

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

    除了这些问题、我还需要对"合规性电压违例问题或开路问题"进行一些澄清。

    谢谢、

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

    状态寄存器在看门狗定时器未启用的情况下指示看门狗故障、这似乎非常奇怪。 您是否尝试读取配置寄存器以查看看门狗启用是开启还是关闭?

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

    您好、Garrett、  

      抱歉、我的错误是数据被错误解释。 实际位是依从电压补偿或开路位。 但我已在 Iout 引脚和接地端连接了250欧姆的电阻负载。 因此、我需要解决这个问题。  

    谢谢、

    Ranjith

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

    您好、Garrett、

       如果在我的案例中存在合规性电压违规问题、我已为 AVDD 提供0至12V 电压、如果是这种情况、我无法获得输出、那么根据下面的公式、对于250/500欧姆的电阻负载、

    AVDD>=合规电压+(max.current *电阻值负载)

    应提供多少 AVDD 以及如何知道合规电压。

    谢谢、

    Ranjith

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

    尊敬的 Ranjith:

    您提供的公式是正确的。 数据表指定、如果 IOUT 上的电压大于 AVDD-2V、则会发生警报。 晶体管的合规电压大约为2V。 晶体管正常运行需要2V 的余量。

    在20mA 下驱动250欧姆负载时、不应存在报警条件、但在20mA 下驱动500欧姆负载将是进入报警条件区域之前的最大值。 您是否确认电流在环路中流动? 如果环路打开、将触发相同的警报。

    谢谢、
    Garrett

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

    您好、Garrett、

       根据数据表,如果我为 AVDD 提供了12V 电压,则 Iout 处的电压为4V (最大值:20mA)。 但是、当我为 AVDD 提供24V 电压时、Iout 引脚上的电压为16-17V、最大电流为20mA。 但是、由于我没有获得电流、我仍然无法得出 Iout 输出的结论。 我们已经尝试在250欧姆负载下进行验证、即在万用表的帮助下进行验证。 ALARM 引脚置为低电平状态、在读取状态引脚时、寄存器显示 Iout 开路和合规电压违反。 我需要知道它是硬件问题还是软件问题。

    谢谢。

    Ranjith

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

    在12V 和24V 情况下、您都不测量环路中的电流? 如果您在 IOUT 测量电压、则在连接负载的情况下应存在一些电流。 我确实注意到您使用的是外部增益电阻器 Rset 电阻器、但原理图上指示的值为15欧姆。 这实际上是您在电路中使用的吗? 这应该是一个15千欧的精密电阻器。 这似乎是问题、或者您的负载实际上未按预期连接。

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

    您对此主题是否有任何更新?

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

    您好、Garrett、

      我们仅为1个 IC 订购了此主题的未更新、由于电路板错误、该主题现在已短路。 我们已经订购了更多 IC、并且我们正在开发新电路板、因此在我们获得新 IC 之前、我无法更新到此帖子。 完成硬件工作后、我将从 Gokul Sridhar 的帐户名称更新该帖子。 感谢您的回复。

    谢谢。

    此致、

    Ranjith