ADC采样原理、取平均与精度实战:从翻车案例到工程方法论

1. 从一次采样翻车说起:为什么ADC转换值得单独开一篇汇总

前阵子帮一个做嵌入式项目的朋友排查一个诡异问题:他用的是一颗12位ADC,采集的是称重传感器的毫伏级差分信号,硬件上该做的滤波、基准、屏蔽都做了,可读数就是稳不下来,末位数字像抽奖一样来回跳,偶尔还会整段偏移。他一度怀疑是芯片坏了,换了两颗新的,问题照旧。最后定位下来,问题不在硬件,也不在芯片,而在于他对ADC采样原理、取平均策略和精度指标的理解存在几个典型的误区——采样时间设得太短、取平均的方式选错了、把分辨率当成了精度。

这个案例其实非常典型。ADC(模数转换器)几乎是每个做硬件、做嵌入式、做数据采集的人都绕不开的东西,但真正把“采样原理、取平均、精度”这三件事讲透、讲成一套可落地方法论的内容并不多。大部分资料要么停留在“逐次逼近型原理”这种教科书层面,要么只给一段HAL库的调用代码,中间那段“为什么这么设、设错了会怎样、怎么验证”的空白,恰恰是实际项目里最容易翻车的地方。

这篇汇总就是冲着这个空白来的。我会把ADC转换拆成几条主线:采样保持与采样时间背后的物理约束、过采样与取平均的数学本质、分辨率/精度/有效位数这几个最容易混淆的概念、以及一套可以直接抄作业的实操流程和排查清单。内容偏向工程实践,适合正在做数据采集、传感器读取、电源监测、音频采样这类工作的朋友,也适合刚接触ADC、想把基础打牢的同学。不管你现在用的是8位单片机自带的ADC,还是外挂的16位、24位高精度ADC,底层的逻辑是相通的。

2. ADC采样原理:采样时间、采样保持与那些被忽略的物理约束

2.1 采样保持电路到底在“保持”什么

很多人看ADC框图时,会把采样保持电路当成一个可有可无的缓冲,觉得信号直接进比较器就行了。实际上,采样保持(Sample and Hold)是ADC能工作的前提。它的核心任务是在极短的时间内把输入电压“抓住”,然后在一个稳定的电平上完成量化,避免量化过程中输入还在变化导致结果失真。

你可以把它想象成给高速运动的物体拍照片:快门时间必须足够短,否则拍出来就是糊的。采样保持里的“采样开关+保持电容”就是这个快门。开关闭合时,保持电容(通常几皮法到几十皮法)被充电到输入电压;开关断开后,电容上的电压被“冻结”,ADC的比较器或量化网络再慢慢对这个冻结值进行转换。

这里有个关键点:保持电容的充电需要时间,而这个时间由外部信号源阻抗和内部采样开关电阻共同决定。这就是采样时间(Sample Time)存在的根本原因。采样时间设得太短,电容还没充到目标电压开关就断开了,转换结果自然偏低或偏高,而且这种误差和信号幅度、源阻抗强相关,表现出来就是“读数不稳、随信号变化漂移”。

2.2 采样时间怎么算:一个可落地的RC估算方法

采样过程本质上是一个RC充电过程。设信号源内阻为Rs,采样开关导通电阻为Rsw,保持电容为Cs,那么充电时间常数τ = (Rs + Rsw) × Cs。工程上一般认为,充电时间达到5τ时,电容电压能达到输入电压的99.3%;达到7τ时约99.9%;要达到12位ADC的1/2 LSB精度(约0.012%),需要约9τ。

举个具体的例子。假设某MCU的ADC内部采样开关电阻约1kΩ,保持电容约8pF,外部信号源内阻(含分压电阻、传感器输出阻抗)约10kΩ。那么τ = (10k + 1k) × 8p = 88ns。要满足12位精度,采样时间至少需要9τ ≈ 792ns。如果此时你把采样时间设成239.5个ADC时钟周期、ADC时钟12MHz,那采样时间约20μs,绰绰有余;但如果你为了追求采样率把采样时间压到1.5个周期,也就是125ns,那就明显不够,读数必然偏低且不稳。

