尊敬的各位:
我正在使用DAC7750转换器来输出更新速率为4kHz的4-20mA信号。 我首先实现了基本功能(仅限DAC,无监视程序,无转换速率,无控制...)。 在成功的结果后,我添加了一些附加功能,如状态回读,看门狗,输出开路负载检查和转换速率控制。 除转换速率控制外,每个功能都能正常工作。 实际上,只要我将SREN控制位寄存器设置为4mA,输出就会冻结。 我尝试了时钟和步长的各种组合,但没有效果。 清除SREN位后,输出将恢复正常操作,并按预期在4和20mA之间变化。 请在下面找到我的DAC初始化代码和原理图。
感谢您帮助我启用设计中所需的切换速率控制。
此致
void dac初始化(void){ LATCH_Write (0); CLR_Write(1); CyDelayU(1); CLR_Write(0); DAC_Write (DAC_NOP, 0x00);//刷新DAC移位寄存器 DAC_Write (DAC_WRITE CAL_Gain,0x8000);//将设备校准增益设置为1.000 DAC_Write (DAC_WRITE CAL_ZERO,0x0000);//将设备校准归零设置为0.000 dac配置_reg.u16 = 0; DAC_conf_reg.bits.calen = 0;//用户校准控制 DAC_conf_reg.bits.HARTEN = 0;// HART接口控制 DAC_conf_reg.bits.CRCEN = 0;// CRC控制 DAC_conf_reg.bits.wden = 1; //监视器控制 DAC_conf_reg.bits.WDPD = 3; //监视期间控制 DAC_Write(DAC_Write_Conf,DAC_conf_reg.u16); DAC_Ctrl_reg.U16 = 0; DAC_Ctrl_reg.bits.REEXT = 0; //禁用外部感应电阻器 DAC_Ctrl_reg.bits.OUTEN = 1;//启用输出 DAC_Ctrl_reg.bits.SRCLK = 0b1100;//转换速率clk控制 DAC_Ctrl_reg.bits.SRSTEP = 0b111;//转换速率步进控制 DAC_Ctrl_reg.bits.SREN = 0; //转换速率启用 DAC_Ctrl_reg.bits.DCN = 0; //菊花链禁用 DAC_Ctrl_reg.bits.range = 0b101;//将输出范围设置为4...20mA DAC_Write(DAC_Write_CTRL),DAC_Ctrl_reg.U16); }


