news 2026/9/29 1:22:42

物联网无线收发芯片选型指南:Sub-1G与2.4G深度对比

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
物联网无线收发芯片选型指南:Sub-1G与2.4G深度对比

1. 从一颗芯片说起:物联网无线收发芯片到底在解决什么问题

搞物联网硬件的人,绕不开一个核心问题:设备怎么把数据传出去。有线方案在工业现场还能凑合用,但一旦涉及移动设备、户外部署、老旧建筑改造,布线就成了噩梦。无线收发芯片就是在这个背景下成为物联网终端的“咽喉器件”——它负责把数字信号调制成射频信号发出去,再把接收到的射频信号解调回数字信号,是整个通信链路里最底层、也最考验功力的那一环。

我做了七八年物联网硬件方案,从早期的抄板改板到后来自己画射频前端,踩过的坑比调通的板子多得多。很多人以为选个无线芯片就是看价格和通信距离,实际上远不止这么简单。你选的芯片决定了你的通信协议栈能不能跑、功耗能不能压下来、组网拓扑能不能撑住、量产一致性好不好保证。一颗选错的芯片,轻则让你在调试阶段多花两个月,重则让整个项目在量产时良率崩盘。

这篇文章面向的是正在做物联网硬件选型的工程师、准备物联网毕业设计的学生、以及需要评估无线方案的产品经理。我会从射频基础原理讲起,把Sub-1G和2.4G两大阵营的芯片拆开揉碎,给出主流型号的实测对比和选型决策框架,最后附上我在实际项目中总结的避坑清单。不堆公式,不抄手册,只讲能直接用的东西。

2. 无线收发芯片的核心技术原理拆解

2.1 射频收发链路的底层逻辑

无线收发芯片的本质是一个“翻译官”。发射方向上,它把MCU送来的数字比特流,经过调制器映射成模拟基带信号,再通过混频器搬移到射频载波频率上,最后经功率放大器(PA)放大后从天线辐射出去。接收方向则反过来:天线收到的微弱射频信号先经过低噪声放大器(LNA)放大,再下变频到基带,解调后还原成数字信号交给MCU。

这个链路里每一个环节都有讲究。PA决定了发射功率和距离,LNA决定了接收灵敏度,混频器的线性度影响抗干扰能力,锁相环(PLL)的相位噪声决定了信号质量。你在数据手册上看到的那些参数——发射功率、接收灵敏度、邻道抑制比——背后都是这些模块的性能体现。

拿接收灵敏度举个例子。假设你用FSK调制,数据速率50kbps,接收带宽100kHz,室温27°C。理论热噪声功率是kTBF,其中k是玻尔兹曼常数,T是绝对温度,B是带宽,F是噪声系数。算下来热噪声底大约在-124dBm左右。如果芯片的噪声系数是6dB,那么理论灵敏度极限就是-118dBm。实际芯片因为解调损耗、滤波器插损等因素,灵敏度通常在-110到-120dBm之间。这个数字直接决定了你的通信距离——灵敏度每提升6dB,理想情况下通信距离翻倍。

2.2 调制方式的选择逻辑

物联网无线芯片常用的调制方式就那么几种:OOK、FSK/GFSK、MSK、LoRa用的CSS、以及2.4G频段常见的GFSK和OQPSK。选哪种调制方式,本质上是在灵敏度、数据速率、抗干扰能力和功耗之间做权衡。

OOK最简单,成本最低,但抗干扰能力差,适合遥控器这类单向低速场景。FSK/GFSK是Sub-1G频段的主力,GFSK在FSK基础上加了高斯滤波,频谱更干净,邻道干扰更小。MSK可以看作是连续相位的FSK,频谱效率更高,但解调复杂度也上去了。LoRa的CSS(线性调频扩频)是另一条路线,用扩频因子换取灵敏度,代价是数据速率极低。

我个人的经验是:如果你的场景是低速传感器数据采集,距离要求几百米到几公里,Sub-1G的GFSK方案是性价比最高的选择。如果要求更远的距离且能接受低速率,LoRa是首选。如果设备需要和手机直连或者跑蓝牙协议栈,那必须上2.4G。

