工业现场里跑 SPI 通信最容易被低估的就是地电位差这件事。板子单独放在桌面上跑得好好的一旦两台设备分别供电、各自接地SPI 就开始随机丢字节、偶发死锁甚至烧掉从机的 IO。这类问题我在做电机控制和电力监测类项目时遇到过不止一次最后基本都是靠数字隔离器把链路切开才彻底解决。这篇就围绕 MAX14431BAEE 和 STM32F205RB 这套组合把工业与嵌入式场景下 SPI 隔离链路的完整设计思路拆开讲清楚——从为什么要隔离、选型怎么定、硬件怎么连、软件怎么配到实测中那些文档里不会写的坑。适合正在做工业采集板、隔离通信接口或者被 SPI 通信稳定性折磨过的硬件和嵌入式工程师参考。1. 先搞清楚 SPI 为什么在工业现场必须隔离1.1 地电位差才是 SPI 通信不稳定的元凶很多人第一次遇到 SPI 通信异常第一反应是时序配错了或者线太长。但如果你把示波器地夹夹在主机地、探头去量从机地往往会看到两者之间有几百毫伏甚至几伏的电位差。这个差值来自两方面一是两台设备各自接大地大地回路里流动的电流在接地电阻上产生压降二是工业现场大功率设备启停时地线上耦合进来的瞬态干扰。SPI 是单端信号逻辑电平是相对于各自的地来判断的。主机输出 3.3V 高电平是相对于主机地从机判断这个高电平是相对于从机地。当地电位差达到 1V 以上从机就可能把高电平判成低电平或者反过来。更危险的是这个电位差会通过信号线形成地环路电流轻则通信误码重则把 IO 口的 ESD 二极管烧穿。提示判断是否需要隔离一个简单的经验法则是——如果两台设备的地不是同一个点、或者两地之间的电缆长度超过 1 米、或者现场有大功率开关设备就应该考虑隔离。1.2 隔离不只是防烧板更是保信号完整性隔离的价值有两层。第一层是安全把两边的电气连接彻底断开地环路电流没有通路IO 不会被烧。第二层是信号完整性隔离器把信号重新整形后再传过去相当于在链路中间加了一个中继边沿更干净共模干扰被挡在外面。工业场景里常见的隔离手段有光耦、电容隔离、磁隔离变压器几种。光耦便宜但速度慢、功耗大、寿命受 LED 衰减影响电容隔离速度快、功耗低是现在数字隔离器的主流方案。MAX14431BAEE 就是基于电容隔离技术的四通道数字隔离器专门为 SPI 这类高速同步接口设计。1.3 SPI 隔离和普通 GPIO 隔离的差别在哪普通开关量隔离慢一点没关系几十微秒的延迟无所谓。但 SPI 是同步时钟总线SCLK 频率动辄几 MHz 到几十 MHz隔离器引入的传播延迟会直接影响时序余量。SPI 有四个信号SCLK、MOSI、MISO、CS。其中 SCLK 是时钟MOSI 和 MISO 是数据CS 是片选。关键点在于SCLK 经过隔离器会有延迟MISO 回来的数据也有延迟。如果主机在 SCLK 边沿采样 MISO而 MISO 因为隔离延迟还没稳定就会采到错误数据。所以隔离 SPI 时通道的传播延迟、通道间延迟匹配skew是两个核心指标。MAX14431 这类器件的通道间匹配做得比较好就是为了应对这个问题。2. MAX14431BAEE 的通道配置与选型逻辑2.1 四通道怎么分配给 SPI 的四个信号MAX14431BAEE 是四通道数字隔离器通道方向可以灵活配置。SPI 全双工通信需要四个信号方向分布是这样的SPI 信号方向说明SCLK主机 → 从机时钟单向MOSI主机 → 从机主机输出从机输入MISO从机 → 主机从机输出主机输入CS主机 → 从机片选单向也就是说三个通道是主机到从机方向一个通道是从机到主机方向。MAX14431 的通道方向配置需要根据具体型号确定选型时一定要看清楚每个通道的默认方向或者是否支持方向可配。如果方向搞反了信号根本传不过去。2.2 为什么选电容隔离而不是光耦我早期项目用过 6N137 这类高速光耦做 SPI 隔离能跑到 10MHz 左右但问题不少。首先是功耗每个光耦 LED 要 10mA 左右的驱动电流四路就是 40mA对低功耗设备很不友好。其次是速度一致性差不同批次的光耦传输延迟差异大SCLK 和 MOSI 之间的 skew 不好控制。再就是寿命LED 会随时间和温度衰减几年后通信就开始出问题。电容隔离的方案比如 MAX14431功耗低每通道几 mA 甚至更低、速度快可达几十 MHz、延迟一致性好而且没有 LED 衰减问题。对于需要长期稳定运行的工业设备这个选择基本没有悬念。2.3 隔离器的供电与两侧电源设计隔离器两侧需要独立供电这是隔离的前提。主机侧STM32F205RB 这边用 3.3V从机侧也要有独立的 3.3V 或 5V 电源。两侧的地必须是分开的不能有任何直接连接否则隔离就白做了。从机侧的电源怎么来常见做法是用隔离 DC-DC 模块从主机侧取电通过变压器隔离后输出一路独立的电源给从机侧。也可以用独立的电源适配器给从机侧供电。关键是两侧电源的地要真正隔离不能通过电源线又连到一起。注意隔离 DC-DC 的隔离耐压要和数字隔离器匹配。如果隔离器是 2.5kV 耐压DC-DC 也要选 2.5kV 以上的否则电源侧先击穿隔离器再好也没用。3. STM32F205RB 侧 SPI 外设的配置要点3.1 SPI 模式与时钟极性的匹配STM32F205RB 的 SPI 外设支持四种模式CPOL/CPHA 组合。隔离器本身不改变 SPI 模式但它会引入延迟所以模式选择要考虑延迟的影响。一般来说从机芯片决定了 SPI 模式主机必须匹配从机的模式。配置时重点看两个寄存器位CPOL时钟极性和 CPHA时钟相位。CPOL0 表示空闲时 SCLK 为低CPOL1 表示空闲时为高CPHA0 表示第一个边沿采样CPHA1 表示第二个边沿采样。这四个组合对应 Mode 0 到 Mode 3。// STM32F205 SPI 初始化示例以 Mode 0 为例 SPI_HandleTypeDef hspi1; void SPI1_Init(void) { hspi1.Instance SPI1; hspi1.Init.Mode SPI_MODE_MASTER; hspi1.Init.Direction SPI_DIRECTION_2LINES; hspi1.Init.DataSize SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity SPI_POLARITY_LOW; // CPOL 0 hspi1.Init.CLKPhase SPI_PHASE_1EDGE; // CPHA 0 hspi1.Init.NSS SPI_NSS_SOFT; // 软件片选 hspi1.Init.BaudRatePrescaler SPI_BAUDRATEPRESCALER_32; hspi1.Init.FirstBit SPI_FIRSTBIT_MSB; hspi1.Init.TIMode SPI_TIMODE_DISABLE; hspi1.Init.CRCCalculation SPI_CRCCALCULATION_DISABLE; HAL_SPI_Init(hspi1); }3.2 波特率预分频要留出隔离延迟余量这是隔离 SPI 最容易踩的坑。假设 STM32 主频 120MHzSPI 分频后 SCLK 跑到 10MHz周期 100ns。如果隔离器的传播延迟是 20ns通道间 skew 是 5ns那么 MISO 回来的数据相对于 SCLK 就滞后了 20ns 左右。在 100ns 的周期里20ns 已经占了 20%采样窗口被压缩得很厉害。实际调试时我一般会先把波特率降下来比如先跑 1MHz确认通信正常后再逐步往上加找到稳定工作的上限。不要一上来就按从机手册的最大速率配隔离器会成为瓶颈。SCLK 频率周期隔离延迟占比假设 20ns建议1MHz1000ns2%非常安全5MHz200ns10%安全10MHz100ns20%需验证20MHz50ns40%接近极限3.3 软件片选与硬件片选的取舍STM32 的 NSS 可以配成硬件模式也可以配成软件模式。硬件模式下NSS 引脚由 SPI 外设自动控制软件模式下用一个普通 GPIO 手动拉低拉高。隔离场景下我强烈建议用软件片选。原因有两个一是硬件 NSS 在多主机或者复杂时序下容易出问题二是软件片选可以精确控制 CS 拉低到第一个 SCLK 之间的建立时间以及最后一个 SCLK 到 CS 拉高的保持时间。这两个时间在隔离链路上会被延迟影响手动控制更灵活。// 软件片选操作示例 #define SPI_CS_LOW() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET) #define SPI_CS_HIGH() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET) uint8_t SPI_Transfer(uint8_t data) { uint8_t rx_data; SPI_CS_LOW(); HAL_SPI_TransmitReceive(hspi1, data, rx_data, 1, 100); SPI_CS_HIGH(); return rx_data; }4. 硬件链路搭建从原理图到 PCB 的实操细节4.1 隔离器两侧的退耦电容不能省数字隔离器的电源引脚旁边必须放退耦电容而且要紧贴引脚。MAX14431 这类器件在信号翻转时会有瞬态电流需求如果退耦不好电源上会出现毛刺导致误触发。我的习惯是每个电源引脚配一个 0.1uF 的陶瓷电容再在电源入口放一个 1uF 或 10uF 的钽电容做储能。两侧的退耦电容要分别放在各自的地平面上不能共用。主机侧的电容接主机地从机侧的电容接从机地这是隔离的基本要求。4.2 PCB 布局隔离带要干净隔离器在 PCB 上会形成一条隔离带这条带子两侧的地平面必须完全分开中间不能有任何走线跨越。我见过有人为了省事把两侧地用一个 0 欧电阻连起来结果隔离效果直接归零。正确的做法是在隔离器下方画一条明确的隔离带宽度至少 2mm 以上根据耐压要求调整带内不铺铜、不走线。所有跨越隔离带的信号只能通过隔离器本身。如果还有隔离 DC-DC也要放在隔离带附近保证电源和信号一起隔离。4.3 信号走线的阻抗与长度控制SPI 信号在隔离器两侧的走线要尽量短、尽量直。SCLK 是频率最高的信号走线最长不要超过几厘米。如果从机离得远宁可把隔离器放得靠近从机也不要让 SCLK 长距离走线。另外SCLK 和 MOSI 最好走成差分对的形式虽然 SPI 不是差分信号保持等长减少 skew。MISO 是回来的信号也要注意不要和 SCLK 平行走太长避免串扰。提示如果 SPI 速率超过 10MHz建议在 SCLK 上串一个 22Ω 到 33Ω 的电阻抑制反射和过冲。这个电阻要放在靠近隔离器输出端的位置。5. 实测中那些文档不会告诉你的坑5.1 上电顺序导致的通信失败隔离器两侧供电如果上电顺序不对会出现通信失败。比如从机侧电源还没建立主机就开始发 SCLK隔离器从机侧没有供电输出处于不确定状态可能把主机的信号拉低或者产生错误电平。解决办法是在软件里加一个上电延时等两侧电源都稳定后再初始化 SPI。或者在硬件上做电源监测从机侧电源就绪后再释放主机的复位。我在项目里一般会在 SPI 初始化前加 100ms 到 200ms 的延时实测能解决大部分上电通信异常。5.2 隔离器通道延迟不匹配引发的采样错误前面提到过通道间 skew 的问题这里展开说。SCLK 和 MISO 走的是不同通道如果这两个通道的延迟差异大MISO 数据相对于 SCLK 的相位就会偏移。在高速下这个偏移可能让主机在错误的时刻采样。排查方法是用示波器同时看隔离器两侧的 SCLK 和 MISO。主机侧看 SCLK从机侧看 MISO对比两者的时序关系。如果发现 MISO 的建立时间不够就要降速或者换通道匹配更好的隔离器。5.3 从机侧电源纹波对通信的影响从机侧如果用隔离 DC-DC 供电DC-DC 的开关纹波会耦合到从机芯片的电源上。如果纹波太大从机芯片的内部逻辑可能误动作导致 SPI 响应异常。我遇到过从机侧 DC-DC 纹波达到 100mV 的情况SPI 通信随机出错加了 LC 滤波后才稳定。建议在从机侧电源上加一级 LC 滤波电感选几微亨电容选 10uF 以上。如果对纹波要求高可以用 LDO 再稳压一次。5.4 长线传输时的终端匹配如果隔离器到从机的距离比较远比如超过 20cm信号线就相当于传输线需要考虑阻抗匹配。SPI 信号线通常是 50Ω 到 100Ω 的特性阻抗可以在从机端加一个匹配电阻到地减少反射。不过大多数板内 SPI 通信距离都很短这个问题不突出。只有跨板或者跨机箱的场景才需要特别关注。6. 通信稳定性验证与故障排查思路6.1 用回环测试先验证隔离链路本身在接从机之前先把隔离器的从机侧 MOSI 和 MISO 短接做回环测试。主机发什么就应该收到什么。这个测试能验证隔离器本身、STM32 的 SPI 配置、以及两侧电源是否正常。如果回环都不通问题一定在隔离链路或主机配置上跟从机无关。回环测试的代码很简单就是发一串已知数据对比接收到的数据uint8_t test_tx[4] {0xA5, 0x5A, 0x01, 0xFE}; uint8_t test_rx[4] {0}; // 从机侧 MOSI-MISO 短接 HAL_SPI_TransmitReceive(hspi1, test_tx, test_rx, 4, 1000); for (int i 0; i 4; i) { if (test_tx[i] ! test_rx[i]) { printf(Loopback failed at byte %d: tx0x%02X rx0x%02X\r\n, i, test_tx[i], test_rx[i]); } }6.2 逐步降速定位时序瓶颈如果高速下通信不稳定就逐步降速。从 10MHz 降到 5MHz再降到 1MHz看哪个速率开始稳定。找到临界点后再往上微调确定最终的工作频率。这个过程能帮你判断是隔离器延迟的问题还是从机本身的速度限制。我一般会做一个速率扫描测试从低到高遍历几个分频值每个速率发 1000 个字节统计误码率。误码率为零的最高速率就是安全上限实际使用再留 20% 余量。6.3 用逻辑分析仪抓隔离两侧的波形对比逻辑分析仪是排查 SPI 问题的利器。把探头分别接到隔离器的主机侧和从机侧同时抓 SCLK、MOSI、MISO、CS 四个信号。对比两侧波形能直观看到延迟、畸变、电平异常等问题。重点看几个地方CS 拉低到第一个 SCLK 的间隔是否足够最后一个 SCLK 到 CS 拉高的间隔是否足够MISO 数据在 SCLK 采样边沿是否稳定。这些时间参数在隔离后都会变化需要重新确认。6.4 常见故障现象与对应原因故障现象可能原因排查方向完全无响应隔离器方向配反、电源未上查通道方向、测两侧电源随机丢字节地电位差、退耦不良查地隔离、加退耦电容高速下误码隔离延迟、skew 过大降速、换低延迟隔离器上电后不通信上电顺序问题加延时、做电源监测通信一段时间后失效温度漂移、电源纹波测温升、查 DC-DC 纹波7. 隔离 SPI 方案的扩展与替代思路7.1 多从机场景下的片选隔离如果一个主机要挂多个从机每个从机都需要独立的 CS 信号。这时候隔离器的通道数就不够了需要选更多通道的隔离器或者用多个隔离器级联。CS 信号本身速率不高可以用低速隔离器把高速通道留给 SCLK 和 MISO。另一种做法是主机侧用 GPIO 扩展芯片产生多路 CS然后统一经过隔离器。这样隔离器的通道数需求就固定了扩展性更好。7.2 隔离电源的选型与集成前面提到从机侧需要独立电源除了隔离 DC-DC 模块现在也有一些集成隔离电源的数字隔离器把电源和信号隔离做在一颗芯片里。这种方案省事但输出功率有限适合从机功耗低的场景。如果从机功耗大还是要用独立的隔离 DC-DC。选隔离 DC-DC 时重点看三个参数隔离耐压、输出功率、纹波。隔离耐压要和数字隔离器匹配输出功率要留 30% 以上余量纹波越小越好。7.3 什么时候可以不用隔离不是所有 SPI 通信都需要隔离。如果两台设备共地、距离很近、现场没有大功率干扰源直接连就行加隔离反而增加成本和复杂度。隔离是为了解决特定问题不是万能药。判断标准还是回到最初的那几条地是否同点、距离是否远、现场是否有强干扰。如果都不满足就不用隔离。7.4 隔离 SPI 与隔离 CAN、隔离 RS485 的取舍工业现场常用的隔离通信还有 CAN 和 RS485。SPI 隔离适合板内或者短距离板间通信速率高但距离短。CAN 和 RS485 适合长距离、多节点的总线通信速率低但抗干扰强、传输远。如果设备之间距离超过几米或者需要多节点组网优先考虑 CAN 或 RS485。SPI 隔离更适合一块主板和一块子板之间或者一个主控和几个就近的从机之间的高速通信。8. 我在实际项目里总结的几条经验做隔离 SPI 这几年踩过的坑基本都集中在想当然三个字上。想当然地认为隔离器装上就行结果方向配反想当然地按从机最大速率配结果隔离延迟成了瓶颈想当然地觉得两侧地随便连结果隔离效果归零。现在我的习惯是任何隔离链路先做回环测试确认隔离器和主机配置没问题再接从机。速率从低往高扫找到稳定上限再留余量。PCB 上隔离带画得清清楚楚两侧退耦电容一个不少。上电延时、电源监测这些看起来多余的步骤实际上省掉了后面大量的调试时间。还有一点隔离器不是越贵越好关键是匹配你的速率和延迟要求。低速场景用低速隔离器完全够用没必要为了保险上高速型号成本和功耗都上去了。选型时把 SCLK 频率、通道数、方向配置、隔离耐压这几个参数列清楚对着数据手册一项项核对基本不会出错。最后分享一个小技巧调试隔离 SPI 时如果手头没有逻辑分析仪可以用 STM32 的定时器做一个简单的时序测量或者用 GPIO 翻转配合示波器看关键时间点。虽然不如逻辑分析仪直观但定位大部分时序问题足够了。
企业数字化 ERP 产品动态
相关推荐
EtherCAT从站选型避坑指南:硬件ESC、软件协议栈与外挂方案深度对比 /* 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 1:06:00
蓝牙语音遥控器开发实战:BLE选型、语音前端与低功耗设计避坑指南 /* 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 1:06:00
工业隔离SPI通信设计:MAX14431与PIC18F87J11实战 /* 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 1:06:00
JoyAI-Image-Edit-Plus-Diffusers社区贡献指南:如何参与开源项目开发 JoyAI-Image-Edit-Plus-Diffusers社区贡献指南:如何参与开源项目开发
欢迎来到JoyAI-Image-Edit-Plus-Diffusers社区!🎉 作为一款基于Diffusers的AI图像编辑工具,我们致力于为开发者提供简单高效的图像处理解决方案。本指南将为你… · 2026/11/3 1:41:16
Qwen3-Omni:阿里开源全模态大模型,多模态交互迈入“端到端“时代 Qwen3-Omni:阿里开源全模态大模型,多模态交互迈入"端到端"时代
导语
阿里巴巴Qwen团队发布开源全模态大模型Qwen3-Omni,首次实现文本、图像、音频、视频四种模态的原生端到端处理,在36项音频及视听基准测试中创下32项… · 2026/11/3 1:41:16
2025视频生成效率革命:WanVideo FP8量化模型如何让消费级显卡跑出专业级效果 2025视频生成效率革命:WanVideo FP8量化模型如何让消费级显卡跑出专业级效果
导语
阿里WanVideo团队推出的FP8量化模型(WanVideo_comfy_fp8_scaled),通过优化的FP8量化技术与ComfyUI生态深度整合,在消费级显卡上实现… · 2026/11/3 1:41:16
8GB显存玩转电影级视频生成:阿里WanVideo FP8技术重构创作门槛 8GB显存玩转电影级视频生成:阿里WanVideo FP8技术重构创作门槛
导语
阿里巴巴通义万相团队推出的WanVideo_comfy_fp8_scaled模型,通过FP8量化技术将14B参数视频模型压缩至消费级GPU可运行体量,配合ComfyUI可视化节点实现专业级视频创作&… · 2026/11/3 1:41:16
算力直降48%:Moonlight-16B-A3B凭Muon优化器改写大模型效率规则 算力直降48%:Moonlight-16B-A3B凭Muon优化器改写大模型效率规则
你还在为大模型训练成本高企而头疼吗?月之暗面开源的Moonlight-16B-A3B模型给出新解:通过MoE架构与Muon优化器组合,实现总参数160亿仅激活30亿的效率突破ÿ… · 2026/11/3 1:41:16
Instant-NuRec安全与伦理考量:在自动驾驶仿真中的责任使用指南 Instant-NuRec安全与伦理考量:在自动驾驶仿真中的责任使用指南
Instant-NuRec作为一款高效的图像转3D高斯模型,在自动驾驶仿真场景构建中展现出显著价值。它能在2分钟内将多视角图像转换为高精度3D高斯点云,为自动驾驶算法测试提供关键场景素… · 2026/11/3 1:40:16
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* 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 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* 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 4:42:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* 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 5:17:18
STM32F411RE与MAX14431实现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 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* 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 1:01:59
基于MAX14431BAEE+与PIC18F85J10的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 1:01:59
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* 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 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* 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 4:42:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* 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 5:17:18