板外 SPI 通信有哪些设计问题?

电器工程 spi
2022-01-11 04:52:51

概述:

我正在使用 SPI 在 3 个带有 dspic33 的定制 pcb 板之间进行通信。我有一个主人和两个奴隶,但我向两个奴隶发送相同的数据(并让他们选择要注意的内容)。

硬件设置:

两个从机内置 BLDC 电机控制器,主机通过 SPI 控制这些电机控制器。电线从主机到每个从机大约 3 英尺,接头是典型的 0.1 英寸间距通孔 SAMTECH 接头。每个电机控制器都有自己的 3.3 伏调节器,用于运行 dsPIC/LV 电子设备。我使用一个电机控制器调节器(我们称他为 A)也为 SPI 主 DSPIC 供电。对于另一个电机控制器(我们称他为 B),我只是运行 SPI 线路并从主控制器接地。SPI clk 以 100KHz 运行

切入正题(最后):

没有电机运行,这一切都很好,所有数据都按预期通过两个从站。但是,当我启动电机时,Bslave 不再获得正确的数据。他要么拿起额外的时钟,要么放下它们,我想对额外的噪音做些什么。无论如何,他的校验和开始失败。无论如何,Aslave 都像冠军一样工作。

1) 您是否认为所有这些设备都需要使用相同的 3.3 伏电源?如果是这样,您能否通过谈论更长的电感回路和诸如此类的黑魔法来说服我。

2) 对于我能以多快的速度运行 SPI clk 并通过上述硬件设置取得成功,您有什么经验法则吗?

4个回答

我已经从一个盒子到另一个盒子运行了大约 5m 的 SPI(2MHz 时钟),我毫不犹豫地将时钟和数据设计为平衡输出。两者之间的(定制)电缆也在数据和时钟上使用双绞线和屏幕。

我还通过 DC-DC 转换器向远程盒发送隔离电源。我没有足够的时间把这个弄错,所以我的解决方案可能是一种矫枉过正,但嘿,它奏效了。我做出这个决定的原因是我不希望双绞线的屏幕上出现“电流消耗”峰值。屏幕在 PC 发送端没有接地。将数字信号视为珍贵的模拟信号以获得最佳性能 - 始终在接收端终止您的屏幕,如果您必须(无论出于何种原因)不情愿地(以及)在发送端终止。

它用于将 128 通道的低速模拟信号从 PC 传输到分线盒。我怀疑,如果我需要,我可以在 20MHz 时钟下运行它。

SPI 与任何其他电气接口没有什么不同。注意通常的信号完整性问题(屏蔽、环路面积、阻抗、信号端接等),您可以在合理的距离内运行它。什么是合理的距离,这取决于你用它做什么,以及你对各种因素的控制能力如何。

你能跑3英尺吗?当然。你应该?好吧,有更好的东西可以使用。正如其他人所指出的,RS-4xx 可以很好地工作。您也可以运行 SPI,但使用 RS-4xx 等电缆上的差分信号。这将消耗更多的电线,但这些都是休息时间。您也可以使用 UART 等进行普通 RS-485。

我个人在机箱内以高达 32 MHz 的速率在 1 英尺电缆上运行 SPI,没有任何问题。我还在高 EMI 环境中以 100 KHz 的频率在 4 英尺上运行 I2C,而 SPI 比 I2C 好得多——所以可以做到。但是如果你不注意细节,那么你很容易遇到问题。但老实说,无论您使用什么,您都需要注意细节。

仔细考虑您的接地方案。如果有帮助,请屏蔽数据线,并将屏蔽正确接地。不要在同一对双绞线上运行数据和时钟。如果需要,请使用电流隔离。除此之外,没有我知道的经验法则。

SPI 设计用于 (1) 短距离通信,通常在一个 PCB 内和 (2) 在没有太多 EMI 的环境中。也许,在存在 EMI 时性能比 SPI 差的唯一总线是 I 2 C 和 1-wire。有些总线设计用于在 EMI(RS-485、CAN、以太网)存在的情况下进行远程通信。

可以扩展和加固 SPI。这是一个应用笔记,它显示了带有差分线的 SPI 总线。

有几种方法可以最大限度地减少噪声对信号线的影响。最简单的方法是布线铜平面或与信号走线相邻的铜走线。这最大限度地减少了走线和环路面积的电感。

在高频下,返回电流喜欢在信号线本身附近运行阻抗最小的路径。我假设您的电路之间有一个公共接地,但是如果您的公共接地只是电路之间的“电源”接地连接,这可能会导致高频信号问题。这将导致信号电流的环路面积非常大,这可能会由于杂散磁耦合而导致大量噪声注入。

如果可以的话,在与 SPI 信号线相邻的接地之间连接一个额外的接地连接,此外还要保持铜接地层或走线与电路板内部的线路相邻。它可能会对您的电路对电机的敏感程度产生重大影响。