尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

TWS充电仓无线充电接收方案:NU1680 I2C调压与QI协议适配实战

发布时间:2026/9/29 18:49:42

资讯中心
01
ARTICLE

TWS充电仓无线充电接收方案:NU1680 I2C调压与QI协议适配实战

TWS充电仓无线充电接收方案:NU1680 I2C调压与QI协议适配实战
1. 内容整体设计与方案选型思路做TWS耳机充电仓的无线充电接收方案圈内人应该都有同感难点不在能不能充而在充得稳、调得准、各家无线充都能兼容。我以前用固定输出的接收芯片做过一版硬件电路倒是简单但后续改电压要动电阻、改板子麻烦得很。后来换成NU1680这颗带I2C接口的无线充电接收器整个方案的灵活性一下就上来了。NU1680本质上是一颗支持QI协议的无线充电接收芯片内部集成了整流、稳压、通信解调、过压过流保护等模块输出端通过I2C总线可以实时调整目标电压。这颗芯片在TWS耳机充电仓场景里特别合适主要是因为TWS充电仓的电池电压、充电管理芯片的输入电压要求各不相同有的方案希望5V恒压输入有的则希望4.2V、4.35V或者更高固定输出的芯片很难一套方案通吃。用I2C动态调压同一块PCBA可以通过软件适配不同客户、不同电池规格物料清单不变硬件改板次数大幅减少。另一个选型理由是NU1680对QI协议的适配做得比较省心。QI协议里最核心的握手、配置包、控制错误包CEP这些数字通信逻辑芯片内部基本都处理了MCU只需要通过I2C读取状态寄存器、配置输出参数不需要自己用定时器去解调ASK信号。这对手头资源紧张的嵌入式项目来说能省下不少开发时间。我后面会详细讲到I2C调压的寄存器操作和QI协议适配过程中的实际坑这两块是整篇博文最核心的部分。如果你正在做TWS耳机充电仓、便携式电动牙刷盒、小型美容仪这类带无线充电接收功能的产品或者你在做无线充电底座兼容性测试这篇文章应该能帮你少走不少弯路。下面内容我尽量按原理讲清楚、步骤可复现、坑点讲实在的方式来写。1.1 固定输出方案与I2C可调方案的对比先聊一个很多工程师纠结过的问题既然NU1680能做I2C调压那为什么市面上还有大量固定输出的无线充电接收芯片在出货因为不是所有产品都需要调压。固定输出方案的BOM更少、软件几乎不用参与、可靠性也更容易验证。但如果你的产品线覆盖多个型号、多种电池规格固定输出就非常被动了。我举一个实际例子。之前我做一个TWS充电仓项目客户先要求接收输出5V给电源管理IC后来改成4.35V直充电池方案再后来又要求兼容两节锂电池串联的7.4V充电。如果用固定输出的芯片每一次需求变化都等于重新画板、重新调试。换了NU1680之后软件里改一个寄存器值就能切换输出目标电压硬件完全不用动。这里用表格对比一下两类方案的差异对比维度固定输出方案NU1680 I2C调压方案输出电压调整方式硬件电阻/芯片固件决定I2C寄存器实时配置需求变更响应改板、重新调试改软件几分钟完成BOM复杂度低略高多一路I2C总线上拉电压精度通常±3%左右可软件校准精度更好控制产品系列化每个电压规格一套物料一套物料覆盖多个型号对MCU资源要求无需占用需要一路I2C与驱动代码需要注意I2C方案虽然灵活但也引入了一个新的风险点如果MCU死机或者I2C通信异常输出配置可能丢失或者处于不确定状态。这个我在后面常见问题章节会给出具体的处理建议。1.2 NU1680在TWS充电仓系统中的位置与职责把NU1680放进一个完整的TWS充电仓系统里看它的角色会更清楚。我给一张文字版的结构描述无线充电底座TX端通过电磁感应把能量送到充电仓内的接收线圈RX端线圈后端接NU1680的AC输入引脚NU1680内部完成整流和稳压从输出引脚输出直流电压供给充电仓的电源管理IC或者直接给电池充电。与此同时NU1680通过ASK调制方式在电压/电流波形上叠加数字信号与TX端完成QI协议通信通过I2C接口与仓内的MCU交互状态与配置。在这个架构里MCU并不直接参与无线能量传输它更像一个管理者开机时通过I2C读取NU1680的状态寄存器确认接收端是否已经与TX完成握手需要调整输出电压时通过I2C写入目标电压配置异常时读取故障寄存器判断是过温、过压还是异物检测触发了保护。这样分工的好处是职责清晰无线充电的逻辑归芯片管系统逻辑归MCU管调试时界面前后分明。值得一提的是NU1680在无负载或者未对准线圈的情况下功耗控制做得不错。TWS充电仓是一个典型的电池供电设备静态功耗直接影响待机时间。实测下来NU1680在空闲状态下的电流消耗处于微安级别不至于让充电仓放一周就没电这点在选型时必须确认有些老型号接收芯片空闲功耗偏大会拖垮整机待机。2. I2C调压从协议细节到寄存器实操I2C是嵌入式里最常见的板级通信协议之一但在无线充电接收芯片的调试中很多人恰恰是在看似最简单的I2C上翻车。我见过不少同事把NU1680的I2C时序调不通最后发现是上拉电阻、电平不匹配或者从机地址搞错。这一节把I2C调压涉及的关键细节完整过一遍。2.1 为什么I2C要开漏输出加外部上拉先回答一个被问了很多次的问题为什么I2C要用开漏输出不能像普通GPIO那样推挽输出这个问题的答案其实藏在线与机制里。I2C总线上允许挂多个设备设备之间通过拉低总线来应答或者仲裁也就是说任何一个设备都可以主动把SCL/SDA拉低。如果采用推挽输出两个设备同时一个输出高一个输出低总线会直接短路轻则通信异常重则烧毁引脚。开漏输出的本质是只能拉低不能主动拉高拉高靠外部上拉电阻完成。这样任意时刻设备想表达0就拉低想表达1就释放总线让上拉电阻把电平抬上去多个设备并行也不会冲突。这个设计看起来很简单但实际选上拉电阻时很多人会踩坑。通常I2C上拉电阻选1k到10k之间具体取值取决于总线电容和通信速率。总线走线越长、挂的设备越多总线电容越大上拉电阻就得越小否则电平上升沿太缓时序就会出错。但上拉电阻也不是越小越好电阻太小设备拉低时流过的电流太大功耗上升甚至可能超过芯片IO口的灌电流能力。标准模式下400pF总线电容配4.7k上拉是比较稳妥的起点如果总线上只挂了NU1680一个从机且走线很短10k也可以用。我在实际调试中还发现一个细节NU1680的I2C引脚如果本身没有集成内部上拉那么外部上拉电阻是必须的。有些MCU的GPIO可以配置内部上拉但内部上拉阻值通常偏大几十千欧在高速通信下可能不够建议还是外部加一颗4.7k电阻稳妥。这也能解释为什么很多开发板上I2C接口附近总能看到两颗0603封装的电阻——它们不是多余的。2.2 NU1680的I2C从机地址与寄存器读写时序NU1680的I2C从机地址是7位地址具体值需要以官方数据手册为准。不同批次或者不同型号版本可能不一样代码里最好做成宏定义方便适配。读取寄存器时要区分是读还是写I2C协议规定起始条件之后主机先发送从机地址加读写位写操作为0读操作为1。N多新手在这里容易搞混的是伪读流程。以NU1680某个状态寄存器为例如果你要读取当前输出电压配置需要先发起一个写操作把目标寄存器地址写入从机然后重新发起起始条件也就是重复起始条件再发送从机地址加读位之后才能读到寄存器的值。整个流程如果缺少重复起始条件而直接发送读命令很多从机根本不会响应。为了让大家能直接参考我给一段基于标准I2C库的伪代码逻辑实际使用时要根据你的MCU平台调整// 写NU1680寄存器 uint8_t nu1680_write_reg(uint8_t reg_addr, uint8_t data) { i2c_start(); if (i2c_send_byte(NU1680_ADDR 1 | 0)) return ERROR; // 写地址 if (i2c_send_byte(reg_addr)) return ERROR; // 寄存器地址 if (i2c_send_byte(data)) return ERROR; // 数据 i2c_stop(); return OK; } // 读NU1680寄存器 uint8_t nu1680_read_reg(uint8_t reg_addr) { uint8_t value 0; i2c_start(); i2c_send_byte(NU1680_ADDR 1 | 0); // 先写 i2c_send_byte(reg_addr); // 寄存地址 i2c_start(); // 重复起始条件 i2c_send_byte(NU1680_ADDR 1 | 1); // 读地址 value i2c_receive_byte(ACK); // 读数据返回ACK i2c_stop(); return value; }写寄存器时要注意I2C从机在接收到每个字节后会拉低SDA输出一个ACK应答位。主机在发送完每个字节后必须释放SDA总线并检测从机的ACK。如果从机没有应答说明地址不对、芯片没上电、或者总线被拉死。很多I2C调试问题的第一现象就是卡在等待ACK。我在调试时习惯用逻辑分析仪抓取波形一眼就能看出到底是主机没发完字节还是从机没应答。2.3 I2C调压的完整配置流程与实测记录NU1680的调压最终是通过写特定寄存器实现的。芯片一般会把输出电压分为若干档位每档对应一个寄存器值写入后输出即调整到目标电压。有的寄存器还带有输出电压微调位trim通过组合配置可以输出比较精细的电压值。以下是我在项目中常用的调压配置流程系统上电等待NU1680完成内部初始化通常延时50ms以上。通过I2C读取芯片ID寄存器确认通信正常顺便确认芯片型号版本。读取当前状态寄存器确认无线充电接收端当前处于什么状态空闲、正在握手、正在充电。根据产品需要向输出电压配置寄存器写入目标电压值。回读该寄存器校验写入是否成功。用万用表或者示波器测量NU1680输出引脚的实际电压确认与目标一致。这里有一个非常重要的细节调压动作建议在无线充电接收尚未建立稳定功率传输时完成或者至少确保负载电流不大。因为输出电压切换过程中内部环路有一个重新收敛的过程如果此时负载很大输出电压可能出现瞬时跌落或者过冲严重时触发芯片的过压/欠压保护。另外一个容易被忽略的点NU1680的I2C调压是实时的但掉电后配置会丢失重新上电后芯片会回到默认输出电压。所以量产固件里必须在上电初始化阶段主动配置一次输出电压不能默认靠芯片出厂值。如果出厂值恰好不符合你的电池规格又没有软件配置整机会出现充电异常甚至损坏电池的风险。我在一次实测中把输出配置从5V切到4.2V用示波器抓了切换波形整个过程大概几百微秒到几毫秒输出电压有一小段斜坡下降没有出现明显的过冲。这说明内部环路确实做了平滑处理。但不同负载条件下表现可能不同建议大家在项目里一定要做负载切换测试不要只看空载波形。3. QI协议适配让充电仓真正看得懂无线充电器很多做硬件出身的朋友对I2C不陌生但一提到QI协议就有点头大。因为QI协议不是一个简单的寄存器读写而是一套完整的能量传输 双向数字通信 异物检测 控制闭环的规范。NU1680把大量的物理层处理都做了但作为系统工程师你仍然需要理解上层协议才能解释为什么有些充电底座能充、有些不能充、有些充电特别慢。3.1 QI协议通信基础与握手流程无线充电的QI协议工作逻辑可以理解成两个人对话发射端TX不断发出一个叫数字Ping的信号相当于不停询问有人在吗有没有设备可以充电接收端RX如果检测到这个信号并且想要充电就通过负载调制ASK回复一个信号强度包SIG意思是我在我收到了信号。之后双方进入配置阶段RX发送配置包把自己的标识、最大功率等信息告诉TX。接着是协商阶段双方协商实际的传输功率和电压参数。最后进入功率传输阶段TX开始稳定输送能量RX持续发送控制错误包CEP来微调传输功率。在整个流程里RX相当于是甲方TX根据RX反馈的需求来调整输出。如果RX不发CEP包TX会认为通信异常一段时间后就会停止传输。这就是为什么如果接收端的通信解调部分有问题常见的现象是放到无线充电器上指示灯闪一下就没反应了——握手成功了但后续控制通信失败TX主动停止了输出。NU1680的优势在于从Ping检测、ACK应答、到CEP包发送这些底层的协议处理都由芯片内部的数字逻辑独立完成不占用MCU资源。MCU只需要通过I2C读取协议状态寄存器就能知道当前处于哪个阶段。这对于调试很有帮助你可以通过读取寄存器的状态值判断到底是没检测到Ping、握手失败还是协商失败。3.2 QI协议适配中的线圈选型与布局要点协议层面调通之后决定无线充电体验的核心硬件就是线圈了。NU1680本身对线圈的适配范围比较宽但线圈的形状、匝数、电感值、Q值直接影响接收效率和对准容忍度。在TWS充电仓的应用中接收线圈通常放在充电仓底壳内部直径一般在20到30毫米之间厚度控制在0.5到1毫米。线圈选型有几个关键参数电感量一般在几微亨到十几微亨、交流电阻越小越好、Q值在100kHz工作频率下尽量高。电感量太小时谐振电容要配得很大电感量太大谐振频率又可能偏离标准工作频段。线圈与NU1680之间的匹配网络要特别注意。芯片的AC输入端一般需要并联谐振电容电容容值要和线圈电感在QI标准的工作频率通常为110kHz到205kHz下谐振。如果谐振电容容值偏差大会直接导致接收功率上不去、效率低、芯片发热严重。我在项目里一般会预留电容焊盘调试时用LCR表测量线圈实际电感再计算出所需电容容值。计算方法是f1/(2π√(LC))反推C 1/(4π²f²L)。例如线圈电感实测为10μH目标频率110kHz那么C ≈ 209nF实际可以并联两个100nF和一个10nF来凑。注意电容耐压要留够余量推荐C0G材质或者低损耗的薄膜电容普通X5R陶瓷电容在交流大信号下损耗大会发热影响效率。布局方面的经验NU1680尽量靠近线圈放置减少AC走线长度AC走线尽量宽、短避免形成寄生电感。线圈下方不要铺大面积的铜皮否则会产生涡流损耗。无线充电线圈区域的正下方如果有电池电池本身也会吸收一部分磁场能量导致发热所以结构设计上尽量让接收线圈与电池错开或者在中间加隔磁片。隔磁片通常为铁氧体材料的作用是引导磁力线、减少对背后金属件和电池的影响强烈建议TWS充电仓项目加上。3.3 多家TX底座的兼容性测试方法讲一个很现实的场景你的充电仓设计好了在自己的测试底座上充电一切正常效率也漂亮。结果用户拿回家往一个不知名品牌的无线充电器上一放指示灯闪了几下然后就没反应了。这种问题就是典型的兼容性不足。不同品牌的TX底座对QI协议细节的实现是有差异的。早期一些杂牌底座甚至会忽略部分协议流程单纯靠固定的Ping周期去试探接收端如果你的RX严格按QI标准来做反而可能因为时序对不上导致握手失败。NU1680对标准QI协议的兼容性总体不错但也不能假设随便一个底座都能充。我的做法是准备一批覆盖不同协议的底座做兼容性测试矩阵包括支持BPP基本功率协议5W的底座、支持EPP扩展功率协议的底座、某手机品牌私有协议底座、杂牌通用底座等。测试时把充电仓放上去观察以下几个要点是否能在3秒内进入充电状态指示灯或软件日志确认。稳定充电10分钟后是否存在掉线重启。稍微偏移线圈中心位置横向、纵向各偏移5mm是否还能维持充电。充电过程中温度是否在合理范围内。充满后进入涓流状态时通信是否依然稳定。有了这个矩阵测试就不再是玄学而是可以量化的准入标准。需要提醒的是私有协议底座比如某些手机品牌自己的无线充电器通常只兼容自家生态如果你的产品想兼容这类底座光靠标准的QI协议适配是不够的往往需要专门定制协议层。这种情况建议直接找芯片原厂要支持方案。4. 常见问题与排查技巧实录这一节把我在NU1680项目里实际踩过的坑、排查过的案例整理一下按现象分类每个问题给出定位思路和解决方案。这些都是常规数据手册上不会写的内容实战价值比较高。4.1 I2C调压不生效或读回数据异常现象一写入寄存器后输出电压没变化。首先确认是否写错了寄存器地址。我遇到过因为用了旧版数据手册寄存器地址和实际芯片不一致的情况写入成功但根本没写到控制位。建议用I2C读回功能确认写入后的值不要只看写函数返回值。现象二读回数据全部是0xFF或者0x00。这通常意味着I2C通信根本没有建立。检查顺序从机地址是否正确、SDA/SCL是否接反、上拉电阻是否焊接、MCU和NU1680的电平是否一致。NU1680的I2C电平如果和MCU不一致需要加电平转换不能直接连通。现象三通信偶尔成功偶尔失败。优先怀疑时序问题。用示波器看SCL的频率有没有超过芯片支持的最高频率再看SDA在时钟高电平期间是否稳定。I2C规定SDA只能在SCL低电平时变化如果主机代码有中断影响了时序可能导致SDA在SCL高电平时跳变从机就会解析错误。解决方案是在I2C通信期间关中断或者使用硬件I2C外设。另外总线上多个设备时要注意地址冲突。如果其他设备用了相同地址需要改I2C地址或者用使能引脚分时复用。这类问题排查起来非常隐蔽因为单纯看代码逻辑写读都正常但实际上数据去了另一个设备。4.2 无线充电效率低与发热偏大的处理TWS充电仓的无线充电功率本身不大一般在2.5W到5W之间但效率低的话热量集中在仓体内会让电池和电路都很不舒服。效率低的原因大致有几类第一类是线圈失配。最常见的是谐振电容偏了导致工作频率偏离谐振点。可以用阻抗分析仪或者LCR表测一下线圈和电容并联后的谐振频率看是否落在目标频段。没有仪器的话可以在无线充电时用示波器看NU1680 AC引脚的波形正常应该是漂亮的正弦波如果波形畸形或者幅值偏低频率可能偏了。第二类是线圈Q值太低。有些便宜的FPC线圈铜箔薄、电阻大Q值上不去接收效率天然就低。推荐选用2oz铜厚的线圈或者用利兹线绕制线圈高频损耗会小很多。第三类是隔磁片没贴好或者有金属异物在磁场路径上。我之前遇到一个项目加了隔磁片后效率反而更低拆开发现是隔磁片位置贴歪了导致一边磁力线直接穿过电池。重新贴合后效率恢复正常。散热也是一个方面虽然充电仓功率小但如果结构件是密封的还是要适当做热设计至少保证芯片壳体温度在规格范围内。4.3 充电断断续续或经常重启这个现象在兼容性测试中很常见。如果充电仓在某个底座上反复重启原因可能是异物检测FOD误触发。QI协议有异物检测机制TX端会检测发送功率和接收功率之间的差值如果差值过大就认为有金属异物在中间于是停止充电。接收端这边如果RX发送的信号强度偏弱或者配置参数不合理TX可能会误判存在异物。NU1680一般允许通过寄存器调整信号强度包的发送范围或者相关阈值可以尝试调大或者调小找到TX和RX都能接受的工作点。还有一类是机械振动导致线圈位置偏移。用户在充电过程中如果移动了充电仓线圈对位变差耦合系数下降通信误码率上升也可能导致断连。这个问题可以在结构上增加定位凹槽让充电仓放上去能比较稳定地保持在中心位置。把上面这些排查逻辑总结成一张速查表现象优先排查项处理建议完全不充电握手是否成功读取协议状态寄存器确认Ping和信号强度包充电极慢谐振电容、线圈Q值实测谐振频率确认电容匹配充一会儿就断FOD误触发调整接收端信号强度配置、检查异物检测阈值特定底座不兼容协议时序差异换标准底座对照测试联系原厂获取兼容补丁I2C调压无反应寄存器地址、通信建立逻辑分析仪抓时序确认ACK应答电压过冲/跌落环路收敛时间带载切换测试必要时分两步跳变电压4.4 量产一致性与固件初始化策略最后聊聊量产的问题。无线充电接收芯片的调压、状态读取都依赖I2C而I2C通信对时序比较敏感量产时不同批次的MCU、不同PCB布局可能导致通信余量不一样。我在产测固件里会加入I2C回读校验写入输出电压后必须回读比对一致才算通过。同时在产测环节强制让整机进入无线充电模式跑一遍确认握手成功、输出电压达标能大大降低客诉率。固件初始化策略方面建议按上电默认状态 → 主动配置 → 确认配置 → 进入工作循环的顺序来。如果芯片有中断引脚可以接一个到MCU用于通知无线充电状态变化比MCU轮询寄存器更及时也能降低MCU功耗。量产固件里最好把I2C通信失败的次数记录下来比如连续失败超过N次就复位NU1680或者重新初始化一次。我在项目里遇到过极少数芯片在强电磁干扰下I2C状态机卡死的情况加上这个看门狗式的恢复逻辑之后整机稳定性明显提升。最后再分享一个小技巧开发阶段在NU1680的SDA和SCL测试点上预留0欧电阻位量产时可以断开避免I2C总线上的寄生电容影响无线充电的射频解调。这种看似不起眼的细节在体积受限的TWS充电仓里往往就是隐患所在。我做过几个项目之后现在画原理图时都会习惯性地预留这个断开点调试方便量产也能灵活切换算是踩过几次坑之后攒下的经验。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。