// AD5791寄存器定义 #define AD5791_DAC_REG 0x01 // DAC数据寄存器 #define AD5791_CTRL_REG 0x02 // 控制寄存器 #define AD5791_CLR_REG 0x03 // 清零寄存器 // DAC输出设置函数 void set_dac_output(uint32_t dac_code) { uint32_t spi_data; // 构造SPI数据包:[读写位][寄存器地址][20位数据][保留位] spi_data = (0 << 23) | // 写操作 (AD5791_DAC_REG << 20) | // DAC寄存器 (dac_code & 0xFFFFF); // 20位DAC数据 // SPI传输 CS_LOW(); spi_transmit_24bit(spi_data); CS_HIGH(); // 触发DAC输出更新 LDAC_PULSE(); } // 电压到数字码转换 uint32_t voltage_to_code(float voltage) { const float VREF = 5.0; // 基准电压5V const uint32_t FULL_SCALE = 0xFFFFF; // 20位满量程 // 双极性模式:-10V到+10V对应0到0xFFFFF uint32_t code = (uint32_t)((voltage + 10.0) / 20.0 * FULL_SCALE); return code; }