2.3 频段选择:Sub-1G与2.4G的攻防战

Sub-1G和2.4G的争论在物联网圈子里从来没停过。我先把核心差异列出来,再讲实际怎么选。

对比维度Sub-1G(如433/470/868/915MHz)2.4G(2400-2483.5MHz)
波长约30-70cm约12.5cm
绕射能力强,穿墙衰减小弱,穿墙衰减大
天线尺寸较大(PCB天线约3-5cm)小(PCB天线约1-2cm)
全球通用性各区域频段不统一全球通用
数据速率通常0.1-500kbps通常250kbps-2Mbps
干扰环境相对干净拥挤(WiFi/蓝牙/Zigbee)
芯片成本中低低
协议栈生态相对封闭丰富(BLE/Zigbee/Thread)

Sub-1G的核心优势是物理特性决定的。波长越长,绕射能力越强,穿透墙体、树木、金属障碍物时的衰减越小。我实测过同样的发射功率下,433MHz信号穿过三层楼板的衰减比2.4G少大约10-15dB。这意味着在复杂环境中,Sub-1G的覆盖能力天然优于2.4G。

但2.4G的优势也很明显:全球免许可频段统一,天线可以做得很小,芯片出货量大所以成本低,而且蓝牙和Zigbee的协议栈生态极其成熟。如果你的产品需要和手机交互,或者需要接入现有的智能家居生态,2.4G几乎是唯一选择。

实操心得:不要迷信“Sub-1G一定比2.4G远”这种说法。在空旷视距环境下,2.4G因为天线效率更高、带宽更大,实际通信距离未必输给Sub-1G。Sub-1G的优势体现在非视距、复杂遮挡的场景。

3. 主流无线收发芯片型号深度对比

3.1 Sub-1G阵营:从入门到旗舰

Sub-1G频段的芯片选择其实不算多,翻来覆去就是那几家。我按定位从低到高捋一遍。

入门级:Si4438/Si4463(Silicon Labs)

这两颗芯片是很多人的Sub-1G启蒙。Si4438覆盖425-525MHz,Si4463覆盖119-1050MHz,两者都是GFSK调制,最大发射功率+20dBm,接收灵敏度在-124dBm左右(低速率下)。SPI接口,寄存器配置稍显繁琐,但资料多、社区活跃。缺点是功耗控制一般,RX电流在10-13mA,TX在+20dBm时约85mA。适合对功耗要求不苛刻的工业遥控、抄表类应用。

中端主力:SX1278/SX1276(Semtech)

LoRa阵营的经典款。SX1278覆盖433/470MHz,SX1276覆盖868/915MHz。除了LoRa调制,也支持传统的FSK/GFSK。LoRa模式下灵敏度可以做到-148dBm(扩频因子12,带宽125kHz),这个数字非常恐怖,意味着在同样的发射功率下,通信距离可以比FSK方案远3-5倍。但代价是数据速率极低,SF12下只有293bps。TX电流在+20dBm时约120mA,RX电流约10mA。适合远距离、低速率、电池供电的场景,比如农业传感器、资产追踪。

高集成度:CC1310(TI)

TI的CC1310是一颗SoC,内置了ARM Cortex-M3内核和Sub-1G射频前端。这意味着你不需要外挂MCU,一颗芯片就能完成传感采集、数据处理和无线通信。射频部分支持GFSK、OOK、以及TI自己的长距离模式。RX电流仅5.4mA,TX在+14dBm时约24mA,功耗控制非常出色。缺点是开发环境用TI的CCS或IAR,上手门槛比Arduino风格的项目高一些。适合对功耗和集成度都有要求的场景。

国产替代:CMT2300A(华普微)

这两年国产Sub-1G芯片进步很快,CMT2300A是其中比较有代表性的。覆盖140-1020MHz,GFSK/OOK调制,最大+20dBm发射功率,灵敏度-121dBm。SPI接口,寄存器设计和Si4438类似但更简洁。价格比进口芯片低30-40%,供货也稳定。我在一个智能水表项目里用过,量产一致性不错,低温漂表现也OK。适合成本敏感、对性能要求不是极致的消费类或工业类产品。

