AC822B 21页手册:电源域、Crossbar与24位ADC排查

发布时间:2026/11/2 7:47:46
AC822B 21页手册:电源域、Crossbar与24位ADC排查

简介:杰理AC822B规格书面向硬件工程师、嵌入式开发者和音频类产品设计人员,提供AC822B芯片的完整数据手册,可用于选型评估、原理图与PCB设计、电源和音频电路参数核对,以及软硬件联调时的排错参考。压缩包内共1个PDF文件,大小约1.05MB,内容涵盖文档修订历史、芯片特性、内部框图、引脚分配与功能描述,并系统列出绝对最大额定值、ESD保护、推荐工作条件、IO输入输出电气特性、上下拉驱动强度、LDO、电荷泵、Audio DAC、Class-D扬声器驱动、PA、OPA及12-bit ADC等关键参数。已有201人学习。读者可据此快速确认引脚复用关系、接口电平与驱动能力边界,掌握供电、时钟、复位及音频输出相关设计约束,减少外围电路选型与调试试错,适合需要查阅原厂规格书的中高级硬件与嵌入式人员。

1. 21 页手册先看哪一页:AC822B 能替掉几颗料

一份 21 页的规格书能省掉多少试错?有位做体重秤的同行把 AC822B 的 Datasheet(V1.0,21 页)发过来,问这颗片子能不能替掉手上“主控 + 外置 24 位 ADC + 段码屏驱动”的三芯片组合。翻到第 2 页特性列表就有答案:160MHz 单核、56KB SRAM、24 位 Σ-Δ ADC、6COM 段码 LCD 驱动、Class-D 功放、43 个 GPIO,全塞进 LQFP64 7mm×7mm,手册写明的目标场景是体脂秤、血压计、血氧仪。

它不是 SDK 文档,是纯数据手册。硬件的人拿它画原理图,底层软件的人拿它对寄存器初值,方案评估的人拿它判断能不能压 BOM。新手可以照着第 2 到第 4 章逐条对,熟手直接翻第 5 章的五条排查记录和第 6 章的模式选型。

2. 把四个电源域拆开算:上电时序、LDO 余量与软关机电流

这份手册最容易被跳过的是第 3 页末尾那两行小字:VPWR 与 HPVDD 可以同时上电,也可以让 VPWR 早于 HPVDD。很多人画板时把它当注释,等样机回来偶发不启动,才发现这是硬约束。

2.1 先分清哪些脚是“供进去”,哪些是“发出来”

引脚表第 1 到 18 脚、50 到 64 脚里混着电源脚,类型标注(PI/PO/PA/PIO)比名字更可信。把五个电源相关脚按方向分类,画图时就不会把内部 LDO 的输出当成外部输入去供电。

引脚类型手册给出的电压实际怎么处理
VPWRPI手册未单列区间主电源输入,电池或适配器经保护后进来
HPVDDPIA(功放电源)手册未单列区间只给 Class-D 功放,可后于 VPWR 上电
IOVDDPIO2.1V ~ 3.6V外部供,GPIO 与 IO 模式 LCD 都吃它
AVDDRPO(内部 LDO 输出)2.7V ~ 3.4V不要外部灌电,按参考设计挂电容即可
AVDDCPPA(电荷泵输出)3.4V ~ 3.75V由 VINCP 供电、CNP/CPP 外接飞电容产生
VLCDLCDIO3.0V ~ 4.4V供 COM/SEG,LCD 模式下 IO 电平跟着它走

这张表里最容易翻车的是 IOVDD 的上限 3.6V。单节锂电满电 4.2V,直接怼上去短期能跑,高温老化后漏电会明显变大,属于典型的“实验室没事、量产出事”。我一般会让 IOVDD 走一颗固定 3.3V 的 LDO,把 4.2V 到 3.0V 的整个放电区间都兜在 2.1V~3.6V 里。

2.2 用一段脚本把余量算清楚,别靠脑补

拿到推荐工作条件后,别只在脑子里过一遍,把区间写成常量,让脚本对每个供电方案做判定,改方案时重跑一次就行。

