☰
ADS122U04+STM32F302:高精度工业温度采集系统设计
2026/11/5 3:12:37 网站建设 项目流程

做工业现场的测温,过去很长一段时间我的首选是模拟量采集模块或者仪表放大器方案。但去年接到一个热泵+新风机组控温的项目,甲方明确要求精度 ±0.3℃、响应快、能走 RS-485 给上位机组态,还要扛得住变频器带来的强干扰。设备放在机房,线缆至少拉十米,传感器有 PT100、NTC、还有几路 K 型热电偶要兼容。我评估了一圈,决定把方案换成“高精度 ADC 加单片机自己搭”。最终定型的组合是 TI 的 ADS122U04IPWR 配 STM32F302VC,从选型、硬件设计、固件调试到现场标定,整个过程压缩在三周内完成。这篇文章就是把这个项目的完整链路拆开,讲讲我为什么选这套组合、电路怎么画、固件怎么写、坑在哪些地方,给正在规划类似采集方案的同行一些可以直接抄作业的参考。

1. 方案选型:为什么是 ADS122U04IPWR 配 STM32F302VC

1.1 ADS122U04IPWR 最核心的优势不是“24 位”

很多人一看到 ADS122U04IPWR 就先盯着“24 位分辨率”看,但说句实话,24 位在这个年头并不稀罕。这颗 ADC 真正让我下定决心选它的地方,是它直接用 UART 输出,而不是 SPI。

工业现场和家用芯片最大的区别在于“距离”和“隔离”。SPI 这种接口,SCLK、MOSI、MISO、CS 四根线,距离稍微拉长一点时序就飘,而且想做光电隔离的话,四路高速信号要配四颗隔离芯片,成本高不说,延迟也难处理。UART 只需一根 TX、一根 RX,光耦隔离只要两颗,比如常见的高速光耦就可以把采集端和主控端完全隔开,现场干扰再凶,电上已经完全断开了。ADS122U04IPWR 的型号含义里,这个“U”就是 UART 版本,内部把 24 位 Δ-Σ ADC 的数据通过异步串口直接送出,对单片机来说和一个普通串口传感器一样,调起来非常省事。

另外这颗 ADC 是 4 通道输入,带低噪声 PGA 可编程增益放大器,还集成两个匹配的激励电流源 IDAC。做 RTD 或 NTC 测温时,激励电流源能省掉不少外围电路,PGA 增益放到 16 倍或 32 倍,热电偶的微伏级信号也能抬到量程内。温度范围支持 -40℃ 到 +125℃,封装是 TSSOP-16,IPWR 后缀对应的是工业级丝印和焊盘,贴片生产、手工焊接都算友好。

1.2 STM32F302VC 在系统里的定位

STM32F302VC 这颗料,拿出来的时候很多人第一反应是“这不是做电机控制的吗”。没错,它确实经常出现在 FOC 电机驱动方案里,但它身上有几个特质特别适合我做温度采集系统。

首先是内核,Cortex-M4F 带 FPU。温度采集的难点不在采集本身,而在换算。PT100 要用 Callendar-Van Dusen 方程解二次方程,NTC 要用 Steinhart-Hart 公式算对数,K 型热电偶要做冷端补偿加查表。这些计算如果用 M0/M3 内核硬算,要么查表插值写一堆代码,要么牺牲精度。M4F 的 FPU 直接算浮点,代码简单、结果准确,开发效率完全不一样。

然后是资源匹配。F302VC 是 100 脚 LQFP,主频 72MHz,有 256KB Flash、48KB RAM。我这边 ADS122U04 占一个 USART,RS-485 占一个 USART,板载调试口占一个 USART,正好三个。还想预留几路 PWM 去控制水泵或风机转速,F3 系列自带高级定时器,顺手就解决了。价格在工业客户能接受的范围内,供应链也稳,相比意法半导体那些动不动缺货的料号,F302VC 属于很实在的选择。

1.3 系统链路与数据流

整个系统的链路是:温度传感器(PT100/NTC/热电偶)→ 板载模拟前端滤波 → ADS122U04IPWR 采集 → UART 输出 24 位原始码 → STM32F302VC 的 USART 接收 → 固件做滤波、换算、冷端补偿 → 通过 RS-485 走 Modbus RTU 协议 → 上位机或 PLC 组态显示。

