以前我给一台电机驱动器做远程参数配置,主控用的就是 STM32F427ZI,通过一根快一米长的排线连到带视觉模组的从板,SPI 直接 10MHz 怼过去。设备一跑起来,主控就时不时读到乱码,偶尔还伴随从设备复位。排查到最后发现根本不是代码问题,是两板参考地之间存在十几伏的瞬态压差——SPI 这种对地电平敏感的接口,在这种环境下根本扛不住。后来我在主控和从设备之间加了一级由 MAX14431BAEE+ 构成的 SPI 隔离链路,问题才彻底消停。
这篇东西就是来复盘这套方案的。核心器件是 MAX14431BAEE+ 数字隔离器,搭配 STM32F427ZI 做主控,目标是把工业现场两根板卡之间的全双工 SPI 通信链路完整隔离掉,包括数据线和从设备供电。文章会覆盖隔离必要性分析、器件选型逻辑、原理图搭建、软件时序适配、实测中的排查链路以及 PCB 布局注意事项,适合正在做工业控制、电机驱动、传感器采集这类项目的嵌入式工程师参考。
1. 为什么 SPI 链路会“过不去”:一个让我转向隔离方案的故障现场
1.1 一个典型的工业现场故障
先说那次故障现场。设备结构是主控板控制一台伺服驱动器,旁边还有一块从板负责采集编码器数据,从板通过 SPI 把数据实时回传主控。排线长度大约 80cm,两板各自接了不同的供电回路线,参考地不完全同位。
正常运行没问题,但伺服电机一旦启停或者急停,主控读回来的数据就开始出现单比特翻转。偶尔从板直接无响应,必须重新上电才能恢复。最初我以为是 SPI 时钟太快或者信号质量差,把速率从 10MHz 降到 1MHz,结果故障照样出现,这就排除了单纯的信号完整性问题。用示波器挂上探头去量两板参考地之间的电压,发现电机换向瞬间能测到十几伏的瞬态尖峰,而且这个尖峰还会通过排线的地线在系统里四处乱窜。
后来想明白一个事情:SPI 是参考地电平来判定高低的协议,两个设备一旦不共用同一电位零基准,主控发出 3.3V 的信号,从设备端看到的高电平可能是 3.3V 加上两者之间的地电位差。地电位差一大,逻辑电平判读就会出错。
1.2 SPI 隔离要解决的三个本质问题
工业设备里常见的 SPI 通信失效,根因基本就三类。第一类是地环路电流。两块板卡的供电系统如果不共地,或者长距离接地线阻抗不为零,两条地路径之间会形成闭环,电流在接地回路里流动,导致两点之间的地电位随时在变。第二类是共模瞬变干扰,电机绕组切换、继电器吸合、变频器开关都会在空间里产生高压摆率的干扰脉冲,通过分布电容耦合进信号线,直接把逻辑电平打乱。第三类是从设备侧供电不稳定,从板上的 MCU 或传感器如果由主控板经长线供电,长线电阻加上瞬态电流就会让从侧电源剧烈波动。
隔离的本质就是把主控侧和从设备侧的地彻底切开。数据信息通过隔离器内部的磁场或电容耦合跨越隔离栅,电源则通过隔离式 DC-DC 转换器跨越隔离栅,两侧之间不允许存在任何直流通路。这样一来,地环路电流就没有了,共模瞬变也只能作用于隔离栅两端,无法直接进入逻辑电路。保证两侧地电位完全独立,才谈得上信号可靠。
1.3 什么时候该上隔离:我的判断标准
我现在的项目里,以下条件只要命中两条,就会直接考虑上隔离:主控和从设备之间物理距离超过 30cm;两块板卡使用不同的电源系统,尤其是开关电源供电时;系统里存在电机、继电器、变频器这类大功率换相设备;发生过通信错误必须断电重启才能恢复的情况。对于不用隔离的板内 SPI,只要做好 PCB 布线,短距离直连通常没问题。一旦跨板、跨线、跨电源系统,信号质量就不再是单纯靠降速能解决的问题。
顺便说一句心里话,我见过不少同事把问题归咎于 SPI 速率太高,拼命往下降频,结果故障还在。很多时候真正需要处理的不是信号速率,而是两边的地电位关系。把这个认知掰过来,方案思路就顺了。
2. MAX14431BAEE+ 的选型拆解:为什么不是光耦,也不是普通数字隔离器
2.1 光耦方案的软肋
早年做隔离大家第一反应都是光耦。光耦确实便宜,而且很多人熟悉它的用法,但在 SPI 这种同步全双工场景里,光耦的毛病很明显。
首先是通道数。一只光耦只隔离一路单向信号,SPI 全双工至少要四路信号线,也就是至少四只光耦。如果 SPI 还要带片选、复位、中断这些控制线,光耦数量直接爆炸,PCB 面积和物料成本都不划算。其次是速率和一致性。常见的 6N137 光耦最高支持 10Mbit/s 左右,这个速率下设计余量很小。而且光耦的 CTR(电流传输比)受温度和老化影响会漂移,同一批器件参数离散性也比较大。多路光耦之间的延迟差异大了以后,SPI 的时钟和数据相位关系很难控制,系统跑一段时间就出怪问题。
更关键的一点是共模瞬变抑制能力。光耦输入输出之间存在分布电容,工业现场的瞬变干扰容易耦合过去,产生误动作。我在实验室做过 6N137 的干扰测试,效果确实不理想。相比之下,采用电容或磁性隔离的数字隔离器在 CMTI(共模瞬变抑制能力)这个指标上高出好几个数量级。
2.2 MAX14431BAEE+ 的核心特性与 SPI 四线拓扑的匹配逻辑
MAX14431BAEE+ 是带集成 DC-DC 转换器的双通道数字隔离器,这是它和普通数字隔离器最大的区别。普通数字隔离器像 ISO7742 这种,只负责隔离数据信号,隔离侧的电源需要外部额外配一个隔离电源模块。而 MAX14431 这颗芯片把隔离电源一并集成进去了,从输入侧取电,在隔离栅另一侧生成一个稳定的隔离输出电压。这样就省掉了外置 DC-DC 模块,简化设计。
这里要延伸讲一下通道配置问题。MAX14431BAEE+ 是双数据通道芯片,通常配置为一个正向通道和一个反向通道。SPI 全双工链路需要四根信号线:SCLK、MOSI 是主控输出方向,MISO 是从设备输出方向,CS 是主控输出方向。严格按方向算,三个正向一个反向,一颗双通道隔离器不够用,所以实际方案里要用两片 MAX14431BAEE+ 组合覆盖四根线。比较合理的分配是第一片正向通道走 SCLK、反向通道走 MISO;第二片正向通道走 MOSI、反向通道走 CS。CS 走了反向通道也完全不冲突,因为隔离器对逻辑电平是透明传输,不改变信号极性,只是存在传播延迟,软件里补偿一下即可。
2.3 关键参数怎么读:传播延迟、CMTI、隔离电源
选数字隔离器不能只看“能隔离”就完事,SPI 场景里最该关注的是传播延迟和通道间延迟偏差。传播延迟决定了信号从输入侧传到输出侧要花多长时间,通道间偏差决定了四根线到达从设备时彼此之间的时间差。对于 SPI 来说,这两个量直接影响数据建立时间和保持时间。工业级数字隔离器的传播延迟通常在几十纳秒到一两百纳秒之间,通道间偏差会控制在几纳秒量级。以 10MHz SPI 为例,一个时钟周期 100ns,数据在次级时钟沿采样,这个延迟已经占了周期的相当比例。所以我在选型时会刻意看数据手册里的 tPHL/tPLH 参数,并留出至少一倍的余量。
CMTI 参数决定了隔离器抵御共模瞬变的能力,单位 kV/µs。工业现场电机这类干扰源产生的瞬变,典型速率可能达到几十 kV/µs。数字隔离器的 CMTI 一般能到 50kV/µs 以上甚至更高,这就是它替代光耦的重要原因。MAX14431BAEE+ 的隔离耐压在数据手册上标注为 3.75kVRMS 左右,具体版本需要以订货型号对应的数据手册为准。对于柜内、板间这种应用,3.75kV 耐压等级足够覆盖从设备侧的杂散电位差异。
另外要注意集成 DC-DC 的输出电流不是无限大的,一般只适合给从设备侧的 MCU、传感器或者 SPI Flash 这类低功耗负载供电。如果从侧还要带动继电器或者小电机,就得考虑外加隔离电源。这一点我在第一版设计里差点踩坑,后面第三章会细说。
下面用一张表把这三种方案的整体特性列一下,方便对照。
| 方案 | 隔离开关速度 | 通道数 | 集成隔离电源 | PCB 面积 | 共模瞬变能力 | 适用场景 |
|---|---|---|---|---|---|---|
| 多只光耦 | 10Mbit/s 上限,CTR 会漂移 | 一路/只,需多只 | 无,需外置 | 大 | 差 | 低频开关量隔离 |
| 普通数字隔离器+外置隔离电源 | 高,百 Mbit/s 级别 | 多路可选 | 无,需外置 | 中等 | 好 | 高速多路信号 |
| MAX14431BAEE+ | 足够覆盖 10Mbit/s 级别 SPI | 双通道,一正一反 | 有 | 小 | 好 | 板间中低速 SPI 隔离 |
3. 原理图搭建:从 STM32F427ZI 到 MAX14431 再到从设备
3.1 STM32F427ZI 侧引脚的分配与初始化
STM32F427ZI 这颗芯片跑 Cortex-M4F,主频 180MHz,片上有 6 个 SPI 外设。我用的是 SPI1,挂在 APB2 上,配套引脚是 PA5(SCK)、PA6(MISO)、PA7(MOSI),片选用 PA4 作为普通 GPIO 软件控制。这样做的理由很简单:硬件 NSS 在多设备或者隔离场景里不够灵活,软件 GPIO 控制 CS 可以自由插入延时,适配隔离器引入的额外延迟。
引脚分配完成后,初始化配置如下几项:GPIO 推挽输出、速度等级选 Very High、复用功能 AF7;SPI 配置为主机模式、8 位数据宽度、软件 NSS 关闭。这里注意一点,GPIO 速度等级千万别选 Low,隔离器加了传播延迟之后信号边沿本来就比直连慢,GPIO 输出能力再弱一点,波形就更拉胯了。
3.2 两片 MAX14431 的信号通路规划
我把两片隔离器分别命名为 U1 和 U2。U1 负责 SCLK 和 MISO:PA5 出来的 SCLK 接 U1 正向通道输入侧,正向通道输出侧接到从设备的 SCLK;从设备返回的 MISO 接 U1 反向通道输出侧,反向通道输入侧回到 PA6。U2 负责 MOSI 和 CS:PA7 接 U2 正向通道输入侧,正向通道输出侧接从设备 MOSI;PA4 再接 U2 反向通道输出侧,反向通道输入侧接从设备的 CS。这样接线,四根信号线全部经过隔离栅,两侧地平面完全断开。
连接器选型上我建议用带屏蔽的排线或者双绞线组合,SCLK 和 MOSI 不要并排长期走线,MISO 最好单独隔一根地线走。隔离器输出到连接器之间的距离尽量短,避免隔离侧的长走线在浮地环境里当接收天线。第一次画板的时候我把隔离器放得离连接器远了点,结果波形毛刺明显变多,后来把器件挪过去,波形干净了不少。
3.3 供电与去耦:别让集成 DC-DC 变成干扰源
MAX14431BAEE+ 的输入侧电源接主控板 3.3V,输出侧 VISO 产生的隔离电源直接供从设备使用。原理图部分最关键也是最容易被忽视的就是去耦设计。输入侧电源引脚要放一个 0.1µF 陶瓷电容和一个 10µF 电容,必须尽量靠近引脚放置;输出侧 VISO 同样放一组去耦电容。因为集成的 DC-DC 是一个开关电源,它的开关噪声如果不压住,会直接串进同芯片的隔离数据通路,让 MISO 波形在边沿附近出现抖动。
另外 VISO 的输出能力有限,从设备侧的负载电流加起来建议控制在几十毫安以内。我用的是 W25Q128 Flash 和一颗低功耗 MCU,总电流很小,一颗隔离器的电源足够。如果从设备是 ADC 采集板上吃电流比较大的模拟前端,就应该测量峰值电流,给隔离器留出足够的电流余量,或者外挂独立隔离电源。
电平匹配也得注意。主控侧 3.3V 的 SPI 信号和 MAX14431 输入侧兼容很容易,因为这类隔离器通常支持较宽的输入电压范围。从设备侧如果原来工作在 5V,而 VISO 只输出 3.3V,就得做电平转换或者重新设计从侧电源方案。选型阶段我特意确认了从设备可以直接吃 3.3V,省了一级转换。
4. 软件上需要额外配合的时序细节
4.1 隔离器加入后 SPI 时序发生了什么变化
硬件接好之后,直接跑原来的 SPI 驱动通常是不行的,因为隔离器给链路增加了额外延迟,SPI 的时序模型完全变了。直连情况下,主控发出 SCLK 的同时,MISO 数据从设备端很快就回到主控;加入隔离器之后,SCLK 从主控到从设备要经过一次正向通道延迟,MISO 从从设备回到主控还要经过一次反向通道延迟。相当于 MISO 信号完整地落后了两次隔离器延迟才能被主控看到。
对 SPI 协议来说,这个延迟会压缩数据的建立时间窗口。低速率下无所谓,所以大家刚接上隔离器时可能觉得没问题。一旦把速率抬到几 MHz 以上,数据跳到采样沿的时间差就逼近时钟周期的边界,读回错误就出现了。这是隔离 SPI 和直连 SPI 的本质区别,也是软件调整的首要切入点。
4.2 SPI 初始化参数:分频、极性与相位
我的建议是先从保守参数起步。SPI1 挂在 APB2 总线上,时钟 90MHz,直接二分频能得到 45MHz,但带隔离器绝对不能这么跑。我在调试阶段先把分频压倒 16 分频附近,让 SCLK 降到 5MHz 左右,先把功能跑通,再逐步提速观察波形余量。
CPOL 和 CPHA 的配置取决于从设备要求,同时要考虑隔离器延迟对采样窗口的影响。最常规的从设备都支持 SPI Mode 0,也就是 CPOL=0、CPHA=0。这个模式下,主控在 SCLK 上升沿采样数据,隔离器延迟会让数据到达时间变晚,但通常 Mode 0 从设备的数据在时钟沿之后还能维持一段时间,余量相对好。如果从设备手册明确支持 Mode 1 或者 Mode 3,建议实测波形后再决定,不要凭感觉改。我遇到过改成 Mode 3 之后从设备响应反而模糊的情况,原因是数据跳变沿和采样沿之间的距离被压缩了。
4.3 CS 信号跨隔离器后的延时补偿
CS 信号经过隔离器之后也会产生延迟,而且 CS 是慢信号,问题容易被忽略。如果主控在拉低 CS 之后立刻启动 SCLK,从设备可能还没看到 CS 有效的边沿,整个通信就被吞掉了。这在读 W25Q128 这类设备时表现非常明显:读 ID 命令发出去,返回的全是 0xFF。
我常用的做法是在拉低 CS 之后插入一个软件延时,典型值 5µs 到 20µs。这个延时要覆盖两部分时间:隔离器本身的数据传输延迟,以及从设备从 CS 有效到时钟响应的准备时间。不同从设备要求不同,Flash 类芯片有最小 CS 建立时间,一些 ADC 还有专门的唤醒时间。稳妥起见,我直接在片选拉低后加了 10µs 的固定延时,代价是单次通信事务的吞吐量略微下降,换来的可靠性完全值得。
另外还要考虑集成 DC-DC 的启动时间。MAX14431BAEE+ 的隔离电源从上电到稳定输出有一个过程,冷启动后如果立即发起 SPI 通信,VISO 还没建立好,从设备自然是没反应的。所以主控上电初始化里,我加了程序启动后延时等待隔离电源稳定的逻辑,确保 VISO 达到额定电压之后再拉 CS。
下面给一段我实际用的初始化参考代码,框架是 STM32 HAL 库。
void SPI_Isolated_Init(void) { // 确保隔离器VISO建立完成 HAL_Delay(20); // CS引脚,软件控制 HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET); // SPI1 主机模式,Mode 0,5MHz起步 SPI_InitTypeDef spi_cfg = {0}; spi_cfg.Mode = SPI_MODE_MASTER; spi_cfg.Direction = SPI_DIRECTION_2LINES; spi_cfg.DataSize = SPI_DATASIZE_8BIT; spi_cfg.CLKPolarity = SPI_POLARITY_LOW; spi_cfg.CLKPhase = SPI_PHASE_1EDGE; spi_cfg.NSS = SPI_NSS_SOFT; spi_cfg.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; // PCLK2 90MHz / 16 ≈ 5.6MHz spi_cfg.FirstBit = SPI_FIRSTBIT_MSB; HAL_SPI_Init(&hspi1); } uint8_t SPI_Isolated_ReadID(void) { uint8_t tx_cmd = 0x9F; // JEDEC ID 读命令 uint8_t rx_data[3] = {0, 0, 0}; HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET); HAL_Delay(1); // 补偿隔离器CS延迟 HAL_SPI_Transmit(&hspi1, &tx_cmd, 1, 100); uint8_t dummy = 0xFF; HAL_SPI_TransmitReceive(&hspi1, &dummy, rx_data, 3, 100); HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET); return rx_data[0]; }这段代码里 HAL_Delay(1) 在 CS 之后做的延时补偿尤其关键。调试初期我没加这个延时,结果读 ID 十次里有三四次是错的。加了之后,稳定复现率立刻上来了。
5. 读回全 0xFF 的故障排查链路:一个典型的隔离链路问题定位过程
5.1 首轮检查:隔离侧供电和波形
实际调试中读回全 0xFF 是最常见现象。我第一版板子回来后,现象是直连 SPI 完全正常,加了 MAX14431BAEE+ 之后读 Flash ID 全是 FF。这时候先别急着改代码,要做的是从供电和波形开始排查。
先用示波器量 VISO 输出。如果 VISO 电压纹波很大,或者上电后建立时间异常,后面的信号都谈不上。当时我量到 VISO 有大约 100mV 的纹波,频率在几百 kHz 到 MHz 级别,明显是 DC-DC 开关噪声。在 VISO 和从设备电源脚之间补了一颗 10µF 电容之后,纹波降到 30mV 以内。
然后抓隔离器输入侧和输出侧的 SCLK 波形,对比两侧的边沿和幅度。这一步可以确认隔离器本身有没有正常工作,信号有没有因为负载问题被拖垮。如果输入侧波形正常,输出侧幅度明显偏低或者上升沿严重变缓,重点检查 B 侧去耦电容和走线长度。
5.2 次轮检查:方向配置与 SPI 时序窗口
供电正常之后,就要检查通道方向。MAX14431BAEE+ 的正反向通道在芯片内部是固定的,接线时必须严格对照数据手册引脚定义。当时我校对清楚之后排除了方向接反的问题。如果方向接反,表现通常是信号完全没有输出,而不是偶尔出错,但第一轮检查里也要顺手排除。
接下来是时序窗口分析。用示波器同时抓 CS、SCLK 和 MISO 三根线,重点看 SCLK 的采样边沿相对 MISO 数据跳变沿的位置。隔离器延迟会让 MISO 数据相对 SCLK 往后移,如果采样边沿恰好落在数据跳变附近,读回的比特就是不确定的。降低 SCLK 频率之后,采样点远离数据跳变沿,问题就可能消失。当时我从 5MHz 降到 1MHz,故障概率从差不多 100% 降到了偶尔出现,说明瓶颈基本锁定在时序窗口,而不是隔离器硬件。
5.3 最终定位与修改结果
最终根因有两个。第一个是 CS 路径上的延迟没有补偿,主控拉低 CS 之后,从设备要过一小段时间才能看到 CS 有效边沿,时钟却已经开始跑了。第二个是隔离电源冷启动阶段 VISO 尚未稳定,第一次通信就发生在电源爬升过程中。
修复方案就是我前面代码里写的那样:初始化后先等 VISO 稳定,再在片选拉低后加固定延时。具体调参时要注意延时的量级不能随便拍脑袋,建议先用示波器实测从设备 CS 有效到它开始响应时钟的时间间隔,再留出 2-3 倍余量。改完之后 5MHz 通信稳定,再到 10MHz 做了完整读写测试,也没有再出现误码。
下面把这轮碰到的问题汇总一下,方便后来人对照。
| 现象 | 可能原因 | 验证方法 | 解决手段 |
|---|---|---|---|
| 读回全 0xFF | CS 跨隔离器延迟,从设备未收到片选 | 示波器抓 CS 两侧边沿时间差 | CS 拉低后插入 5-20µs 延时 |
| 冷启动第一次通信失败 | VISO 尚未稳定 | 示波器查看 VISO 上电波形 | 初始化后延时等待 VISO 建立 |
| 高速率下偶发错位 | 隔离延迟压缩数据建立窗口 | 同时抓 SCLK/MISO 观察采样点 | 降低 SCLK 或调整 CPHA |
| VISO 纹波过大 | 集成 DC-DC 噪声 | 示波器测量纹波 | 增加去耦电容并缩短走线 |
| 方向接反,无输出 | MAX14431 通道方向引脚接错 | 核对数据手册引脚定义 | 按正反向通道重新接线 |
6. PCB 布局注意事项与最终实测验证
6.1 隔离栅、爬电距离和电容摆放
原理图正确之后,PCB 布局就是这套方案的生死线。第一版我吃过亏:为了布线方便,在隔离器下方的内层留了一根跨分割的信号线,结果通信偶发异常。隔离栅下方两侧地平面必须完全分离,而且不能有任何走线穿过,否则会在隔离器两侧形成意外的寄生通路,等于是给共模干扰留了条近路。
隔离栅的爬电距离也要按规格留足。MAX14431BAEE+ 数据手册会给出推荐的最小爬电距离,实际布局建议留到 4mm 以上,过认证时还得按具体标准再核算。两个隔离器之间的间距也要注意,两片同时工作时各自的开关噪声可能互相耦合,尽量保持至少 1mm 以上并错开摆放,别让它们的 DC-DC 电感面对面。
去耦电容的位置排序:电源引脚放 0.1µF 小电容,靠近引脚;再往外放 10µF 大电容;VISO 侧的电容靠从设备电源脚额外加一组。所有电容的接地过孔要直接打到对应侧的地平面,不能和主地平面共享路径。集成 DC-DC 的电感区域下方尽量少放敏感信号线,开关节点是板上最强的干扰源。
6.2 测试方法与数据
我最终的测试平台是 STM32F427ZI 主控板加 W25Q128 SPI Flash 从板,两板之间用排线连接,隔离链路如上文设计的双 MAX14431BAEE+ 组合。测试分三步走:读 ID 命令循环 10 万次,统计成功率;写入 1MB 随机数据再读回比对,统计误码;在电源端施加 EFT 干扰,观察通信是否中断。
5MHz SCLK 条件下,读 ID 循环 10 万次全部成功,1MB 数据写读完全一致。10MHz SCLK 条件下,读 ID 仍然稳定,数据写读偶发一次校验失败,概率在百万分之一级别。这个结果说明 10MHz 有一定余量,但不算从容。如果量产要求更高的可靠性,我倾向把运行速率锁在 5MHz,而不是去挑战隔离器的延迟极限。
EFT 干扰测试用的是 ±2kV、5kHz 群脉冲,直接注入主控板电源端口。测试期间从设备没有出现复位,SPI 通信也没有发现误码。这说明隔离方案对工业现场的共模干扰确实有实质性抑制效果,比单纯优化接地靠谱得多。
6.3 从这套方案里还能再省出来的空间
如果对单板面积有要求,两颗 MAX14431BAEE+ 的方案也可以进一步优化。比如将 SCLK 和 MOSI 这两个正向信号合并到一颗双正向通道的隔离器,MISO 单独走一颗反向通道,CS 继续通过软件补偿方式处理,这样可能比一正一反的组合更均衡。不过要注意,通道方向越灵活的型号,选型时要更仔细核对数据手册,避免买回来发现通道方向组合不合适。
还有一个思路是从设备侧如果不需要 VISO 供电,只是信号隔离,那就完全可以选更普通的四通道数字隔离器,外部再配一个小功率隔离电源模块。取舍的关键是从设备电流大小和板面积哪个优先级更高。对我来说,MAX14431BAEE+ 这种集成电源方案在调试阶段省了很多事,少一个外置 DC-DC,少一层供电链路的不确定性。
收尾:几点实操体会
分享一点我个人在这套方案里的体会。第一,隔离器不是加上就完事的,时序补偿必须跟着做,尤其是 CS 跨隔离器之后的有效延时,这是最容易出错也最容易修的一环。第二,集成 DC-DC 是很方便,但它输出侧的去耦绝对不能省,VISO 的开关纹波会影响同芯片的数据通道,这个坑不亲自踩一次很难长记性。第三,测试时别一上来就跑高速,先 1MHz 跑通功能,再用示波器看采样窗口,确认有余量再逐步提速。
最后再补充一个小技巧:调试隔离 SPI 时优先用高阻有源探头抓波形,普通逻辑分析仪的输入电容往往会把隔离后的边沿拖缓,导致误判。别问我为什么知道,我在 10MHz 波形上吃过这个亏。希望这套从选型到落地的完整过程,能帮大伙在隔离工业 SPI 链路时少走几步弯路。