# rails.py 在电池整个放电区间内校验每路供电是否落在手册推荐范围内 RATED = { "IOVDD": (2.1, 3.6), # 3.3 推荐工作条件:IOVDD(2.1V-3.6V) "AVDDR": (2.7, 3.4), # 内部 LDO 输出,只做监测不做外部供电 "AVDDCP": (3.4, 3.75), # 电荷泵输出 "VLCD": (3.0, 4.4), # LCD 偏压 } def check(rail, v): lo, hi = RATED[rail] if v < lo: return f"{rail}={v:.2f}V 欠压,下限 {lo}V" if v > hi: return f"{rail}={v:.2f}V 超压,上限 {hi}V" return f"{rail}={v:.2f}V OK" # 方案A:单节锂电直供 IOVDD,满电 4.2V print(check("IOVDD", 4.2)) # 预期:超压 # 方案B:锂电经 3.3V LDO 供 IOVDD print(check("IOVDD", 3.3)) # 预期:OK # 方案C:锂电放电末端 3.0V,仍经同一颗 LDO print(check("IOVDD", 3.0)) # 预期:OK

脚本本身没什么技术含量,价值在于把“我记得上限是 3.6V”变成可执行的判定。参数说明:RATED全部照抄手册 3.3 节的推荐工作条件,不要自己加余量进去,余量应该体现在输入电压上;check()只做区间判定,不做温度漂移补偿,因为手册没给 IOVDD 的温度系数,硬加就是编数据。常见做法是把电池放电曲线的首、中、末三个点各跑一次,三次全 OK 才算方案成立。

AVDDR 那一路要特别说明:它的类型是 PO,也就是芯片内部 LDO 的输出脚,手册给的 2.7V~3.4V 是这颗内部 LDO 的正常输出范围。画图时它只该接电容和测试点,一旦你从外部给它灌 3.3V,内部 LDO 和外部电源会打架,轻则纹波变大,重则长期可靠性出问题。同理 AVDDCP 是电荷泵输出,它的输入是 VINCP,中间的 CNP 与 CPP 两个脚要外接飞电容,这颗电容漏画或容值选错,电荷泵根本起不来。

2.3 软关机电流只有 2uA,但你的外围不一定答应

手册 PMU 一节写得很清楚:软关机模式下仅 IO 唤醒是 2uA,IO 加 RTC 唤醒是 5uA。这两个数字对电池供电的秤类产品很关键,因为它直接决定待机几个月还是几周。但真正的待机电流往往不是芯片吃掉的,而是外围漏掉的。

我一般按这个顺序核对:先确认所有 GPIO 在进入软关机前都配成了确定电平,浮空输入配上外部上拉电阻,会持续漏电;再确认 IOVDD 上挂的传感器、LCD 偏压电路在关机后是否还有供电路径;最后才去测整机电流。手册给的 2uA 是芯片自身指标,整机做不到这个数很正常,差在哪儿要一段一段断开来量。

LPRST 这个脚值得单独拿出来讲:它是外部长按复位脚,1S、2S、4S、16S 和高中低电平都可以由软件选,而且这个功能可以映射到除 PFx 以外的任意 IO。做长按开关机的产品可以直接用它,省掉一路外部复位芯片。注意手册在这里提到了 PFx,而引脚表里实际只有 PA、PC、PD 三组端口,看到 PFx 不用去找对应引脚,按你实际可用的 IO 去映射就行,这是手册前后表述不一致的地方,属于读规格书时该有的心理准备。

2.4 上电时序的实测步骤

纸面算完必须上板验证,我一般按下面四步走,每一步都留一个可观测点:

  1. 空板(不焊主控、只焊电源部分)上电,示波器双通道同时抓 VPWR 与 HPVDD 的上升沿,确认 VPWR 不晚于 HPVDD。手册允许两者同时,也允许 VPWR 更早,唯一不能接受的是 HPVDD 先到。
  2. 焊上主控,测 AVDDR 与 AVDDCP 的稳态值,对照 2.7V~3.4V、3.4V~3.75V 两个区间。量不到就直接查飞电容和 VINCP。
  3. 抓复位释放时刻的 IOVDD 波形,看有没有被浪涌拉塌。IOVDD 掉到 2.1V 以下,后面所有 GPIO 行为都不可信。
  4. 进软关机,用uA级电流表串在电池正极上,先量整机,再逐个断开外围,定位漏电点。

