短距离板对板通信

电器工程 spi 信号完整性
2022-01-02 20:13:32

我的 MCU 运行带有大约 4 个设备的 SPI 总线。我也想将此总线扩展到板外,即让一些 PCB 连接到“主”板并扩展功能。“焊盘到焊盘”的距离为:

主板走线长度+线缆长度+扩展板上走线长度

3" + 6" + 3" = 大约 12"

根据我的经验,即使是上升时间约为 7 ns 的 1 MHz 信号,在此距离上通过带状电缆也会过冲超过 1 V(但没有过度振铃)。这些板将由相同的电源供电。

在此处输入图像描述

注意:这里看不到上升时间,但可以看到过度过冲——这是一个 3.3V 信号。是的,这是用一根从探头到地的非常短的导线正确测量的。就像它经常在这个网站上推荐一样。我不认为这是一个测量错误。

我希望系统以 4 MHz 工作,但 2 MHz 也是可以接受的。最大。我想连接的板数约为 4,这将扩展 SPI 总线以拥有大约 12 个设备。我认为通过代码管理这并不难,因为我已经有了这样的工作。拥有额外的从选择线也不是问题。

但是,我关心的是如何将 SPI 数据从一块板发送到另一块板。我应该直接发送 SPI 还是在一端将其转换为 LVDS,然后在另一端将其转换回 SPI?

4个回答

经验法则表明,如果您的连接长度超过信号波长的 1/10,则必须计算传输线效应。

在此处输入图像描述

传输线会在阻抗突然变化的地方引起反射。反射信号加到原始信号上,可能会在发射器侧再次反射,并以这种方式来回走动。结果显示在图表中:您正在谈论的过冲和一些振铃。

12" 线长 (30cm) 是 3m 波长或 100MHz 的 1/10。1MHz,甚至 4MHz 在这里应该不会造成太大问题。不过,正如 Wouter 所说,终止线路可能是第一个措施。输入可能是高阻抗,这绝不是一个很好的匹配。由于您的连接中有三个不同的部分(PCB,电线,PCB),因此很难找到特性阻抗。(PCB和电线也会有所不同,所以在非常高的频率下,你也会在电缆的连接处得到反射。)鉴于短的长度和低频,你的终端电阻的值并不重要。100\$\Omega\$ 对于微控制器来说可能太低了,他们中的大多数不能提供 33mA(甚至 50mA,在 5V 时)。我会尝试一个 1k\$\Omega\$ 电阻器开始,看看能走多远。

编辑(重新问题更新)
上升时间似乎是 7ns。这很快,就像 Kortuk 所说的那样,这意味着你的频谱至少达到 400MHz,即使你的时钟只有 1MHz,这些谐波确实会受到传输线的影响。尝试将它们过滤掉,20MHz 带宽(4MHz 时钟为 80MHz)为您提供了足够多的上升时间。这是用 20MHz 的砖墙LPF 过滤的 1MHz 方波:

在此处输入图像描述

放置一个串联电阻将与线路电容形成一阶 LPF。如果我们估计在 50pF 时

\$ R = \dfrac{1}{2 \pi \cdot 100 MHz \cdot 50 pF} =32 \Omega \$

给你100MHz的截止频率。因此,一个 33\$\Omega\$ 串联电阻应该会减少您的上升时间,但留下的余量足以在 4MHz 处获得良好的信号。

对于这么短的总线,我会尝试将一个小电阻与驱动线路的任何东西串联。这不是将传输线理论考虑在内的理论上的理想方法,而是一种实用的方法,我认为它对您的情况来说足够好。尝试 47 Ω 作为启动器,看看它有什么作用。如果这有帮助但还不够,您可以更高,但我不会超过 120 Ω。很有可能在该范围内的某个地方,您会发现一个足够好的值。

AFAIK 如果您的驱动程序可以驱动负载,则可以通过适当的终止来消除过冲。否则,像 LVDS 甚至 RS485 这样的专用驱动器/接收器对肯定会起作用。

过去我在带状电缆上运行 SPI 时遇到过严重问题,尽管这些问题比你描述的要长得多。抗噪性成为一个真正的问题,损坏的命令最终到达了我的外围设备。未能通过 CE 抗扰度测试就足够了。如果您稍后在这方面遇到麻烦,我建议在每块板上放置一个单独的 MCU,并通过 CANbus 连接它们。