我想将 max5715 IC 用于更多 DAC。 我正在使用 SPI 为此 IC 发送命令、但 IC 没有响应、并且它不会生成内部基准。 请帮助我正确配置该 IC。
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.
我想将 max5715 IC 用于更多 DAC。 我正在使用 SPI 为此 IC 发送命令、但 IC 没有响应、并且它不会生成内部基准。 请帮助我正确配置该 IC。
Mark、您好!
SPI 发送正确的信号、我已在示波器上验证。 根据 DAC IC 的数据表、我正在发送正确的信号、我的时钟设置为10MHz。 我随附 DSO 捕获和数据表捕获、供您参考。
#define SPI_BRR ((200E6/4)/10000E3)- 1.
#define DAC_EN GpioDataRegs.GPECLEAR.bit.GPIO133=1
#define DAC_DN GpioDataRegs.GPESET.bit.GPIO133=1;
#define CLR_DN GpioDataRegs.GPBCLEAR.bit.GPIO38=1
#define CLR_EN GpioDataRegs.GPBSET.BIO38=1;
void SPI_init()
{
//初始化 SPI-A
//在配置更改之前将 RESET 设置为低电平
//时钟极性(0 =上升、1 =下降)
// 16位字符
//启用环回
SpicRegs.SPICCR.bit.SPISWRESET = 0;
SpicRegs.SPICCR.bit.CLKPOLARITY = 0;//1.
SpicRegs.SPICCR.bit.SPICHAR =(8-1);
SpicRegs.SPICCR.bit.SPILBK = 0;
// SpiaRegs.SPICCR.bit.HS_MODE = 0x1;
//启用主设备(0 =从设备,1 =主设备)
//启用传输(TALK)
//时钟相位(0 =正常、1 =延迟)
//禁用 SPI 中断
SpicRegs.SPICTL.bit.MASTER_SLAVE = 1;
SpicRegs.SPICTL.bit.TALK = 1;
SpicRegs.SPICTL.bit.CLK_PHASE = 0;
SpicRegs.SPICTL.bit.SPIINTENA=0;
//设置波特率
SpicRegs.SPIBRR.bit.SPI_BIT_RATE = SPI_BRR;
// SpiaRegs.SPIBRR.bit.SPI_BIT_RATE = 0x3;
//设置空闲位
//在断点上停止不会停止 SPI
SpicRegs.SPIPRI.bit.FREE = 1;
//解除 SPI 复位
SpicRegs.SPICCR.bit.SPISWRESET = 1;
}
for (;;)
{
DAC_EN;
DELAY_US (2);
CLR_EN;
SPI_xmit (0x72);//内部基准设置为2V
SPI_xmit (0xf0);//虚拟数据
SPI_xmit (0xf0);//虚拟数据
DAC_DN;
CLR_DN;
}