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.

[参考译文] DAC1220:加电时输出电压显示为2.56V

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1110864/dac1220-vout-shows-2-56v-at-power-up

器件型号:DAC1220

大家好、

我的客户使用 DAC1220进行模拟输出、他们已经测试了5个样本、所有样本在加电时都输出2.56V、这是不需要的。 我建议写入寄存器 CALPIN 以在校准期间断开输出、并建议 MD 设置自校准、但它不起作用。 您可以查看此应用吗?

BR

Sirui

.c 文件:

#include "dac1220.h"
#include "main.h"
#include "SysTick .h"
void dac1220_GPIO_init ()  

  RCU_periph_clock_enable (RCU_GPIOA);
  GPIO_MODE_SET (GPIOA、GPIO_MODE_OUTPUT、GPIO_PUPD_NONE、GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1);                 
  GPIO_output_options_set (GPIOA、GPIO_OTYPE_PP、GPIO_OSPEED_50MHz、GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1);

void da_spi0_init()

  RCU_periph_clock_enable (RCU_GPIOA);
  RCU_periph_clock_enable (RCU_SPI0);
  GPIO_af_set (GPIOA、GPIO_AF_5、GPIO_PIN_5 | GPIO_PIN_6 |GPIO_PIN_7);
   GPIO_MODE_SET (GPIOA、GPIO_MODE_AF、GPIO_PUPD_NONE、GPIO_PIN_5 | GPIO_PIN_6 |GPIO_PIN_7);
   GPIO_output_options_set (GPIOA、GPIO_OTYPE_PP、GPIO_OSPEED_50MHz、GPIO_PIN_5 | GPIO_PIN_6 |GPIO_PIN_7);
  DASPI0_CS0_OFF;
  DASPI0_CS1_OFF;
  DASPI0_CS2_OFF;
  DASPI0_CS3_OFF;
  spi_parameter_struct spi_init_struct;

  /* SPI1参数配置*/
  SPI_INIT_STRUCT.TRANS_MODE      = SPI_TRANSMODE_FULLDUPLEX;
  spi_init_struct.device_mode      = SPI_MASTER;
  spi_init_struct.frame_size      = SPI_FRAMESIZE_8位;
  SPI_INIT_struct.clock_polarity 相位= SPI_CK_PL_LOW_PH_2EDGE;
  spi_init_struct.nss          = SPI_NSS_Soft;
  spi_init_struct.prescale       = SPI_PSC_64;
  SPI_init_struct.endian        = SPI_ENDIAN_MSB;
    SPI_init (SPI0、&SPI_INIT_STRUT);

  SPI_ENABLE (SPI0);

void dac1220_init()

  DASPI0_CS0_ON;
  delay_us (100);
  DA_spi0_readwrite (0x04);
  delay_us (100);
  DA_spi0_readwrite (0x00);
  DASPI0_CS0_OFF;
  DASPI0_CS0_ON;
  delay_us (100);
  DA_spi0_readwrite (0x05);
  delay_us (100);
  DA_spi0_readwrite (0xA1);
  DASPI0_CS0_OFF;
  DELAY_1ms (1000);
  DASPI0_CS0_ON;
  delay_us (100);
  DA_spi0_readwrite (0x04);
  delay_us (100);
  DA_spi0_readwrite (0x00);
  DASPI0_CS0_OFF;
  DASPI0_CS0_ON;
  delay_us (100);
  DA_spi0_readwrite (0x05);
  delay_us (100);
  DA_spi0_readwrite (0xA0);
  DASPI0_CS0_OFF;
  delay_us (100);
   
   
  DASPI0_CS1_ON;
  delay_us (100);
  DA_spi0_readwrite (0x04);
  delay_us (100);
  DA_spi0_readwrite (0x00);
  DASPI0_CS1_OFF;
  delay_us (100);
  DASPI0_CS1_ON;
  delay_us (100);
  DA_spi0_readwrite (0x05);
  delay_us (100);
  DA_spi0_readwrite (0xA1);
  DASPI0_CS1_OFF;
  DELAY_1ms (1000);
  DASPI0_CS1_ON;
  delay_us (100);
  DA_spi0_readwrite (0x04);
  delay_us (100);
  DA_spi0_readwrite (0x00);
  DASPI0_CS1_OFF;
  delay_us (100);
  DASPI0_CS1_ON;
  delay_us (100);
  DA_spi0_readwrite (0x05);
  delay_us (100);
  DA_spi0_readwrite (0xA0);
  DASPI0_CS1_OFF;

  DASPI0_CS2_ON;
  delay_us (100);
  DA_spi0_readwrite (0x04);
  delay_us (100);
  DA_spi0_readwrite (0x00);
  DASPI0_CS2_OFF;
  DASPI0_CS2_ON;
  delay_us (100);
  DA_spi0_readwrite (0x05);
  delay_us (100);
  DA_spi0_readwrite (0xA1);
  DASPI0_CS2_OFF;
  DELAY_1ms (1000);
  DASPI0_CS2_ON;
  delay_us (100);
  DA_spi0_readwrite (0x04);
  delay_us (100);
  DA_spi0_readwrite (0x00);
  DASPI0_CS1_OFF;
  DASPI0_CS2_ON;
  delay_us (100);
  DA_spi0_readwrite (0x05);
  delay_us (100);
  DA_spi0_readwrite (0xA0);
  DASPI0_CS2_OFF;

  DASPI0_CS3_ON;
  delay_us (100);
  DA_spi0_readwrite (0x04);
  delay_us (100);
  DA_spi0_readwrite (0x00);
  DASPI0_CS3_OFF;
  DASPI0_CS3_ON;
  delay_us (100);
  DA_spi0_readwrite (0x05);
  delay_us (100);
  DA_spi0_readwrite (0xA1);
  DASPI0_CS3_OFF;
  DELAY_1ms (1000);
  DASPI0_CS3_ON;
  delay_us (100);
  DA_spi0_readwrite (0x04);
  delay_us (100);
  DA_spi0_readwrite (0x00);
  DASPI0_CS3_OFF;
  DASPI0_CS3_ON;
  delay_us (100);
  DA_spi0_readwrite (0x05);
  delay_us (100);
  DA_spi0_readwrite (0xA0);
  DASPI0_CS3_OFF;

