昨天的小 MCU,看起来大家是非常感兴趣的,那我就再给大家写一点详细的内容。这个 MCU主要解决的是对体积要求高,成本敏感的传感器客户,价格很美。

领慧立芯新品:LH32M0G3XX(完整单芯片高性能采集系统)

这 PPT 做的有点太挤了,特性太多了

首先这样的 MCU 其实也不是独此一家,竞品也有,所以就先给大家看看一些竞品的对比吧!

基本信息 (MCU Core & 系统)

项目
LH32M0G3XX
ADuCM360
MAX32675C
RX23E-A
SD25F201
NSA2860
电源电压
2.5–5.5 V
1.8–3.6 V
2.7–3.3 V
1.8–5.5 V
1.8–5.5 V
3–5.5 V
MCU 内核
Cortex-M0+
Cortex-M3
Cortex-M4F
RXv2
平头哥E801
不开放内核
主频
32 MHz
16 MHz
12 MHz
32 MHz
7.3728 MHz
?
典型功耗
1.3 mA@2MHz
1 mA@500 kHz
2.1 mA@4MHz
1.6 mA@1 MHz
2 mA@?
1.5 mA@?
DMA 通道
4
12
8
4
3
N/A
硬件乘法加速
Y
N
N
Y
N
?
Flash
128 KB
128 KB
384 KB
256 KB
64 KB
EEPROM
SRAM
8 KB
8 KB
160 KB
32 KB
4 KB
N/A
通信接口
2×UART, 2×SPI, 1×I²C
1×UART, 2×SPI, 1×I²C
4×UART, 2×SPI, 3×I²C
4×UART, 1×SPI, 1×I²C
1×UART, 1×SPI, 1×I²C
1×SPI, 1×I²C
1-Wire
Y
N
N
N
N
N
定时器
2 多功能+2 基础+1 低功耗
2+PWM 外设
4+2 低功耗
6
1
N/A

ADC 特性

项目
LH32M0G3XX
ADuCM360
MAX32675C
RX23E-A
SD25F201
NSA2860
24-bit ΣΔ ADC 数量
2
2
2
2
2 (PADC, TADC)
2 (PADC, TADC)
差分/单端输入数
6 diff / 12 single-end
6 diff / 12 single-end
6 diff / 12 single-end
6 diff / 12 single-end
3 diff / 7 single-end
1 diff / 2 single-end
数据速率 (SPS)
2.5–7812.5
3.5–3906
4–15360
7.6–15625
2.5–1200 (PADC)
2.5–2400 (PADC)
PGA 增益
1–128
1–128
1–128
1–128
1–256 (PADC), 1–8 (TADC)
1–256 (PADC), 1–4 (TADC)
失调漂移 (gain=1–128)
20
230
50
60
10 (PADC)
5 (PADC)
增益漂移 (gain=1–128)
20 ppm/°C
±20 ppm/FSR
±15 ppm/FSR
±20 ppm/FSR
±10 ppm/FSR (PADC)
±15 ppm/FSR (PADC)
ENOB (gain=1)
23.2 bit @10 Hz
21.1 bit @3.53 Hz
17.3 bit @16.8 Hz
22.2 bit @10 Hz
22.7 bit @2 Hz (PADC)
22.4 bit @10 Hz (PADC)
积分非线性 (gain=128)
±10 ppm/FSR
±20 ppm/FSR
±15 ppm/FSR
±20 ppm/FSR
±10 ppm/FSR (PADC)
±15 ppm/FSR (PADC)

基准源 / 恒流源

