本帖最后由 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接口"呢?
只有适合自己的才是最好的,在我看来树莓派和RJ45接口的可靠性还有待考验..
我大概看了下CDBUS,如果我没有理解错的话应该还需要外挂一个CPLD做物理协议层(有开源IP核),经过CPLD物理协议层之后再通过RS485走总线,而MCU和CPLD的通信可以是串口、SPI、I2C等等,速率可以做到10Mbps以上.因为涉及的东西比较多,还有阅读大量资料,还要会用CPLD,我怎么感觉要让这个CDBUS总线非常稳定可靠地工作并没有那么容易呢?
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 纯软件实现代码也很快会发布出来。
一周热门 更多>