ST意法半导体
直播中

淡淡的爱

13年用户 975经验值
私信 关注
[问答]

STM32F373的PGA(SDADC前置)怎么校正?

STM32F373的PGA(SDADC前置)怎么校正

回帖(1)

李莉

2025-3-17 18:07:09

STM32F373 的 SDADC 前置 PGA(可编程增益放大器)的校准过程涉及硬件和软件配置,以确保测量精度。以下是详细的校准步骤:




1. 校准原理



  • 偏移校准:消除零点误差(输入为0时的输出偏差)。

  • 增益校准:消除放大器的增益误差,确保输出与理论值匹配。




2. 硬件准备



  • 将 PGA 输入端接地(用于偏移校准)。

  • 提供已知的精确参考电压(用于增益校准,如 Vref/2)。




3. 软件配置步骤


3.1 初始化 SDADC 和 PGA


// 启用 SDADC 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SDADC1, ENABLE);

// 配置 PGA 增益(例如增益 x8)
SDADC_PGAConfig(SDADC1, SDADC_PGA_GAIN_8);

// 配置 SDADC 参数(模式、参考电压等)
SDADC_InitTypeDef SDADC_InitStruct;
SDADC_InitStruct.SDADC_ContinuousMode = SDADC_ContinuousMode_Disable;
SDADC_InitStruct.SDADC_ReferenceVoltage = SDADC_REFVOLTAGE_VREF;
SDADC_Init(SDADC1, &SDADC_InitStruct);

// 启用 SDADC
SDADC_Cmd(SDADC1, ENABLE);

3.2 偏移校准


// 进入偏移校准模式
SDADC_CalibrationModeTypeDef calMode;
calMode.CalibrationMode = SDADC_OFFSET_CALIBRATION;
calMode.CalibrationTarget = SDADC_CALIBRATION_TARGET_1;
HAL_SDADC_CalibrationStart(&hsdadc, &calMode);

// 等待校准完成
while (HAL_SDADC_GetState(&hsdadc) != HAL_SDADC_STATE_READY);

// 保存偏移校准值
uint32_t offset = SDADC_GetCalibrationFactor(SDADC1, SDADC_OFFSET_CALIBRATION);

3.3 增益校准


// 输入已知参考电压(如 Vref/2)
// 进入增益校准模式
calMode.CalibrationMode = SDADC_GAIN_CALIBRATION;
HAL_SDADC_CalibrationStart(&hsdadc, &calMode);

// 等待校准完成
while (HAL_SDADC_GetState(&hsdadc) != HAL_SDADC_STATE_READY);

// 保存增益校准值
uint32_t gain = SDADC_GetCalibrationFactor(SDADC1, SDADC_GAIN_CALIBRATION);

3.4 应用校准系数


// 设置校准寄存器
SDADC_SetCalibrationFactor(SDADC1, SDADC_OFFSET_CALIBRATION, offset);
SDADC_SetCalibrationFactor(SDADC1, SDADC_GAIN_CALIBRATION, gain);



4. 验证校准



  • 测量已知电压(如 1.2V),检查 ADC 输出是否匹配理论值。

  • 若误差较大,重复校准或检查硬件连接。




5. 注意事项



  • 增益依赖性:不同 PGA 增益需单独校准。

  • 温度影响:高温或低温环境下可能需要重新校准。

  • 库函数支持:使用 HAL 库或标准外设库简化操作(如 HAL_SDADC_CalibrationStart)。




通过以上步骤,可有效校正 PGA 的偏移和增益误差,提升 SDADC 测量精度。详细参数请参考 STM32F3xx参考手册SDADC应用笔记

举报

更多回帖

发帖
×
20
完善资料,
赚取积分