ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

STM32G474 ADC单端与差分输入详解:从原理到实战

STM32G474 ADC单端与差分输入详解:从原理到实战 直接从一件我亲自踩过的事说起。那时候我用STM32G474做电机控制器的电压采样板负责采集母线电压和电机某一相的峰值电压。板子调试完用万用表测信号源明明很干净上到STM32G474的ADC以后读回来的电压却总是比其他表差着一截而且数值漂得厉害波形看起来全是毛刺。后来逐项排查发现根子不在硬件布局也不在滤波电容而是ADC采集模式选错了我默认用了单端输入压根没有去关注G474这个ADC的差分输入通道。把模式切到差分以后数据一下稳定下来误差也恢复到了正常水平。这篇文章就想把STM32G474上ADC的单端输入和差分输入这件事彻底讲透包括两者在硬件电路、寄存器配置、采样原理、抗干扰能力上的区别以及做电压测量时该怎么选、怎么配、怎么处理数据。G474在电机控制、数字电源、工业传感器采集这些场景里用得非常多ADC又是模拟量采样的第一道关卡理解和用对这两种输入模式直接影响你最终测量的精度和稳定性。内容适合正在用STM32G4做嵌入式开发的工程师也适合刚接触ADC采样、想把电压测准的新手。1. 为什么要纠结单端还是差分一次电压采集异常的完整复盘先回到那次异常我不急着讲理论直接还原当时的现象、排查思路和最终定位。因为很多问题只有在具体场景里才会暴露出来。1.1 现场现象同一个信号两种结果当时我在做的是电机反电动势峰值电压的测量信号源是一个幅值大约在0V到3.0V之间变化的模拟信号频率不高几百赫兹输出阻抗大概几百欧。这个信号经过一个跟随器之后直接送进G474的ADC引脚。现象是示波器看信号波形干净毛刺很小ADC读数换算成电压平均值和万用表差差多少呢静态点大约差了20到30mV动态波形的时候波动范围比原始信号明显偏大有时误差能到100mV以上。我一开始怀疑是电源噪声把LDO换了、滤波电容加了还是没解决又怀疑是基准电压不稳换了外部基准依旧没有明显改善。后来我仔细翻了G474的参考手册和CubeMX里的ADC配置页面才发现一个被我忽略的事情G474的ADC通道并不是只有普通单端模式还支持把两个引脚当作一对差分输入甚至同一时刻有些通道可以配成单端、有些配成差分。而我使用了PC0采样PC1相邻引脚悬空整个系统一直是单端模式在工作。1.2 根因初判模式选错了单端模式下ADC测量的是引脚对GND的电压GND上的任何噪声、电源纹波、地弹都会叠加进信号里。我这块板子上面同时跑了TIM1输出PWM频率20kHz还有两个小功率MOSFET在开关。驱动电流在PCB的地平面上来回跑导致ADC的参考地并不那么“干净”。信号源自己的输出阻抗也不小单端采样时采样电容的电荷注入和地噪声耦合在一起最终读数就稀碎。当我查看CubeMX中该通道的配置项发现有Single-ended和Differential-ended的选项后我尝试把PC0/PC1这一对引脚配置成差分输入信号接PC0PC1接信号源的参考地不是板子上ADC的地而是信号源自己那一侧的参考地。结果非常明显读数一下子稳定下来噪声尖刺大幅减少和真实电压的误差也回到几个mV的水平。1.3 定位问题的两条捷径这个案例里问题的定位主要靠两条。第一条是“对比法”。同一个信号源先用万用表测再用示波器并联测最后看ADC读数。如果万用表和示波器都准只有ADC不准那问题基本就圈在ADC采集链路里。再进一步把ADC输入短接到VREF或者GND看读数是否单调稳定。如果短接GND时读数还有较大跳动说明噪声进入了参考地路径或输入路径。第二条是“看数据波动形态”。如果单次转换值的跳动是随机且幅度和信号本身无关多半是采样保持阶段把噪声采进去了如果跳动呈现周期性频率和PWM同步那么大概率是地或电源耦合的问题。差分模式能够抵消的正是这种在两个输入端上表现为共模的噪声成分。所以在这里我就可以先把结论抛出来做电压测量尤其是信号源阻抗偏高、电路板上开关噪声又明显的场景差分输入不是可选项而是确保精度的必备手段。2. 从硬件到代码单端输入与差分输入的底层原理在动手配寄存器之前有必要把G474的ADC内部结构搞清楚。很多人只会在CubeMX里点选项但不清楚它到底改了芯片里什么东西结果出了问题也无从下手。2.1 单端输入以GND为参考的测量方式单端输入是大多数MCU的ADC默认工作模式。芯片把引脚上的电压和VSS地之间的差作为输入信号。STM32G474内部做电压转换时本质上就是一个比较和逼近的过程内部DAC输出一个电压和输入采样电压比较逐步逼近。这里的“输入采样电压”在单端模式里就是ADC引脚的电压参考地就是VSS。单端模式最大的优点是简单、省引脚一个引脚就能采一个点。在信号幅度大、信号源输出阻抗低、PCB地环境干净的场合单端模式完全够用。但如果信号源的参考地和MCU的ADC地之间存在电压差这个压差会直接进入测量结果。比如电机驱动板的功率地和模拟地之间流过大的瞬态电流瞬时压差可以达到几十甚至上百毫伏对12位ADC来说这已经是很大的误差了。2.2 差分输入两个引脚之间的电位差差分输入则完全不同。G474在管脚层面会预留差分对典型的表现形式是一组INP和INM引脚。内部采样时ADC不再去量“引脚对地”的电压而是量化“正输入端INP减去负输入端INM”的结果。也就是说如果INP是2.0VINM是1.8VADC测到的是0.2V而不是2.0V。这样有什么好处假如地噪声在信号源和MCU之间造成了共模电压抬升这个抬升会同时作用在INP和INM上相减之后共模部分就被抵消了有用信号完好保留。这正是差分测量的核心价值共模抑制。在G474的ADC配置中当某个通道被设置为差分时内部还会有一个偏置机制。很多参考手册里会提到差分输入的转换结果会在数值上体现出“中点偏置”简单说就是为了兼容正负极性把结果往中间平移。这样即使INP低于INM转换结果依然落在0到4095的区间内不会因为负数而丢失数据。2.3 采样电容与开关网络为什么输入阻抗和采样周期那么关键不管是单端还是差分SAR型ADC采样的第一步都是闭合采样开关用内部采样电容充电。电容充电的时间常数由信号源内阻、引脚杂散电阻、采样电容容量共同决定。如果充电时间不够采样电容上的电压还没追上实际信号转换出来的值就会偏低这叫作“采样建立不充分”。G474的ADC很喜欢让工程师去设置采样周期常见选项从几个周期到几百个周期不等。工程上最稳妥的做法是用ADC时钟周期乘以采样周期数算出实际采样时间然后按信号源等效阻抗去估算建立时间。如果信号源内阻特别大比如超过10k欧姆那采样时间短了必然读数偏小。我实测过一个10k源电阻的信号配3个ADC时钟周期采样读出来的电压偏低差不多2%到3%换成810个周期的采样时间后误差立刻消失。这跟单端差分没关系是采样建立时间的基础问题。但在差分场景下采样开关是两个充电路径多了一路源阻抗的影响会更复杂所以差分输入反而要求两个信号源的阻抗尽量对称否则共模转差模的误差就会增大。2.4 共模抑制差分真正的价值所在共模抑制这个词听起来高大上其实可以这么理解差分输入像是一个“减法器”两个输入上同时出现的噪声在减法之间被消除了而两个输入上不一致的噪声反而会转化为误差。在电机控制板上PWM开关导致地电位波动本质上是地弹。地弹出现在单端信号上就是引脚相对VSS的电压被叠加了一个噪声出现在差分信号上只要噪声在INP和INM两个引脚上幅度接近就会被抵消掉。所以差分模式对抗地弹、PWM耦合噪声时效果立竿见影。但这不代表差分模式万能。如果INP、INM两个引脚各自的阻抗差很多噪声在这两条路径上产生的压降不同已经不再是“共模”了就会被当作差模噪声测量出来。这就是为什么差分模式下要求两路输入阻抗匹配、走线长度接近最好用双绞线或者等长的PCB走线把信号引到芯片引脚。3. 电压测量核心链条参考电压、量程与转换值换算搞清楚了输入模式接下来就要解决“如何把ADC读到的数字变成真实的电压值”。这中间牵涉参考电压、量程范围、差分模式的偏置处理以及硬件引脚的选择。3.1 VREF如何决定测量量程STM32G474的ADC转换量程由参考电压VREF决定。如果使用内部VREFBUF或外部基准VREF通常被配置为2.5V、3.0V或者接近其上限如果外部基准引脚直接接VDDA那么量程就是VDDA。12位ADC的转换结果范围是0到4095意味着每一步对应的电压是VREF/4096或者VREF/4095具体计算时一般用4096做归一化更严谨。量程和参考电压的稳定度直接相关。VREF上面有稍微大一点的纹波ADC读数就会跟着抖。这也是为什么在实验室环境里做高精度采集时一定要给基准做滤波甚至用单独的基准芯片。G474内部也有VREFBUF用起来方便但要注意它的精度和温漂是低于专用外部基准芯片的。单端模式下量程就是0到VREF。一旦输入超过VREFADC输出会滞回在4095或饱和低于0V则会收到0附近。所以做电压测量时输入信号范围必须始终落在参考电压范围内否则读数完全失真。3.2 单端和差分模式下12位转换值与电压的换算先说单端模式这是绝大多数人熟悉的float single_to_voltage(uint16_t adc_data, float vref) { return (float)adc_data * vref / 4096.0f; }差分模式则不完全是这个公式。因为差分结果可能对应正负两种极性寄存器里往往会有一个偏置码。常见的方式是把0x800附近作为“零点”也就是两个输入相等时ADC落在一个中间值附近。那么换算就要带上偏移量。大致的工程公式如下float diff_to_voltage(uint16_t adc_data, float vref) { int16_t signed_data (int16_t)(adc_data - 0x800); return (float)signed_data * vref / 4096.0f; }这个公式的意思是先减掉中点偏置把结果当作有符号数处理再按参考电压折算成电压。这样INP低于INM时得到的电压是负数。具体的偏置值G474不同系列、不同分辨率下可能略有差异官方手册里会给出精确的偏移量定义我建议以实际测试为准特别在差分测量时先短接两个输入把读回的数字码记录下来用它作为零点偏移这个做法比硬套公式更可靠。3.3 硬件引脚与通道映射哪些通道可以用作差分STM32G474的ADC通道数量很丰富不同封装下可用引脚有所区别。在CubeMX里你把某个模拟通道的输入模式选成差分后它会自动为你配对INM引脚。常见的情况是同一组相邻引脚中一半做正输入一半做负输入比如PC0和PC1这种相邻关系经过配置后可以组成一对差分输入。实际画板的时候你要特别注意计划用差分模式的话INP和INM两个引脚都必须从原理图阶段就预留出来并且周边走线尽量对称。不要等PCB画完了才想起来要用差分结果负输入端被绕了很远干扰自然就大了。3.4 采样保持时间与通道建立时间如何评估采样时间的选择不是拍脑袋。G474里ADC时钟可以由PLL分频而来通常几十MHz。采样时间可选择的范围从1.5个ADC时钟周期到810.5个周期。计算公式大致是T_sample (采样周期数) / F_adc信号源等效阻抗和采样电容的关系可以参考这个近似思路采样时间至少要达到信号源阻抗和内部采样电容所组成RC网络时间常数的5倍以上最好10倍。比如假设内部采样电容约4pF到10pF信号源等效阻抗10k欧姆RC约为0.04微秒到0.1微秒那么5倍就是0.2到0.5微秒对应的采样时间需要大于这个值才比较稳妥。现场调试时最直观的方法是把采样周期从短到长逐步加大同时观察ADC读数变化。如果读数越变越大直到某个点后保持稳定那说明之前采样建立不足。等到读数稳定后再留一些余量就是当前通道合适的采样周期数。4. 工程实战单端/差分模式配置与电压测量代码实现原理讲得再多最终还是要落到工程上。下面我按CubeMX配置、HAL库代码和寄存器级关键位的顺序把整个流程走一遍。4.1 基于CubeMX的时钟、ADC和DMA配置要点新建STM32G474工程后首先保证ADC所需的时钟正确。把ADC时钟配置在芯片允许的最高频率附近但不要超过上限。G474的ADC时钟通常来自PLL输出的系统时钟分频最大到几十MHz具体以芯片数据手册为准。ADC时钟过高会影响转换精度所以很多项目里反而会选择把ADC时钟配置在20MHz左右折中考虑速度和精度。然后打开ADC模块选择要使用的通道。如果只做单次轮询采样可以不开DMA但实际电压测量里我希望连续采样一组数据然后做均值这时候DMA是必须的。CubeMX里把ADC配置为Continuous conversion mode扫描顺序里加入需要转换的通道然后在DMA设置里添加ADC通道数据传输模式设为Circular。在Pinout页面找到对应通道把Mode设置为Single-ended或Differential-ended。选Differential-ended后工具会自动将另一个负输入引脚也标记为模拟输入原理图里那个引脚就要接到信号参考地或传感器负端。4.2 寄存器级别的模式切换关键位CubeMX本质上就是帮你填寄存器。如果你需要在不使用CubeMX的情况下做寄存器配置需要关注几个关键点DIFSEL寄存器控制每个通道是否为差分模式。某一位置1表示对应通道差分使能置0则是单端。CFGR寄存器的RES位设置转换分辨率12位/10位/8位/6位。注意在差分模式下某些分辨率下的偏移处理方式和有效位数略有区别建议保持12位最稳妥。SMPR寄存器设置每个通道的采样时间也就是前面讲到的采样建立时间是影响精度的直接因素。SQR寄存器定义规则序列也就是当前扫描转换的通道顺序DMA搬回来的数据顺序由它决定。DR寄存器保存最终转换结果HAL库封装后通过ADC_GetValue之类的接口读取。从HAL库的角度你要改差分/单端模式代码里对应的是ADC_ChannelConfTypeDef结构体中的Configuration字段或者直接通过CubeMX重新生成初始化代码。总之你理解了DIFSEL这个关键寄存器就一定理解所有配置工具的套路。4.3 一个可直接参考的电压采样代码示例下面我给出一个基于HAL库的简单单端差分混合采样示例逻辑是分阶段采集两个通道第一个通道单端测母线电压第二个通道差分测信号负端相对正端的电压。这个代码可以直接跑串口看数据。#include main.h ADC_HandleTypeDef hadc1; DMA_HandleTypeDef hdma_adc1; #define ADC_BUF_SIZE 16 uint16_t adc_buf[ADC_BUF_SIZE]; float adc_value_to_voltage(uint16_t raw, float vref, int32_t diff_offset) { int32_t signed_raw (int32_t)raw - diff_offset; return (float)signed_raw * vref / 4096.0f; } void adc_measure_single(void) { ADC_ChannelConfTypeDef sConfig {0}; sConfig.Channel ADC_CHANNEL_3; // 例如PC2对应的输入通道 sConfig.Rank ADC_REGULAR_RANK_1; sConfig.SamplingTime ADC_SAMPLETIME_47CYCLES_5; HAL_ADC_ConfigChannel(hadc1, sConfig); HAL_ADC_Start_DMA(hadc1, (uint32_t *)adc_buf, ADC_BUF_SIZE); // 等待DMA搬完一个批次 HAL_Delay(2); uint32_t sum 0; for (int i 0; i ADC_BUF_SIZE; i) { sum adc_buf[i]; } float avg (float)sum / ADC_BUF_SIZE; float vol adc_value_to_voltage((uint16_t)avg, 3.3f, 0); printf(single voltage: %.3f V\r\n, vol); } void adc_measure_differential(void) { ADC_ChannelConfTypeDef sConfig {0}; sConfig.Channel ADC_CHANNEL_6; // 差分对对应的通道号 sConfig.Rank ADC_REGULAR_RANK_1; sConfig.SamplingTime ADC_SAMPLETIME_810CYCLES_5; // 源阻抗高时适当加大采样时间 HAL_ADC_ConfigChannel(hadc1, sConfig); HAL_ADC_Start_DMA(hadc1, (uint32_t *)adc_buf, ADC_BUF_SIZE); HAL_Delay(2); uint32_t sum 0; for (int i 0; i ADC_BUF_SIZE; i) { sum adc_buf[i]; } float avg (float)sum / ADC_BUF_SIZE; // 这里用0x7FF只是参考零偏实际要短接标定 float vol adc_value_to_voltage((uint16_t)avg, 3.3f, 0x7FF); printf(diff voltage: %.3f V\r\n, vol); }注意上面代码里差分通道的“零偏”我给了一个初值但这只是示意。实际使用务必在硬件上把INP和INM短接然后读一次ADC结果把这个结果当作真正零偏再代入计算。4.4 差分模式下的DMA数据组织形式当规则序列里既有单端通道又有差分通道时DMA会按SQR里的顺序依次把结果搬进缓冲区。比如SQR里先配了单端通道A再配差分通道B那么adc_buf[0]是A的结果adc_buf[1]是B的结果。这个顺序不会因为你中间改了配置而变化所以代码里取数据时一定要按SQR顺序来。很多工程师在“多通道ADCDMA”上踩坑是因为缓冲区结果顺序和预期不对。排查方法很简单先把所有输入通道短接到GND看哪一路读数为0再把某一个引脚单独接一个固定电压观察缓冲区里哪个位置变化就能反推出映射关系。这里也提醒一下差分通道和单端通道混用时数值范围可能不同。单端通道的零点通常接近0差分通道零点在中点附近。如果你的主控端用同一套换算逻辑去处理所有通道结果会非常混乱最好的做法是每个通道单独维护一个转换函数和标定偏移。5. 实测数据对比单端、差分、加运放后的真实表现理论归理论对抗干扰的理解要靠数据落地。这一节我放一组我在调试现场记录下来的对比测试方便大家直观感受模式选择对电压测量的影响。5.1 测试平台与信号源主控STM32G474RET6ADC时钟约20MHz参考电压VDDA3.3V外部基准3.3V供电信号源可调直流信号源内阻约100欧姆输出0.5V、1.5V、2.5V三个测试点干扰源板载20kHz PWMMOS管驱动一个感性负载负载电流约1A测量方式单端模式与差分模式分别接线各采样100次取平均值和标准差信号源参考地和PCB模拟地之间我故意用了一根较长的跳线连接以模拟现场地电位不干净的情况。这样测试更接近真实电机控制板的恶劣环境。5.2 数据对比表格误差、噪声、分辨率对比输入模式输出目标电压平均采样电压偏差波动范围(峰峰值)单端0.500V0.512V12mV18mV单端1.500V1.534V34mV42mV单端2.500V2.547V47mV55mV差分0.500V0.503V3mV6mV差分1.500V1.502V2mV5mV差分2.500V2.501V1mV4mV可以清楚看到在有PWM干扰的情况下单端模式不仅平均误差大波动范围也明显高差分模式把共模噪声剥离后平均误差和波动都大幅下降。如果你对测量精度要求更高外部加一个仪表放大器或者一个低噪声运放做单端转差分把信号先调理成合适的共模电平再送进G474的差分ADC效果会更明显。我在另一个项目中加了INA128后同样干扰条件下测量误差控制在1mV以内。5.3 为什么差分读数更“干净”这个现象的本质在地层面。单端模式下ADC参考地是芯片的VSS信号源参考地和芯片VSS之间通过长跳线连接跳线上有寄生电感。PWM开关的大电流流经这个寄生电感时产生了高频压降这个压降直接叠加到信号上。差分模式下信号源的正端和负端同时被引到ADC的两个输入地噪声在两根线上产生的压降理论上接近一致于是ADC内部相减时被消除。这就是数据表格里波动范围大幅下降的原因。从数据还能看到一个细节电压越高单端的误差反而越大这说明地噪声和信号绝对值有关可能是信号源内部的输出级在工作点抬升时其参考地受干扰的影响也在加重。差分模式因为没有把GND当参考所以这种非线性影响被抑制得很好。5.4 差分模式“不够用”的时候共模电压与输入范围限制差分模式并不是无脑替代单端。G474的差分ADC输入对共模电压范围有要求。两个输入引脚上的电压都需要落在芯片允许的输入范围内。通常要求INP和INM都在VSS和VREF之间或者在这个范围内的一个更窄窗口里。如果负输入端接了负电压或者正输入端超过参考电压芯片内部ESD保护和采样开关网络会出现异常读数绝对不可能是正确的。因此如果你的信号本身就包含负电压比如交流信号的负半周期或电机反电动势负向部分不能直接把负电压送进差分ADC的INM脚认为“反正差分能测负差”。你需要先把信号整体抬升一个直流偏置把两个输入都移到ADC允许的范围内再让ADC去测量。这个问题在电机驱动里尤其常见。很多人想直接测线圈两端的差分电压却忽略了线圈的共模电压可能高于VREF或者低于VSS。解决办法通常是先用电阻分压和运放做电平搬移再进入ADC。6. 常见问题与经验这些坑我都帮你踩过了最后这部分我把调试STM32G474电压测量过程中最常见的问题和排查手段整理成速查表然后把一些文字里不太方便展开的经验单独拉出来讲。这些内容大多数是参考手册里不会直接写的。6.1 常见问题速查表问题现象可能原因排查与解决办法电压读数偏小采样建立时间不足增大采样周期直到读数稳定读数随机跳变地噪声、电源噪声改用差分模式加强基准滤波检查地平面分割差分读数零点偏移大没做硬件短接标定短接INP和INM读本底码再作零偏修正差分读数始终乱跳INP与INM阻抗不对称保证两路信号源内阻接近走线等长对称多通道DMA数据错位SQR顺序与缓冲区索引不一致固定电压注入各通道逐个定位索引通道读数接近满量程输入电压超过VREF分压或运放衰减信号范围内部基准读数漂移VREFBUF温漂对精度要求高时改用外部基准芯片6.2 采样值跳动的处理手段如果已经确认模式、接线都正确ADC读数仍有小幅跳动先别急着在代码里疯狂滤波你要先分辨噪声来源。最简单的方法是用示波器观测G474的VDDA、VREF和输入引脚。如果VDDA纹波在几十mV级别优先解决电源而不是滤波。如果电源纹波已经挺干净但读数还是跳动可能来自采样开关的电荷注入或信号源阻抗过高。这时把采样周期加到几百个周期再试试一般会有改善。仍然不行的考虑加RC低通RC的截止频率要高于信号带宽、低于噪声频率这样可以把高频毛刺滤除又不影响有用的动态信号。RC的R值不能太大否则又会拉长采样建立时间。软件上做均值滤波是最简单的做法比如连续采集16次去掉最大最小再平均或者用移动平均。G474还内置了硬件过采样器可以配置OSR倍数相当于硬件层面的累加平均。我用过硬件过采样128倍后的数据静态信号下波动可以压到1个LSB以内动态信号则要小心过采样带来的带宽下降。6.3 接线布局和参考地分割的经验模拟电路设计里“地”是最容易被低估的词。单端测量所有噪声都汇入地差分测量地不再是参考但它依然决定两个输入信号的回路。给PCB布线提几个实用的建议ADC的两个输入引脚尤其差分对的INP和INM从焊盘出来就尽量并行走线间距固定不要跨过别的数字信号线。模拟地、数字地、功率地做单点连接。不要整块铜皮连在一起不然PWM的开关电流会在模拟区域制造地电位差。VREF引脚旁边放1个0.1uF和1个1uF电容尽量靠近引脚。如果信号来自外部连接器差分信号建议采用屏蔽双绞线或者在同一屏蔽层内走线屏蔽层单端接地。我以前遇到过ADC输入引脚旁边走了一根SPI时钟线SPI一通信ADC读数就周期性跳动拔掉SPI设备读数就恢复。后来把信号线挪开远离SPI走线问题就再没出现过。这类问题不能靠代码解决只能靠layout解决。6.4 关于G474多ADC同步采样的补充G474最强大的地方是内部集成了多个独立ADC可以配合定时器触发实现同步采样。三相电机电流、多相电源电压的测量往往需要用ADC1/ADC2/ADC3同时采多个通道如果用单ADC轮流扫描不同通道之间会存在时间差相位不对计算出来的功率、角度、电流环反馈就会失真。在这种多ADC同步采样场景下每个ADC内部的通道仍然可以独立设置为单端或差分。比如电流采样用差分模式采集采样电阻两端的电压母线电压用单端模式采集分压后的电压两者不冲突。配置时要注意各ADC的触发源要一致DMA请求要分别映射不然同步效果就要打折扣。我在做三相电机FOC控制时就是让ADC1、ADC2、ADC3在PWM中点同时触发分别采集三相电流。电流采样使用差分输入最大程度抑制开关噪声效果比之前用单端加软件滤波好了非常多。这个经验在电机控制类项目里可以少走不少弯路。最后再分享一个小技巧。如果你在使用G474做差分电压测量调试阶段千万不要凭数据手册的公式直接写死零点偏移。最稳妥的办法是在硬件上设计一个“校准开关”可以用跳线或继电器把INP和INM短接上电后先读一次零点然后再把跳线断开进入正常测量。这样即使芯片温漂、基准漂移软件也能基于当前环境自动修正零点。这个小设计在工程量产和测试中非常实用相当于把模拟系统的误差源头消掉了一大半。
返回列表