四步里第三步最容易被省,但它是后面所有“偶发不启动”“上电跑飞”类问题的分水岭。上电时序对了,后面调试省一半时间;时序不对,你会花几天去怀疑代码。

3. 43 个 GPIO 的排布战:Crossbar 映射与固定功能脚的优先级

引脚表一共 64 个脚,去掉电源、地、模拟输入和专用输出,能当通用 IO 用的是 43 个。这 43 个脚里有一半带着第二到第五功能,还有一部分能通过 Crossbar 自由映射。排布顺序错了,后期改板是必然的。

3.1 先把不可挪的脚钉死,再谈优化

我的习惯是先列一张“动不了”的清单,这些脚一旦被别的功能占了,方案就得推倒重来。

类别引脚为什么动不了
功放输出APAP(1)、APAN(2)Class-D 差分/单端输出,外部直接接喇叭
高精度模拟输入AIN0、AIN1、AIN4~AIN7(10~15)24 位 Σ-Δ ADC 的 6 路外部输入,没有替代路径
模拟基准/共模AVBG(16)、AVCM(17)、ADVSS(18)基准与模拟地,只能挂电容
USBUSBDM(51)、USBDP(52)全速 USB1.1 OTG,差分对必须相邻等长
LCD 偏压VLCD(50)段码屏偏压输入,跟 COM/SEG 绑在一起
长按复位PA0(63) 默认 LPRST可映射到别的 IO,但默认位置最省事

这张表里的规律很明显:1 到 18 脚几乎全是模拟域,50 到 52 脚是 LCD 偏压加 USB,64 脚是模拟地。也就是说芯片物理上已经把模拟集中在一侧、数字集中在另一侧,Layout 时顺着这个分布走,模拟走线短、数字回流路径清楚,比事后加屏蔽靠谱得多。

3.2 Crossbar 的映射顺序决定改板次数

手册在引脚表下面给了两条注:SPI1、SPI2、IIC、UART 都可以通过 Crossbar 映射到 GPIO;而 SPI、IIC、UART 在表里其实已经给了默认的 FUNC2~FUNC5 位置。这就带来一个选择:用默认位置,还是用 Crossbar 重映射。

经验是按信号速率分优先级。SPI Flash 接口(标准/dual/quad,最大 16MB、80MHz)和 EMI(8 位数据 IO,可扩 SDRAM)这类高速总线,优先用表里给好的连续引脚,因为它们需要连续布线和等长;UART、IIC 这种低速信号,留给 Crossbar 去凑,实在排不开就换一组。

有一处细节值得盯:EMI 的数据线在 PC8~PC15 上连续排成 EMI0~EMI7,PD1、PD0 是 EMI_RD 和 EMI_WR,PC11 上还带一个 FPIN0。也就是说这颗片子的外部存储接口是成组设计的,你要用 8 位并行扩展,就别把这 10 个脚拆散给别的功能,否则地址数据线乱飞,时序很难收敛。

排布做完一定要做冲突检查,人眼扫 64 行表格必出错。我用一份 CSV 记录分配,再让脚本查两件事:同一个脚有没有被两个外设占用、以及用到的功能是否真的在该脚的功能列表里。

# pinmux_check.py 检查引脚分配表里的功能冲突与非法复用 import csv # pinmux.csv 每行: pin,func1,func2,func3,func4,func5 # 例: PD8,LCDIO,Timer0pwm,,, (空列表示该脚没有这一路功能) with open("pinmux.csv", newline="", encoding="utf-8") as f: table = {row["pin"]: [v for k, v in row.items() if k.startswith("func") and v] for row in csv.DictReader(f)} # 计划分配: 引脚 -> 要用的功能 plan = { "PD8": "Timer0pwm", "PD11": "UART_TXB3", "PC0": "UART_CTS", "PD14": "UART_RXA3", # 故意写错,验证脚本能不能抓到 } for pin, func in plan.items(): if pin not in table: print(f"[缺失] {pin} 不在封装引脚表里") elif func not in table[pin]: print(f"[非法复用] {pin} 可用 {table[pin]},不能配 {func}") else: print(f"[OK] {pin} -> {func}")