提示:很多MCU的数据手册会给出“最大外部源阻抗”这个参数,它其实就是在特定采样时间下反推出来的。如果你发现自己的信号源阻抗接近或超过这个值,要么加长采样时间,要么在ADC输入前加一级运放缓冲,把源阻抗降下来。

2.3 采样定理之外:混叠与抗混叠滤波

奈奎斯特采样定理大家都背过:采样率必须大于信号最高频率的2倍。但实际工程里,真正要命的不是“采不到”,而是“采到了不该采的”。如果输入信号里含有高于采样率一半的频率成分,这些成分会折叠回低频,混进你的有效信号里,这就是混叠(Aliasing)。

混叠的阴险之处在于:它一旦发生,在数字域里无法区分、无法去除。你看到的是一个低频波动,但它可能来自一个高频干扰。所以抗混叠滤波必须在ADC之前、在模拟域完成。常见的做法是在ADC输入前加一个RC低通,截止频率设在目标信号带宽的1.5到2倍左右,同时保证在采样率一半处有足够的衰减。

这里有个实操经验:很多人只加一个简单的RC,但忽略了RC本身会引入信号衰减和相位延迟。如果测的是直流或缓变信号,问题不大;如果测的是动态信号,就要考虑RC对信号幅频特性的影响,必要时用有源滤波。另外,RC的电阻还会和前面说的源阻抗叠加,进一步拉长采样时间需求,这两个参数要一起算。

2.4 不同ADC架构对采样原理的影响

逐次逼近型(SAR)ADC是目前中低速、中高精度场景的主力,它的采样保持电路和比较器是分时复用的,所以采样时间和转换时间是分开的,采样时间可以独立配置。Σ-Δ型ADC则完全不同,它靠过采样和噪声整形来换取高分辨率,内部采样率远高于输出数据率,对前端抗混叠滤波的要求反而低,但对采样时钟的抖动敏感。闪速型(Flash)ADC速度快但分辨率低,采样保持电路通常集成在比较器阵列前,采样时间极短。

理解这些差异的意义在于:当你换了一颗ADC,不能简单地把原来的采样时间参数照搬过去。SAR的采样时间要按RC算,Σ-Δ的建立时间要看数据手册给出的“建立时间”指标,闪速型则要关注采样时钟的质量。选型和配置时,先确认架构,再谈参数。

3. 取平均:从简单均值到过采样,数学背后的取舍

3.1 简单算术平均:最常用,也最容易被误用

取平均是ADC数据处理里最朴素也最常用的手段。原理很简单:对同一路信号连续采样N次,把N个结果相加再除以N。它的作用是抑制随机噪声——如果噪声是零均值的白噪声,N次平均后噪声的标准差会降到原来的1/√N。

但这里有几个容易被忽略的前提。第一,信号在采样期间必须基本不变。如果你测的是一个快速变化的信号,取平均等于给信号做了低通滤波,会把真实的动态变化抹掉。第二,噪声必须是随机的、零均值的。如果噪声里含有周期性干扰(比如工频耦合、开关电源纹波),简单平均不仅压不下去,还可能因为采样点和干扰相位的关系产生固定偏差。第三,N不是越大越好。N增大,噪声按√N下降,但响应速度也按N变慢,而且当N大到一定程度后,剩下的误差主要来自系统误差(失调、增益误差、基准漂移),再平均也没用。

实操中,我一般会先采一组原始数据,用直方图或标准差看一下噪声的分布。如果是接近高斯的随机噪声,取平均效果最好;如果发现噪声有明显的周期性或尖峰,那就要先考虑硬件滤波或换采样时机,而不是硬平均。