3.2 2.4G阵营:BLE与私有协议的分野

2.4G芯片的选择就丰富多了,我按协议栈分成三类来讲。

BLE SoC:nRF52832/nRF52840(Nordic)

Nordic在BLE领域的地位不用多说。nRF52832是Cortex-M4F内核,512KB Flash/64KB RAM,支持BLE 5.0。nRF52840升级到1MB Flash/256KB RAM,还支持蓝牙5.0的长距离模式和802.15.4(Thread/Zigbee)。RX电流约5.4mA,TX在0dBm时约5.3mA,功耗表现优秀。开发用nRF Connect SDK(基于Zephyr),生态完善。缺点是价格偏高,nRF52832批量价在1.5-2美元左右。适合对BLE协议栈有强需求的产品,比如智能穿戴、医疗设备。

私有协议2.4G:nRF24L01+(Nordic)

这颗芯片堪称2.4G私有协议的“国民芯片”,价格便宜到离谱(国产兼容款不到1块钱),SPI接口简单,配合Arduino库几分钟就能跑通。最大速率2Mbps,发射功率0dBm(加PA的模块可以到+20dBm)。缺点是只支持私有协议,不能和手机直连,抗干扰能力一般。适合学生毕设、DIY项目、以及不需要互联互通的点对点通信场景。

Zigbee/Thread SoC:CC2652(TI)

CC2652是TI的多协议SoC,支持Zigbee、Thread、BLE 5.0。Cortex-M4F内核,352KB Flash/80KB RAM。射频性能不错,RX灵敏度在BLE模式下-97dBm,Zigbee模式下-100dBm。适合需要自组网、多跳路由的场景,比如智能家居的灯控网络、工业传感器网络。开发门槛比Nordic高,但TI的文档和参考设计很全。

3.3 关键参数横向对比表

型号频段调制方式最大TX功率RX灵敏度RX电流TX电流接口内核参考单价
Si4463Sub-1GGFSK/OOK+20dBm-124dBm10mA85mA@20dBmSPI无$1.5
SX1278Sub-1GLoRa/FSK+20dBm-148dBm10mA120mA@20dBmSPI无$2.0
CC1310Sub-1GGFSK/OOK+14dBm-124dBm5.4mA24mA@14dBmSPI/UARTM3$3.0
CMT2300ASub-1GGFSK/OOK+20dBm-121dBm8mA70mA@20dBmSPI无$0.8
nRF528322.4GBLE/GFSK+4dBm-96dBm5.4mA5.3mA@0dBmSPI/UARTM4F$1.8
nRF24L01+2.4GGFSK0dBm-85dBm12.3mA11.3mA@0dBmSPI无$0.3
CC26522.4GBLE/Zigbee+5dBm-100dBm6.9mA9.6mA@5dBmSPI/UARTM4F$3.5

注意:以上价格为批量采购参考价,实际价格受采购量、封装、渠道影响较大。RX/TX电流为典型值,具体以数据手册为准。

4. 选型决策框架:从需求到芯片的映射方法

4.1 先定频段,再定协议,最后选型号

很多人的选型顺序是反的——先看别人用什么芯片,然后照着抄。正确的做法应该是从需求出发,逐层收敛。

第一步,确定通信距离和环境。如果设备部署在空旷户外,距离要求1公里以内,2.4G加PA也能做到。如果部署在室内复杂环境,穿墙要求高,直接上Sub-1G。如果距离要求5公里以上,基本只有LoRa方案可选。

第二步,确定是否需要标准协议。如果产品要和手机直连,必须选BLE。如果要接入智能家居生态(比如涂鸦、米家),要看生态支持的协议。如果是封闭系统,私有协议更灵活、成本更低。

第三步,确定功耗约束。电池供电且要求续航一年以上的,RX电流必须控制在10mA以内,最好有深度睡眠模式(uA级)。如果是有线供电,功耗优先级可以降低。

第四步,确定数据速率和实时性。低速传感器数据(温度、湿度、开关状态)对速率没要求,LoRa和FSK都能满足。如果要传音频或图像,必须上2.4G的高速率模式。