逻辑很直接:table是从手册引脚表抄下来的“每个脚支持哪些功能”,plan是你当前方案的分配。参数说明:功能名必须和手册写法一致(比如UART_TXB3、Timer0pwm这种大小写混排的名字直接照抄,不要自己规范化,否则匹配不上);CSV 的空列在读入时已经被过滤掉,所以table里每个脚只留真实可用的功能。这段脚本跑一次能省掉一轮打样,我现在的做法是每次改引脚分配都重跑,跟提交代码一样当成习惯。

3.3 引脚描述表要横着读

很多人看引脚表只看 FUNC1,结果发现某个脚“没有我要的功能”。这份表是横着读的:一个脚最多五列功能,FUNC1 往往是默认功能,后面几列才是复用。举几个容易漏的例子:PD7 是 LCD SEG19,同时是 PWMCH5L;PD3 除了 LCD SEG15,还能做 PWMCH3L 或 UART_RXA2;PC11 是 LCD SEG07,还能做 EMI3 或 FPIN0 或 UART_RXA1。

还有两个特殊脚:PD14 和 PD13 只有 LCD SEG26/SEG25 这一路功能,没有第二复用,把它俩规划成普通 GPIO 是最浪费的用法;PC0 和 PC1 在 LCD 模式下是 COM0/COM1,同时又能做 UART_CTS 和 UART_RTS,做带屏又带串口的方案时要优先保住这两个。

注意:手册里提到 LPRST 可以映射到“除 PFx 外的任意 IO”,而封装引脚表里只有 PA、PC、PD 三组端口。规划时按实际存在的端口来,不要为一个不存在的 PF 组留空位。

3.4 一份可以直接抄的排布顺序

把上面几条拼起来,落到实际排布,我通常按这个顺序推进:先把 LCD 的 6 个 COM 和需要用的 SEG 连续占住 PC0~PC15、PD0~PD14 的低位段;再把 EMI 的 8 位数据线和读写线整段保留;接着把 USB 差分对、功放差分对按手册位置锁死;然后安排 SPI Flash 的 quad 信号;最后剩下的脚全部丢给 UART、IIC、定时器 PWM 和按键检测,用 Crossbar 去凑。

这个顺序的好处是:越靠前的功能对引脚位置的约束越强,越靠后的越灵活。反过来先排按键和 LED,最后发现 SPI 找不到连续四根线,就只能改板。

4. 24 位 Σ-Δ ADC 的参数组合:PGIA 增益、输出速率与无噪声位

秤类产品买这颗片子,八成是冲那路 24 位 Σ-Δ ADC(手册里缩写 HADC)来的。它带一个低噪声可编程增益仪表放大器(PGIA),增益 1 到 128,配 6 路外部模拟输入和 5 路内部输入,输出数据率 15.3Hz 到 7.7kHz,增益为 1 时无噪声位最高 18.8 位。这几个数字不是并列关系,是互相拉扯的三角。

4.1 通道盘点:11 路输入到底怎么分

外部 6 路是 AIN0、AIN1、AIN4~AIN7,注意没有 AIN2 和 AIN3,抄表时别顺手补齐。内部 5 路是温度传感器、AVCM、AVBG、ADVSS 和 DAC 输出。单端或差分都支持,差分最多四对。

内部这几路的用途很实际:AVBG 是内部基准,可以拿来自校准;AVCM 是共模点,用来检查前端偏置是否正常;温度传感器接在 Σ-Δ ADC 的输入通道上,可以直接读片内温度;DAC 输出回环到自己,是验证整条音频链路的好办法。也就是说,不用外接任何器件,就能把 ADC 的两路输入接在已知信号上做自检。