这套架构最大的好处是模块化。ADC 负责采样,MCU 负责运算和通信,两边通过 UART 解耦。后续如果想把采集端放到离传感器更近的位置,直接把 ADC 小板挪出去,加两颗光耦就变成隔离采集前端了,主控板不动,软件基本不动,这个灵活性在项目后期非常值钱。

2. 硬件设计:模拟前端与接口电路细节

2.1 三种传感器的接入方式

这个项目里我同时接了 PT100 三线制、NTC 热敏电阻、K 型热电偶三路,分别对应热泵回水温度、风管空气温度、压缩机排气管壁温度。

PT100 三线制是关键,这里我把 IDAC1 和 IDAC2 都利用起来。原理是:激励电流从 IDAC1 输出,经过 AIN0 引脚流入 RTD,再从 RTD 的另一端流出,经过一根导线回到模拟地。由于导线本身有电阻,测得的电压会额外叠加一根线阻上的压降。这时候把 IDAC2 接到另一根导线上,让它产生一个方向相反的补偿电流,配合内部分流电阻,就可以把线阻引起的误差在 ADC 差分输入里抵消掉。三线制解决的是“导线电阻误差”,不是精度提升,但对 PT100 这种低阻值传感器来说,没有这个补偿,线长 10 米时误差可能超过 1℃,完全不可接受。

NTC 那边就简单多了。我是用 IDAC 给 NTC 供电,让电流流过 NTC 和一个精密电阻,然后把 NTC 上的电压接到 ADC 输入,精密电阻上的电压接到 ADC 的参考输入,做成比例测量。比例测量的好处是,即使激励电流本身有温漂,只要流过 NTC 和参考电阻的电流是同一个来源,最后转换结果里的电流项就能抵消掉,VDD 的波动也不影响最终读数。

K 型热电偶则是走另一路线。热电偶输出只有几十微伏到几十毫伏,必须把 PGA 增益调到 64 或 128,把信号抬到 ADC 量程内。热电偶测的是温差,所以冷端补偿必须做。我在靠近 ADS122U04 芯片的位置放了一颗 NTC,用来测 PCB 冷端温度,固件里读到这个温度后查表补偿,等效精度能做到 ±1℃ 左右。对排气管壁这种非关键监测点,这个精度够用了。

三种传感器的接入参数我整理了一个表,方便对照:

传感器激励方式PGA 增益测量范围典型精度
PT100 三线制IDAC1 + IDAC2,1mA8-50℃ 至 250℃±0.2℃
NTC 10kΩIDAC,0.5mA 比例测量1-20℃ 至 100℃±0.3℃
K 型热电偶无内置激励640℃ 至 500℃±1℃(含冷端补偿)

2.2 电源、基准与去耦

ADS122U04IPWR 的供电范围是 2.7V 到 5.5V,我这边统一用 3.3V 供电,和 STM32F302VC 保持一致,数字接口电平直接匹配,不用加电平转换。

电源纹波对 24 位 ADC 的影响非常直接。我在 AVDD 引脚附近放了 1μF 和 0.1μF 两颗陶瓷电容并联,DVDD 同样配置,这是数据手册里规定的标准去耦组合。模拟地和数字地我采用单点汇接,在地平面一端用 0Ω 电阻连起来。ADS122U04 的地引脚都走在 PCB 的地平面上,尽量保证模拟参考路径没有多余过孔。

基准电压这块,初期我偷懒直接使用内部基准,发现温度漂移明显,尤其是机房白天晚上温差超过 10℃ 时,零点漂了将近 0.5℃。后面换成了外置基准,REF5025 输出 2.5V,温漂系数标称 3ppm/℃,接在 VREFP 和 VREFN 之间。换完以后,实测低温到高温的漂移降到了可以忽略的范围。

2.3 UART 接口与通信电平

ADS122U04 的 UART 端口直接和 STM32F302VC 的 USART2 相连,交叉连接:ADC 的 TXD 接 MCU 的 PA3(USART2_RX),ADC 的 RXD 接 MCU 的 PA2(USART2_TX),地线必须共地。单独供电时要注意上电时序,我这里因为共用同一颗 3.3V LDO,上电是同步的,没有遇到锁存问题。

