如何使两个STM之间的通信延迟小?

2019-07-14 17:17发布

我想在两个STM32之间来回发送消息。可能是STM32F407VET6,但如果我能尝试一些简单的东西(STM32F103C8T6),那就太好了。我的要求:
  • 往返延迟时间:对于有效载荷大约为8字节的消息,最好是1ms max(不包括处理)。
  • 距离约2米
  • 速度:纯数据:大约128 kbps(排除开销),所以可能大约200 kbps
我在SPI和I2C之间进行了检查,看起来SPI更容易(设置)并且我有足够的GPIO引脚。但是,我读到2米和快速数据率可能是一个问题。另外,我找不到往返延误的信息。当然我可以自己检查所有这些,但它为我节省了很多努力来设置它。对于两个STM之间的布线,我打算使用RS232连接器(可能还有电缆),但是如果有更好的选择,请告诉我(UTP电缆可能和互联网连接器?)。或者是否有更合适的布线/连接器?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
比吥匕卟
1楼-- · 2019-07-15 21:24
在我尝试在两个STM32上使用SPI之后(从未尝试过,仅在Arduino上),我将考虑哪种电缆/连接器最好。
wang21cj
2楼-- · 2019-07-15 22:30
您可以使用适当的电缆驱动器和线路终结器向一个方向(从主设备到从设备)发送多少米的SPI - 从设备响应的返回途中会出现问题 - 提供整体“后退”延迟的一小部分时钟周期你会好起来的。
wang21cj
3楼-- · 2019-07-15 23:56
例如,当时钟周期为7.8 us时,如果“有反向”延迟接近7.8 us的一半,则SPI主控制器将尝试在错误的边缘为来自SPI从器件的数据提供时钟,并且您将获得sh1t数据。我会说你可以充分接收来自电缆的从属传输,这种传输引入了7.8 us的八分之一延迟。那是大约1美元或200米。但是,使用电缆这么长时间你需要适当的驱动器和触发器以避免反射,你肯定会考虑使用RS485进行此异步传输。
huangdajiang
4楼-- · 2019-07-16 05:30
 精彩回答 2  元偷偷看……
十个名字V
5楼-- · 2019-07-16 10:33
你也可以试试CANBus。STM32F4芯片具有内部CANBus接口,您可以轻松找到KEIL的软件库。您应该使用像MCP2551这样的CAN收发器IC并设置您的网络。CANBus是节点到节点通信的理想选择。I2C和SPI 主要用于MCU在同一板上进行传感器通信。CANBus是一种差分通信,由于电噪声非常耐用,这可能是2米距离的问题。它还可以满足您的通信速度要求。
比吥匕卟
6楼-- · 2019-07-16 10:51
谢谢......之前从未尝试过CANbus(我还没有F4,但我看到即使是最简单的F1也有我可以测试的)。我可以问一下CANbus通常使用哪种电缆/连接器?

一周热门 更多>