news 2026/11/2 1:04:32

工业现场SPI隔离:PIC18F87J60+MAX14431BAEE+设计全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
工业现场SPI隔离:PIC18F87J60+MAX14431BAEE+设计全解析

去年做工业现场数据网关时,板子上的主控选了PIC18F87J60。这颗芯片自带以太网MAC和PHY,一片就能把现场采集的数据送上TCP/IP网络,省掉一个外置网卡,BOM成本和布线面积都能压下来。真正麻烦的是它外挂的那条SPI链路——远端传感器板离主控板差不多半米,中间走接插件,现场还有变频器和接触器频繁启停。头几个版本没做电气隔离,偶发乱码算轻的,厉害的时候直接把SPI口的IO打坏,整板返修。后来把主控和外围板之间的SPI通信链路完整过了一遍数字隔离,用的就是标题里这只MAX14431BAEE+。这篇文章把这套方案里的器件选型逻辑、硬件接线、时序预算和实测调试过程完整写下来,给正在做嵌入式工业设备SPI隔离的朋友一个可以直接参照的样本。

1. 跨板SPI的隔离需求:不是玄学,是现场设备的生存问题

1.1 你实际上在隔离什么

很多工程师对SPI的第一印象是"板级协议",天然默认SPI只在同一个PCB内部走线,距离短、共地好、干扰小。这个认知在开发板上完全成立,但一进工业现场就变了:设备之间经常用接插件、排线甚至双绞线互连,主控板和传感器板分布在同一个机柜里相距几十厘米,两片板的地之间必然存在电位差。电位差就是流动的电流,它会寻找任何一条低阻抗路径来平衡,而SPI信号线恰恰就是这条路径。

两片板共地不够彻底时,地环路电流会在信号线上叠加共模噪声。更致命的是,一旦其中一块板遭遇雷击浪涌、感性负载开关尖峰,另一块板的主控IO口就是泄放点。PIC18F87J60这类单片机本身IO耐压并不高,3.3V器件碰上几十伏的瞬态尖峰,芯片内部ESD保护二极管瞬间击穿,损坏随之而来。

隔离的本质不是把信号"过滤干净",而是把两侧的地回路彻底断开,让原边和副边之间只有通过隔离栅传递的磁场或电容耦合信号,没有欧姆级的直流通路。这样即使副边被拉到很高的电位,原边主控也不会承受破坏性电流。

1.2 什么样的SPI链路需要隔离,什么样的可以省

结合这次项目经历,我在下面这些场景里会坚持做隔离:

  • 主控板与执行机构、传感器之间需要跨接插件或较长线缆,且线缆经过电机、变频器、接触器等强干扰源附近。
  • 逆变器、伺服驱动器等设备的控制板与功率板之间,哪怕距离不远,也建议隔离。
  • 两块设备来自不同供电系统,比如一个由开关电源供电,另一个由电池或发电机供电,地线拓扑不明确。
  • 需要满足安全规范或电气间隙要求,比如产品的板上存在危险电压(AC/DC高压),控制侧必须与人身可触及部分可靠隔离。

不需要隔离的情况也有:SPI总线完全在同一个PCB内,走线短、布局紧凑、共地网络完整,且产品使用环境是干净的实验室或消费类场景。这种情况下强行隔离会引入延迟和成本,没有必要。

这里必须强调一点:隔离不是万能的。如果系统的副边电源本身来自一个糟糕的开关电源,纹波和噪声巨大,隔离器只能阻断共模传导路径,并不能把副边的信号质量变好。所以隔离方案通常要和副边电源滤波、TVS保护一起设计,才算完整。

1.3 PIC18F87J60在系统中的角色决定它绕不开隔离

这颗单片机集成以太网控制器后,典型用法是当作工业现场的数据汇聚节点:通过SPI连接ADC、外部EEPROM、传感器调理芯片或者另一块控制板,采集到数据后封装成帧,经以太网上传到PLC或监控平台。既然它的职责是"把现场信号数字化并上传",那它连接的SPI外设就大概率位于现场噪声环境中。

