主题中讨论的其他器件: DAC63204
很抱歉、重新跳回到 DAC 项目需要一些时间。 如前所述、我将使用以下代码。 但 DAC 值似乎未更新。
我是用于更新 DAC 电压的十六进制值。 例如 (对于7.44v 为0x708、对于8.3v 为0x604、等等)
这里是我的代码;;;;;;;;
//用于配置 DAC53202RTER 上的 OUT0的函数
void configure_out0 (void){
RET_CODE_t err_code;
//为 OUT0配置 DAC53202RTER
uint8_t common_config_data[2]={0x1F、0x03FF};//将 OUT0设置为电压输出模式
uint8_t gain_config_data[2]={0x15、0x0400};//设置 OUT0的增益(使用 VDD 作为基准)
//发送 I2C 启动条件并写入 COMMON-CONFIG 寄存器数据
err_code = nrf_drv_twi_tx (&m_twi、DAC53202RTER_I2C_address、common_config_data、sizeof (common_config_data)、false);
if (err_code!= nrf_Success)
{
nrf_log_error ("I2C 事务失败、错误代码:%d"、err_code)
nrf_log_flush ();
}
//发送 I2C 启动条件并写入 DAC-0-I2C VOUT-CMP-CONFIG 寄存器数据
err_code = nrf_drv_twi_tx (&m_twi、DAC53202RTER_I2C_address、gain_config_data、sizeof (gain_config_data)、false);
if (err_code!= nrf_Success)
{
nrf_log_error ("I2C 事务失败、错误代码:%d"、err_code)
nrf_log_flush ();
}
//可选择添加延迟以使 DAC 稳定
nrf_delay_ms (10);
}
//用于更新 OUT0输出值的函数
void update_out0 (uint16_t output_value)//output_value 是十六进制代码(例如、对于7.44V 为0x708、对于16V 为0x00)
{
RET_CODE_t err_code;
//使用 DAC-0-DATA 寄存器更新 OUT0输出
uint8_t DATA_REGISTER_DATA[3]={0x1C、(output_value >>8)& 0xFF、output_value & 0xFF};
//发送 I2C 启动条件并写入 DAC-0-DATA 寄存器数据
ERR_code = nrf_drv_twi_tx (&m_twi、DAC53202RTER_I2C_address、data_register_data、sizeof (data_register_data)、false);
if (err_code!= nrf_Success)
{
nrf_log_error ("I2C 事务失败、错误代码:%d"、err_code)
nrf_log_flush ();
}
//可选择添加延迟以使 DAC 稳定
nrf_delay_ms (10);
}