项目
LH32M0G3XX
ADuCM360
MAX32675C
RX23E-A
SD25F201
NSA2860
内置 Vref (温漂)
±5 ppm/°C
±5 ppm/°C
±50 ppm/°C
±10 ppm/°C
±10 ppm/°C
±5 ppm/°C
Vref 档位
1.262/2.048/2.5/4.096 V
1.2/2.5 V
1.024/1.5/2.048/2.5 V
2.5 V
2.5/4.096 V
2.5/4 V
Vref 精度
20 ppm/°C
100 ppm/°C
33 ppm/°C
25 ppm/°C
24 ppm/°C
40 ppm/°C
激励电流源
±0.22 %
±0.5 %
±0.5 %
±0.2 %
±0.55 %
±1 %
激励电流漂移
1.7 ppm/°C
50 ppm/°C
10 ppm/°C
5 ppm/°C
14.8 ppm/°C
40 ppm/°C

DAC 特性

项目
LH32M0G3XX
ADuCM360
MAX32675C
RX23E-A
SD25F201
NSA2860
分辨率
16 bit
12 bit
12 bit
N/A
N/A
N/A
输出满量程
1.2/2.5/5/AVDD
Vref
VDD
N/A
1.2/3.3/5/AVDD
1.2/2.4/8/AVDD
INL
±6 LSB
±3 LSB
±1 LSB
N/A
±10 LSB
±10
DNL
±0.8 LSB
±0.5 LSB
±1 LSB
N/A
±1 LSB
±1
4–20 mA
Y
N
N
N
Y
Y
LOOPN 监测
Y
N
N
N
Y
N

封装

型号
封装
LH32M0G3XX
QFN48 (7×7 mm), QFN40 (5×5 mm)
ADuCM360
72 LGA (8×8 mm)
MAX32675C
QFP (7×7 mm)
RX23E-A
QFN40 (5×5 mm)
SD25F201
SSOP16/TSSOP20/QFN20
NSA2860
?
           MCU  Total_Score  ENOB(bit)  PGA_Max  Ref_Temp(ppm/°C)  
0  LH32M0G3XX         4.95       23.2      128                 5   
1    ADuCM360         1.87       21.1      128               100   
2   MAX32675C         3.53       17.3      128                33   
3     RX23E-A         3.79       22.2      128                25   
4    SD25F201         3.53       22.7      256                24   

   Excite_Drift(ppm/°C)  DAC_Bits  SRAM(KB)  Flash(KB)  Power_mA  
0                   1.7        16         8        128       1.3  
1                  50.0        12         8        128       1.0  
2                  10.0        12       160        384       2.1  
3                   5.0         0        32        256       1.6  
4                  14.8         0         4         64       2.0  
MCU竞品优势/劣势评分表

总评分 (综合考虑 ENOB、PGA、基准漂移、激励漂移、DAC、存储、功耗等)

image-20250824153126934
image-20250824152833562

**LH32M0G3XX (蓝色)**:在 ENOB、Ref 温漂、Excite 漂移、DAC、功耗上全面领先 → 非常适合高精度测量 + 工业变送。

**MAX32675C (绿色)**:内存资源非常强,但 ADC 性能较弱 → 偏向高计算负载应用。

**RX23E-A (红色)**:ENOB 高,算是“纯 ADC 强项”,但缺乏 DAC。

SD25F201 / NSA2860:在 PGA、工业特性上有亮点,但整体偏向专用芯片。

**ADuCM360 (橙色)**:作为老牌方案,功耗低,但精度和基准源性能明显落后。

如果目标是 高精度传感测量 (RTD/热电偶/桥式传感器) + 工业现场变送 (4–20 mA/HART) → LH32M0G3XX 最优

如果目标是 大存储 + 较多外设 + 通用 MCU → MAX32675C 更合适

如果目标是 仅高精度 ADC,不关心 DAC/变送 → RX23E-A 或 SD25F201

MCU 竞品优势/劣势矩阵图

蓝色 = 优势(性能突出)

红色 = 劣势(表现较弱)

橙色 = 中性(一般,既不是明显优势也不是明显劣势)

LH32M0G3XX:在 ADC 精度、基准温漂、DAC、功耗 上全面占优 → 最适合高精度工业测量。

ADuCM360:功耗优势,但 ENOB 与基准漂移差,属于老一代产品。

MAX32675C:存储资源巨大(优势),但 ADC 精度、基准漂移、功耗偏弱。

