首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Linux的Profibus同步(Raspberry Pi)

使用Linux的Profibus同步(Raspberry Pi)
EN

Stack Overflow用户
提问于 2020-10-05 22:43:02
回答 1查看 81关注 0票数 0

我计划在Linux上开发一个简单的Profibus master (FDL级别),更具体地说是在Raspberry Pi上。我有一个基于MAX481的RS485收发器。主机必须在有多个主机的总线上工作。

根据Profibus规范,您必须计算总线上的'1‘位的数量,以确定何时轮换访问令牌。具体地说,在11 '1‘比特之后,下一帧开始。11位也恰好是一帧。

在Linux中,如何检测这11个'1‘位?它们不会被驱动程序注册,因为没有开始位。所以我需要一个比特流,而不是解码的字节。

最好的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2021-08-30 15:41:39

不幸的是,使用微控制器/微处理器串口是一种不好的选择

您可以在微控制器UART外设中生成设置START_BIT、STOP_BIT和PARTITY_BIT (even)的11位。也许你会幸运地从数据报中接收到完整的字节,而不会丢失。

然而,PROFIBUS DP数据报最大可达244个字节,并且在数据报传输期间,PROFIBUS DP在字节之间不需要空闲位。您需要一个带FIFO或寄存器的通用异步收发器硬件或通用异步收发器微控制器外设,支持高达244字节的-这是非常罕见的,一旦这一要求是非常具体的现场总线。

另一个方面与波特率的兼容性有关。通常,在普通的微控制器UART上,PROFIBUS PD波特率的整个范围不是完全可用的。

我的建议:

  1. 在现场可编程门阵列上实现此通用异步收发器部分,并使用SPI与树莓派进行接口。您可以决定将PROFIBUS堆栈的扩展部分‘外包’给FPGA,以及可以保留在RPi上的部分。

  1. 使用ASIC (可能是ASPC2,但已经过时),并添加另一个兼容的处理器来实现堆栈的确定性部分。稍后,您可以将此处理器与您的RPi连接。

使用工业通信专用处理器(如TI Sitara am335x)实现

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64210872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档