news 2026/11/3 18:11:46

PIC18F46K22+MAX14431 SPI隔离方案:原理、硬件与固件实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PIC18F46K22+MAX14431 SPI隔离方案:原理、硬件与固件实战

MAX14431BAEE+ 配 PIC18F46K22,给 SPI 链路做隔离,这个组合在工业嵌入式项目里越来越常见。SPI 是嵌入式工程师最熟悉的总线之一,但在工业现场,它也是最容易被干扰、最容易因为共地问题烧毁的一类接口。这篇文章我把整个方案从头到尾拆开讲一遍:为什么非隔离不可,两个器件各自承担什么角色,硬件怎么搭,固件怎么写,实测中会遇到哪些坑。正在做工业控制板、传感器采集卡、电机驱动通信这类项目的朋友,可以把它当一份工程笔记来读。

1. 先想清楚:这个项目到底要解决什么

1.1 为什么要给 SPI 加隔离

很多嵌入式工程师是在干净的环境里调试 SPI 的:开发板放桌上,两根杜邦线连一个传感器,逻辑分析仪一挂,数据整整齐齐。但在工业现场,这套玩法基本活不过三天。

工业设备里常见这么几种要命的情况:

第一是地电位差。设备的地不是一个等电位体,变频器启动、大功率继电器切换、电机刹车,都会让不同机柜之间的地电位瞬间浮动几伏甚至几十伏。两个设备如果直接共地通信,地环路电流会沿着 SPI 线流窜,轻则数据乱码,重则烧芯。第二是感性负载的开关噪声。接触器一吸合,电源线上能出现几百伏的尖峰,通过寄生电容耦合到信号线上,SPI 这种高速翻转的数字信号最容易误判。第三是故障状态下的安全要求。某个传感器板内部短路,产生高电压回灌,如果没有任何隔离手段,主控板会跟着一起烧掉。

所以给 SPI 加隔离,目的不是“锦上添花”,而是让系统能扛住共模电压、浪涌、电位差,同时保证人身和设备安全。工业设备设计规范里对隔离耐压、爬电距离都有明确要求,比如 IEC 60747 这类标准会规定增强绝缘、基本绝缘的隔离等级。放到实际项目中,就是必须在信号路径上切断电气连接,只让信号过去,不让电流过去。

SPI 这四根线——SCLK、MOSI、MISO、CS——全部需要隔离,只要漏掉一根,整套隔离方案就不成立。这也正是“全链路隔离”这个表述的含义:不是只隔信号,也不只是隔电源,而是信号和电源一个都不能漏。

1.2 系统拓扑与设计目标

我这次项目的基本架构是这样:主控板用 PIC18F46K22 做 SPI 主机,远端有一块从设备板,上面有 ADC、DAC 和一个 SPI 接口的编解码芯片。两块板子距离大概 20 厘米,中间用排线连接,但分别由两个独立的电源系统供电。设备工作在一个频繁启停电机和接触器的机柜里,属于典型的工业嵌入式场景。

开始的版本是不隔离的直连方案,实验室里一切正常,一上机柜就出问题:采集到的数据偶发跳变,偶尔整个 SPI 通信卡死,主控看门狗复位。用示波器量的时候发现,从设备板上的地到主控板的地之间有接近 1V 的持续电位差,开关动作瞬间能冲到 3V 以上。对 3.3V 的系统来说,这个干扰水平已经足以破坏 SPI 信号了。

后来方案改成:PIC18F46K22 在主控侧,通过 MAX14431BAEE+ 隔离器连接到从设备板。隔离器的一侧挂在主控板上,另一侧挂到从设备板,两侧的电源完全独立。设计目标有三个:先把通信误码率压到 0,哪怕在电机启停时也不能出错;其次是隔离耐压要能满足设备出厂测试要求;最后是 SPI 速度不能牺牲太多,至少要保持原有 4MHz 通信速率下稳定运行。

2. 器件选型:MAX14431BAEE+ 和 PIC18F46K22 为什么能凑到一起

2.1 MAX14431BAEE+ 的定位与选型逻辑

