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

Raspberry pi 使用Linux的Profibus同步(Raspberry Pi),raspberry-pi,serial-port,linux-device-driver,rs485,Raspberry Pi,Serial Port,Linux Device Driver,Rs485,我计划在Linux中开发一个简单的Profibus主机(FDL级别),更具体地说是在Raspberry Pi上。我有一个基于MAX 481的RS485收发器。主机必须在有多个主机的总线上工作 根据Profibus规范,您必须计算总线上“1”位的数量,以确定何时轮换访问令牌。特别是在11'1'位之后,下一帧开始。11位也正好是一帧 在Linux中,如何检测这11个“1”位?它们不会被驱动程序注册,因为没有起始位。所以我需要一个比特流,而不是解码字节 最好的方法是什么?11位显然是一个字符的帧大小(

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

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

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


最好的方法是什么?

11位显然是一个字符的帧大小(即开始位、8位数据位、偶校验位和停止位)。典型的UART将在非连续传输之间插入一帧间隔的倍数,请参阅。在接收端,检测此空闲时间通常需要一个计时器,例如,请参见TI提供的Profibus硬件支持,您正在尝试做的事情似乎在3.1.3基于软件的Profibus DP主设备实现中有所描述,请参见表5了解您面临的缺点列表。使用UART的
接收超时
功能检测空闲间隔的开始,而不是尝试当电报帧开始时检测它的结束。但是,我找不到BCM文档,除了它是一个中断。使用Atmel USART,接收机超时可编程为N位,但在Linux中,at91串行驱动程序会劫持接收机超时以终止DMA传输。