1. 项目背景与需求分析
最近在做一个工业传感项目,需要同时监测四个不同位置的电压信号。选用了TI的ADS1118这款16位高精度ADC芯片,但在实际开发中发现网上大部分资料都只讲单通道采集,真正实现多通道轮询的案例少之又少。于是决定自己动手,用STM32G431的GPIO模拟SPI协议来实现四通道电压采集。
在实际操作中遇到了几个关键问题:首先是通道切换时的时序控制,ADS1118需要一定的稳定时间才能保证采集精度;其次是数据同步问题,由于采用的是轮询方式,很容易出现通道数据错位;最后是性能优化,如何在保证精度的前提下提高采集效率。这些都是单通道应用不会遇到的挑战,需要特别关注。
2. ADS1118芯片深度解析
2.1 核心特性与工作原理
ADS1118是TI推出的一款16位ΔΣ型ADC,集成了PGA、基准电压和温度传感器,特别适合多通道工业传感应用。其分辨率达到16位无失码,相当于0.0078%的满量程精度,对于大多数电压检测场景都绰绰有余。
芯片支持4路单端或2路差分输入,内置可编程增益放大器(1~8倍),基准电压精度为2.048V±0.05%。采样速率从8SPS到860SPS可调,用户可以根据实际需求在精度和速度之间做权衡。还有一个实用的温度传感器,精度达到±2℃,可以用来做温度补偿。
2.2 寄存器配置详解
ADS1118通过16位配置寄存器控制工作模式,这个寄存器包含了所有关键设置:
- 位15(OS):单次转换启动位,写1启动转换
- 位14-12(MUX):通道选择,从100到111分别对应AIN0到AIN3单端输入
- 位11-9(PGA):增益设置,010对应±2.048V量程
- 位8(MODE):工作模式,0为连续转换,1为单次转换
- 位7-5(DR):数据速率,100对应128SPS
- 位0(TS_MODE):0为ADC模式,1为温度传感器模式
以AIN0单端输入为例,配置字为:1 100 010 1 100 0 1011,转换成十六进制就是0xC58B。这个值会在SPI通信时发送给芯片。
2.3 数据格式与转换
在ADC模式下,数据采用16位二进制补码格式,高12位是有效数据,低4位是状态位。电压换算公式为:V = Code × LSB。以±2.048V量程为例,LSB为62.5μV,这意味着每个数字量对应62.5微伏的电压变化。
温度模式使用14位补码格式,换算公式为:Temperature(℃) = (RAW_DATA >> 4) × 0.03125 - 50。分辨率达到0.03125℃/LSB,足够大多数应用场景。
2.4 SPI通信特性
ADS1118使用SPI Mode 1(CPOL=0, CPHA=1)进行通信。每次传输都是16位全双工,MOSI发送配置字,MISO返回转换结果。关键时序参数包括:CS到SCLK的建立时间至少200ns,SCLK周期最小400ns,在128SPS速率下转换时间约8ms。
3. 硬件设计要点
3.1 电路连接方案
我选用的是STM32G43

&spm=1001.2101.3001.5002&articleId=155830722&d=1&t=3&u=93131f9baf2448a7a9c347aeaedb6847)
3076

被折叠的 条评论
为什么被折叠?