3.2 过采样与抽取:用速度换精度的经典操作

过采样(Oversampling)是取平均的进阶版,它的目标不只是降噪,而是实打实地提升有效分辨率。原理是:对信号进行远高于奈奎斯特频率的采样,然后通过低通滤波和抽取(Decimation)把数据率降下来。每把采样率提高4倍,理论上可以换来1位的有效分辨率提升。

这个“4倍换1位”的结论来自量化噪声的功率谱密度假设:量化噪声在0到fs/2的频带内均匀分布,采样率提高后,同样的噪声功率被摊到更宽的频带上,落在目标信号带宽内的噪声功率就减少了。具体来说,过采样率OSR = fs / (2×BW),有效位数提升约 log4(OSR) 位,也就是每4倍OSR提升1位。

但这里有个关键前提:量化噪声必须是白噪声,且输入信号不能“卡”在某个固定码值上。如果输入信号恰好等于某个量化电平,量化误差就是直流量,过采样对它无效。所以实际做的时候,通常会在输入信号上叠加一个微小的抖动(Dither),让量化误差随机化,这样过采样才能发挥效果。

3.3 中值滤波与去极值平均:对付尖峰干扰的利器

在工业现场,ADC读数里经常混入一些偶发的尖峰干扰,比如继电器动作、电机启停、静电放电。这类干扰的特点是幅度大、持续时间短、非随机。用简单平均处理,一个尖峰就能把整组数据的均值拉偏。

这时候中值滤波(取N个样本的中间值)或者去极值平均(去掉最大和最小的几个,再对剩下的取平均)就更合适。中值滤波对脉冲干扰的抑制能力很强,只要尖峰数量不超过样本数的一半,中值就能把它滤掉。去极值平均则兼顾了降噪和抗尖峰,适合样本数较多的情况。

我个人的习惯是:先用中值滤波或去极值平均做第一级“粗滤”,把明显的异常值干掉,再用简单平均做第二级“细滤”,把随机噪声压下去。两级配合,比单用任何一种都稳。不过要注意,中值滤波需要排序,样本数多的时候计算量不小,在资源紧张的MCU上要权衡。

3.4 滑动平均与IIR滤波:连续数据流的处理方式

前面说的取平均都是“批处理”模式:攒够N个样本再算一次。如果数据是连续流式的,比如音频采样、实时监测,就需要滑动平均或IIR滤波。

滑动平均维护一个长度为N的窗口,每来一个新样本,就把它加进去,同时把最老的样本减掉,输出当前窗口的均值。它的计算量很小,效果和批处理平均类似,但输出是连续的。IIR滤波则用递归的方式实现,比如一阶IIR:y[n] = α×x[n] + (1-α)×y[n-1],α越小,滤波越强,响应越慢。IIR的优点是计算量极小、内存占用少,缺点是相位非线性,且参数整定需要一点经验。

选择哪种,取决于你的应用对实时性、内存、相位的要求。如果是电池供电的低功耗设备,IIR几乎是唯一选择;如果是在上位机做数据分析,滑动平均或批处理平均更直观。

4. 精度、分辨率与有效位数:三个必须分清的指标

4.1 分辨率不等于精度:一个被说烂但依然有人踩的坑

分辨率(Resolution)指的是ADC能区分的最小电压变化,对于N位ADC,分辨率就是满量程除以2^N。比如12位、3.3V满量程,分辨率约0.8mV。精度(Accuracy)指的是转换结果与真实值之间的接近程度,它由失调误差、增益误差、非线性、噪声、基准误差等共同决定。

一颗12位ADC的分辨率是0.8mV,但它的绝对精度可能只有±3mV,甚至更差。反过来,一颗16位ADC的分辨率是0.05mV,但如果基准漂了、前端噪声大了,实际有效精度可能还不如一颗配置良好的12位。所以选型时不能只看位数,要看数据手册里的INL、DNL、失调、增益、噪声等指标,以及你的实际使用条件。