RX23E-AADC 精度高,但无 DAC,功耗也偏高。

SD25F201ADC 精度高,但 存储/功耗/DAC都是短板。

NSA2860ADC 精度高,有 4–20 mA 输出(工业友好),但存储几乎没有,内核不开放。

我觉得这个朋友的留言写的很好

领慧的强项就是ADC 这块,MCU 其实是个系统工程,而且也没有出几颗,有问题也正常,这个我之后如果有时间会修一些 bug。

这个校准可以少一个晶振

CW32 这块做的很不错,我这边的手册死活下载不小来,那就算了:

也可以别的时钟接进来做 MCU 的时钟

信号链这个事情很复杂,所以我这里想要综合的分析一下,这份手册只对 ADC(含两路:ADC0/ADC1)给出了成体系的噪声参数;其他模拟外设(DAC、基准、激励电流源、VBIAS、温度传感器等)未给出定量的噪声指标。

片上基准与传感器供电

片上基准/驱动1.262/2.048/2.5/4.096 V 可选,带驱动缓冲最大 16 mA 驱动,可作为 ADC 参考或外部传感器供电VDRIVE 与 GND_SW 复用到引脚,可做比例测量(ratiometric)/开关供电。典型温漂 5 ppm/°C

**热电偶偏置(VBIAS)**:片上 AVDD/2 偏置,一次只能路由到一个模拟输出,防止通道间串扰。

激励电流:两路、50 µA–1 mA、可路由到多路 AIN,用于 RTD/桥式等有源激励场景;可并联到同一引脚提高电流。

ADC 噪声(RMS,输入等效,单位 μV)

文档提供了两张完整的 RMS 噪声表(按 SPS × PGA 列出):

ADC0 噪声(RMS, μV @ 内部 2.048V 参考):随 SPS 降低、PGA 增大而减小。

例如:

最差:7813 SPS、PGA=1 → 240.437 μV;PGA=2 → 119.811 μV;PGA=4 → 59.658 μV …(完整行见表)

较低速典型:488 SPS、PGA=64 → 0.393 μV;PGA=128 → 0.377 μV

低速极限:122 → 61 SPS 继续下降到 ~0.129–0.187 μV(高增益)区间。

更低速(30 SPS):PGA=64/128 约 0.091–0.093 μV

ADC1 噪声(RMS, μV @ 内部 2.048V 参考):数值与 ADC0 同量级,趋势一致:

最差:7813 SPS、PGA=1 → 240.139 μV;PGA=2 → 122.258 μV;PGA=4 → 61.252 μV …(完整行见表)

中等速:977 SPS、PGA=64 → 0.549 μV;PGA=128 → 0.547 μV

低速极限2.5 SPSPGA=128 → 0.024 μV(本表最小值)。

规律

SPS↓ ⇒ 噪声↓(Σ-Δ+数字滤波积分更长,带宽更窄)。

PGA↑ ⇒ 输入等效噪声↓(前端放大把同一内部噪声折算到输入更小)。 两路 ADC 的输出速率范围为 2.5 SPS–7812.5 SPS(滤波器相关),参数表也明确把分辨率/噪声“参见均方根噪声与分辨率部分”。

hh,看了我的就不用看这个了

ENOB(有效位数)与采样率 / PGA

文档同时给了 ENOB 表(同样按 SPS × PGA):

代表性性能(ENOB 读数)

注意:以下均来自 Pre.D 的 ENOB 表,设计时以最终版为准。

高带宽端:ODR≈7.813 kSPS 时,ADC0/1 的 ENOB 约 14 bit(低增益段)。

中速:ODR≈977 SPS 时,低增益下 ≈19.5 bit(ADC0/1 均类似)。

低速高分辨:ODR≈61–50 SPS,可到 ≈21.7–21.9 bit(随增益不同略有差异)。

最慢端:ODR 2.5 SPS,表中给到 ≈24 bit(理论极限/平均后的有效位数解读要结合实际噪声与带宽)。