我们这次的外围设备是一路带隔离电源的4-20mA电流环采集板,板上还有一个SPI接口的24位ADC。理论上采集板可以自己做好隔离再接主控,但那样隔离器要放在模拟前端后面,成本高且PCB空间紧张。反过来让主控通过数字隔离器去连采集板,隔离点靠近主控侧,模拟前端电路可以保持完整的地平面和布局,对信号完整性更友好,整体成本也更低。这也是为什么最终选择在主控PIC18F87J60的SPI链路上做隔离。

2. 器件选型:为什么是MAX14431BAEE+而不是四路数字隔离器

2.1 光耦方案的四个死穴

说到隔离,很多老工程师第一反应是光耦,因为几十年来模拟量隔离和开关量隔离全靠它。但用在SPI上,光耦方案有四个很难受的问题。

第一是速率上不去。普通光耦如PC817,典型带宽也就几十千赫兹,根本没法传SPI时钟。高速光耦如6N137能到10Mbps左右,但那是数字信号的极限,用在SPI时钟上余量非常小,而且一上速率波形就开始变钝。

第二是相位一致性差。SPI有四根线(SCK、MOSI、MISO、CS),如果拿四颗分开的光耦去隔离,每颗的传播延迟都不同,芯片间离散性也大,SCK和MOSI之间的相对延迟变得不可控。从设备对这两根线的时序要求非常严格,稍微错位就可能采样错数据。我在早期实验中用两颗6N137分别隔离SCK和MOSI,示波器上肉眼可见地看到MOSI的上升沿比SCK的采样沿晚到了十几个纳秒,这在8MHz下已经足够让通信出错。

第三是通道数不匹配。SPI最少四根线,光耦通常一颗只传一路,就要用四颗甚至更多,更别说每颗还要配限流电阻和上拉电阻,占用的PCB面积十分可观。

第四是电流消耗和发热。光耦原边发光二极管需要几毫安到十几毫安的驱动电流,四路就有几十毫安功耗,在嵌入式系统里通常不是不能接受,但在需要低功耗或长时间工作的工业产品里,这个代价并不划算。

2.2 通用数字隔离器的MISO问题

数字隔离器(容隔、磁隔)克服了光耦的速率和相位问题,但直接拿来隔离SPI还是会踩一个典型的坑:SPI是双向总线,MOSI和SCK、CS是主机向从机方向,MISO是从机向主机方向。而市面上大多数通用数字隔离器是单向通道,每一路只能固定从一个方向传。

如果拿四通道单向隔离器来隔离SPI,MOSI、SCK、CS可以各占一个正向通道,MISO还需要单独找一个反向通道。如果手头正好是四正向四反向的八通道型号,倒是够用,但多出来的通道白白浪费;如果方向配错了,信号根本传不过去。更麻烦的是,有些从设备是三态输出,CS无效时MISO处于高阻态,隔离器的副边输入侧如果没有合适的偏置,会在CS切换的瞬间产生不确定电平,主控这边轻则收到毛刺,重则把状态机搞乱。

2.3 MAX14431的通道组织与方向自协商

MAX14431这类的SPI专用数字隔离器,设计上就把上述问题处理掉了。它内部按SPI总线的信号特征组织通道,SCK和CS这类单向控制信号方向固定,MOSI和MISO按数据流向自动切换,不需要外部加方向控制信号,也不用软件干预。这样主设备侧的SCK、CS、MOSI、MISO四个信号,到了副边就能原样恢复成一组完整的SPI端口。

这对实际开发非常友好。普通数字隔离器需要仔细核对数据手册里每个通道的方向标志,画原理图时生怕标反;MAX14431的引脚功能表就是按SPI场景组织的,原边Signal和副边Signal一一对应,接起来就是"左边接MCU,右边接外设",没有多余的心智负担。

选这颗器件还有一层考虑是它与PIC18F87J60的工作电压兼容。单片机供电是3.3V,MAX14431BAEE+原边和副边都支持3.0V到5.5V宽范围供电,所以原副边都可以直接接3.3V,不需要额外电平转换,简化了电源设计。数据手册标称的隔离耐压和共模瞬态抑制能力也符合工业设备要求。

2.4 BAEE+后缀与采购细节

MAX14431BAEE+里的BAEE+是完整型号后缀,一般代表封装类型、温度等级、卷带包装等选项。这个细节在选型时很容易被忽略——直接搜MAX14431,出来的可能是其他后缀或开发板样品,腐蚀标也会不一样。工业设备建议选择宽温档位,并尽量把后缀写完整走正规渠道采购,否则样片和量产批次的器件一致性没有保障。