4.2 有效位数ENOB:用实测数据说话

有效位数(ENOB)是衡量ADC在实际条件下真实性能的指标,通常通过FFT分析或直流噪声测试得到。对于交流信号,ENOB = (SINAD - 1.76) / 6.02,其中SINAD是信号与噪声加失真比。对于直流信号,ENOB可以通过多次采样的标准差来估算:ENOB = log2(满量程 / (噪声RMS × √12))。

ENOB的意义在于,它把噪声、失真、非线性都打包进去了,给你一个“这颗ADC在这个电路里实际能当几位用”的答案。我见过不少项目,标称16位,实测ENOB只有12位出头,原因往往是基准噪声大、前端驱动不够、PCB布局差。所以做高精度采集时,ENOB测试是必做项,不能只看标称位数。

4.3 基准源:精度的天花板

ADC的转换结果本质上是输入电压与基准电压的比值。基准源的质量直接决定了ADC精度的上限。如果基准电压漂了1%,那所有转换结果都跟着漂1%,再高的分辨率也没用。

常见的基准源有MCU内部基准、外部并联基准、外部串联基准。内部基准方便但温漂和初始精度一般,适合对精度要求不高的场景。外部基准里,并联基准(如TL431类)成本低但噪声和温漂一般,串联基准(如REF50xx类)性能好但价格高。选基准时重点看初始精度、温漂(ppm/°C)、噪声(μVpp)和长期稳定性。

还有一个容易被忽略的点:基准源的负载调整率和电源抑制比。如果ADC的基准引脚同时给其他电路供电,或者电源纹波大,基准就会跟着动。所以基准引脚一定要单独去耦,走线尽量短,远离数字信号。

4.4 噪声来源拆解:从源头理解精度损失

ADC系统的噪声来源可以分成几大类:量化噪声(理论极限,无法消除)、热噪声(电阻、运放)、基准噪声、电源噪声、数字耦合噪声、外部干扰。量化噪声由分辨率决定,其他噪声都可以通过设计和布局来压制。

热噪声方面,一个1kΩ电阻在室温下的噪声密度约4nV/√Hz,如果信号带宽是10kHz,噪声RMS约0.4μV,对于12位、3.3V系统(LSB约0.8mV)来说可以忽略,但对于24位系统就是大事。运放的噪声、基准的噪声、电源的纹波,都要按同样的方式折算到输入端,和LSB比较,判断是否可接受。

实操中,我一般会先算理论噪声预算,再实测验证。如果实测噪声远大于理论值,那基本就是布局、接地或电源的问题,而不是器件本身。

5. 实操流程:从配置到验证的完整闭环

5.1 硬件准备与前端设计要点

在写代码之前,先把硬件确认一遍。第一步是确认信号源阻抗,如果超过数据手册推荐值,加运放缓冲。第二步是确认基准源,根据精度要求选内部还是外部,外部基准要单独去耦。第三步是抗混叠滤波,根据信号带宽和采样率设计RC或有源滤波。第四步是PCB布局,模拟部分和数字部分分开,ADC输入走线尽量短、远离时钟线,地平面完整。

这里有个细节:很多MCU的ADC输入引脚和数字引脚相邻,如果数字引脚频繁翻转,容性耦合会直接串到ADC输入上。解决办法是尽量把ADC输入安排在模拟引脚区域,或者在输入前加一个小电容(几十到几百pF)到地,把高频耦合旁路掉。但这个小电容会和源阻抗形成低通,进一步拉长采样时间,要一起算。

5.2 ADC初始化配置:采样时间、时钟、触发方式

以常见的SAR型ADC为例,初始化时要配置几个关键参数:采样时间、ADC时钟分频、触发源、数据对齐方式、通道序列。采样时间按前面说的RC方法估算,留2到3倍余量。ADC时钟不能超过数据手册上限,否则转换精度下降。触发源根据应用选软件触发、定时器触发或外部触发,定时器触发适合周期性采样,能保证采样间隔均匀。