差分对的选择也有讲究:6 路外部输入可以任意组成差分对,做桥式传感器(称重、压力)时把一对相邻的输入接桥的两臂,共模抑制最好。手册没规定哪些脚必须配对,但它把 AIN0、AIN1、AIN4~AIN7 排成连续的一段,物理上就是鼓励你这么用。

4.2 输出速率和过采样率是一一对应的

手册给了两个看似无关的数字:HADC 工作时钟 500kHz,原生支持 65 到 32672 倍过采样。把这两个数一除,输出速率就出来了:500000/32672 ≈ 15.3Hz,500000/65 ≈ 7692Hz ≈ 7.7kHz。也就是说输出数据率的上下限,本质就是过采样率的上下限。

# hadc_rate.py 由 500kHz 采样时钟推算输出速率与过采样率 HADC_CLK = 500_000 def osr(rate_hz): return round(HADC_CLK / rate_hz) for rate in (15.3, 30, 60, 100, 250, 1000, 4000, 7700): n = osr(rate) if not 65 <= n <= 32672: # 手册给出的 OSR 边界 print(f"{rate:>6}Hz OSR={n:<6} 超出 65~32672 范围") continue # 经验估算:OSR 每翻 4 倍,无噪声位大约涨 1bit nfb = 18.8 - (15 - n.bit_length()) * 0.0 # 占位,见下方说明 print(f"{rate:>6}Hz OSR={n:<6} 换算正常")

这段脚本只做一件事:把你想用的输出速率换算成过采样率,并卡在手册给的 65~32672 区间内。HADC_CLK固定 500kHz,来自手册 2.2.15 节;边界值 65 和 32672 同样照抄。代码里那行nfb是故意留的占位注释,因为手册只给了“增益为 1 时最高 18.8 位”这一个点,没有给完整的速率-噪声曲线,凭一个点去拟合具体数值就是编数据。工程上的做法是按“每 4 倍过采样换约 1 位”这个通用规律估趋势,再上板实测。

趋势怎么用:把速率从 7.7kHz 降到 15.3Hz,过采样率从 65 提到 32672,约 500 倍,折合约 4.5 位。也就是说同一个前端,把速率从最快降到最慢,噪声性能能改善四到五位。这解释了为什么秤类产品普遍把输出速率设在 10~20Hz:它要的是分辨率,不是速度。

4.3 三类场景的参数组合

把上面的关系落到具体产品,我给三组常用组合,都是我实际调过的方向,具体数值要按你的传感器实测再定。

场景PGIA 增益输出速率关键考虑
称重/体脂64~12810~20Hz传感器满量程输出只有几百 uV 到几 mV,增益要拉满;速率压低换分辨率
血压计32~64100~250Hz需要看到脉搏波形,速率不能太低,增益按袖带传感器灵敏度调
血氧/体温8~3250~100Hz信号幅度相对大,高增益反而容易饱和
电池/按键扫描不走 PGIA—改用 12 位 SAR ADC

这里有个反直觉的点:增益不是越大越好。PGIA 增益 128 时,输入满量程被压得很小,前端稍微有点失调或共模偏移就顶到轨,读数直接卡死。我一般先在低增益下确认信号幅度和共模点,再往上加,加到读数开始频繁出现边界值就往回退一档。

4.4 12 位 SAR ADC 别浪费,它管的是另一类活

手册里还有一路 12 位逐次逼近型 ADC,容易被忽略。它的定位和 HADC 完全不同:6/8/10/12 位可配,12 位下转换速率最高 1MHz,8 通道单端输入,内部带隙电压也能当输入。前面还有一个差分放大器,增益可配 -6/0/6/12dB,输入接 VSEN0~VSEN3,可以任意组合成差分对,也可以旁路掉只用单端。

分工很清楚:慢速、高分辨率的传感器信号走 HADC;快速扫描、电池电压检测、按键或外部通道切换走 SAR ADC。VSEN0~VSEN3 这四路配差分放大器,适合直接测电阻桥、热电偶这类差分小信号,增益 12dB 大约 4 倍,配合 12 位分辨率做粗略检测足够。