3. 硬件接线与供电:把隔离真正做进原理图和PCB

3.1 PIC18F87J60的SPI引脚规划

PIC18F87J60内部有一个MSSP模块,可以配置成SPI主模式,提供标准四线SPI。我这次把单片机配置成SPI主模式,SCK、SDO、SDI分别接到隔离器原边的对应信号输入端,CS则用一颗普通GPIO输出,软件控制拉低选中从设备。

很多人会把CS直接接在硬件自动片选上,让SSP模块自动产生片选信号。这个做法在正常通信时没有问题,但在隔离场景下会有隐患:自动片选信号在SPI初始化时可能产生一次不确定的跳变,隔离器输入端悬空时输出也会不确定,从设备可能因此误触发一次写入或复位操作。所以我一直坚持用普通GPIO手动控制CS,哪怕多写几行代码,换来的是可控的时序边界。

具体引脚号可以从PIC18F87J60数据手册第X章引脚功能表查,把SCK1、SDO1、SDI1和对应GPIO规划好就行。规划时值得留一个心眼:SPI引脚尽量选在PCB布线时容易走短线的位置,不要为了凑综合工具自动布局而绕远路。

3.2 接线全图与器件清单

下面是这套方案的核心接线关系,直接照此连接即可。需要注意MAX14431BAEE+的具体引脚名和顺序务必以数据手册为准,这里列出的是信号逻辑连接关系。

信号PIC18F87J60侧(原边)MAX14431BAEE+原边MAX14431BAEE+副边远端从设备
SPI时钟SCK1输出SCK输入SCK输出SCK输入
主机数据输出SDO1输出MOSI输入MOSI输出MOSI输入
主机数据输入SDI1输入MISO输出MISO输入MISO输出
片选GPIO输出CS输入CS输出CS输入(低有效)
电源3.3VVDD_AVDD_B3.3V(隔离侧)
地GND_AGND_AGND_B隔离侧地

原理图里还有一个常见坑:隔离器原副边的去耦电容必须分别靠近对应的电源引脚放置,不能只放一组。我习惯在原边VDD_A对GND_A放0.1uF和10uF各一只,副边VDD_B对GND_B同样放一组。如果副边还有较大的模拟电路,建议再并联一只1uF,增强抗干扰余量。

3.3 隔离电源的设计细节

隔离器本身只隔离信号,隔离不了电源。PIC侧用系统3.3V供电没问题,但副边如果还沿用系统3.3V,那就等于通过电源把地又连回去了,隔离形同虚设。工业上必须使用隔离型DC-DC模块给副边供电。

我在这套方案里用了B0505S-1WR2这种小型隔离电源模块,输入5V,输出隔离的5V,再经过一片低压差线性稳压降到3.3V给隔离器副边和远端从设备供电。为什么不直接用隔离模块输出5V供3.3V的SPI设备?因为传感器板上大部分模拟器件对电源纹波敏感,隔离电源模块的开关纹波通常有几十毫伏,直接进数字器件问题不大,进模拟前端就会在ADC采样结果里留下痕迹。加一级LDO可以把纹波压到毫伏级,成本不高但效果非常明显。

如果产品对体积要求极高,也可以用SN6505之类变压器驱动方案做隔离电源,效率更高、纹波更小,但外围器件更多,布局和测试周期长一些。在项目进度紧张时,集成隔离电源模块是最省事的起步方式。

3.4 PCB布线:隔离带、开槽和旁路

MAX14431BAEE+在PCB上的布局基本决定了整体隔离效果。最关键的一条:隔离器正下方的PCB铜箔要彻底断开,原边地和副边地不能有任何直连或交叉铺铜。很多初学者的板子信号隔离了,但地平面还是完整的一大片,等于隔离器白装。

我习惯在隔离器下方、沿隔离器长边划一条宽度超过2mm的隔离槽,并在槽两侧的地铜箔边缘不要铺绿油,让爬电距离更可控。如果PCB面积允许,隔离槽越长越好,最好能从板边一端延伸到另一端,彻底切断原副边地平面的寄生环路。