MAX14431BAEE+ 是 Maxim/ADI 面向 SPI 接口隔离推出的数字隔离器,选它的第一理由是把“SPI 信号双向隔离”和“隔离电源”两个能力合到了一个封装里。

这种器件和传统方案最大的区别在于集成度。以前的做法是一个隔离电源模块加四个高速数字隔离器,电源模块负责跨越隔离栅输电,四个隔离器分别处理 SCLK、MOSI、MISO 和 CS。问题在于器件太多、占板面积大、走线麻烦、成本高,而且四个隔离器的传播延迟要匹配,一旦选型分散,很容易超时序预算。

MAX14431BAEE+ 这类 SPI 隔离器则把信号通道设计成适配 SPI 的方向模式:SCLK、MOSI、CS 是从原边到副边,MISO 是从副边回到原边,方向正好匹配 SPI 的全双工特征。型号里的尾缀“BAEE+”包含了通道方向配置、隔离耐压等级、封装形式和温标范围,直接在选型时就锁定了 SPI 的应用场景,不需要额外配置太多外部逻辑。

隔离电源部分也很关键。它内部集成了 DC-DC 转换器和隔离变压器,能够从原边取电,在副边生成一组隔离后的输出电压。这意味着,如果从设备板功耗不大,可以完全省掉一个独立的隔离电源模块,让从设备板直接由隔离器供电。对于继电器采集板这种功耗小的设备,这个特性非常实用。

值得提醒的是,不同尾缀对应不同隔离等级和通道方向,定型号之前一定要翻具体的数据手册确认,不能只看前面“MAX14431”这几个字母就下单。特别是 BAEE+ 这串代码在不同批次和同系列型号下的含义可能不同,选型阶段花十分钟核对规格比画板子时发现耐压不够再改要省事得多。

2.2 PIC18F46K22 的优势与接口资源

PIC18F46K22 是 Microchip 家的 8 位增强型单片机,在这个项目里担任 SPI 主机角色。有人可能会问,做工业通信为什么不用 STM32?答案很简单:很多工业设备的老平台就是 PIC,BOM 不能随便改,工程师对 PIC 的开发工具链也熟,而且 PIC18F46K22 的资源和稳定性够用。

来看这个芯片的接口资源:它有两个 MSSP 模块,可以配置成 SPI 或 I2C,这很关键。一个 MSSP 用来给这次项目的从设备通信,另一个可以留作扩展,比如接 EEPROM 或者本地显示驱动。它集成了 64KB Flash、3.9KB RAM 和 1KB EEPROM,对于存储少量校准参数、掉电保持配置数据来说够用。工作电压范围 1.8V 到 5.5V,很多工业传感器都是 5V 供电,可以直接对接,不用来回做电平转换。

更重要的是,PIC18F46K22 有丰富的外设引脚,我可以选择一个不与其他功能冲突的引脚组合来布置 SPI 信号,给 PCB 布局留出足够空间。比如我可以把隔离器放在板边,SPI 信号线短距离进入隔离器原边,然后隔离器副边线再走到连接器,这样的信号流向非常顺畅。

还有一个常常被忽略的点:PIC18F46K22 供电可以是 3.3V,也可以是 5V。MAX14431BAEE+ 的原边逻辑电平要匹配,如果 MCU 用 3.3V,隔离器原边也配到 3.3V,副边再根据远端设备的逻辑电平选择 3.3V 或 5V。这种双电源域灵活性在混合逻辑电平的工业设备里非常方便。

2.3 与光耦、普通数字隔离器的对比

刚接触隔离的人通常会问:光耦不是更便宜吗?为什么要用数字隔离器?

光耦确实在低速信号隔离里用得很多,比如开关量输入、继电器控制信号,几百 kHz 的信号用光耦完全没问题。但是用光耦隔离 SPI 有几个硬伤:

第一是通道数太多。光耦一个一个买,四路 SPI 信号加一路电源隔离,元件数量立刻膨胀,焊盘面积、布线难度都上去了。第二是速度不够。普通光耦的传播延迟在微秒级,跑 4MHz SPI 时,半个时钟周期才 125ns,光耦延迟吃掉一大半,时序裕量几乎没了。高速光耦可以快一些,但价格一点不便宜。第三是延迟不对称。光耦的上升沿和下降沿延迟往往不一样,导致时钟高电平时间和低电平时间都被拉偏,SPI 从机很容易采集错位。

普通数字隔离器解决了光耦的速度问题,比如电容耦合或磁耦合的数字隔离器,传播延迟能做到几十纳秒内,而且延时匹配更好。但它不像 MAX14431BAEE+ 那样内置隔离电源,仍然需要另外搭配一个 DC-DC 电源模块来给副边供电。这不算错,只是板子尺寸更大。

所以 MAX14431BAEE+ 的定位很清楚:把隔离通道和隔离电源做成一个专用器件,专门伺候 SPI 这种全双工同步总线。它比光耦方案更靠谱,比“通用数字隔离器加电源模块”更集成。当然,如果系统里已经有现成的隔离电源,而且对从设备端的功耗要求更高,用通用数字隔离器也是合理的,核心还是看整体 BOM 和布局约束。

3. 原理与硬件设计:隔离链路的核心细节

3.1 SPI 隔离的四个信号与方向处理

SPI 是四线全双工,隔离设计的第一步是把每根线的方向搞清楚。

SCLK 和 MOSI 一定是从主机发往从机,CS 通常也是主机发往从机。MISO 是从机返给主机。所以隔离器至少需要三个正向通道和一个反向通道。MAX14431BAEE+ 这类器件把通道方向固化好,设计时直接对应连接,不需要像通用数字隔离器那样用额外的方向控制信号去切换。

这里有个调试中常见的认知陷阱:很多人以为 SPI 方向是固定的,于是画原理图时把 MOSI 和 MISO 搞反,或者忽略了 CS 的时序。CS 虽然只是个选通信号,但隔离器对它的延迟和 SCLK 的延迟必须匹配。如果 CS 隔离路径延迟大、SCLK 隔离路径延迟小,从机就会在 CS 还没稳定的时候看到时钟边沿,导致选中混乱。所以设计时要把四根线看作一个整体,确保经过隔离器之后的相对时序关系没有明显错位。

还有个细节是 MISO 线。当 SPI 总线上挂了多个从机、且从机用开漏或三态输出时,MISO 在从机未被选中时是高阻。如果隔离器副边没有带上拉,主控侧读到的 MISO 就是浮空状态。工业环境下浮空线很容易被噪声拉偏,所以我在副边 MISO 上加了 4.7k 上拉电阻,确保空闲时是确定的电平。这个做法对 SPI 多设备总线和隔离链路都适用。

3.2 时序预算:隔离器延迟到底意味着什么

跑 SPI 时,主机的时钟频率不是想定多少就定多少,隔离器会给信号路径增加额外延迟,这个延迟必须被算进时序预算里。

SPI 建立时间和保持时间的基本逻辑是:主机的 SCLK 上升沿或者下降沿采数据,被采样的数据在采样沿之前要稳定够长的一段时间,在采样沿之后还要保持够长的一段时间。当信号经过隔离器后,SCLK、MOSI、MISO 各自都增加了隔离器的传播延迟 tPD。虽然电路中所有信号都加延迟,听起来像是同步增加、无所谓,但实际上:

  • 主机发出的 SCLK 和 MOSI 同时进入隔离器,从隔离器出口出来时,两者的相对延迟由隔离器内部的通道到通道延时差决定。器件手册里通常会给通道间偏斜的量级,这个值越小越好。
  • 从机发出的 MISO 信号要经过隔离器返回主机。这一路返回的延迟会直接吃掉主机的采样裕量。也就是说,隔离器返回通道的延迟必须小于半个 SPI 时钟周期,否则主机会漏采样。

举个例子,如果目标 SPI 时钟是 4MHz,一个时钟周期 250ns,半个周期只有 125ns。隔离器的传播延迟如果有几十 ns,加上 MISO 返回通道的延迟和线路上的走线延迟,时序裕量就已经很紧张了。所以我实际项目里先把 SPI 时钟配置成 4MHz,用示波器观察隔离器前后的波形,确认数据建立时间和保持时间都还有余量,再考虑要不要往上提速度。MAX14431BAEE+ 这类现代数字隔离器在延迟指标上表现不错,但不要因此就忽视了时序验算。

