简介:AFE4300是德州仪器推出的高性能模拟前端芯片,主要用于医疗、工业及环境监测中的微弱传感器信号采集与转换。这份参考资料面向嵌入式软硬件开发者,覆盖了从原理图设计、寄存器配置到数据采集的完整流程。压缩包内共11个文件,以C语言源码、PDF技术文档和CAJ学术论文为主,其中源码包含SPI通信驱动、卡尔曼滤波算法及主程序框架,PDF涵盖数据手册、智能秤原理图和人体电阻抗测量论文,整体大小约11.26MB。通过参考代码可以快速理解芯片的初始化流程与读写时序;数据手册则详细说明了可编程增益放大器、滤波器等模块的选型与配置要点;电路图提供了电源管理、信号调理和抗干扰布局的实用范例。目前已有1513人学习,适合从事称重、人体成分分析或工业监测产品开发的工程师作为设计参考。
1. AFE4300参考资料:从一颗模拟前端到体重和体脂两路信号
搜“AFE4300参考资料”这个关键词的,多半是正在做体脂秤、人体成分分析仪或者医用阻抗测量设备的硬件工程师。AFE4300是一颗把称重通道和生物阻抗测量(BIA)通道封装进同一颗芯片的模拟前端,一句话说清它的价值:一颗芯片把体重和体脂率两路原始信号同时采回来,主控MCU通过SPI读写寄存器就能完成模式切换和数据读取。这篇笔记不照着数据手册复述,而是按一份参考资料真正被用起来的顺序讲:先理解内部架构,再接线、写驱动、做校准,最后把几个容易翻车的现场说透。适合刚拿到方案准备画板的人,也适合板子已经回来、但BIA数据怎么调都不对的人。
2. 拆开AFE4300:称重通道与BIA通道的架构差异和选型理由
AFE4300表面上看是一颗芯片,内部其实是两条独立的信号链。称重通道负责把桥式称重传感器的毫伏级差分信号变成高分辨率数字码;BIA通道负责产生正弦电流激励,并同步测量待测阻抗的模值和相位角。两条链共用一个SPI接口和一组寄存器,但同一时刻只能开启其中一条。这个分时设计直接决定了产品的软件流程:被测者先站上秤面完成称重,再握住电极完成BIA测量,两项不能并行。很多第一次用的人在这里会犯迷糊,以为能同时拿到两个数据,实际上需要按状态机切来切去。
2.1 称重通道:24位Σ-Δ ADC为什么能替代称重专用芯片
称重通道本质上是一个完整的Σ-Δ ADC,标称分辨率24位,内部带可编程增益放大器。它处理的是桥式称重传感器送来的差分信号,传感器满量程输出通常只有几毫伏,因此PGA增益和基准电压的选择直接决定实际分辨率。常见做法是外部给传感器桥路提供稳定的激励电压,传感器差分输出接到AFE4300的AINP/AINN输入端,内部PGA先把信号放大,再由Σ-Δ调制器完成模数转换。主控读回原始码后,通过标定系数换算成重量。
很多人会拿它和HX711这类称重专用ADC对比。从功能上看,两者都能把称重传感器信号变成数字量,HX711方案更便宜、代码资料也烂大街。AFE4300集成了24位分辨率的称重通道,噪声指标在体脂秤这个量程下完全够用,多出来的BIA通道才是选它的真正理由。如果产品只要称重,用AFE4300属于浪费;如果产品同时需要体脂测量,集成方案能省掉一颗独立芯片和一路SPI接口,BOM和PCB面积都更干净。代价也很明确:称重和BIA不能同时采样,软件里必须做分时切换。
称重通道的基准电压可以从内部基准取,也可以从REFP引脚外接更稳定的基准源。我一般建议对外部基准源犹豫的时候,先信内部基准。内部基准的温漂在消费级体脂秤的精度目标下通常够用,等整机测试发现重量读数随温度漂移明显时,再考虑换成外部基准。这样能减少第一版硬件的调试变量,把重心先放在信号链通路上。
2.2 BIA通道:DDS激励源、IDAC与相位角的测量原理
BIA通道是AFE4300真正值钱的部分。它内部有一个DDS正弦波发生器,通过SPI写入频率控制字,产生设定频率的正弦数字序列,再经过DAC转成模拟信号,最后由电流输出级转换成恒流正弦激励,从IOUT+流出、IOUT-回流。待测阻抗上的压降通过VIN+/VIN-差分放大后,由ADC同步采样。由于激励源和ADC共享同一个时钟参考,固件可以在采样序列上做相关运算,直接得到阻抗模值|Z|和相位角θ。
相位角不是玄学,它的物理来源是细胞膜电容。人体组织不是纯电阻,细胞膜在低频下近似绝缘,电流主要绕行在细胞外液里;频率升高后,电流开始穿透细胞膜进入细胞内液。因此同一个人的阻抗,在不同频率下测出来的模值和相位角都不一样。低频数据反映细胞外液状态,高频数据更能反映总体水分,这也是多频BIA能推算更多身体成分参数的依据。固件里如果只拿一个50kHz的阻抗模值去套公式,也能估算体脂率,但精度天花板很低。
BIA激励电流的幅度需要兼顾信噪比和安全余量。激励电流太小,人体阻抗上的压降就小,ADC信噪比恶化;激励电流太大,虽然测量更稳,但安全余量变小。常见做法是先把激励电流设在几百微安这个量级,再用精密电阻做校准。AFE4300的寄存器里能对激励电流做调整,具体档位以原厂寄存器描述为准。首次调试时,我习惯用示波器在IOUT+对地挂一个精密电阻,先确认实际激励波形和频率符合配置,再接入电极和人体,避免一上来就把变量甩给生物组织。
2.3 接线差异:四电极BIA与称重传感器的硬连接
称重传感器是桥式结构,四根线里电源两根、信号两根,信号线接AFE4300的差分输入端。BIA用的四电极接法完全不是一回事,很多人第一次看原理图会混淆。BIA的四根线分为两组:IOUT+和IOUT-是电流注入端,负责把激励电流送入人体;VIN+和VIN-是电压检测端,负责测量人体上的压降。两组线必须分别接到电极片上,不能把IOUT和VIN短接在一起。
| 接线对象 | AFE4300引脚 | 作用 | 注意事项 |
|---|---|---|---|
| 称重传感器信号+ | 称重差分正输入 | 传感器毫伏信号 | 走线短而粗,远离数字线 |
| 称重传感器信号- | 称重差分负输入 | 传感器毫伏信号 | 差分对等长,避免形成地环路 |
| BIA电流注入电极 | IOUT+ / IOUT- | 流入人体激励电流 | 电极接触面积要大,减小接触阻抗 |
| BIA电压检测电极 | VIN+ / VIN- | 采样人体压降 | 高阻输入,不流过电流 |
四电极接法的关键优势在于,电极与皮肤之间的接触阻抗不会进入测量回路。电压检测端是高阻输入,实际流过的电流极小,因此接触压降几乎可以忽略。这个设计让BIA测量对电极贴得紧不紧不那么敏感,重复性比两电极方案好很多。如果产品结构上只能做两个电极触点,那就得在算法里对接触阻抗做额外补偿,校准流程也会更复杂,能上四电极就别用两电极。
3. 从参考资料到最小系统:寄存器配置与SPI驱动
AFE4300的全部控制都通过SPI接口完成,寄存器读写是唯一入口。刚开始调的时候,寄存器就是一只黑匣子,写进去的值和测出来的数据对不上很正常。这一章给出一个能直接抄的驱动骨架:SPI读写函数、初始化序列、以及最需要确认的几个寄存器位。寄存器位的具体命名和偏移地址,不同批次的数据手册措辞可能有差异,但通信帧格式是稳定的,可以先照着写。
3.1 SPI读写时序:命令字节加16位数据的帧格式
AFE4300的SPI帧格式是固定的:CS拉低后,先发一个命令字节,高比特位表示读写方向,低7位是寄存器地址,随后再传输16位数据。写操作时数据从DIN输入,读操作时数据从DOUT输出。整个传输过程CS必须全程保持低电平,传完再拉高。很多SPI外设驱动习惯每次传输一个字节,这里需要改成连续传输3个字节的格式。
// 写寄存器:addr 7bit,data 16bit void afe4300_write_reg(uint8_t addr, uint16_t data) { uint8_t cmd = (addr & 0x7F); // bit7 = 0 表示写 afe4300_cs_low(); spi_transfer_byte(cmd); // 命令字节 spi_transfer_byte((data >> 8) & 0xFF); // 数据高8位 spi_transfer_byte(data & 0xFF); // 数据低8位 afe4300_cs_high(); } // 读寄存器:返回16bit uint16_t afe4300_read_reg(uint8_t addr) { uint8_t cmd = 0x80 | (addr & 0x7F); // bit7 = 1 表示读 uint8_t hi = 0, lo = 0; afe4300_cs_low(); spi_transfer_byte(cmd); hi = spi_transfer_byte(0x00); // 同时接收高8位 lo = spi_transfer_byte(0x00); // 同时接收低8位 afe4300_cs_high(); return (hi << 8) | lo; }逻辑上比较简单,但有两个参数必须和具体MCU的SPI外设对齐。第一,SCLK空闲电平要配置为低,数据在时钟上升沿锁存,如果你的MCU默认配置相反,所有寄存器读写都会错位。第二,SPI时钟频率不要一开始就拉满,AFE4300的SPI时序极限值以数据手册交流参数表为准,工程上我习惯先设在1MHz以下跑通,再逐步提频。DOUT是三态输出,CS拉高后DOUT会释放,多个SPI从机共享MISO线时不会冲突。读寄存器时主机要持续发送时钟,也就是在命令字节后补两个字节的空数据,从机才会把数据推出来,这个细节很容易漏。
3.2 最小初始化序列:从复位到开出BIA激励
初始化顺序有讲究。先做硬件复位,再软件复位寄存器,然后配置ADC和基准,最后写入DDS频率参数并开启BIA。如果反过来先开BIA再配频率,激励信号可能以错误的频率跑一小段时间,示波器上能抓到毛刺,严重的会把后级放大电路打到饱和。以下是一个可裁剪的初始化骨架,寄存器宏名需要对照你手上的数据手册寄存器表填入实际地址。
void afe4300_init_bia(uint32_t freq_hz) { // 1. 硬件复位:拉低RESET引脚至少1us afe4300_reset_pin_low(); delay_us(10); afe4300_reset_pin_high(); delay_ms(5); // 2. 软件复位:写RST位,恢复寄存器默认值 afe4300_write_reg(AFE4300_REG_ADCCON1, AFE4300_RST); delay_ms(2); // 3. 配置ADC控制:关BIA,先量称重通道 afe4300_write_reg(AFE4300_REG_ADCCON1, 0x0000); afe4300_write_reg(AFE4300_REG_ADCCON2, AFE4300_ADC_SEL_WEIGHT); // 4. 按目标频率配置DDS参数表 // 数据手册/应用笔记会给出每个常用频率的DAC配置表 afe4300_set_bia_frequency(freq_hz); // 5. 设置激励电流档位 afe4300_write_reg(AFE4300_REG_IDAC, AFE4300_IDAC_350UA); // 6. 开BIA模式,启动转换 afe4300_write_reg(AFE4300_REG_ADCCON1, AFE4300_BIA_EN | AFE4300_START); delay_ms(10); // 等待DDS和ADC稳定 }初始化序列里最容易被跳过的是第4步。DDS频率配置不是写一个寄存器就能解决的,通常需要往一串DAC相关寄存器里写入一组预计算好的幅度序列,这些序列原厂应用笔记会以配置表的形式给出。第一次调板子,直接抄配置表里的值,不要自己去改DAC序列里的某个数。DDS输出频率和幅度由整组寄存器共同决定,单独改一个寄存器只会让波形畸变,测出来的阻抗值完全没法解释。如果目标频率不在配置表里,优先选一个接近的标准频点,而不是自己算DAC值。
3.3 寄存器表里必须先确认的5个位
寄存器手册读起来枯燥,但有几个位如果不确认,后面排查问题会非常痛苦。这5个位在第一次上电调试前就应该逐一核对。
| 寄存器位 | 作用 | 调试建议 |
|---|---|---|
| RST | 软件复位 | 上电后先置位,确保寄存器回到默认态 |
| BIA_EN | BIA通道使能 | 与称重模式互斥,切换前先清掉旧模式 |
| START | 启动转换 | 读数据前必须确认本次转换已完成 |
| REFP | 基准选择 | 内部/外部基准切换后需要重新校准 |
| PGA增益 | 输入信号放大倍数 | 信号太小就加增益,但噪声也会一起放大 |
其中START位是最容易踩坑的地方。很多Σ-Δ ADC是“写START后等待转换完成,再读数据”的流程,AFE4300也一样。如果写完START立刻去读数据寄存器,读到的往往是上一次转换的旧数据,或者一个中间态的不稳定值。正确做法是轮询状态位或者固定延时,延时长短取决于内部滤波器的建立时间。还有一点,切换到称重模式前先清掉BIA_EN,切换后重新写START,否则转换通道根本没切过去,读出来的数据却看起来像模像样,这种问题最坑人。
4. 校准是精度的一半:称重标定与BIA电阻校准
寄存器能读出原始码只是第一步,原始码要变成可信的重量和阻抗,必须校准。AFE4300的绝对精度由基准源和内部ADC保证,但整机精度还取决于传感器灵敏度、电极接触、PCB走线寄生参数这些外部因素。校准的目的就是把外部这些不可控因素吸收进一组系数里。这一章讲两条校准流程:称重通道的两点标定,以及BIA通道的电阻频率扫描校准。
4.1 称重两点校准:砝码、增益、偏移
称重通道的输出可以近似为线性:重量 = (原始码 - 零点码) / 斜率。斜率代表每个ADC码对应的重量,单位是LSB/g,它由传感器灵敏度和PGA增益共同决定。用两个已知重量的标准砝码,就能把零点和斜率同时求出来。这个方法在产线上也能用,只需要两个工位值,成本低、操作简单。
typedef struct { float slope; // LSB/g,实际是码值 / 重量 float offset; // 零点码值 } weight_cal_t; // 使用两个标准重量 m1 < m2,从ADC读到 raw1、raw2 weight_cal_t weight_calibrate(float m1, float m2, int32_t raw1, int32_t raw2) { weight_cal_t cal; cal.slope = (float)(raw2 - raw1) / (m2 - m1); cal.offset = raw1 - cal.slope * m1; return cal; } // 使用校准参数计算重量 float weight_calc(weight_cal_t *cal, int32_t raw) { if (cal->slope == 0.0f) return 0.0f; return (raw - cal->offset) / cal->slope; }标定时要注意三个参数。第一,两个砝码的重量跨度要覆盖产品的实际使用范围,比如体脂秤用20kg和80kg两个点,比用1kg和2kg标出来的线性更好。第二,每次放砝码后要等传感器和机械结构稳定再读数,通常等1到2秒,读数取多次平均值。第三,标定系数要永远基于原始码计算,不要在已经做过滤波的重量值上再标定一次,滤波会引入滞后,两个标定点之间会产生额外的非线性误差。量程内的线性误差如果偏大,可以增加标定点做分段线性,多数消费级产品两点标定已经够用。
4.2 BIA校准:精密电阻替代人体做频率扫描
BIA系统里的校准比称重更讲究,因为阻抗是复数,有模值还有相位角。PCB走线电容、电极线缆、放大器的相移都会让测量结果偏离真实值,尤其在高频段,相位角偏个两三度很常见。校准方法是用一组已知精度的无感电阻替代人体接入测量回路,在每个工作频率下记录AFE4300实测的阻抗模值和相位角,然后算出校正系数。
| 校准电阻阻值 | 适用场景 | 说明 |
|---|---|---|
| 100Ω | 低阻抗段校准 | 模拟手脚接触良好的低阻抗人体 |
| 200Ω | 典型人体阻抗 | 多数体脂秤校准主频点 |
| 510Ω | 高阻抗段校准 | 模拟偏瘦或接触阻抗偏大的情况 |
| 1kΩ | 验证线性 | 确认系统在高阻段没有明显增益压缩 |
校正系数按复数形式处理:设参考电阻的真实值是R_real(纯实数),AFE4300读到的复数值是Z_meas = Rc + jXc,那么每个频点的校正系数k = R_real / Z_meas。之后的未知阻抗Z_unknown = k × Z_meas',其中Z_meas'是同一频点下测到的未知复阻抗。用复数除法而不是简单的模值比例,是因为它能同时把相位误差修正掉。只修正模值不修正相位,算出来的体脂率在边缘体型的用户身上会有明显偏差。
校准电阻要用无感电阻,这一点很多人会忽略。普通绕线电阻在高频下呈现明显感性,它本身的阻抗就不是纯实数,拿它当参考只会把错误当成真值。无感电阻的精度选0.1%或者更好,温漂系数要低,校准环境温度也要记录。如果产品要在不同季节、不同地域工作,建议在固件里保留多套校准系数,按温度区间切换,比一套系数硬扛全温度范围靠谱得多。
4.3 标定数据存储与固件里的结构体
标定数据掉电不能丢,通常存进EEPROM或者片内Flash。存储格式要注意:浮点数直接按IEEE754格式存,读回来时校验CRC,防止Flash写入过程中断电导致标定数据损坏。体脂秤这类产品产线校准时,一旦标定数据损坏,用户端没法重新标定,整机只能返厂,所以CRC校验不是可选项。
typedef struct { uint32_t magic; // 固定魔数,识别标定数据有效性 uint16_t crc; // 整包CRC校验 uint16_t cal_date; // 标定日期,用于追溯 weight_cal_t weight; // 称重标定系数 // BIA每个工作频率一组复数校正系数 struct { float real_k; // 校正系数实部 float imag_k; // 校正系数虚部 } bia[8]; // 按实际频率数量调整 } device_cal_t;存储结构体设计上有两个细节值得注意。第一,所有字段用固定宽度类型,不要用int或者float直接定义,避免编译器对齐导致结构体在不同工程里大小不一致。第二,写入Flash或EEPROM前先把结构体整体清零再填充,避免旧数据的残留字段污染新标定结果。读回时先校验magic再校验CRC,两个都通过了才把标定参数加载到运行态,否则直接进入产线标定模式。
5. AFE4300避坑指南:5个容易翻车的现场
这一章整理的是调AFE4300过程中最容易反复折腾人的几个问题。每条都按“现象→原因→解决”来写,都是从实际调试中趟出来的经验。有些问题不一定会出现在你的板子上,但一旦出现,没有排查思路会非常浪费时间。
5.1 第一坑:SPI写入不生效,寄存器读回来全是默认值
现象:配置完寄存器后读回来,发现值没变,或者所有寄存器读出来都是0xFFFF,驱动无论如何配置,芯片行为都没变化。
原因:多半不是芯片坏了,而是SPI帧格式不对。AFE4300要求CS在整个24位传输期间保持低电平,有些MCU的SPI驱动会在每个字节之间自动拉高CS,导致命令字节和数据被拆成了三段独立传输,芯片直接丢弃。还有一种情况是SCLK极性配置反了,数据在错误的边沿被采样,芯片收到的命令字节是乱的。
解决:先用逻辑分析仪或者示波器抓CS、SCLK、DIN三根线的时序,确认CS低电平覆盖了完整的3字节窗口。如果是MCU驱动导致的CS自动拉高,改用软件控制CS的GPIO模式,绕开SPI外设自动CS功能。SCLK极性则在驱动里显式配置为CPOL=0,CPHA可以先用上升沿采样,逐项排查。
5.2 第二坑:BIA相位角数据漂移,同一人同一姿势两次测不一样
现象:固定电阻校准时相位角很稳,换成人测就漂,隔几分钟重测同一个人的同一个部位,相位角差出1度以上,数据变化趋势没法解释。
原因:相位角的稳定性对激励频率的稳定度和测量窗口内的信号质量很敏感。人体不是固定电阻,血液流动、呼吸、电极压力变化都会让阻抗发生小幅度起伏。如果固件里测量窗口取得太短,只拿少量采样点做相关运算,噪声会被直接带进相位结果。
解决:延长单次测量的采样窗口,用更多的周期做相关平均。常见做法是把激励信号连续跑几十个周期,ADC同步采样后整段做DFT或者锁相放大,而不是只取一个周期的数据。测量时让被测者保持静止,手部稳定握住电极,多次测量取中位数而不是平均值,能有效剔除呼吸和肢体微动带来的粗大误差。
5.3 第三坑:称重读数跳字严重,末位跳动超过预期
现象:空载时ADC原始码跳动幅度超过设计指标,放上砝码后读数不稳定,滤波后依然有规律的波动。
原因:称重通道是24位高分辨率ADC,对电源噪声和基准噪声非常敏感。最常见的情况是模拟电源和数字电源没有分开,DDS和SPI的开关噪声通过电源网络耦合进称重前端。还有一种情况是传感器激励电压直接取自系统电源,激励本身纹波大,桥路输出自然跟着抖。
解决:把模拟电源和数字电源从LDO输出端就分开走线,单点汇合。传感器激励用单独的LDO或者电压基准源供电,并在激励引脚附近加RC滤波。PCB上称重差分信号线两侧铺地,避免与SPI走线长距离平行。如果跳字是固定频率的,用频谱分析看ADC输出码的频域特征,通常能直接找到噪声来源。
5.4 第四坑:低频BIA测不准,阻抗模值偏低且重复性差
现象:在1kHz到10kHz的低频段测量,阻抗模值明显低于参考值,而且电极换一个位置数值就变,低频段校准系数在不同人身上不能通用。
原因:低频电流更容易受电极极化和接触阻抗影响。虽然四电极结构能消除稳态接触阻抗,但电极-皮肤界面在低频下会形成双层电容,产生额外的频率相关阻抗。如果激励电流设置得太小,界面阻抗占比变大,实测数据偏离真实组织阻抗的程度就越高。
解决:低频测量时适当提高激励电流幅度,让组织阻抗上的信号压降远大于界面阻抗的影响。同时检查电极材质和接触面积,Ag/AgCl电极的极化效应比不锈钢电极小得多,消费级产品如果用金属电极,低频测量精度的上限会明显低于医疗级电极。低频段校准用大阻值参考电阻验证一下线性,确认不是校准电阻本身的问题。
5.5 第五坑:校准系数今天标定明天就偏,整机漂移明显
现象:产线标定完成后测试合格,放一晚上第二天再测,零点偏移了,重量读数整体偏大或者偏小,BIA校准系数也需要重新标定才能恢复。
原因:校准系数本身没问题,漂移的是硬件状态。最常见的原因是系统上电后热平衡没有建立,ADC和基准源在冷启动和热稳态下的工作点不同。另一个常见原因是电池电压下降导致传感器激励电压变化,称重通道的斜率跟着变,而标定系数是在满电量下标定的。
解决:在固件里加入上电预热流程,上电后等待一段时间让基准和PGA稳定,再开始标定或者测量。电池供电的产品,传感器激励尽量用稳压源而不是电池直接供电,或者把电池电压纳入测量值,在算法里做电压修正。产线标定流程也改成整机预热后再标定,环境温度记录在标定结构体里,出现异常时可以追溯。
6. 进阶:EVM先跑通再写驱动,多频BIA数据的两种用法
拿到AFE4300参考资料后,我的第一个建议永远是:先别急着画板子,拿原厂评估板跑一遍。评估板自带原理图、BOM和上位机软件,插上USB就能看到寄存器配置和实时测量数据。用评估板把目标频率下的DDS配置表、IDAC档位、ADC数据率跑稳,再用精密电阻验证一遍校准流程,之后再回到自己的原理图上动手,能少走很多弯路。我自己调过的几个BIA项目,凡是跳过评估板直接画板的,后面都回来补了课。
多频BIA的数据,最简单的用法是单频模型,只取50kHz附近的阻抗模值代入体脂率回归公式,适合做低成本体脂秤。进阶用法是用两个频点的数据做对比:低频段阻抗主要反映细胞外液,高频段阻抗反映总体水分,两者结合可以估算细胞外液比例和细胞内液体积。实现时在固件里对每个频点分别做校准和滤波,最后用校正后的复数阻抗做差比计算。
// 多频测量结果结构体 typedef struct { float z_mod_50k; // 50kHz阻抗模值 float phase_50k; // 50kHz相位角 float z_mod_5k; // 5kHz阻抗模值 float phase_5k; // 5kHz相位角 } bia_result_t; // 细胞外液比例估算:频率越低,越偏细胞外液 // 实际系数需要根据临床数据回归,这里只给计算骨架 float estimate_ecf_ratio(bia_result_t *r) { float ratio = (r->z_mod_5k / r->z_mod_50k); // 归一化处理,再映射到 0~100% return clamp(ratio, 0.0f, 1.0f); }这个计算骨架不是让你直接搬进产品里,而是提醒你多频数据的核心价值在于比值关系,而不是单频绝对值。我现在的习惯是每块新板子回来,先跑一遍电阻扫描,把每个频点的误差画成曲线,确认曲线平滑并且在校准系数修正后能回到参考值,再开始接人体测试。这个习惯帮我挡掉过好几块有布线隐患的板子。多频BIA的坑不在芯片,而在你是不是真的理解了每个频点测的是什么,以及你的校准流程能不能把系统误差洗干净。希望帮到你。
本文还有配套的精品资源,点击获取