数据对齐方式影响后续计算,右对齐适合直接读取数值,左对齐适合做定点运算。通道序列如果有多路信号,要注意通道切换后的建立时间,必要时在通道间插入丢弃的第一次转换。

注意:很多MCU的ADC在第一次转换或通道切换后的第一次转换结果不可信,建议丢弃。这个细节在数据手册里往往一笔带过,但实际影响不小。

5.3 采样与取平均的代码实现

下面给一个典型的采样加取平均的流程,用伪代码表示,方便移植到不同平台。

#define SAMPLE_N 16 #define DISCARD_N 2 uint32_t adc_read_averaged(uint8_t channel) { uint32_t sum = 0; uint16_t samples[SAMPLE_N]; uint8_t i, j; // 切换通道后丢弃前几次转换 for (i = 0; i < DISCARD_N; i++) { adc_start_conversion(channel); adc_wait_done(); (void)adc_get_result(); } // 连续采样 for (i = 0; i < SAMPLE_N; i++) { adc_start_conversion(channel); adc_wait_done(); samples[i] = adc_get_result(); } // 去极值:去掉最大和最小各一个 uint16_t max = samples[0], min = samples[0]; for (i = 1; i < SAMPLE_N; i++) { if (samples[i] > max) max = samples[i]; if (samples[i] < min) min = samples[i]; } uint8_t max_removed = 0, min_removed = 0; for (i = 0; i < SAMPLE_N; i++) { if (samples[i] == max && !max_removed) { max_removed = 1; continue; } if (samples[i] == min && !min_removed) { min_removed = 1; continue; } sum += samples[i]; } return sum / (SAMPLE_N - 2); }

这段代码做了三件事:丢弃通道切换后的不稳定样本、连续采样、去极值后平均。SAMPLE_N取16是经验值,兼顾降噪效果和响应速度。如果信号变化慢,可以取32或64;如果要求快速响应,取4或8。

5.4 精度验证:用已知信号和统计方法量化

配置完成后,必须验证实际精度。方法一:输入一个已知的稳定电压(比如用高精度基准分压得到),连续采集几百个点,算均值和标准差。均值与理论值的差就是系统误差,标准差反映随机噪声。方法二:输入一个缓慢变化的斜坡信号,观察输出是否单调、有无丢码,这能反映DNL。方法三:如果条件允许,做FFT分析,看SINAD和ENOB。

我一般会先做方法一,因为它最简单,只需要一个稳定的源和一段统计代码。如果标准差对应的ENOB远低于标称位数,就说明系统里有额外的噪声源,需要逐项排查。排查顺序通常是:先看基准,再看电源,再看前端运放,最后看布局。

6. 常见问题与排查技巧实录

6.1 读数跳动大:从采样时间到基准的排查顺序

读数跳动是最常见的问题。排查时按以下顺序来,能少走很多弯路。

排查项可能原因验证方法解决方向
采样时间源阻抗高,采样时间不足加长采样时间看是否改善加长采样时间或加缓冲
基准源基准噪声大或负载重用示波器看基准引脚纹波单独去耦、换基准
电源数字电源耦合到模拟对比电池供电和适配器供电加LC滤波、分开供电
前端运放噪声或振荡断开前端,直接接基准看噪声换低噪声运放、加补偿
布局数字线耦合移动ADC输入线看是否变化重新布局、加屏蔽
干扰工频或开关频率耦合改变采样率看跳动频率是否变化同步采样、加滤波

这个表我实际用过很多次,基本能覆盖八成以上的跳动问题。剩下两成往往是多个因素叠加,需要逐项排除。

6.2 末位不稳但整体准确:正常还是异常