3.3 电源域与隔离电源设计

隔离的本质是切断电气连接,所以隔离器两侧的电源域必须严格分开。原边电源来自主控板的 3.3V 或 5V,副边电源可以来自外部,也可以由 MAX14431BAEE+ 内置 DC-DC 产生。

用内置 DC-DC 方案时,一个特别要注意的问题是输出电流上限。内置 DC-DC 的功率设计通常面向隔离器自身副边逻辑和少量负载,比如几 mA 到几十 mA 量级。如果远端从设备板上有 ADC、DAC、基准源、运算放大器,这些器件电流加在一起很容易超过隔离器的供电能力。我在原理图设计阶段就做了一个简单的电流表:把副边所有器件的供应电流逐个列出来,再除以效率估算出原边需要的输入电流,最后和器件手册里的限流值对比。如果超了,就需要改成外部隔离电源模块。

另外,副边电源的滤波不能省。MAX14431BAEE+ 副边输出是通过内部变压器得到的,高频噪声比普通 LDO 输出大一些。我在副边电源引脚放置了 1uF 和 100nF 两级电容,并且在隔离器副边输出端加了一个小容量的钽电容用于低频储能。这样远端从机对电源纹波比较敏感时,实测波形上的毛刺会小很多。

电源上电顺序同样有讲究。单片机复位时 IO 状态不确定,如果此时 SPI 线上有乱电平,通过隔离器传到远端设备,远端设备可能误判为通信开始。我这边虽然在 CS 上拉了高电平,但并不能完全杜绝所有上电瞬间的毛刺。所以我在固件里做了处理:MCU 完全启动并且初始化 SPI 之后,再主动把 CS 拉高,确保真正的通信操作之前总线状态是稳定的。硬件上再配合一个 RC 延时让副边电源先稳定起来,这样两层准备下来,上电期间基本没有误动作。

3.4 PCB 布局的几条硬规矩

隔离器在 PCB 上不是随便放个位置就行,有几个原则是画板时必须遵守的。

第一,隔离栅两侧的走线要分区明显。隔离器原边的走线和副边的走线不能交叉,也不能在隔离器两侧之间来回穿。我处理时直接把板子分为原边区域和副边区域,以隔离器为界,两边的信号和电源铺铜互不跨越。

第二,隔离器下方和附近的铜皮要谨慎处理。很多数据手册会要求保证隔离带下方没有连续铺铜,或者要开槽,否则隔离电容和爬电距离达不到标称值。具体要看器件封装和隔离栅位置,PCB 软件里可以用禁布区圈出来。

第三,去耦电容要紧贴电源引脚。原边和副边各放一个 100nF 的 X7R 电容,尽可能靠近 VCC 和 GND 引脚,走线先到电容再到过孔。这步不能省,否则高速信号切换时电源会出现局部塌陷,直接表现为通信偶尔出错。

第四,SPI 信号线要保持短和等长。主控到隔离器之间的距离尽量短,隔离器副边到连接器的距离也尽量短。四根 SPI 线的长度不能差太远,尤其是 SCLK 和 MISO、MOSI 之间,走线长度差太大会叠加额外的延时差。在工业背板设计的场景下,我一般控制在 5mm 以内的长度差。

第五,连接器的地脚分配。SPI 连接器推荐采用多根地线间隔分配的方式,例如每两根信号线之间配一个地引脚,或者直接在一个排线连接器里留出双倍地针。这样可以减小信号线之间的串扰和地回路电感。

4. 固件实现:PIC18F46K22 的 SPI 配置与数据处理

4.1 用 MCC 配置 MSSP1 主模式

我开发时用的是 MPLAB X IDE 加 MCC 插件。PIC18F46K22 的 SPI 模块配置用图形界面处理,比直接写寄存器少踩很多位设置的坑。

