您好,
写入数据后,DAC8.0004万在板中没有输出。
SPI通信和回读 正常。
问题是什么? 是否有人可以帮助检查代码或提供一些建议? 谢谢。
计时波形如下所示。
包括"hardware.h"
unsigned long DAC_Write_Read (unsigned long CMD);
无符号int dac状态;
void Dac8004_Init()
{
DAC_Write_Read(0x80万f);//启用sdo寄存器
DAC_Write_Read(0x04f0000f);//打开电源
DAC_Write_Read(0x06f0000f);//通过SCK的32下降沿更新控制
DAC写入读取(0x1d0万);
DAC_Write_Read (0x500.0002万);
DAC_States=DAC_READ();
}
void Write_Update_DAC (无符号int通道,无符号int数据)
{
unsigned long cmd,i;
i=0;
//GPIO设置位(GPIOB,GPIO引脚_11);
cmd=(((unsigned long通道)><20);
cmd=0x300万|cmd;
cmd=cmd|(unsigned long) data<4);
DAC_Write_Read(cmd);
GPIO重置位(GPIOB, GPIO引脚_11);
GPIO重置位(GPIOB, GPIO引脚_2);
//while (I++<40);
GPIO _设置位(GPIOB,GPIO _引脚_11);
GPIO设置位(GPIOB, GPIO引脚_2);
}
无符号长DAC_READ()
{
返回DAC_Write_Read(0x0e0万);
}
unsigned long DAC_Write_Read(unsigned long CMD)//27fc
{
unsigned long data_in;
无符号短CMD_H,CMD_L;
unsigned long r;
cmd_H=CMD>>>>16;
cmd_L=CMD&0x0000ffff;
GPIO重置位(GPIOA, GPIO引脚_4);
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)== RESET;
SPI_I2S_SendData16( SPI1, CMD_H);
While (SPI_I2S_GetFlagStatus (SPI1,SPI_I2S_FLAG_RXNE)== RESET);
cmd_H=SPI_I2S_ReceiveData16(SPI1);
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)== RESET;
SPI_I2S_SendData16( SPI1, CMD_L);
While (SPI_I2S_GetFlagStatus (SPI1,SPI_I2S_FLAG_RXNE)== RESET);
cmd_L= SPI_I2S_ReceiveData16(SPI1);
R=CMD_H;
r=(r<16)|CMD_L;
GPIO设置位(GPIOA, GPIO引脚_4);
返回r;
}