要采几百 Hz 带宽的微伏级信号(比如 400 Hz),就落在 kSPS 级 ODR,对应 ENOB ≈ 18–19.5 bit 区间;若是低带宽静态/慢变量(应变、温度、桥式),把 ODR 拉低到 61–122 SPS,ENOB 可上到 ~21–22 bit。

ADC0 ENOB:例如 30–7813 SPS、PGA=1–128 的 ENOB 均列出;低速/高 PGA 时 ENOB 高(>21 bit),高速/低 PGA 时 ENOB 低(≈14 bit)。

ADC1 ENOB:趋势相同;例如 30–7813 SPS 全部列出,数值与 ADC0 极为接近。

片内基准电压源:给了初始精度、温漂(5 ppm/°C)、负载调整率(2.5 μV/mA)、电源抑制(94 dB)等,但没有噪声(nV/√Hz 或 RMS)指标

温度传感器:给了精度 ±3 °C、灵敏度代码/°C无噪声指标。

给出了 ADC0 与 ADC1 的输入等效噪声(RMS μV)的可视化结果:

横轴:采样率(SPS)

纵轴:PGA 增益

颜色:噪声大小(对数刻度,颜色越深噪声越大)

可以直观看到:

  1. 采样率越高,噪声越大(7813 SPS 处为百 μV 量级)。
  2. PGA 越大,噪声越低(PGA=128 时能降到 0.02–0.1 μV)。
  3. ADC0 与 ADC1 的趋势相同,差别主要在低速高增益时 ADC1 噪声更小(极限值 0.024 μV rms)。

算算测量的范围:

最强信号(满量程、可不失真采入的上限)

选择最大内部参考 4.096 V、最小增益 PGA=1:差分满量程:±VREF/G = ±4.096 V(即 8.192 Vpp)。

Vcm≈AVDD/2 做共模(例如 AVDD=5.5 V → Vcm≈2.75 V),每个引脚摆幅为 ±(Vdiff/2)=±2.048 V:

V+ 最高 ≈ 2.75 + 2.048 = 4.798 V < AVDD+0.05,

V− 最低 ≈ 2.75 − 2.048 = 0.702 V > AGND−0.05, 满足引脚绝对电压限值要求。

结论:最强可测差分信号(不削顶)为 ±4.096 V(PGA=1,VREF=4.096 V,合适共模)。更高电平需外部分压/隔离。

最弱信号(受噪声底限制)

采用输入等效 RMS 噪声作为 1σ 门槛,再给出 3σ/6.6σ 作为工程检测阈值:

极限低带宽(追求最低噪声):ADC1 @ 2.5 SPS,PGA=128 → 0.024 μV rms(表中最小)。

比如再在≈400 Hz 带宽场景:ADC1 @ 488 SPS,PGA=64/128 → 0.266 μV rms

需要大带宽时,优先提高 PGA 再提高 ODR,尽量把输入信号放到 满量程的 50–90%,使 SNR 接近 ENOB 表格上限。

微伏级直流/低频:把 ODR 拉低(61/122/244 SPS 档),配合 PGA≥64,可以把输入等效噪声压到 0.1 μV 量级;若对参考噪声敏感,考虑外接更低噪声基准并做比例测量(VDRIVE↔参考)以抑制供电耦合。

ADC0 与 ADC1 的噪声性能

左图:488 SPS(≈400 Hz 带宽)

右图:122 SPS(≈几十 Hz 带宽)

横轴:PGA 增益(对数坐标,1–128)

纵轴:输入等效噪声(μV rms,对数坐标)

整体趋势一致:采样率越低、PGA 越高,噪声越小。

ADC1 略优:在大多数 PGA 档下,ADC1 噪声比 ADC0 更低,尤其在高增益时(64/128 档),ADC1 的优势更明显。

高带宽场景(488 SPS):ADC0/ADC1 均在 0.2–0.4 μV 区间(高 PGA),ADC1 略低。

低带宽场景(122 SPS):ADC1 能保持更低的等效噪声,利于微弱信号检测。

