
1. 项目背景与核心需求在工业测量、医疗设备和能源监控等领域高精度模数转换ADC是确保数据采集可靠性的关键技术。传统方案往往面临几个痛点采样精度不足导致信号失真、多通道同步采样难以实现、SPI通信时序稳定性差以及低功耗需求与高性能之间的矛盾。ADS131M02作为TI推出的24位ΔΣ ADC其核心价值在于双通道同步采样消除通道间相位差可编程增益放大器PGA增益最高128倍集成负电荷泵支持-1.3V~1.3V单电源测量三种功耗模式HR模式32kSPSVLP模式1kSPSSTM32F091RC作为Cortex-M0内核MCU其优势体现在硬件SPI接口支持Mode 0/1/2/3内置DMA控制器减轻CPU负载72MHz主频满足实时处理需求低成本与低功耗特性典型应用场景包括三相电能计量需同步采样电压电流生物电信号采集ECG/EEG需要高PGA工业传感器接口RTD/热电偶小信号放大2. 硬件设计关键点2.1 信号链设计规范输入前端需要RC滤波如1kΩ100nF组合截止频率计算公式f_c 1/(2πRC) ≈ 1.6kHz对于高频噪声环境建议增加二阶有源滤波。PGA增益选择需遵循最大输入电压 VREF / 增益当使用内部1.2V基准时增益设为128对应±9.4mV量程。2.2 电源设计要点模拟电源AVDD需采用低噪声LDO如TPS7A4901去耦电容布局10μF钽电容100nF陶瓷电容靠近芯片数字电源DVDD与AVDD需星型连接实测表明添加铁氧体磁珠如BLM18PG121SN1可降低PSRR2.3 SPI接口优化STM32F091RC硬件SPI配置建议hspi1.Instance SPI1; hspi1.Init.Mode SPI_MODE_MASTER; hspi1.Init.Direction SPI_DIRECTION_2LINES; hspi1.Init.DataSize SPI_DATASIZE_8BIT; // 注意实际数据为24位 hspi1.Init.CLKPolarity SPI_POLARITY_LOW; // CPOL0 hspi1.Init.CLKPhase SPI_PHASE_1EDGE; // CPHA1 hspi1.Init.NSS SPI_NSS_SOFT; hspi1.Init.BaudRatePrescaler SPI_BAUDRATEPRESCALER_8; // 9MHz 72MHz PCLK hspi1.Init.FirstBit SPI_FIRSTBIT_MSB; HAL_SPI_Init(hspi1);3. 固件实现详解3.1 寄存器配置流程上电初始化序列发送RESET命令0x11等待1ms复位完成配置CLOCK寄存器设置OSR和功耗模式写入CFG寄存器增益、通道使能校准OFFSET和GAIN寄存器关键寄存器位域示例// 设置高分辨率模式OSR1024 uint16_t clock_reg (0x01 8) | (0x03 4); adc_write_reg(ADC_REG_CLOCK, clock_reg); // 启用CH1CH2PGA增益32 uint16_t cfg_reg (0x03 8) | (0x04 4); adc_write_reg(ADC_REG_CFG, cfg_reg);3.2 数据采集实现推荐使用DMA中断方案// DMA配置 __HAL_LINKDMA(hspi1, hdmatx, hdma_spi1_tx); __HAL_LINKDMA(hspi1, hdmarx, hdma_spi1_rx); HAL_DMA_Start_IT(hdma_spi1_rx, (uint32_t)SPI1-DR, (uint32_t)rx_buf, 6); // 中断服务程序 void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) { int32_t ch1_data (rx_buf[0]16) | (rx_buf[1]8) | rx_buf[2]; int32_t ch2_data (rx_buf[3]16) | (rx_buf[4]8) | rx_buf[5]; // 数据转换处理... }4. 性能优化技巧4.1 噪声抑制实践在PCB布局时模拟走线需远离时钟线使用屏蔽电缆连接传感器启用ADS131M02内置sinc3滤波器实测数据添加屏蔽后SNR提升12dB4.2 时序关键问题SPI通信必须严格满足时序要求tSU: 最小建立时间15ns对应最大66MHz CLKtHOLD: 最小保持时间10ns在STM32中通过SPI_CR1的BR[2:0]调节常见故障排查无数据返回检查CS信号是否有效数据错位确认CPHA/CPOL设置采样值跳动检查基准电压稳定性5. 实测数据对比测试条件VREF1.2V增益1输入正弦波1kHz参数理论值实测值ENOB19.5位18.7位THD-105dB-98dB通道间隔离度80dB76dB功耗(HR模式)3.5mW3.8mW校准后线性度测试结果输入电压(mV) | 测量值(mV) -------------|----------- 100.0 | 99.87 500.0 | 499.92 1000.0 | 999.896. 进阶应用示例6.1 三相电能计量实现void measure_power(void) { float voltage read_adc_channel(0) * PT_RATIO; float current read_adc_channel(1) / CT_RATIO; instantaneous_power voltage * current; // 使用STM32内置CRC计算校验和 uint32_t crc HAL_CRC_Calculate(hcrc, (uint32_t*)instantaneous_power, 2); }6.2 低功耗模式切换void enter_low_power(void) { // 切换ADC到VLP模式 adc_write_reg(ADC_REG_CLOCK, 0x0020); // 配置STM32进入STOP模式 HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); }实际项目中通过上述方案可实现同步采样误差1μs动态范围达到110dB整机功耗低至5mWVLP模式