Ques
tion:
我将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);
}