MCC 里选好 MSSP1,把它配置成 SPI Master 模式,关键参数按这次项目来定:SPI 模式选 Mode 0,时钟源选 FOSC/64。如果单片机用内部 32MHz 振荡器加 PLL 到 64MHz,FOSC/64 得到的 SPI 时钟就是 1MHz。想跑更高,可以选 FOSC/16,得到 4MHz。

有些朋友可能习惯手写寄存器,这里也给出等价的核心配置思路:

  • 使能 MSSP1 模块,选择 SPI 主模式;
  • 根据目标时钟频率设置分频器;
  • 配置时钟极性和相位,SPI Mode 0 就是空闲时时钟为低、上升沿采样;
  • 启用模块的 BF 标志和 WCOL 标志等状态位作为数据收发判断依据。

MCC 生成完代码后,其实日常收发只需要操作一个发送缓冲寄存器和一个状态标志。核心读写函数可以参考下面这个思路:

uint8_t spi_transfer(uint8_t tx) { SSP1BUF = tx; while (!SSP1STATbits.BF); return SSP1BUF; }

写入数据后等待 BF 位置位,再读回来即可。这个函数每次调用完成一字节全双工交换,实际项目中把需要发送的数据构造成字节数组,循环调用这个函数就行。

4.2 收发函数与片选管理

SPI 的片选信号有的主控用硬件自动控制,有的用普通 GPIO 软件控制。硬件片选的好处是 MCU 写数据时自动把 CS 拉低,速度快。但在隔离 SPI 场景下,我更倾向于把 CS 做成软件 GPIO 控制。

原因在于:硬件片选在字节传输开始前瞬间拉低 CS,这个信号经过隔离器后有延迟,从机看到的 CS 有效时间和 SCLK 有效时间之间的配合很难精确控制。而软件控制时,我可以先拉低 CS,故意等待 10us 左右,让隔离器输出完全稳定,再开始发字节;等整个通信流程结束,再拉高 CS。这样多出来的等待时间很少,却能保证从机严格符合 SPI 时序要求。

实践中我把片选封装成宏:

#define CS_OUT LATCbits.LATC2 #define CS_ENABLE() CS_OUT = 0 #define CS_DISABLE() CS_OUT = 1

配合一个简单的状态机来处理读和写:先 CS_ENABLE,然后发送地址和命令字节,接着收发数据字节,最后 CS_DISABLE。如果是多字节帧结构,可以在 CS 拉低期间连续传输多字节,只要总传输时间不超过从机的看门狗要求就没有问题。

4.3 上电时序与状态机思路

隔离链路比普通直连链路多了一层电源依赖,所以固件不能一上来就猛发数据。我会在 main 函数初始化完成后,先做一次“链路确认”:把 CS 拉高,发送 3 到 5 个 0x00 字节,不用关心数据内容,只确认 MISO 有返回值,说明隔离器和从机都已经准备好。如果返回值全是 0xFF 且持续多次,大概率是从机或者隔离器有问题,此时应该报错而不是无限重试。

这里还有一个实际经验:不要在 SPI 发送过程中喂看门狗。像 spi_transfer 这种等待 BF 的方式,如果从机没有响应,BF 一直不置位,程序会卡死在 while 循环里,看门狗根本得不到喂狗的机会,最终只能复位重启。更好的做法是给 spi_transfer 加一个超时计数器,比如等待 N 个循环后如果 BF 还没置位,就退出并返回错误标志。

我最终的收发流程大概是:先检查忙状态,然后拉低 CS,延时一小段,逐字节收发,所有字节完成后拉高 CS,再延时一小段,释放总线。每步之间留出 10us 级别的缓冲。由于 SPI 本身是同步的,只要从机响应正常,这样的延时不会影响吞吐率,换来的是稳定性和可排查性。

5. 常见问题与排查实录

5.1 问题速查表

把我在调试中遇到过的以及同行反馈过的典型问题整理成下面这张表,方便遇到故障时直接对号入座:

现象可能原因处理方法
数据偶发误码,错误位无规律SPI 速率太高,隔离器延迟超出时序预算降低 SPI 时钟频率,或选用更低传播延迟的隔离器
MISO 始终读到 0xFF隔离器 MISO 返回通道方向配置错误核对型号尾缀对应的通道方向,检查接线定义
数据整体偏移一位,波形异常SPI 模式不匹配,CKP/CKE 位设置错误示波器看波形,确认空闲电平和采样沿
某些字节重复或丢失MSSP 模块读缓冲不及时,产生溢出在 BF 置位后立即读取数据,避免缓冲覆盖
通信正常但远端设备偶发复位副边隔离电源带载不足计算副边总电流,改成外部隔离电源
整板通信卡死,看门狗复位SPI 等待 BF 超时无保护给收发函数加超时退出机制
CS 拉低但从机不响应上电时序问题,隔离器副边未稳定初始化后先确认链路,再发真实数据

5.2 几个值得记住的排查套路

排查隔离 SPI 问题时,最忌讳凭感觉改软件参数。我每次遇到通信异常都按下面这个顺序查。

第一步:量电源。先用示波器看隔离器原边和副边的电压,重点观察是否在通信瞬间出现跌落。很多时候通信错误不是信号问题,而是 B 侧电源瞬间抽电流把电压拉垮了。如果看到副边电压毛刺很大,优先去补电容,而不是去改固件。

第二步:吊波形。用示波器双通道同时看隔离器原边 SCLK 和副边 SCLK,能直观看到隔离器引入的额外延迟。再对比 MOSI、MISO 和 CS 的相对时序。这一步能快速判断隔离器延迟是否吃掉过多时序裕量,也能看出 SPI 模式是否配错。

第三步:拉低速率做对照。把 SPI 时钟降到 100kHz 以下再试。如果低速完全正常、高速出问题,基本可以断定是时序裕量不足,而不是逻辑错误。这时可以选择降速量产,或者优化走线、换更好的隔离器。

第四步:查从机侧的上拉和负载。MISO 悬空、从机输出驱动能力弱、副边总线上挂了太多器件导致容性负载过大,都会造成数据不稳。用一个简单的 RC 或加缓冲器重新驱动信号往往立竿见影。

6. 个人实操心得与后续扩展

这个方案我实际做过一轮完整的设计和调试,最大的体会是:隔离不是把一个隔离器塞进电路里就结束了,它是一个需要贯穿原理图、PCB、固件三层一起设计的系统工程。硬件上少一个去耦电容,固件上少一个超时机制,最后都可能表现为难以复现的随机故障。

还有一个反复出现的点值得强调:隔离器手册里标称的最大数据速率往往是一个纯信号指标,不代表你在完整系统里能跑出这个速度。真实速率上限受限于隔离器延迟、从机时序要求、PCB 走线长度和电源质量。我在项目里最终稳在 4MHz,比器件标称低不少,但系统从没有因为 SPI 通信本身出过问题。对工业设备来说,稳定优先于速度,这一点永远没错。

如果后续要扩展,可以从两个方向考虑。一是把 PIC18F46K22 换成带有更多 SPI 外设或者更强 DMA 能力的 MCU,降低 CPU 在传输过程中的参与度;二是如果副边要挂多个从设备,可以研究一下用隔离的 SPI 加片选扩展开关的组合方案。但无论怎么扩展,隔离和时序的底层逻辑不变:先保证电源干净、路径清晰、时序有裕量,再去追求更高的速率和更复杂的拓扑。

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

工业级隔离SPI设计实战:MAX14431与Kinetis KV4x选型布线调试

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

作者头像 李华
网站建设 2026/11/3 18:11:13

STM32+MAX14431隔离SPI实战:从选型到PCB与驱动全解析

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

作者头像 李华
网站建设 2026/11/3 18:10:11

飞行汽车电控解析:AURIX与SiC的完整技术版图

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

作者头像 李华
网站建设 2026/11/3 18:09:23

TM4C123GH6PZ与MAX14431BAEE+的SPI隔离设计实战

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

作者头像 李华
网站建设 2026/11/3 18:09:21

基于MAX14431与MKV42的隔离SPI通信链路设计与实现

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

作者头像 李华