uint16_t da_spi0_readwrite (uint8_t data)

  uint16_t spidata;
  while (reset = SPI_I2S_FLAG (SPI0、SPI_FLAG_TBE))
  {}
   SPI_I2S_DATA_Transmit (SPI0、DATA);
   while (reset = SPI_I2S_FLAG (SPI0、SPI_FLAG_RBNE))
  {}
   spidata = SPI_I2S_DATA_Receive (SPI0);
  退货 spidata;

void dac1220_out (uint8_t ch、uint32_t 数据)

  如果(0x00 == ch)
  {
    DASPI0_CS0_ON;
    delay_us (100);
    DA_spi0_readwrite (0x00);
    delay_us (100);
    da_spi0_readwrite((data>>12)&0xff);
    DASPI0_CS0_OFF;
    DASPI0_CS0_ON;
    delay_us (100);
    DA_spi0_readwrite (0x01);
    delay_us (100);
    da_spi0_readwrite((data>>4)&0xff);
    DASPI0_CS0_OFF;
    DASPI0_CS0_ON;
    delay_us (100);
    DA_spi0_readwrite (0x02);
    delay_us (100);
    da_spi0_readwrite ((data<<4)&0xf0);
    DASPI0_CS0_OFF;
  }
  否则、如果(0x01 = ch)
  {
    DASPI0_CS1_ON;
    delay_us (100);
    DA_spi0_readwrite (0x00);
    delay_us (100);
    da_spi0_readwrite((data>>12)&0xff);
    DASPI0_CS1_OFF;
    delay_us (100);
    DASPI0_CS1_ON;
    delay_us (100);
    DA_spi0_readwrite (0x01);
    delay_us (100);
    da_spi0_readwrite((data>>4)&0xff);
    DASPI0_CS1_OFF;
    delay_us (100);
    DASPI0_CS1_ON;
    delay_us (100);
    DA_spi0_readwrite (0x02);
    delay_us (100);
    da_spi0_readwrite ((data<<4)&0xf0);
    DASPI0_CS1_OFF;
  }
  否则、如果(0x02 = ch)
  {
    DASPI0_CS2_ON;
    delay_us (100);
    DA_spi0_readwrite (0x00);
    delay_us (100);
    da_spi0_readwrite((data>>12)&0xff);
    DASPI0_CS2_OFF;
    DASPI0_CS2_ON;
    delay_us (100);
    DA_spi0_readwrite (0x01);
    delay_us (100);
    da_spi0_readwrite((data>>4)&0xff);
    DASPI0_CS2_OFF;
    DASPI0_CS2_ON;
    delay_us (100);
    DA_spi0_readwrite (0x02);
    delay_us (100);
    da_spi0_readwrite ((data<<4)&0xf0);
    DASPI0_CS2_OFF;
  }
  否则、如果(0x03 = ch)
  {
    DASPI0_CS3_ON;
    delay_us (100);
    DA_spi0_readwrite (0x00);
    delay_us (100);
    da_spi0_readwrite((data>>12)&0xff);
    DASPI0_CS3_OFF;
    DASPI0_CS3_ON;
    delay_us (100);
    DA_spi0_readwrite (0x01);
    delay_us (100);
    da_spi0_readwrite((data>>4)&0xff);
    DASPI0_CS3_OFF;
    DASPI0_CS3_ON;
    delay_us (100);
    DA_spi0_readwrite (0x02);
    delay_us (100);
    da_spi0_readwrite ((data<<4)&0xf0);
    DASPI0_CS3_OFF;
  }

   

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

    您好!

    请向我们发送完整的原理图。 我们需要更多硬件详细信息。

    1.如何为 DAC1220加电? 首先是数字电源、然后是模拟电源? 如果您使用不同的模拟和数字电源、则该器件需要正确的电源定序。

    2.如何为此器件生成 Vref?

    在这个原理图中、我可以看到2个 GND 符号。 它是否在板上的某个位置短接?

    4.电源去耦电容器?

    此致、

    AK

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

    您好、AK、

    由于它与客户的原理图有关、我将离线向您发送电子邮件。

    BR

    Sirui