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.

[参考译文] DAC80501:使用 dac80502评估板时出错(DAC80501)

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1505055/dac80501-error-using-dac80502-eval-board-dac80501

器件型号:DAC80501

工具/软件:

您好!

我正在使用 EVAL DAC 80502板创建一个小软件来测试 DAC80501。
我由外部 STM32电路板控制、因为 TI 提供的软件不起作用。

我已经连接了设置、其中棕色电缆是 CLK、绿色 MOSI、蓝色 CS 和白色 GND。

我还通过香蕉电缆为电路板提供5V 电压(或我已测试过这两者)。

注意:

  • J5用于实现 SPI 通信(引脚4至 GND)
  • J11的引脚2连接到 clk  
  • J8的引脚2连接到 Mosi
  • J13的右侧用于驱动 CS  

这是我的代码、非常简单:

  uint8_t disableRef[3] = {0x03, 0x01, 0x00};
  
  uint8_t data1[3] = {0x08, 0xFF, 0xFF}; //DAC DATA FULL

  uint8_t data2[3] = {0x08, 0x00, 0x00}; //NO DATA
  
  
// SEE IF I CAN DEACTIVATE THE INTERNAL REFERENCE
  HAL_GPIO_WritePin(SPI_1_CS_GPIO_Port,SPI_1_CS_Pin, GPIO_PIN_RESET);

  HAL_SPI_Transmit(&hspi1, disableRef, sizeof(disableRef), 1000);

  HAL_GPIO_WritePin(SPI_1_CS_GPIO_Port,SPI_1_CS_Pin, GPIO_PIN_SET);


  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    
    //MAKE A SQUARE WAVE

	  HAL_GPIO_WritePin(SPI_1_CS_GPIO_Port,SPI_1_CS_Pin, GPIO_PIN_RESET);

	  HAL_SPI_Transmit(&hspi1, data1, sizeof(data1), 1000);

	  HAL_GPIO_WritePin(SPI_1_CS_GPIO_Port,SPI_1_CS_Pin, GPIO_PIN_SET);

	  HAL_Delay(1);

	  HAL_GPIO_WritePin(SPI_1_CS_GPIO_Port,SPI_1_CS_Pin, GPIO_PIN_RESET);

	  HAL_SPI_Transmit(&hspi1, data2, sizeof(data2), 1000);

	  HAL_GPIO_WritePin(SPI_1_CS_GPIO_Port,SPI_1_CS_Pin, GPIO_PIN_SET);

	  HAL_Delay(1);

  }

我已在未停用内部基准的情况下测试此代码(我的意思是、使用芯片的2.5V 电压、不提供外部基准)。 然而,它没有显示任何东西。  
然后、我想测试器件是否正在响应、因此我通过将1设置为 REF_DIV 比特来测试是否可以停用内部基准:

  uint8_t disableRef[3] = {0x03, 0x01, 0x00};


但是、电压基准会停止...

我 还用示波器和示例附加了 SPI 传输的一些数字捕获:


如您所见,一切似乎都正常工作,然而,我不知道为什么芯片没有响应... 它可能会损坏吗?

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

    Maxim、

    我首先看到的是、连接到 SDIN 的 SPI 传输设置不正确。 SDIN 上的数据与 SCLK 的下降沿同时变化、对于该器件、SDIN 应在 SCLK 的上升沿变化。 这意味着 SPI 模式是错误的。  控制器设置为模式0、应将其设置为模式1或模式3、其中数据在 SCLK 的下降沿读取。

    下面是 DAC80501的时序图。 只需确保示波器与图匹配。

    Joseph Wu

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

    您好、Joseph。

    感谢您的快速答复。

    我已将 SPI 的模式更改为1 (CPOL = 0、CPHA = 1):


    这就是我通过数字分析仪得到的结果:

    如您所见、似乎是在向芯片寄存器写入正确的数据。 但是、2、5V 仍在那里。

    我的代码是:

      uint8_t disableRef[3] = {0x03, 0x01, 0x00};
    
      HAL_GPIO_WritePin(SPI_1_CS_GPIO_Port,SPI_1_CS_Pin, GPIO_PIN_RESET);
    
      HAL_SPI_Transmit(&hspi1, disableRef, sizeof(disableRef), 1000);
    
      HAL_GPIO_WritePin(SPI_1_CS_GPIO_Port,SPI_1_CS_Pin, GPIO_PIN_SET);
    

    你知道会发生什么吗?

    此致、

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

    Maxim、


    我在图中注意到的一点是/CS (/SYNC)和 SCLK 在图中同时发生。 如果/CS 首先下降、则该重合边沿可能会被解释为第一个 SCLK。 这会将寄存器中的数据移动1并更改通信。

    如果在/CS 变为低电平之前无法使 SCLK 处于空闲状态低电平、则可能需要将 SPI 模式更改为3 (此时时钟在空闲状态下保持高电平、数据在下降沿传输)。 要测试的另一件事是使用 EVM 并通过 USB 电缆连接 GUI。 这样应该能够正确控制 EVM。 能够与 EVM 通信并控制这些功能后、就可以使用逻辑分析仪显示 SPI 通信。 之后、您将能够使用分析器图作为模板来匹配通信。


    Joseph Wu

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

    你好、Joseph!

    感谢你的帮助。

    最后、我是对的、DAC 是损坏的。 我买了一个新的,它的工作.  

    非常感谢您的帮助。 我会将上一个答案标记为"接受的解决方案":)