考虑到现场线缆可能比较长,波特率我保守地选了 9600bps,8 数据位、无校验、1 停止位,也就是 UART 最常见的 8-N-1。9600bps 传一帧数据大约 1ms 出头,配合 20SPS 的采样率绰绰有余。实测过 115200bps 在现场 1 米线内也能正常跑,但线拉到 5 米以上,通信偶发错误明显增多,最终以稳定优先,定在 9600。

通信线我在板上加了 33Ω 串联电阻和 TVS 管。33Ω 用来抑制振铃,TVS 管防止外部浪涌。虽然 UART 不是差分信号,但在机房这种电磁环境里,一点接口保护能避免很多售后问题。

2.4 模拟输入滤波

传感器信号进入 ADC 之前,我在每路输入上放了 RC 低通滤波。以 PT100 为例,差分输入端各串联一个 1kΩ 电阻,差分间并一个 0.1μF CBB 电容,组成截止频率约 1.6kHz 的差分滤波器,主要压掉变频器产生的射频噪声和带外混叠成分。这里有个细节:电阻串在输入端会影响激励电流在引线上的压降,所以必须是“先电阻后进 ADC”,同时这两个电阻要用同型号同批次,保证差分平衡。

如果是热电偶这种微弱信号,RC 值不能太大,否则线路本身的电阻叠加上去的误差会影响毫伏级测量。我热电偶通道用的电阻是 100Ω,电容 1μF,截止频率更低,但压降小。RC 滤波的选值没有统一答案,要根据传感器源的输出阻抗来定,不能照着别人的原理图乱抄。

3. STM32 端软件实现:从轮询到中断驱动

3.1 USART2 初始化与协议封装

STM32F302VC 这侧的软件,我用了 STM32CubeMX 生成初始化工程,然后写了一个轻量的驱动文件专门封装 ADS122U04 的通信。USART2 初始化配置成异步模式,9600bps,8-N-1,使能接收中断。驱动层的核心是三个函数:写寄存器、读寄存器、读转换结果数据。

ADS122U04 的命令帧格式与 ADS1220 系列一脉相承,区别是改为从 UART 口收发。RREG 命令用于读寄存器,WREG 命令用于写寄存器,RDATA 命令用于读取最新的转换结果。这些命令的详细字节定义在数据手册的“Command Definitions”一节里写得很清楚,我建议拿到芯片后先对照手册确认一遍寄存器地址,因为不同批次的数据手册页码会变,但命令码是固定的。

我习惯把所有对 ADC 的访问都通过一个 mutex 保护起来,因为这个驱动可能被主循环和中断上下文同时调用,不加互斥的话,串口收发缓冲区一旦错位,后面读到的数据全部乱套。

// USART2 通过 CubeMX 初始化,这里只给出驱动层的关键封装 static void ads122u04_tx(uint8_t *buf, uint16_t len) { HAL_UART_Transmit(&huart2, buf, len, 100); } static void ads122u04_rx(uint8_t *buf, uint16_t len) { HAL_UART_Receive(&huart2, buf, len, 100); }

注意,HAL_UART_Transmit 和 HAL_UART_Receive 都是阻塞式的,在 9600 波特率下传输 4 个字节大约 4ms,主循环里调用时不要在做实时控制的中断上下文里执行。

3.2 寄存器配置流程

电源上电后,我执行一次完整的寄存器配置,把通道、PGA 增益、IDAC 电流和数据速率都定下来。以 PT100 三线制为例,关键设置是:

  • REG0:设置通道为 AIN0-AIN1 差分输入,PGA 增益按传感器选择
  • REG1:选择数据速率。我优先用 20SPS。这个速率不是随便选的,20SPS 对应内部数字滤波器对 50Hz 工频有良好的抑制能力,而 50Hz 恰恰是国内电网频率。如果项目面向北美市场,电网是 60Hz,那就要换对应的滤波器挡位
  • REG2:配置 IDAC 内部匹配电阻和电流大小。PT100 用 1mA 激励,NTC 用 0.5mA。电流不是越大越好,激励电流大,RTD 自热效应明显,会产生额外温漂。1mA 在 100Ω 的 PT100 上只产生 0.1V 压降,自热功率约 0.1mW,在工程上可以接受
  • REG3:配置 IDAC1 和 IDAC2 的引脚映射,把电流源引到对应的测量通道去

