Hi.After the DAC is powered on, it resets normally. The communication can read the device number normally. Writing 0xEEEE to Register 0AH(DACRANGEn Register) sets the output range of the DAC to -2.5V to + 2.5V. Open channels 0 through 4. At this point, 0x0FFF is written to Register 0AH(DACRANGEn Register) to set the output to 2.5V. Using a multimeter to test the output, channel 0 is 2.0V, the remaining channels are not set and are also 2.0V open. The closed channel is 0V.
当上电之后,DAC正常复位。通信能够正常读取到设备号。向寄存器0AH(DACRANGEn Register )写入0xEEEE将DAC的输出范围设置为-2.5 V to +2.5 V。打开通道0到4。此时向寄存器0AH(DACRANGEn Register )写入 0x0FFF将输出设置为2.5V。用万用表测试输出,通道0为2.0V,其余没有设置值并且打开的通道也为2.0V。关闭的通道为0V.
Here are my code.
HAL_GPIO_WritePin (DAC_RESET_GPIO_Port, DAC_RESET_Pin, GPIO_PIN_RESET);//低电平有效复位输入。此引脚上的逻辑低电平导致器件发出上电复位事件。
HAL_Delay(50);
HAL_GPIO_WritePin (DAC_RESET_GPIO_Port, DAC_RESET_Pin, GPIO_PIN_SET);//低电平有效复位输入。此引脚上的逻辑低电平导致器件发出上电复位事件。
HAL_Delay(100);
HAL_GPIO_WritePin (DAC_CLR_GPIO_Port, DAC_CLR_Pin, GPIO_PIN_RESET);//低电平有效清晰输入。该引脚上的逻辑低电平将所有DAC输出清除至其清晰代码。如果未使用,请连接到 VIO。
HAL_Delay(100);
HAL_GPIO_WritePin (DAC_CLR_GPIO_Port, DAC_CLR_Pin, GPIO_PIN_SET);//低电平有效清晰输入。该引脚上的逻辑低电平将所有DAC输出清除至其清晰代码。如果未使用,请连接到 VIO。
HAL_GPIO_WritePin (DAC_LDAC_GPIO_Port, DAC_LDAC_Pin, GPIO_PIN_SET);//低电平有效同步信号。当LDAC引脚为低电平时,配置为同步模式的通道的DAC输出将同时更新。如果未使用,请连接到 VIO。
HAL_Delay(50);
//HAL_GPIO_WritePin (DAC_ALMOUT_GPIO_Port, DAC_ALMOUT_Pin, GPIO_PIN_SET);// ALMOUT 是一个漏极开路报警输出。需要一个外部10 kΩ上拉电阻,其电压不高于VIO。
// 0x03 0x0A84 禁用软件切换(TOGGLE),关闭CRC校验,打开SD0,可以配置寄存器
DA61416_Write_SR(SPICONFIG_REG, Close_SW_DISABLE);
HAL_Delay(50);
DA61416_ReadSR(SPICONFIG_REG);
HAL_Delay(10);
//0x04 0x0000 激活内部基准电压为2.5V,并配置所有通道为单端输出
DA61416_Write_SR(GENCONFIG_REG, OutMode_Indepen);
HAL_Delay(50);
DA61416_ReadSR(GENCONFIG_REG);
HAL_Delay(10);
// 0x0a-0x0d 所有通道的输出范围配置为-2.5V-2.5V
DA61416_Write_SR(DACRANGE0_REG, Range_25to25mV);
HAL_Delay(50);
DA61416_Write_SR(DACRANGE1_REG, Range_25to25mV);
HAL_Delay(50);
DA61416_Write_SR(DACRANGE2_REG, Range_25to25mV);
HAL_Delay(50);
DA61416_Write_SR(DACRANGE3_REG, Range_25to25mV);
HAL_Delay(50);
//0x09 0xFFE0 打开所有通道0-4
DA61416_Write_SR(DACPWDWN_REG, 0xFFFE);
HAL_Delay(50);
DA61416_ReadSR(DACPWDWN_REG);
HAL_Delay(10);
//0x06 0xffff 异步更新
DA61416_Write_SR(SYNCCONFIG_REG, SYNC_ASYN);
HAL_Delay(50);
DA61416_ReadSR(SYNCCONFIG_REG);
HAL_Delay(10);
//0x07 0x0000 关闭TOGG切换
DA61416_Write_SR(TOGGCONFIG0_REG, Toggle_Disable);
HAL_Delay(5);
DA61416_ReadSR(TOGGCONFIG0_REG);
HAL_Delay(10);
//关闭TOGG切换 0x08 0x0000
DA61416_Write_SR(TOGGCONFIG1_REG, Toggle_Disable);
HAL_Delay(5);
DA61416_ReadSR(TOGGCONFIG1_REG);
HAL_Delay(10);
DA61416_Write_SR(DAC0_REG,0x0fff); //2.5V电压
// 0x07 0x0000 关闭TOGG切换
DA61416_Write_SR(TOGGCONFIG0_REG, Toggle_Disable);
HAL_Delay(5);
DA61416_ReadSR(TOGGCONFIG0_REG);
HAL_Delay(10);
//0x08 0x0000 关闭TOGG切换
DA61416_Write_SR(TOGGCONFIG1_REG, Toggle_Disable);
HAL_Delay(5);
DA61416_ReadSR(TOGGCONFIG1_REG);
HAL_Delay(10);