// 零点校准(输出0V时的数字码) void zero_calibration(void) { uint32_t mid_code = 0x80000; // 中间码 set_dac_output(mid_code); // 使用高精度电压表测量实际输出 float measured_voltage = read_voltmeter(); // 计算零点偏移 zero_offset = measured_voltage; // 存储校准参数到EEPROM save_calibration_data(); } // 满量程校准 void fullscale_calibration(void) { uint32_t full_code = 0xFFFFF; // 满量程码 set_dac_output(full_code); float measured_voltage = read_voltmeter(); // 计算增益误差 gain_error = (measured_voltage - 10.0) / 10.0; save_calibration_data(); }