寄存器配置代码的注意事项是写入后必须回读校验。UART 通信不像 SPI 以字节为单位有严格的 CS 时序,UART 是异步流式,一旦命令间隔不对或起始位丢失,后面的帧全乱。所以每次 WREG 之后我紧跟着发一条 RREG,读取同一个寄存器,核对值一致才继续。这个回读校验帮我抓到了好几次初始化时序的 bug。

3.3 用 DRDY 边沿中断代替轮询

ADS122U04 有一个数据就绪引脚 DRDY,默认在转换完成时拉低。刚开始我把这个脚留空,用延时读 RDATA,发现数据经常重复,转换周期和读取周期对不齐。后来把 DRDY 接到 STM32F302VC 的 PB0 引脚,配置为下降沿外部中断,在中断服务函数里置一个标志位,主循环看到标志位后再去读数据。

void EXTI0_IRQHandler(void) { if (__HAL_GPIO_EXTI_GET_IT(&gpio, 0) != RESET) { adc_data_ready = 1; // 置标志位 __HAL_GPIO_EXTI_CLEAR_IT(&gpio, 0); } }

这个改进效果非常明显,中断方式下每次读到的都是最新的转换结果,不需要再判断数据新旧。同时 MCU 不用在等待转换的空闲时间里死循环,可以把 CPU 省下来去做 PID 控制和 Modbus 协议解析。

3.4 读取数据与原始码拼接

RDATA 命令会返回 3 个字节的转换结果,ADS122U04 的输出是 24 位有符号数,补码形式。接收时要按高字节、中字节、低字节的顺序拼成一个 32 位整型,然后判断符号位做扩展。

int32_t ads122u04_read_raw(void) { uint8_t buf[3]; int32_t raw; ads122u04_tx(cmd_rdata, sizeof(cmd_rdata)); ads122u04_rx(buf, sizeof(buf)); raw = ((int32_t)buf[0] << 16) | ((int32_t)buf[1] << 8) | (int32_t)buf[2]; if (raw & 0x800000) { raw |= 0xFF000000; // 24 位有符号数扩展到 32 位 } return raw; }

这里有个容易踩的坑:UART 接收三个字节之后,不能马上发下一条命令。ADS122U04 的 UART 协议要求帧与帧之间保持一定的空闲时间,回读数据后至少要等一个字节的传输时间再发后续命令,否则芯片端的接收状态机可能没复位,把下一条命令当成连续数据的一部分吃掉。我是在每条命令之间加了一个 2ms 的 delay,实测能保证通信稳定。

4. 温度换算与校准:从原始码到真正的物理量

4.1 原始码到电阻值

拿到 24 位原始码之后,第一步是换算成传感器两端的电压。这个换算依赖 PGA 增益、参考电压和 ADC 位数。ADS122U04 是 24 位 Δ-Σ,满量程输入范围对应参考电压的正负端。以 PGA 增益为 1、基准 2.5V 为例,LSB 对应的电压是 2.5V 除以 2 的 23 次方,大约是 0.298μV。公式如下:

电压 = 原始码 × LSB / PGA增益

注意 24 位有符号数的满量程是对称的,正满量程是 +2^23 - 1,负满量程是 -2^23,所以 LSB 计算用的是 2^23 而不是 2^24。很多刚上手 24 位 ADC 的朋友在这里容易算错,算出来的温度差好几度。

对 PT100 来说,电阻值等于电压除以激励电流。我实际用的是比例测量思想:激励电流同时流过 PT100 和一个已知精密电阻,精密电阻两端的电压和 PT100 两端的电压都由同一颗 ADC 依次测量,那么电阻值就是:

Rpt = Rref × (Vpt / Vref)

这样的好处是激励电流的绝对精度不会影响测量结果,只要电流源短期稳定就行。

4.2 PT100 线性化:Callendar-Van Dusen 方程

PT100 的阻值随温度变化并不是严格线性的。0℃ 到 850℃ 范围内,工程上普遍用 Callendar-Van Dusen 方程描述:

Rt = R0 × [1 + A×t + B×t²]

其中 R0 = 100Ω,A = 3.9083×10⁻³ /℃,B = -5.775×10⁻⁷ /℃²。反解这个一元二次方程,就能从电阻算出温度:

float pt100_to_temp(float resistance) { float delta, temp; delta = A_CVD * A_CVD - 4.0f * B_CVD * (1.0f - resistance / 100.0f); if (delta < 0.0f) delta = 0.0f; temp = (-A_CVD + sqrtf(delta)) / (2.0f * B_CVD); return temp; }

这个公式只适用于 0℃ 以上。0℃ 以下时,方程里要多加一个 C 项,C = -4.183×10⁻¹² /℃⁴,也就是:

Rt = R0 × [1 + A×t + B×t² + C×(t-100)×t³]

负温段的实际项目中我没有用到特别低温的工况,但这个坑值得提一句。写代码时一定要判断测量结果是正温区还是负温区,分支处理。否则冬天实测零下 5℃,用单一公式算出来的温度误差会超过 0.5℃。

4.3 NTC 与热电偶的处理

NTC 这边我用 Steinhart-Hart 方程:

1/T = A + B×ln(R) + C×(ln R)³

这个方程需要三个系数,厂商数据手册会给出不同温度点的阻值表,用最小二乘拟合出 A、B、C。厂商手册里给的是 B 值常数。但 B 值公式只适用于 25℃ 附近,全温段精度不够。我做的是拟合成 Steinhart-Hart 三系数,在 -20℃ 到 100℃ 范围内能保持 ±0.2℃ 的精度。

热电偶的处理更绕一些。ADC 读到的电压是热端和冷端的温差热电动势,必须先把这个温差电压查表换算成“冷端温度对应的等效电压”,然后和实测电压相加,再用另一张表把总电压换算成热端温度。查表可以用线性插值,每 1℃ 一个表项。固件里我放了两张基于 NIST ITS-90 标准的 K 型热电偶表,一张是电压到温度,一张是温度到电压,插值算法很简单,但要注意表格索引的边界。

4.4 现场校准流程

校准是温度采集方案从“能出数”到“测得准”的关键一步。只靠芯片手册的精度指标是不够的,因为系统误差里还包含 PCB 布局、基准漂移和传感器本身的偏差。

我在现场做的是三分法校准。

第一,零度校准。把 PT100 和标准温度计一起插进冰水混合物,等 10 分钟让热平衡稳定,读取 ADC 的原始码,记录零点偏移。这个偏移会在固件里作为零点补偿保留下来。

第二,环境温度校准。用一台经过计量的恒温箱,分别设置 25℃、50℃、75℃、100℃ 四个点,每个点稳定后读取读数,和标准温度计对比,拟合出一条线性修正曲线,写入固件的校正系数。

第三,传感器一致性校验。同一批换上的 PT100 本身有等级差异,我用低温槽和高温槽分别测每只传感器在 0℃ 和 100℃ 下的阻值偏差,把每只传感器补偿到接近标准曲线。

校准完以后,这套模块的实测性能是:在 0℃ 到 100℃ 范围内,最大偏差 0.15℃,典型偏差 0.08℃ 左右。甲方要求的 ±0.3℃ 指标留了接近一倍的余量。

5. 实测数据与稳定性观察

5.1 常温稳定性测试

硬件焊接完成后,我先在实验室做了 24 小时连续采集测试。板子放在空调恒温室内,室温大约 24℃,把 PT100 传感器放进一个保温杯,杯内温度稳定在 37.5℃。用标准温度计作为参考,同时记录 ADS122U04 的输出。

测试结果很理想。24 小时内的温度波动范围在 ±0.06℃ 以内,ASTM 标准温度计的玻璃刻度肉眼都看不出变化,而 ADC 的读数始终稳定在 37.46℃ 到 37.54℃ 之间。这说明系统的长期稳定性主要受基准和 PGA 漂移影响,而这些影响已经被外置基准和校准曲线压制到了一个很小的范围。

5.2 现场环境下的工频干扰抑制

真正拷验系统的是现场。机房里有变频器、软起动器、电磁阀,一开机整个电网谐波非常乱。我把滤波器挡位调到 20SPS 之后,读数基本不受影响。为了验证,我特意在传感器一根引线上绕了个线圈,模拟外界磁场耦合,读数的波动仍然保持在 ±0.1℃ 以内。

这里我做了个更有说服力的实验。把滤波器切到高速模式,数据速率调到 1000SPS,同样的环境室温,读数的波动立刻增大到 ±0.5℃。这个对比直接证明了在工频干扰强的场合,牺牲采样速度换取噪声抑制是非常划算的。温度本身是一个变化缓慢的物理量,20SPS 已经完全够暖通空调的温控需求了。

5.3 现场通信稳定性

Modbus RTU 走 RS-485 到上位机,线缆长度大概 30 米。我在固件里做了超时重试和 CRC 校验,实测一个月的运行日志里,通信误码率为零,偶发的一两次设备无响应都是因为上位机软件重启导致。UART 到 ADC 的链路是点对点,长度只有 PCB 板内走线,没有出现过数据错位。

这里的经验是:UART 链路本身的抗干扰能力比 SPI 强很多。同样的机柜环境,以前用 SPI 接口的 ADC,偶尔会出现时钟线被干扰导致的数据错位,需要加状态恢复机制。换成 UART 以后,只需要维护一个字节级的同步状态机,简单可靠。

6. 调试中踩过的坑与问题排查实录

6.1 上电后第一笔命令总是失败

这个问题几乎每次新板子都会遇到。ADS122U04 上电后需要一段时间完成内部复位和自校准,如果 MCU 上电后立刻发 WREG 命令,ADC 可能还在复位状态,命令被丢弃。表现是回读寄存器时值一直是默认值,写不进去。

解决方法是上电后延时至少 10ms 再初始化 ADC,或者在 MCU 端等待 ADS122U04 的 DRDY 引脚第一次拉低后再发命令。我后来在初始化函数入口加了一个 20ms 的延时,问题就再没出现过。

6.2 数值漂移,且误差随传感器线长变化

项目测试阶段发现,PT100 换了一根更长的线后,读数整体偏高了近 0.6℃。排查后发现是三线制两个 IDAC 的电流匹配度不够理想,长线带来的线阻压降没有完全抵消。

解决思路是改用“四线制”测 PT100。四线制两根线走激励电流,两根线走电压测量,电压测量回路几乎没有电流,所以线上的压降不影响测量结果。虽然现场传感器线缆是现成的三线制,没法改四线,但我后来在设计下一版 PCB 时预留了四线接口,并用软件切换。如果项目对精度要求高,四线制永远是首选。

6.3 读到的原始码突然跳变到满量程

有一次测试时,读回来的 24 位数据突然从正常值变成接近正满量程,持续几百毫秒后又恢复正常。这个现象排查了很久,最终确认不是 ADC 或 MCU 的问题,而是手机在靠近板子时产生的射频辐射通过传感器引线耦合进入了模拟前端,被 PGA 放大后导致瞬时饱和。

解决方法是把传感器引线换成屏蔽线,屏蔽层单端接地,同时在软件里增加中值滤波和中位值滤波的滑动窗口。温度采集中,单个突变的野点没有物理意义,滑动窗口中值滤波可以把这个毛刺完全滤掉。

6.4 串口缓冲区错位导致回读数据异常

另一个常见问题是 UART 接收缓冲区错位。发送一条 RREG 命令后,理论上应该收到一个字节的响应,如果此时 ADC 恰好正在输出转换数据,MCU 的接收缓冲区可能读到的是上一次转换结果的最后一个字节。

这个问题最终通过两个手段解决。一是所有 ADC 命令只在 DRDY 中断标志位置位后的空闲期发送,不抢占数据输出。二是每条命令前清空一次接收缓冲区,保证上一次残留的数据不会混进来。

6.5 问题排查速查表

现象可能原因处理方法
写寄存器无效上电初始化太早上电延时 20ms 后再发命令
满量程跳变射频或工频干扰屏蔽线 + 中值滤波
数据错位收发时序冲突命令前清空接收缓冲
数值随线长漂移三线制补偿不足改四线制或用精密匹配电流源
零点漂移基准温漂换外置基准 + 零点校准

做这套系统最大的感受是,高精度不是靠某一颗芯片单独撑起来的,而是传感器、激励源、ADC、基准、滤波、校准、传输整条链路一点一点抠出来的。ADS122U04IPWR 和 STM32F302VC 这个组合,一个是专为工业信号调理设计的串口 ADC,一个是带 FPU 和丰富外设的 M4 单片机,正好覆盖了模拟采集和数字处理的两端需求。尤其是 UART 接口带来的隔离便利性和软件调试效率,在工业 HAVC 场景里非常实用。如果后续要扩展更多通道,可以考虑换带多路同步采样的 ADC,或者用两颗 ADS122U04 挂两个 UART,STM32F302VC 的 USART 数量完全够用。这套方案我打算继续在这个系列项目里沿用下去。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询