Part Number: DAC7750
Dear All,
I'm using the DAC7750 converter in a design to output a 4-20mA signal with a update rate of 4kHz. I first implemented the basic feature (only DAC, no watchdog, no slew rate, no control, ...). After successful results I added some additional features like status read-back, watchdog, output open load check and slew rate control. Each feature works perfectly excepted the slew rate control. Actually as soon as I set the SREN bit of Control register the output freeze to 4mA. I tried various combinations of clock and step size but it has no effect. As soon as I clear the SREN bit then the output goes back to normal operation and varies between 4 and 20mA as expected. Please find below my DAC initialization code and schematic.
Thanks for helping me to enable the slew rate control that is necessary in my design.
Best regards
void DAC_Init(void){
LATCH_Write(0);
CLR_Write(1);
CyDelayUs(1);
CLR_Write(0);
DAC_Write(DAC_NOP, 0x00); // Flush DAC shift register
DAC_Write(DAC_WRITE_CAL_GAIN, 0x8000); // Set device calibration gain to 1.000
DAC_Write(DAC_WRITE_CAL_ZERO, 0x0000); // Set device calibration zero to 0.000
DAC_conf_reg.U16 = 0;
DAC_conf_reg.bits.CALEN = 0; // User calibration control
DAC_conf_reg.bits.HARTEN = 0; // HART interface control
DAC_conf_reg.bits.CRCEN = 0; // CRC control
DAC_conf_reg.bits.WDEN = 1; // Watchdog control
DAC_conf_reg.bits.WDPD = 3; // Watchdog period control
DAC_Write(DAC_WRITE_CONF, DAC_conf_reg.U16);
DAC_ctrl_reg.U16 = 0;
DAC_ctrl_reg.bits.REXT = 0; // Disable external sensing resistor
DAC_ctrl_reg.bits.OUTEN = 1; // Enable output
DAC_ctrl_reg.bits.SRCLK = 0b1100; // Slew rate clk control
DAC_ctrl_reg.bits.SRSTEP = 0b111; // Slew rate step control
DAC_ctrl_reg.bits.SREN = 0; // Slew rate enable
DAC_ctrl_reg.bits.DCEN = 0; // Daisy chain disable
DAC_ctrl_reg.bits.RANGE = 0b101; // Set output range to 4...20mA
DAC_Write(DAC_WRITE_CTRL, DAC_ctrl_reg.U16);
}