很多人看到末位跳几个字就紧张,其实这要分情况。对于N位ADC,如果跳动范围在±1到±2个LSB以内,且噪声是随机的,那基本是量化噪声和热噪声的正常表现,取平均就能压下去。如果跳动超过±3个LSB,或者跳动有明显的规律性,那就要查了。

判断方法:采集1000个点,算标准差。如果标准差小于1个LSB,说明噪声控制得不错;如果标准差在1到2个LSB之间,属于可接受范围,取平均后能到亚LSB;如果超过2个LSB,说明系统里有额外噪声,需要排查。

6.3 通道间串扰:切换通道后的建立时间陷阱

多通道采集时,通道间串扰是常见问题。原因是采样保持电容在切换通道后,还残留着上一个通道的电荷,如果建立时间不够,就会影响新通道的读数。解决办法有两个:一是加长采样时间,让电容充分建立;二是丢弃切换后的第一次转换。

我一般两个都用:先丢弃第一次,再把采样时间设为单通道时的1.5倍。这样虽然牺牲了一点速度,但换来了通道隔离度。如果通道数多、速度要求高,可以考虑用多个ADC芯片并行,或者用带独立采样保持的ADC。

6.4 温漂与长期稳定性:被忽视的精度杀手

短期测试很准,跑几天就偏了,这种情况往往是温漂或长期稳定性问题。温漂主要来自基准源、分压电阻、运放失调。排查方法是把板子放进温箱,或者用热风枪局部加热,观察读数变化。如果变化和温度明显相关,就换低温漂的器件。

长期稳定性则和器件老化、PCB吸潮、焊点应力有关。对于高精度应用,建议定期校准,或者选用长期稳定性好的基准和电阻。另外,PCB清洗不干净、助焊剂残留也会导致漏电流,影响高阻抗节点的电压,这个坑我踩过,清洗后问题就消失了。

6.5 过采样没效果:检查抖动和噪声特性

有人按过采样方法做了,发现ENOB没提升,原因通常是量化误差不是白噪声。比如输入信号恰好是某个固定直流电平,量化误差就是固定的,过采样对它无效。解决办法是加抖动,在输入信号上叠加一个幅度约1个LSB的随机或伪随机信号,让量化误差随机化。

另一个原因是噪声本身不是白噪声,而是有色的,比如1/f噪声。过采样对白噪声有效,对1/f噪声效果有限。这时候要么用斩波或自动调零技术,要么接受现实,换更低噪声的器件。

7. 一些个人体会和后续可以深挖的方向

做ADC这块,我最大的体会是:硬件决定了精度的上限,软件决定了能不能摸到这个上限。很多人把精力全花在算法上,却忽略了前端和基准,结果怎么调都上不去。反过来,硬件做扎实了,软件用最简单的平均就能得到很好的结果。

另外,数据手册一定要精读,尤其是那些“典型值”和“最大值”的区别、测试条件、以及脚注里的小字。很多坑其实数据手册都写了,只是我们没注意。比如采样时间的最小值、基准的负载调整率、通道切换的建立时间,这些参数在选型和配置时都是关键。

后续如果要把这个主题继续深挖,可以往几个方向走:一是Σ-Δ型ADC的噪声整形和数字滤波,这块和SAR的逻辑完全不同;二是ADC的动态性能测试,包括FFT、直方图、拍频测试;三是高精度采集系统的接地和屏蔽实战,这部分经验性很强,值得单独整理。如果大家在实际项目里遇到什么奇葩的ADC问题,也欢迎一起交流,很多坑都是踩过才知道的。

相关新闻

戴森球计划工厂蓝图库:3000+ 社区蓝图,三步装好

戴森球计划工厂蓝图库:3000+ 社区蓝图,三步装好

戴森球计划工厂蓝图库&#xff1a;3000 社区蓝图&#xff0c;三步装好 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints 是戴森球计划工厂蓝图库&#xff…

