本发明涉及一种现场总线数据链路,尤其涉及一种CAN总线数据链路及其逐位无损仲裁方法。
背景技术:
现有技术的CAN的数据链路是由显性电平表示0隐性电平表1,显性电平可以覆盖隐性电平,通过对隐性电平是否被覆盖来进行逐位无损仲裁。现有技术的CAN的数据链路如果连续0或连续1,是没有电平变化,同步比较困难,这也限制了传输速度。
技术实现要素:
本发明的目的:提供一种CAN总线数据链路及其逐位无损仲裁方法,同步性更好,传输更稳定。
为了实现上述目的,本发明的技术方案是:
一种CAN总线数据链路,用隐性电平跳变为显性电平或显性电平跳变为隐性电平作为时间基点也是上一次电平跳变的终点,与相邻下一次电平跳变为时间终点,通过计算基点与终点时间长度来表示所传送的数据。
上述的CAN总线数据链路,其中,用隐性电平跳变为显性电平或显性电平跳变为隐性电平作为时间基点也是上一次电平跳变的终点,与相邻下一次电平跳变为时间终点,通过计算基点与终点时间长度来表示所传送的多位数据。
上述的CAN总线数据链路,其中,通过监听总线上的相邻两次电平跳变时间长度与发送的电平跳时间长度比对进行逐位仲裁,如果相同就继续发送后续数据,不同就退出发送只接收数据等待总线空闲再发送。
上述的CAN总线数据链路,其中,所述的CAN总线数据链路包括复位收发单元、空闲计数器单元、循环冗余校验单元,所述的复位收发单元包括发送单元及接收单元。
一种CAN总线数据链路的逐位无损仲裁方法,该方法至少包括如下步骤:
步骤1:若CAN总线的空闲时间超过3个位的时间,对发送单元、接收单元、空闲计数器单元及循环冗余校验单元进行复位。
步骤2:空闲计数器单元判断是否发送标志,若有,则触发发送单元,进入同时收发状态。
步骤3:发送单元及接收单元同时工作,发送单元每发送一位数据就会送位仲裁单元,接收单元也会把接收到的数据送位仲裁单元进行位仲裁,同时会产生CRC循环校验数据。
步骤4:若位仲裁通过,进行下一位传送,直到一帧数据传送完成;否则,停止发送数据,转换为纯接收状态并等待下一次CAN总线空闲再发送。
步骤5:若在位仲裁过程中被中止了,发送就成了纯接收节点,将本地CRC与收到的循环冗余校验单元进行校验通过后,保存数据发送应答脉冲。
上述的CAN总线数据链路的逐位无损仲裁方法,其中,在所述的步骤2中,若空闲计数器单元在触发之前没有收到数据,触发发送单元;若空闲计数器单元在触发之前收到数据,空闲计数器单元清零,进入纯接收状态,并等待下次CAN总线空闲复位到来再发送。
上述的CAN总线数据链路的逐位无损仲裁方法,其中,在所述的步骤4中,在一帧数据的帧尾加上本地CRC校验字节,同时在三个位的时间内等待应答脉冲到来以清除发送标志,否则不会清除发送标志,会在复位后继续发送这帧数据。
本发明用隐性电平跳变为显性电平或显性电平跳变为隐性电平作为时间基点也是上一次电平跳变的终点,与相邻下一次电平跳变为时间终点,通过计算基点与终点时间长度来表示传送数据,能一次传送多位,对硬件要求更低,传送的速度更快,传输距离更远。再通过监听总线上的相邻两次电平跳变时间长度与发送的电平跳时间长度比对,如果相同就继续发送后续数据,不同就退出发送等待总线空闲,从而达到无损仲裁的目的。
附图说明
图1是本发明CAN总线数据链路的逐位无损仲裁方法的流程图。
图2是本发明CAN总线数据链路的相邻电平跳变的示意图1。
图3是本发明CAN总线数据链路的相邻电平跳变的示意图2。
图4是本发明CAN总线数据链路的相邻电平跳变的示意图3。
图5是本发明CAN总线数据链路的相邻电平跳变的示意图4。
具体实施方式
以下结合附图进一步说明本发明的实施例。
请参见附图2至附图5所示,一种CAN总线数据链路,用隐性电平跳变为显性电平或显性电平跳变为隐性电平作为时间基点也是上一次电平跳变的终点,与相邻下一次电平跳变为时间终点,通过计算基点与终点时间长度来表示所传送的数据。
用隐性电平跳变为显性电平或显性电平跳变为隐性电平作为时间基点也是上一次电平跳变的终点,与相邻下一次电平跳变为时间终点,通过计算基点与终点时间长度来表示所传送的多位数据。
通过监听总线上的相邻两次电平跳变时间长度与发送的电平跳时间长度比对进行逐位仲裁,如果相同就继续发送后续数据,不同就退出发送只接收数据等待总线空闲再发送,从而达到无损仲裁的目的。通过实践证明这种方式非常稳定。
CAN总线数据链路包括复位收发单元、空闲计数器单元、循环冗余校验单元等,所述的复位收发单元包括发送单元及接收单元。
请参见附图1所示,一种CAN总线数据链路的逐位无损仲裁方法,该方法至少包括如下步骤:
步骤1:若CAN总线的空闲时间超过3个位的时间,对发送单元、接收单元、空闲计数器单元及循环冗余校验单元进行复位。
步骤2:空闲计数器单元判断是否发送标志,若有,则触发发送单元,进入同时收发状态。
步骤3:发送单元及接收单元同时工作,发送单元每发送一位数据就会送位仲裁单元,接收单元也会把接收到的数据送位仲裁单元进行位仲裁,同时会产生CRC循环校验数据。
步骤4:若位仲裁通过,进行下一位传送,直到一帧数据传送完成;否则,停止发送数据,转换为纯接收状态并等待下一次CAN总线空闲再发送。
步骤5:若在位仲裁过程中被中止了,发送就成了纯接收节点,将本地CRC与收到的循环冗余校验单元进行校验通过后,保存数据发送应答脉冲。
在所述的步骤2中,若空闲计数器单元在触发之前没有收到数据,触发发送单元;若空闲计数器单元在触发之前收到数据,空闲计数器单元清零,进入纯接收状态,并等待下次CAN总线空闲复位到来再发送。
在所述的步骤4中,在一帧数据的帧尾加上本地CRC校验字节,同时在三个位的时间内等待应答脉冲到来以清除发送标志,否则不会清除发送标志,会在复位后继续发送这帧数据。
本发明采用逐位仲裁:当有多个节点同时对CAN总线进行发送数据时,发送节点会通过对CAN总线上两次相邻电平跳变的计时与自身发送数据时间进行比对,如果时间相等继续发送下一位,如果不相等就退出发送状态,进入等待状态,等待总线空闲,对总线上其它发送节点的数据发送没有破坏性。
校验时,在每一帧数据发送完成后会产生两个校验字节加在帧尾,接收方也会用收到的数据产生两个校验字节,通过比对,两个校验字节如果相同,会在帧尾发送一个应答脉冲,发送方收到应答脉后清除发送标志,完成一帧的发送,如果在规定时间内没收到应答脉冲,会在复位后重新发送这帧数据。
CRC:Cyclic Redundancy Check,意为循环冗余校验单元,是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。
综上所述,本发明用隐性电平跳变为显性电平或显性电平跳变为隐性电平作为时间基点也是上一次电平跳变的终点,与相邻下一次电平跳变为时间终点,通过计算基点与终点时间长度来表示传送数据,能一次传送多位,对硬件要求更低,传送的速度更快,传输距离更远。再通过监听总线上的相邻两次电平跳变时间长度与发送的电平跳时间长度比对,如果相同就继续发送后续数据,不同就退出发送等待总线空闲,从而达到无损仲裁的目的。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书内容所作的等效结构变换,或直接或间接运用附属在其他相关产品的技术领域,均同理包括在本发明的专利保护范围内。