第五步,确定成本和供应链。进口芯片性能稳定但价格高、交期长。国产芯片性价比高,但需要评估一致性和技术支持能力。

4.2 不同场景的选型建议

智能家居传感器(门窗磁、温湿度):nRF52832或国产BLE SoC。需要和手机直连配网,BLE是唯一选择。功耗要求高,选RX电流低的型号。

工业无线抄表(水表、气表):CMT2300A或Si4438。Sub-1G频段穿墙好,私有协议成本低,电池供电要求10年寿命。数据速率要求极低,每天传一次数据即可。

农业环境监测:SX1278。部署在农田、大棚,距离远、遮挡多,LoRa的灵敏度优势明显。太阳能供电可以放宽功耗要求。

智能家居灯控网络:CC2652。需要自组网和多跳路由,Zigbee生态成熟,灯控对实时性有一定要求。

学生毕设/DIY:nRF24L01+或ESP32(内置WiFi/BLE)。成本低、资料多、上手快。ESP32虽然严格来说不是“无线收发芯片”,但作为集成方案非常适合快速验证。

4.3 天线设计与匹配网络

选好芯片只是第一步,天线设计才是决定实际性能的关键。我见过太多项目芯片选得没问题,但天线没调好,通信距离只有标称值的三分之一。

Sub-1G频段常用的是弹簧天线和PCB印制天线。弹簧天线成本低、增益尚可,但一致性差,安装位置对性能影响大。PCB天线一致性好,但需要足够的板边空间,且对地平面敏感。2.4G频段常用陶瓷天线和PCB倒F天线,陶瓷天线体积小但带宽窄,PCB天线性能好但占面积。

匹配网络的设计需要根据芯片数据手册的推荐值来,但实际调试必须用矢量网络分析仪(VNA)测S11参数。目标是把天线在目标频点的阻抗匹配到50欧姆,S11小于-10dB。没有VNA的话,至少要用频谱仪看发射频谱是否正常。

实操心得:PCB布局时,射频走线要尽量短、直、粗,两侧铺地并打密集过孔。晶振要靠近芯片放置,远离射频走线。电源走线要加去耦电容,通常100nF和10uF并联。这些细节看着小,但直接影响射频性能。

5. 实操过程:从芯片到可用模块的完整流程

5.1 硬件设计要点与检查清单

拿到芯片选型后,第一步是画原理图和PCB。以Si4463为例,核心外围电路包括:晶振(通常30MHz)、匹配网络(TX和RX路径)、滤波电容、天线接口。TX路径的匹配网络通常是一个LC低通滤波器,用来抑制谐波。RX路径是一个LC带通滤波器,用来抑制带外干扰。

PCB布局时,射频部分要单独规划区域,与数字部分隔离。地平面要完整,不要被走线割裂。射频走线做50欧姆阻抗控制,用共面波导或微带线结构。过孔要打在射频走线两侧,间距小于波长的十分之一。

我整理了一个硬件设计检查清单,每次投板前过一遍:

  • 晶振负载电容是否按芯片手册计算?
  • 电源去耦电容是否每个电源引脚都有?
  • 射频走线是否做了阻抗控制?
  • 天线匹配网络是否预留了调试位?
  • 射频区域下方是否有完整地平面?
  • 数字信号线是否远离射频走线?
  • 是否有测试点可以测量TX频谱和RX灵敏度?

5.2 寄存器配置与驱动开发

无线收发芯片的寄存器配置是很多人的噩梦。以Si4463为例,它有上百个寄存器,分成了多个API组。手动配置几乎不可能,必须用Silicon Labs提供的WDS(Wireless Development Suite)工具生成配置头文件。

WDS的使用流程是:选择芯片型号,设置频段、调制方式、数据速率、发射功率、包格式等参数,然后生成C语言头文件。这个头文件里包含了所有寄存器的配置值,直接集成到你的驱动代码里就行。