2026/10/21 1:33:24 阅读更多 →
ZeroGUI-OSWorld-7B模型架构全景图:基于Qwen2-VL的7B多模态GUI智能体参数与权重详解

ZeroGUI-OSWorld-7B模型架构全景图:基于Qwen2-VL的7B多模态GUI智能体参数与权重详解

【免费下载链接】ZeroGUI-OSWorld-7B 项目地址&#xff1a; https://ai.gitcode.com/OpenGVLab/ZeroGUI-OSWorld-7B 点击查看 免费下载 ZeroGUI-OSWorld-7B 是一款由 ZeroGUI 全自动在线强化学习框架训练出的 7B 级多模态 GUI 智能体模型&#xff0c;基于 Qwen2-VL 架构、以 b…

2026/10/21 1:33:24 阅读更多 →
Ingenic摄像头刷入Thingino固件:三阶段实操指南与四种救砖路径

Ingenic摄像头刷入Thingino固件:三阶段实操指南与四种救砖路径

Ingenic摄像头刷入Thingino固件&#xff1a;三阶段实操指南与四种救砖路径 【免费下载链接】thingino-firmware Open-source firmware for Ingenic SoC IP cameras 项目地址: https://gitcode.com/GitHub_Trending/th/thingino-firmware Thingino&#xff08;thingino-f…

2026/10/21 1:33:24 阅读更多 →

最新新闻

车间班组标准化作业提质体系

车间班组标准化作业提质体系

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:14:49 阅读更多 →
ACORN算法的各种密码分析方法全面盘点

ACORN算法的各种密码分析方法全面盘点

ACORN算法的各种密码分析方法全面盘点ACORN算法作为CAESAR竞赛的最终入选算法之一&#xff0c;自提出以来受到了广泛的密码分析。目前针对它的密码分析方法已相当全面&#xff0c;涵盖了从数学结构到物理实现的多个层面。需要说明的是&#xff0c;现有攻击主要针对简化轮数的AC…

2026/10/21 2:14:49 阅读更多 →
超低功耗物联网芯片:从亚阈值电路到能量采集的全栈实现

超低功耗物联网芯片:从亚阈值电路到能量采集的全栈实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:14:49 阅读更多 →
配电网无功优化二阶锥规划实战:从DistFlow建模到YALMIP求解

配电网无功优化二阶锥规划实战:从DistFlow建模到YALMIP求解

写配电自动化项目的调试笔记&#xff0c;我一般都从“凭什么相信这个优化结果”开始讲。因为很多朋友拿到二阶锥规划&#xff08;SOCP&#xff09;这个词&#xff0c;第一反应是“高大上”&#xff0c;但落到配电网无功优化里&#xff0c;真正要解决的是这么一个问题&#xff1…

2026/10/21 2:14:49 阅读更多 →
重构遗留的 `x += 0` 没人敢删?no-useless-compound-assignment 帮你定位并安全清理

重构遗留的 `x += 0` 没人敢删?no-useless-compound-assignment 帮你定位并安全清理

重构遗留的 x 0 没人敢删&#xff1f;no-useless-compound-assignment 帮你定位并安全清理 【免费下载链接】eslint-plugin-unicorn More than 300 powerful ESLint rules 项目地址: https://gitcode.com/GitHub_Trending/es/eslint-plugin-unicorn 一次例行重构之后&a…

2026/10/21 2:14:49 阅读更多 →
Rust+Slint实现动态启动界面源码分享

Rust+Slint实现动态启动界面源码分享

RustSlint实现动态启动界面源码分享一、效果展示二、源码分享1、工程结构2、main.rs3、build.rs4、main.slint5、Cargo.toml三、实现原理1、整体数据流2、动画机制2.1 发射动画2.2 旋转动画2.3 淡出效果3、资源管理3.1 图片资源3.2 模型增删4、关键设计要点一、效果展示 二、源…

2026/10/21 2:13:48 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →