已回答假定已回答

AD5726多路DAC输出问题(SPI写进去的控制字只有1通道与4通道有效)

wenlan88 在 2013-7-18 詢問的問題
最後回覆由adi_angela於2013-7-22提供

Question:

我将AD5726写寄存器的函数(4通道一起次性完),通过双线SPI写进去的控制字只有1通道与4通道有效;

意思是AD5726_spi_write()一次性运行完就只有1通道与4通道有效;

但是我将AD5726_spi_write()用单步运行,等到程序运行完,4个通道都有效,DAC输出的值是对的。

我用示波器看了SDIN上面的数据,传输的数据是对的,为啥void AD5726_spi_write(void)一次性运行完就不对呢?

奇怪,希望得到指点!谢谢!

 

我SPI的CLK= 18MHz;

//-----------------Code---------------------------------------------------

void AD5726_spi_write(void)

{

while(Tx_Idx < BufferSize)

{

   SPI_SendData(Buffer_Tx);

   Tx_Idx++;

   DELAY_US(10000);

    }

GPIO_SetBits(GPIOC,GPIO_Pin_5);  //CLR

  DELAY_US(10);

}

//-----------------Code--------------------------------------------------- 

void SPI_SendData(unsign int a[])

{

GPIO_ResetBits(GPIOA,GPIO_Pin_4);  //CS

  DELAY_US(10);

  GPIO_SetBits(GPIOC,GPIO_Pin_4); //LDAC

  DELAY_US(10);

  while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);

      SPI_I2S_SendData(SPI1,a[Tx_Idx]);

   GPIO_ResetBits(GPIOC,GPIO_Pin_4); //LDAC

   DELAY_US(10);

  GPIO_SetBits(GPIOA,GPIO_Pin_4);  //CS

  DELAY_US(10);

}

結果