驱动开发的核心是SPI读写函数和中断处理。SPI读写要注意时序,Si4463的SPI模式是Mode 0(CPOL=0,CPHA=0)。中断处理要区分TX完成、RX完成、CRC错误等事件。发送流程通常是:清空TX FIFO,写入数据,启动TX,等待中断,读取状态。接收流程类似:启动RX,等待中断,读取RX FIFO,检查CRC。

// Si4463发送数据示例(伪代码) void si4463_send(uint8_t *data, uint8_t len) { si4463_clear_tx_fifo(); si4463_write_tx_fifo(data, len); si4463_set_tx_len(len); si4463_start_tx(); while(!si4463_tx_done()); // 等待发送完成 si4463_clear_interrupts(); }

5.3 射频性能测试与优化

模块焊好后,必须做射频性能测试。最基本的测试项目包括:发射功率、发射频谱、接收灵敏度、通信距离。

发射功率用频谱仪或功率计测量。如果功率偏低,检查匹配网络和PA的供电电压。发射频谱要看谐波和杂散是否超标,特别是二次和三次谐波。如果谐波超标,调整低通滤波器的参数。

接收灵敏度测试需要信号发生器。设置信号发生器输出一个已知功率的调制信号,逐渐降低功率,直到模块的误包率达到临界值。这个功率值就是接收灵敏度。如果灵敏度不达标,检查LNA的匹配和电源滤波。

通信距离测试要在实际环境中做。我通常选三个场景:空旷视距、室内穿墙、地下车库。每个场景测10个点,记录RSSI和误包率。如果距离不达标,先检查天线,再检查发射功率和接收灵敏度,最后考虑环境干扰。

注意:射频测试必须在屏蔽室或至少无强干扰的环境中进行。在办公室用频谱仪测2.4G频段,你会看到WiFi和蓝牙的信号把底噪抬得很高,根本没法准确测量。

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

6.1 通信距离不达标

这是最常见的投诉。原因通常有以下几个:天线匹配没调好、发射功率设置错误、接收灵敏度不达标、环境干扰太大、电源纹波太大。

排查顺序:先用频谱仪测发射功率,确认是否达到设计值。如果功率正常,再测接收灵敏度。如果灵敏度也正常,那就是环境问题或天线问题。天线问题可以用VNA测S11,看是否在目标频点谐振。环境问题可以换个场景测试,或者用频谱仪看目标频段是否有强干扰。

我遇到过一个案例:客户用Si4463做无线抄表,标称距离500米,实际只有50米。测发射功率正常,测灵敏度也正常。最后发现是天线附近有一块大面积铺铜,把天线“短路”了。把铺铜挖掉后,距离恢复到400多米。

6.2 功耗异常偏高

电池供电的设备对功耗极其敏感。如果实测功耗比数据手册高很多,检查以下几点:是否有引脚悬空导致漏电、是否有外设未关闭、MCU是否进入了正确的低功耗模式、射频芯片是否在空闲时进入了Sleep模式。

很多芯片在Sleep模式下的电流是uA级,但如果配置不对,可能停留在Idle模式,电流就是mA级。以Si4463为例,Sleep模式电流约40nA,但需要正确配置唤醒源和时钟源。如果配置成Standby模式,电流就是几百uA。

6.3 通信不稳定、丢包严重

丢包的原因可能是:信道干扰、速率设置过高、前导码长度不够、同步字不匹配、CRC校验失败。

先看RSSI和误包率的关系。如果RSSI正常但误包率高,可能是干扰或速率问题。降低数据速率通常能改善。如果RSSI很低,那是距离或天线问题。前导码长度要足够让接收端完成AGC和位同步,通常至少4字节。同步字要收发双方一致,且尽量选择自相关性好的序列。

6.4 常见问题速查表

现象可能原因排查方法解决措施
通信距离短天线失配VNA测S11调整匹配网络
通信距离短发射功率低频谱仪测功率检查PA供电和配置
通信距离短接收灵敏度低信号发生器测灵敏度检查LNA匹配和电源滤波
功耗高未进入Sleep模式测各模式电流正确配置低功耗寄存器
功耗高引脚漏电逐个断开外设配置未用引脚为输出低
丢包严重信道干扰频谱仪看底噪换信道或降低速率
丢包严重前导码不足抓包看波形增加前导码长度
丢包严重同步字错误核对收发配置统一同步字设置
无法通信SPI通信失败示波器看SPI波形检查时序和片选
无法通信晶振不起振示波器看晶振检查负载电容和焊接

