SPI超远距离长线通信方法,以及在SPI显示器上的应用

2019-12-11 18:26发布

本帖最后由 neqee 于 2018-12-3 10:43 编辑

这篇文章也许现在对你没什么用,但以后需要的时候希望能帮到你.
之前在论坛也有很多人讨论过长距离通信的最佳方案,希望能找到一种传输距离几十米,速度不要太慢,但又不需要太快,稳定可靠又简单的通信方法,我个人认为非SPI莫属,不过需要将SPI转换成差分信号传输才能做到稳定可靠的超长距离通信。相比之下,RS232、RS485、Can速度太慢, I2C、UART速度不行距离更不行,Ethernet、USB应用复杂成本高而且不够稳定可靠。
SPI作为同步、单向通信接口,时序严谨,支持推挽驱动,支持驱动缓冲,就算不转换为差分传输,如果布线和对地阻抗做地好的话,比如使用灰排线并且每根信号用地间隔,18MHz时钟频率,一般环境下,2米距离通信完全没有问题;但如果是强干扰环境,超远距离通信,就必须考虑将TTL信号转为差分传输,而常用、简单、高速、低成本的差分传输是LVDS:
image013.jpg (75.74 KB, 下载次数: 0) 下载附件 2018-12-3 10:29 上传

SPI作为同步、单向、推挽串行高速接口,它的扩展性和可转换性是非常强大的,我在想,以后工控设备主机是不是可以像串口DB9那样配备一个这样的"DVI接口"呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
46条回答
hailing
1楼-- · 2019-12-13 18:05
谢谢分享,里面的思路和计算方法很有价值,对于理解高速情况下的数据处理简单易懂
neqee
2楼-- · 2019-12-13 18:11
pzt 发表于 2018-12-3 23:57
这个创意不错;但是显示还是不如使用套件来的快些;
成本也是个问题;完全不如使用树莓派+网线 ...

只有适合自己的才是最好的,在我看来树莓派和RJ45接口的可靠性还有待考验..
neqee
3楼-- · 2019-12-13 20:50
dukelec 发表于 2018-12-4 02:54
差分 SPI 要接那麼多線。。。
就算加多週期能支持遠距離,但近距離就又不支持了,我覺得這樣要求客戶會被吐 ...

我大概看了下CDBUS,如果我没有理解错的话应该还需要外挂一个CPLD做物理协议层(有开源IP核),经过CPLD物理协议层之后再通过RS485走总线,而MCU和CPLD的通信可以是串口、SPI、I2C等等,速率可以做到10Mbps以上.因为涉及的东西比较多,还有阅读大量资料,还要会用CPLD,我怎么感觉要让这个CDBUS总线非常稳定可靠地工作并没有那么容易呢?
neqee
4楼-- · 2019-12-13 22:54
 精彩回答 2  元偷偷看……
dukelec
5楼-- · 2019-12-14 03:52
本帖最后由 dukelec 于 2018-12-10 11:35 编辑
neqee 发表于 2018-12-10 10:36
我大概看了下CDBUS,如果我没有理解错的话应该还需要外挂一个CPLD做物理协议层(有开源IP核),经过CPLD物理 ...


MCU 和 CPLD/FPGA 的通信是 SPI 或 I2C,没有串口。(基础款 总线速率 10 Mbps,SPI 速率 20 Mbit/S).
如果不想自己整 CPLD/FPGA, 也有现成可以使用的模组(基础款 CDCTL-B、高阶款 CDCTL-H、mPCIe 多路板卡 CDCTL-P)。
有支持 STM32 的库,也有示例工程,再加上寄存器定义本来就很简单,上手应该很快。

最新的变种 CDBUS-BR (Break Sync)  更加方便软件实现,不过 STM32 自身的 UART 本身速度有限(记得 103 是 4.5 Mbps),不过一般用也够了。
不够的话,CDBUS-BR FPGA 硬件实现更加适合节点偏少的高速应用:
用 MAX10 FPGA 做的高阶模组可以支持到 40 Mbps,这是优化之前的数据,现在应该能把 TI 的 RS485 收发器 SN65HVD78 的速率用满(50 Mbps)。

备注:
CDBUS-BR 文档已经在我之前发的帖子中同步更新(签名链接 123 楼),GitHub cdbus_ip 页面也有更新。
CDBUS-BR 的 STM32 纯软件实现代码也很快会发布出来。
zzz123456
6楼-- · 2019-12-14 06:42
记号18楼 ,学习了

一周热门 更多>