信号线过隔离器时尽量减少过孔数量,每根线最多一到两个过孔,过孔多了会引入额外的寄生电感和电容,干扰高速边沿。SPI时钟线尤其要避免走90度直角,转45度弧线,然后尽量靠近地回流通路走线。隔离器原副边之间的布线不要平行长距离并行走线,否则隔离电容会从一个信号耦合到另一个。

4. 时序预算与SPI模式取舍:隔离器延迟必须算进设计里

4.1 同向信号不用慌,反向通道才是瓶颈

引入数字隔离器后,很多人第一反应是"延迟大不大?SPI会不会带不动?"其实需要仔细区分信号方向来看。

SCK和MOSI、CS都是从主控侧发到从设备侧的,三者经过隔离器时经历了完全相同的传播延迟。从设备内部采样时,是以它收到的SCK沿为基准去采样它收到的MOSI,两个信号延迟完全相同,所以主控侧输出的时序关系到了从设备侧几乎原样保留,这一路基本不需要额外补偿。

真正的瓶颈在MISO这条反向路径上。主控侧发出的SCK经过隔离器到达从设备,从设备在某个时刻把MISO数据准备好,这个MISO再经过隔离器返回主控侧,主控用自己发出的SCK采样。于是延迟链条是:隔离器正向延迟 + 从设备MISO输出建立时间 + 隔离器反向延迟。主控侧时序预算必须把这三部分全部塞进半个SCK周期里。

4.2 一个简单的时序预算公式

SPI主设备在大多数配置下是在时钟第二个边沿采样数据,也就是半周期处。那么约束条件可以写成:

T_sck_half ≥ tPD_forward_iso + tPD_MISO_slave + tPD_reverse_iso + tsetup_master

其中T_sck_half是SCK半个周期,tPD_forward_iso是SCK经过隔离器到从设备的传播延迟,tPD_MISO_slave是从设备从SCK有效沿到MISO数据有效的最长时间,tPD_reverse_iso是MISO经过隔离器返回主控的传播延迟,tsetup_master是主控侧采样寄存器需要的建立时间。

以我自己测到的一组典型数值举例:隔离器单方向传播延迟典型值30ns,最坏情况60ns左右;从设备的MISO建立时间约10ns;PIC的输入建立时间大约5ns。代入公式:

  • 若SCK为8MHz,半周期62.5ns:30+10+30+5=75ns,超过了62.5ns,按最坏值算会失败。但如果隔离器实际工作在30ns典型值,同时从设备MISO建立更快,则可以勉强工作。
  • 若SCK降到4MHz,半周期125ns:即使按最坏60ns隔离延迟算,60+10+60+5=135ns,还是逼近极限。
  • 稳妥做法是采用SMP=1模式下主控在SCK第二个边沿采样,并且实际测量隔离器两端波形确认余量。

这就是为什么我用示波器实测后,把SCK从计划的10MHz降到了4MHz。工程上不是所有信号都要跑最高速率,隔离场景的首要目标是可靠通信,速率可以适当妥协。

4.3 PIC18F87J60初始化代码:主模式、4MHz、SPI Mode 0

PIC18F87J60的MSSP模块初始化并不复杂,关键是设置好主模式、时钟选择和数据边沿。下面这段代码是我们量产版本里实际在用的初始化逻辑。