7. 选型之外的思考:生态、供货与长期维护

芯片选型不只是看参数和价格,还要考虑生态和供货。我见过太多项目因为芯片缺货被迫改板,也见过因为SDK停止维护导致产品无法迭代。

生态方面,Nordic和TI的SDK更新频率高、文档全、社区活跃,遇到问题容易找到答案。Silicon Labs的WDS工具很好用,但SDK的更新节奏慢一些。国产芯片的生态普遍偏弱,技术支持主要靠FAE,社区资源少。如果你的团队射频经验不足,建议优先选生态好的进口芯片,省下来的调试时间比芯片差价值钱得多。

供货方面,2020年那波缺货潮给所有人都上了一课。选型时要考虑芯片的生命周期状态(是Active还是NRND),以及是否有Pin-to-Pin的替代型号。国产芯片在供货稳定性上有优势,但要注意不同批次的参数一致性。

长期维护方面,优先选有明确Roadmap的芯片系列。如果芯片厂商已经推出了下一代产品,老型号的SDK更新可能会逐渐停止。另外,尽量选封装通用、引脚定义标准的芯片,方便后续升级或替换。

实操心得:我在一个项目中用了某国产Sub-1G芯片,前期样品测试都OK,量产时发现不同批次的灵敏度有3-4dB的波动。后来跟FAE沟通才知道,芯片内部的LNA匹配是出厂校准的,但校准精度受封装应力影响。解决办法是在PCB上预留LNA输入端的匹配位,量产时根据批次微调。这个教训告诉我,国产芯片不是不能用,但必须留够调试余量。

8. 写在最后:一些零散但值钱的经验

射频这东西,理论是一回事,实际是另一回事。数据手册上的参数都是在理想条件下测的,你的板子、你的天线、你的环境,都会让实际性能打折扣。留余量,是所有射频设计的第一原则。

另外,不要迷信“参考设计”。芯片厂商的参考设计通常是四层板、完整地平面、专业天线。如果你的产品是两层板、成本敏感、天线空间受限,参考设计的性能你大概率达不到。这时候要么加预算改四层板,要么降低性能预期,要么花时间自己调天线。

还有一点,测试设备很重要。一台好的频谱仪和VNA能让你的调试效率提升十倍。如果团队没有这些设备,可以考虑租用或找第三方实验室做测试。花几千块钱测一次,比你自己瞎调一个月强。

最后,物联网无线芯片的选型没有“最好”,只有“最合适”。你的需求决定了你的选择,别人的方案不一定适合你。多动手测,多对比,多总结,慢慢就有感觉了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 1:22:37

模型优化器实战指南:从SGD到AdamW的学习率调度与调参技巧

1. 模型优化器到底在优化什么第一次看到“Model-Optimizer”这个词,很多人会下意识觉得它又是一个调参工具,或者某个深度学习框架里附带的小模块。但真正在训练一线待过的人都知道,模型优化器远不止是“调学习率”那么简单。它更像是整个训练…

作者头像 李华
网站建设 2026/9/29 1:21:50

Python自动化:PSCAD波形图批量生成Word报告全流程

搞电力系统仿真的朋友应该都有过这种体验:PSCAD里把模型搭好、仿真跑完,波形一个个调出来看,觉得结果没问题了,接下来才是最折磨人的一步——把波形图整理进Word报告。手动截图、裁剪、统一尺寸、调整对齐,再配上图注和…

作者头像 李华
网站建设 2026/9/29 1:20:44

Excel VBA实现按行拆分生成独立xlsx文件

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

作者头像 李华
网站建设 2026/9/29 1:20:44

STM32F103开发板入门指南:从工具链选择到点灯与进阶路线

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

作者头像 李华
网站建设 2026/9/29 1:20:29

PDF考题变协议沙盒:用网络试题驱动TCP/BGP/OSPF实操验证

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

作者头像 李华