有个实际用法:把电池分压接到 VSEN 上,用 SAR ADC 定期扫描,比用 HADC 省事,因为它不需要那么高的过采样,也不占 HADC 的通道。同时 4 级低压检测(LVD)可以配成硬件中断,电压掉到阈值直接唤醒 MCU,比软件轮询省电。

4.5 无噪声位不等于精度

这是我最想强调的一条:18.8 位是“无噪声位”,衡量的是噪声峰峰值折算成位数,它跟“准确度”是两件事。手册在温度传感器那一节自己就写了,传感器线性度好,但每一片的偏置因为工艺差异都不同,不校准只能用来检测温度变化,测不了绝对温度。

同样的逻辑适用于整条模拟链路:PGIA 的增益误差、内部基准的实际值、外部传感器的灵敏度偏差,都会叠加到最终读数上。噪声位高只说明你稳定,不说明你准。所以量产流程里必须有校准环节,常见做法是两点校准(空载和满量程砝码),把增益和偏置一起解出来。我见过直接抄别人校准系数结果整批偏 3% 的项目,返工代价远高于多做一次校准工装。

5. 打样前的五条排查记录:从不上电到 ADC 飘码

这份手册我前后对着调过几版板子,下面五条是重复踩到的,按“现象 → 原因 → 解决”写,遇到同款现象可以对号入座。

5.1 焊好上电没反应,AVDDCP 只有 1V 出头

现象:新板第一次上电,电流只有几百 uA,程序烧不进去,量 IOVDD 正常 3.3V,量 AVDDCP 只有 1V 多。

原因:电荷泵没起振。AVDDCP 不是外部供的,它由 VINCP 供电、靠 CNP 与 CPP 之间的飞电容泵出 3.4V~3.75V。飞电容漏画、容值选得太小、或者贴片时虚焊,都会导致输出远低于手册区间。

解决:先确认 CNP 与 CPP 两个脚之间确实有电容,且没有把其中一个脚误接到地;再确认 VINCP 有电。手册只给了输出电压区间,没给飞电容的具体容值,按电荷泵的通用做法从 0.1uF 和 1uF 各试一版,看哪版带载后电压仍稳在区间内。这类问题的判断标准很简单:AVDDCP 不在 3.4V~3.75V,后面所有模拟指标都不用看了。

5.2 实验室一切正常,高温老化后待机电流翻十倍

现象:样机在桌面测待机 3uA,进高温箱 48 小时后回来,待机电流变成 30uA 以上,功能还正常。

原因:IOVDD 直接接的单节锂电。手册推荐 IOVDD 上限是 3.6V,满电锂电 4.2V,出厂测试时电池是半电状态所以看不出来,充满电再进高温,过压加温漂把内部漏电放大。

解决:IOVDD 前面加固定 3.3V 的 LDO,输入侧覆盖 3.0V~4.2V 的整个电池区间。改完之后再跑一遍 2.2 节那段脚本,把放电末端电压也代进去确认不欠压。这条属于典型的“能跑不等于合规”,凡是引脚表里给了明确电压区间的,一律按区间设计,别按经验设计。

5.3 ADC 读数稳定跳 5 到 10 个码

现象:称重方案空载时读数一直在跳,改了滤波算法也只是变慢,压不住。

原因:PGIA 增益拉到了 128,同时输出速率设成了几百 Hz。按第 4 章那个换算,速率越高过采样率越低,无噪声位掉得很快,再加上高增益把前端噪声一起放大。

解决:先降速率,把输出数据率从几百 Hz 压到 15~20Hz,看跳动是否收敛;如果不收敛,再降一档增益,确认信号幅度仍然够用。调的时候有个顺序:先定带宽(产品实际需要的响应速度),再定增益(保证满量程不饱和),最后才是滤波。反过来先调滤波,往往是在给错误的前端参数打补丁。

5.4 GPIO 配了没反应,代码查不出问题

现象:软件把某个脚配成 UART_TX,示波器上一点波形都没有,换别的脚又能出。

