正文:各位老师傅,求助,实在搞不定了。板子用的是STM32H743,SPI挂了个ADC,时钟跑到50MHz以上就偶发数据错位,跑40M稳如老狗。示波器是DSOS104A,探头用的是N2894A有源差分,地线已经焊在离引脚2mm的地方了,环路做到最小。测了CLK和MISO,波形上过冲大概有1V,振铃三四个周期,加了22Ω串联电阻后过冲下来了,但数据还是偶尔错。逻辑分析仪(16862A)抓到的数据反而看着没问题,示波器测的边沿和逻辑分析仪判的阈值对不上,怀疑是阈值设的问题,又换了1.4V和0.8V各测一遍,还是那个现象。信号完整性这块我算半路出家,现在心里没底。板子是四层,SPI走线大概8cm,没做阻抗控制,参考层完整但过孔打了两个。请问是不是得飞线用SMA直接进示波器看裸波形?还是说大概率是相邻信号串扰?有经验的兄弟给指个方向,产线等着改版,急。
50M以上出错、40M稳,先别死磕探头了,八成是时序裕量本身就不够。H743的SPI在50M下SCK周期才20ns,你8cm走线加过孔,传播延迟和回波就吃掉了setup/hold。逻辑分析仪看着没问题是因为它采样点靠中间,示波器看的是真实边沿。建议:1)先把SPI降速到45M试,确认是时序不是逻辑;2)查ADC手册的tSU/tH,对着H743的SPI时序参数算一遍,看CPHA/CPOL和采样沿选对没;3)22Ω串阻别只加CLK,MISO也加,并确认ADC端输出阻抗匹配。bug多半出在边界,50M就是你的边界,先量化裕量再谈SI。