我尝试把 ADC1 配成 AIN0–AIN1 差分输入PGA=64488 SPS(ODR)双极性输出,并用软件触发启动连续转换。

ADC1 @ AIN0–AIN1, PGA=64, 488 SPS, Bipolar, 连续转换

#include <stdint.h>
LH32M0G3的 ADC 性能上限(含竞品对比)
#define ADC_BASE              0x40012880UL

/* ——— 总览(参考手册寄存器映射,统一本页基地址) ———
   ADC_STATUS_1:   BASE+0x44
   ADC_DATA_1:     BASE+0x48
   ADC_CONTROL_1:  BASE+0x50
   CHANNEL_CFG_1:  BASE+0x54
   CONFIGURATION_1:BASE+0x58
   FILTER_1:       BASE+0x5C
#define ADC_STATUS_1          (*(volatile uint32_t *)(ADC_BASE + 0x44))
#define ADC_DATA_1            (*(volatile uint32_t *)(ADC_BASE + 0x48))
#define ADC_CONTROL_1         (*(volatile uint32_t *)(ADC_BASE + 0x50))
#define CHANNEL_CFG_1         (*(volatile uint32_t *)(ADC_BASE + 0x54))
#define CONFIGURATION_1       (*(volatile uint32_t *)(ADC_BASE + 0x58))
#define FILTER_1              (*(volatile uint32_t *)(ADC_BASE + 0x5C))

/* ---------- CHANNEL_CFG_1 位域 ----------
   AINP[9:5] 选择正端;AINM[4:0] 选择负端。
   0x0: AIN0, 0x1: AIN1, … 0xB: AIN11;还支持温度、AVDD/5、IOVDD/5、DAC/5 等内部点。
   我们要差分 AIN0(+)–AIN1(−)。                                                     */
#define CHANNEL_AINP_SHIFT    5
#define CHANNEL_AINM_SHIFT    0
#define AINx(n)               ((uint32_t)(n))

/* ---------- CONFIGURATION_1 位域 ----------
   BIPOLAR[10]=1 双极性;REF_SEL[5:4] 选择参考(b00=VREF+/VREF-);
   PGA[2:0]:b110=64×;PGA_BYPASS[3]=0 使能PGA;REF_BUFP/M可按需打开。            */
#define CFG_BIPOLAR           (1u << 10)
#define CFG_REFSEL_SHIFT      4
#define CFG_REFSEL_VREFP_VREFM 0u  // b00
#define CFG_PGA_SHIFT         0
#define CFG_PGA_64            0b110

/* ---------- FILTER_1 位域 ----------
   FS[4:0] 速率码:4=488sps(还有 0:7813, 3:977, 5:244, 6:122, 7:61, 9:30, 10:15 等)。 */
#define FS_488SPS             4u

/* ---------- ADC_CONTROL_1 位域 ----------
   TRIG_SRC_SEL[12:11]:b00=软件START位启动;b01=硬件触发。
   MODE[5:2]:b0001=连续;b0010=单次;START位写1开始转换(单次结束后自清)。     */
#define CTRL_TRIG_SRC_SHIFT   11
#define CTRL_TRIG_SWSTART     (0u << CTRL_TRIG_SRC_SHIFT)
#define CTRL_MODE_SHIFT       2
#define CTRL_MODE_CONTINUOUS  (0b0001u << CTRL_MODE_SHIFT)
#define CTRL_START            (1u << 0)

/* ---------- STATUS ----------
   RDYN[12]=1 表示“数据就绪”;读 ADC_DATA_x 清零。                                */
#define STATUS_RDYN           (1u << 12)

