1. 项目背景与硬件选型
在嵌入式开发领域,高精度模拟信号采集一直是个经典需求。STM32F103作为性价比极高的Cortex-M3内核MCU,虽然自带12位ADC,但在需要15μV分辨率、16位精度的场景下就显得力不从心。这正是ADS1115这类外部ADC芯片大显身手的时候——它通过I2C接口提供4通道差分/单端输入,采样率可达860SPS,特别适合工业传感器、电子秤等应用。
我最近在做一个温室环境监测项目,需要同时采集土壤湿度、光照强度、空气温湿度四种模拟信号。STM32F103C8T6(蓝莓派开发板)作为主控很合适,但它的ADC在测量微小电压变化时噪声明显。经过对比TI的ADS1115和ADS1015后,我选择了前者——虽然价格贵30%,但其16位分辨率(后者是12位)和可编程增益放大器(PGA)能更好地处理PT100温度传感器的微弱信号。
2. 硬件连接与电路设计
2.1 引脚连接示意图
ADS1115与STM32的标准接线如下:
code复制ADS1115 STM32F103
VDD ---- 3.3V
GND ---- GND
SCL ---- PB6(I2C1_SCL)
SDA ---- PB7(I2C1_SDA)
ADDR ---- GND (地址0x48)
关键细节:ADS1115的ADDR引脚接法决定了I2C地址。接地时为0x48,接VDD为0x49,接SDA为0x4A,接SCL为0x4B。多设备时要注意地址分配。
2.2 抗干扰设计
实际应用中容易忽略的是模拟电路设计:
- 在VDD与GND间加0.1μF陶瓷电容,位置尽量靠近芯片
- 信号线走线避开数字线路,必要时使用屏蔽线
- 对于高阻抗信号源(如光电二极管),在ADS1115输入端并联100nF电容
- 差分输入时,AIN0与AIN1的走线长度尽量对称
3. 寄存器配置详解
3.1 配置寄存器(0x01)
这是ADS1115的核心控制寄存器,16位结构如下:
code复制[15] OS: 单次转换启动位(写1开始)
[14:12] MUX: 输入选择
000: AIN0 vs AIN1
001: AIN0 vs AIN3
010: AIN1 vs AIN3