void SPI1_Init_Master(void) { // 设置SPI引脚为数字IO,具体寄存器以数据手册引脚配置为主线 SSP1STAT = 0b01000000; // SMP=1,在SCK第二个边沿采样;CKE=0,配合Mode 0 SSP1CON1 = 0b00100000; // SSPEN=1使能MSSP;CKP=0,空闲电平为低;SSPM=0000,主模式时钟=Fosc/4 SSP1CON1bits.SSPEN = 1; }

代码里SPM=0000表示SPI主模式,时钟源为Fosc/4。如果主振荡器跑32MHz,SCK就是8MHz;如果跑16MHz,SCK就是4MHz。我建议量产固件把主振荡器跑在16MHz到32MHz之间,SCK落在4到8MHz区间,在时序预算和吞吐量之间取得平衡。

片选信号用普通GPIO控制,初始化时先把CS输出拉高,避免复位期间从设备被误选中。

void SPI_SelectSlave(int enable) { if(enable) SPI_CS_PORT = 0; else SPI_CS_PORT = 1; }

发送一字节的代码则依赖SSPBUF读写,数据写入SSP1BUF后等待BF位清除即可。对8位数据,单字节发送和接收共用同一过程,主设备发一个字节的同时也收到从设备返回的一个字节。

unsigned char SPI1_Transfer(unsigned char dat) { SSP1BUF = dat; while(!SSP1STATbits.BF); return SSP1BUF; }

这套收发逻辑在隔离器正常工作时非常稳定,出错率极低。如果BF位迟迟不置位,典型原因要么是从设备没拉低CS,要么是隔离器副边供电异常,把供电和CS检查放在前面几乎能解决九成问题。

4.4 时钟极性相位怎么选

SPI的CPOL和CPHA有四种组合,不同从设备支持的模式不同。隔离器本身通常不改写时钟极性和相位,它是透明的,因此SPI模式由从设备手册决定,MCU侧按对应模式配置即可。

我这次接的SPI ADC支持Mode 0和Mode 3,我选了Mode 0。原因是Mode 0下时钟空闲为低,从设备在SCK上升沿采样数据,隔离器对低电平期间的毛刺有一定抑制作用,而且PIC的SMP位置1后在SCK第二个边沿采样,配合MISO的返回路径刚好能获得最多的建立时间余量。

如果你的从设备只支持Mode 1或Mode 2,不要试图在隔离器上做任何"延时补偿"。正确的做法是理解从设备的采样要求,然后通过降低SCK速率解决时序冲突。时序问题宁可降频绕行,也不要在波形上钻牛角尖。

5. 实测验证与调试:从乱码到稳定的完整过程

5.1 回环测试平台搭建

硬件焊接完成后,先不要接真实的传感器板,我用一颗SPI接口的EEPROM(25LC256)挂在隔离器副边做回环验证。25LC256在所有SPI模式都支持,读取和写入都有明确的错误反馈,非常适合用来验证隔离链路是否正常。

测试流程很简单:PIC18F87J60通过隔离器向25LC256写入一段固定内容(例如0x00到0xFF循环),然后读出并与源数据比对。比对通过就说明SPI通信链路、时序参数、电源和布线都没问题,之后才把真实的4-20mA ADC板接上去。

这里有个很实用的技巧:如果手头没有SPI EEPROM,也可以用一颗电阻把MOSI和MISO短接作回环。主控发什么,隔离后从MOSI输出转一圈回到MISO输入,就能验证隔离器两个方向的工作状态。这个方法的优点是零额外成本,缺点是不能验证CS和从设备时序,所以只能作为快速检查手段。

5.2 误码率测试的实际数据

回环通过后,我做了持续通信稳定性测试。让PIC18F87J60每毫秒向25LC256写入64字节随机数据并读回校验,连续跑12小时,统计错误字节数。

最终结果很干净:12小时内0字节错误。但如果把SCK从8MHz强行拉到10MHz以上,并且此处从设备的MISO建立时间偏慢,就会开始出现偶发的读回错误,主要集中在每256字节的边界附近。这个现象解释起来不复杂——边界处CS状态翻转,从设备MISO三态与驱动态切换需要额外时间,隔离器的反向延迟会被这部分时间进一步侵蚀。

所以我在最终软件版本里把SCK锁定在4MHz,并且在读取数据时加了连续三次比对、两次一致才接受的软件容错机制。如果两次不一致就重新读取一次,宁可多次读,也不轻易向从设备发起重复写操作,避免在边界条件下把正常数据误写成异常值。

5.3 现场踩过的三个坑及排查链路

第一块样板在实验室跑得好好的,装到机柜里就偶发乱码。示波器接上去观察,发现隔离器副边的SCK波形上有明显振铃,幅度超过1V,明显是线缆太长加上阻抗不匹配造成的反射。处理方式是在隔离器副边SCK输出端串联一只22欧姆电阻,在远端从设备端并联一只100欧姆终端电阻,振铃幅度立刻压到300mV以下,乱码消失。

第二块样板的问题是CS信号在副边出现毛刺,导致从设备偶尔进入写状态。排查后发现是MCU侧CS引脚复用未配置,复位期间GPIO处于高阻态,隔离器输入端悬空,输出端电平不确定。修复方法是把CS引脚初始化代码放在系统所有外设配置之前,并在MCU上电瞬间让GPIO输出高电平,彻底消除悬空窗口。

第三个问题是前面提到过的供电共地陷阱。当时副边直接把隔离电源模块的5V转成了3.3V,但远端传感器板的模拟地线似乎和数字地线在接插件处有轻微回流,导致ADC读数偶尔跳码。后来把隔离电源模块的副边地单独铺一块局部地平面,与传感器板的模拟地单点连接,跳码基本消失。这个坑说明:隔离电源模块并非包含百病的解药,它的地线布局同样需要按模拟电路的标准来对待。

5.4 示波器波形怎么看

调试SPI隔离链路,示波器至少要能同时看三路信号:原边SCK、副边SCK、副边MOSI。三路信号用不同的地线夹子,注意地线夹子的共地关系。测量原边信号时夹原边地,测量副边信号时夹副边地,不要共用地线夹,否则隔离器两边会被示波器地线硬连在一起,等于白隔。

看波形时先确认副边SCK和MOSI没有严重畸变,边沿单调性正常,幅值不低于VDD的0.7倍。然后核对原边SCK与副边SCK之间的延迟,如果峰值延迟超过了设计预算中预留的时间,就要降低SCK频率。最后把CS信号一并抓进示波器,观察CS变低到第一个SCK时钟沿之间的间隔,如果间隔太小,从设备可能来不及准备,需要软件在拉低CS后加一点延时。

6. 几个进阶扩展与最终体会

6.1 一个隔离器带多个从机

如果需要用同一个SPI主控挂多个隔离从设备,可以在每个从设备链路前各放一片MAX14431BAEE+,也可以只隔离主控侧,把多个从设备都放在同一隔离域内。前者的成本高,但每个从链路之间有完全独立的隔离边界;后者的物理连接更简单,原边和副边各自挂各自的从设备,公共地只有副边一个,只要所有从设备与副边地电位一致即可。

我做样机验证时用了后一种方案:PIC18F87J60后面接一片MAX14431BAEE+,副边挂了一个SPI ADC和一个SPI EEPROM,ADC用GPIO控制CS,EEPROM共用另一个GPIO。通信均正常,但前提是两个从设备的工作电压和电气特性完全一致,否则副边电压选择需要综合考虑。

6.2 和隔离以太网接口的结合

PIC18F87J60自带以太网控制器,很多工业现场设备要求网络接口也带隔离。以太网PHY侧本身就有隔离变压器,这部分隔离通常不需要再加数字隔离器,只要RJ45选用内置变压器的网络口即可。SPI隔离和数据网络隔离双管齐下,主控整颗芯片就处于一个完整的电气隔离边界之内,整板可以做到与外部没有欧姆级连接。

这种做法对产品的安全认证相当有利:所有对外接口的隔离需求都由专用器件承担,主控和电源逻辑只负责数字处理,整机EMC测试时重点排查对象清晰,返工定位成本大幅降低。

6.3 最终体会

回到标题里这两个器件组合:PIC18F87J60提供网络接入、数据汇聚和协议栈处理能力,MAX14431BAEE+负责把SPI这条"最容易裸奔"的总线安全地送过隔离栅。硬件工程师很容易被高速信号和复杂协议吸引,但工业嵌入式设备的核心价值永远是稳定和可维护,而隔离恰恰是稳定性的地基之一。

如果你正准备给自己的嵌入式工业设备加SPI隔离,我的建议是:先按本文里的时序预算公式把速率和隔离器延迟算清楚,再画原理图;打样回来后先用EEPROM回环测试再挂真实外围设备;示波器测量时务必注意隔离器两侧地线不能共用。这几步走稳,剩下的就是量产的一致性验证了。

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

从静态监控到平台雷达:四层指标与趋势判警实践

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

作者头像 李华
网站建设 2026/11/2 1:03:49

POE以太网温湿度记录仪机房环境监测实战:从选型到点位布设

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

作者头像 李华
网站建设 2026/11/2 1:03:35

SPI隔离器MAX14431与PIC18F8722实现工业级稳定通信的实战指南

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

作者头像 李华
网站建设 2026/11/2 1:03:04

PLFM_RADAR:基于Python的雷达信号处理与可视化平台

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

作者头像 李华
网站建设 2026/11/2 1:01:55

数字隔离器如何根治SPI通信地环路干扰:MAX14431与TM4C129实战

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

作者头像 李华