static inline void adc1_init_ain0_ain1_pga64_488sps(void)
{
    /* 1) 选择差分通道:AIN0(+) – AIN1(−) */
    CHANNEL_CFG_1 =
        (AINx(0) << CHANNEL_AINP_SHIFT) |   // AINP = AIN0
        (AINx(1) << CHANNEL_AINM_SHIFT);    // AINM = AIN1
    /* 出处:CHANNEL_CFG_1 的 AINP/AINM 编码表。:contentReference[oaicite:0]{index=0} :contentReference[oaicite:1]{index=1} */

    /* 2) 参考与PGA配置:双极性、参考=VREF+/VREF−、PGA=64×(不旁路PGA) */
    CONFIGURATION_1 =
        CFG_BIPOLAR |
        (CFG_REFSEL_VREFP_VREFM << CFG_REFSEL_SHIFT) |
        (CFG_PGA_64 << CFG_PGA_SHIFT);
    /* 出处:BIPOLAR、REF_SEL、PGA 位定义,1×..128×枚举;同结构在 _1。:contentReference[oaicite:2]{index=2} :contentReference[oaicite:3]{index=3}
             双极性/参考/缓冲描述(示例在 CONFIGURATION_0,但字段一致)。:contentReference[oaicite:4]{index=4} :contentReference[oaicite:5]{index=5} :contentReference[oaicite:6]{index=6} */

    /* 3) 采样率:FS=4 → 488 sps */
    FILTER_1 = FS_488SPS;
    /* 出处:FILTER_1 的 FS 速率码列表(4=488sps)。:contentReference[oaicite:7]{index=7} */

    /* 4) 控制:软件触发、连续模式,START=1 开始转换 */
    ADC_CONTROL_1 =
        CTRL_TRIG_SWSTART |
        CTRL_MODE_CONTINUOUS |
        CTRL_START;
    /* 出处:TRIG_SRC_SEL、MODE、START 位定义。:contentReference[oaicite:8]{index=8} :contentReference[oaicite:9]{index=9} :contentReference[oaicite:10]{index=10} */
}

static inline int32_t adc1_read_sample_blocking(void)
{
    /* 轮询 RDYN=1(数据就绪),再读 24-bit 数据寄存器(读数据清 RDYN) */
    while ((ADC_STATUS_1 & STATUS_RDYN) == 0) { /* wait */ }
    uint32_t raw = ADC_DATA_1 & 0x00FFFFFFu;  // 24-bit
    /* 出处:RDYN=“数据就绪”(读 DATA 清除);DATA_x 是 24 位寄存器。:contentReference[oaicite:11]{index=11} :contentReference[oaicite:12]{index=12} */
    /* 二补码扩展到32位 */
    if (raw & 0x00800000u) { raw |= 0xFF000000u; }
    return (int32_t)raw;
}

示例默认为 REF_SEL = VREF+/VREF-。若你启用内部基准或用 VDRIVE/AVSS 做比例测量,可按需切 REF_SEL;必要时打开 REF_BUFP/M 提高基准输入阻抗(字段在 CONFIGURATION_1 中,定义同上)。

速率选择FILTER_1.FS 速率表里列了常用 ODR(7813/3906/1953/977/488/244/122/61/60/30/15/…/2.5 SPS),仅需改 FS_488SPS 常量即可。

DMA:如果不想轮询 RDYN,可以配合 DMA/DMAMUX 把 ADC_DATA_1 自动搬到内存(手册有 ADC 与 DMA/DMAMUX 支持描述)。

VBIAS / 激励电流:热电偶或桥式测量时,可用 IO_CONTROL_IBIAS 把 VBIAS(AVDD/2) 送到某个 AIN 引脚,或者用 IEXC_RANGE / IEXC_CTRL 配置 50 µA–1 mA 的 激励电流源到指定 AIN 引脚。

比较器阈值:可设置 ADC_1_HI/LO_COMPARATOR 做越限报警;配合 ERROR_EN 生成错误事件。

PGA=64、488 SPS 对应数据手册中 ADC1 的输入等效噪声 ~0.266 µV_rms,这就是你在该档位的最弱可测门槛(1σ),可按 3σ/6.6σ 放宽到 ~0.798/1.756 µV_rms;若换到 2.5 SPS、PGA=128,噪声可到 0.024 µV_rms(极限低带宽)。