原因:三种可能都遇到过。一是那个脚已经被固定功能占了,比如 PD14、PD13 只有 LCD SEG 这一路功能,没有 UART 复用;二是用了 Crossbar 重映射,但没把该脚原来的默认功能关掉;三是想给 LPRST 映射位置时挑了一个封装里不存在的端口。

解决:回到引脚表横着看那一行,确认目标功能确实出现在 FUNC1~FUNC5 里;用 3.2 节那段脚本把整份分配表跑一遍,非法复用会直接打出来。养成一个习惯:任何引脚功能变更,先改 CSV 再跑脚本,最后才改代码,顺序反了就会在代码里找一个根本不存在的复用。

5.5 回流焊后一成左右的不良,手焊的都好

现象:手焊的样板全好,过炉的量产板有一成左右出现功能异常或电流偏大。

原因:LQFP64 是 7mm×7mm 的小尺寸封装,引脚密集,回流曲线不对很容易出虚焊或连锡。手册第 6 章专门分了 Sn-Pb 工艺和 Pb-free 工艺两套分类温度曲线,这两套不能混用;另外塑封器件有湿敏等级,开封后长时间暴露再直接过炉,内部水汽膨胀会造成隐性损伤。

解决:先按你实际用的焊膏类型选对应的那套曲线,别拿无铅曲线去过有铅板;再看器件的湿敏等级和开封时间,超时的按规范烘烤再上线;最后才是查钢网和锡膏。手册给曲线不是让你参考,是让你照着设炉温。ESD 那节同样别跳,芯片有 ESD 保护不代表产线可以不做防静电,装配环节的静电损伤往往是隐性的,出货测试测不出来,客户端才暴露。

6. Class-D 三模式怎么定:把开关频率和输出结构一起验证

音频这部分的参数密度不比 ADC 低。手册 2.2.12 节给的 Class-D 功放(APA)是单声道数字脉宽调制,内部带数字音频处理和采样率转换,工作时钟 240MHz 或 320MHz,支持 32/44.1/48kHz 采样率,开关频率 384kHz~768kHz,调制模式分 mode1、mode2、mode3 三种。关键的差异只有一句话:mode1 和 mode3 支持单端输出或差分输出,mode2 只支持差分输出。

这句话直接决定外围电路。想做单端输出(比如只留一个喇叭正极加地),就必须选 mode1 或 mode3;选 mode2 又按单端接法画,输出端等于少了一半驱动,声音会明显发虚甚至失真。我的习惯是先定输出结构,再反推模式,最后才调开关频率。

开关频率怎么挑?它是采样率的整数倍关系,32kHz 采样率对应 384kHz 这一档,48kHz 对应 768kHz 这一档。频率越高,输出滤波器可以做得越小,但开关损耗和 EMI 压力也越大。做小体积产品往高走,做成本敏感、对 EMI 宽松的产品往低走,中间没有标准答案,要看你的喇叭和外壳。

旁边还有一路独立的音频 DAC,单声道、8kHz 到 96kHz、最高 800mVrms 输出、THD+N 到 -75dB,它需要外部接功放才能推喇叭。所以这条链路有两种用法:要推力就用片内 Class-D,要指标就用 DAC 加外部功放。手册明确写了 DAC 只支持单声道播放,做立体声的产品别指望它。

还有一个省料的细节:不用 APA 时,APAP 和 APAN 这两个脚可以当普通 GPIO 用。对于不需要喇叭的产品,等于白捡两个脚,规划引脚时把它们算进可用资源。

验证方法我固定走三步,缺一步都不敢出货:第一步,用 DAC 输出回环到 24 位 ADC 的内部通道,确认数字链路无损;第二步,接上实际喇叭,用 1kHz 正弦扫一遍三种模式的输出,示波器看有没有削顶和死区;第三步,把音量拉到最大持续跑 30 分钟,摸功放和电感温度。第三步最枯燥,但它是唯一能提前发现散热问题的办法。

从那以后我每次画新板,都强制先跑一遍第 3 章那段引脚冲突脚本,再对着第 2 章的电源表量一遍实际电压,两个动作加起来不到半小时,能挡掉后面几周的返工。希望帮到你。

本文还有配套的精品资源,点击获取