CN107425939A - 一种处理芯片、数据包的发送及接收方法 - Google Patents
一种处理芯片、数据包的发送及接收方法 Download PDFInfo
- Publication number
- CN107425939A CN107425939A CN201710396394.0A CN201710396394A CN107425939A CN 107425939 A CN107425939 A CN 107425939A CN 201710396394 A CN201710396394 A CN 201710396394A CN 107425939 A CN107425939 A CN 107425939A
- Authority
- CN
- China
- Prior art keywords
- data
- recipient
- sender
- error
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0078—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40143—Bus networks involving priority mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种数据包的发送方法,包括:发送方判断总线是否处于空闲状态;如果是,则发送方判断储存页的标记是否为待发送标志值;如果是,则发送方发送发送方ID数据,并通过发送方ID数据判断发送方的优先级是否最高;如果是,则发送方依次发送接收方ID数据、位长数据和主数据;发送方生成并发送CRC数据,其中,发送方以第一速率发送发送方ID数据,并以第二速率发送接收方ID数据、位长数据和主数据,其中第一速率比第二速率低。通过上述方式,本发明可在RS485总线上设置多台主机,可通过第一速率发送仲裁字段以判断是否存在有干扰,并在排出干扰后以第二速率发送后续数据,使得多台主机在发送数据时不受到干扰。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种处理芯片、数据包的发送及接收方法。
背景技术
RS485是由美国电子工业协会EIA(Electronic Industries Association)在1983年提出的一种平衡式数据发送标准,满足此标准的收发器采用平衡发送和差分接收工作方式。实际上,RS485(TIA/EIA-485)通常被看作是TIA/EIA-422标准的一种扩展。由于支持多节点(32个或更多节点)、远距离(最大4000英尺)和接收高灵敏度(200mV),在构成通信网络时,仅需要一对双绞线作传输线,因此成本低廉,设备简单,在多站、远距离通信环境下获得了广泛应用。
传统的RS485总线通信是基于一条总线通信,只能有一台主机,可以有多台从机,只有主机可以主动发起通信,从机只能被动回覆主机数据(即从机不能主动上报数据)。
RS485总线上的从机不能主动上报数据,也不方便上报数据,且被动回复数据效率低,譬如从机是一个开关,如果它可以主动上报数据,那么当开关状态改变时,就主动上报一次就好;否则,主机要不停的发命令查询该开关状态,浪费总线带宽。也就是说,RS485总线上之所以规定不可以有多台主机,原因是当两台主机同时主动发送数据时,那么数据就会发生冲突,从而带来一系列问题。
发明内容
本发明主要解决的技术问题是提供一种处理芯片、数据包的发送及接收方法,可在RS485总线上设置多台主机,并且在发送数据时不受到干扰。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种数据包的发送方法,包括:发送方判断总线是否处于空闲状态;如果是,则发送方判断储存待发送的数据包的储存页的标记是否为待发送标志值,其中数据包包括与发送方的ID对应的发送方ID数据、与接收方法的ID对应的接收方ID数据、与主数据的字节长度对应的位长数据和主数据;如果是,则发送方发送发送方ID数据,并通过发送方ID数据判断发送方的优先级是否最高;如果是,则发送方依次发送接收方ID数据、位长数据和主数据;发送方生成并发送CRC数据;其中,发送方以第一速率发送发送方ID数据,且发送方以第二速率发送接收方ID数据、位长数据和主数据,其中第一速率比第二速率低。
其中,发送方发送完主数据后,且生成CRC数据之前,该方法还包括:发送方清除储存页的待发送标志值。
为解决上述技术问题,本发明采用的另一个技术方案是:提供一种一种处理芯片,包括处理器、储存器和收发器,其中:处理器用于判断总线是否处于空闲状态;如果是,则处理器判断用于储存待发送的数据包的储存器的标记是否为待发送标志值,其中数据包包括与发送方的ID对应的发送方ID数据、与接收方法的ID对应的接收方ID数据、与主数据的字节长度对应的位长数据和主数据;如果是,则收发器发送发送方ID数据,且处理器通过发送方ID数据判断发送方的优先级是否最高;如果是,则收发器依次发送接收方ID数据、位长数据和主数据;处理器生成CRC数据,并通过收发器发送CRC数据;其中,收发器以第一速率发送发送方ID数据,且收发器以第二速率发送接收方ID数据、位长数据和主数据,其中第一速率比第二速率低。
其中,处理器还用于在收发器发送完主数据后清除储存器的待发送标志值。
为解决上述技术问题,本发明采用的又一个技术方案是:提供一种数据包的接收方法,包括:接收方判断总线是否处于空闲状态;如果是,则接收方检测待接收的数据包中与发送方的ID对应的发送方ID数据、与接收方法的ID对应的接收方ID数据、与主数据的字节长度对应的位长数据的至少一者是否存在停止位错误;如果否,则接收方依次接收发送方ID数据、接收方ID数据、位长数据和主数据,并在接收完主数据后接收CRC数据;接收方判断所接收到的数据是否出错;如果是,则接收方保存并反馈出错数据,以使得发送方通过出错数据确定出错的原因。
其中,接收方判断所接收到的数据是否出错的步骤包括:接收方判断接收方ID数据是否出错;如果否,则接收方判断CRC数据是否出错;如果否,则接收方判断储存页是否已满。
其中,接收方保存并反馈出错数据的步骤包括:接收方确定接收方ID数据出错时,通过储存页保存出错的接收方ID数据,或者接收方确定CRC数据出错时,通过储存页保存出错的CRC数据,又或者接收方确定储存页已满时,标记储存页的标记值为已满标记值;接收方反馈出错的接收方ID数据、出错的CRC数据或标记值为已满标记值至发送方。
为解决上述技术问题,本发明采用的再一个技术方案是:提供一种处理芯片,包括处理器、储存器和收发器,其中:处理器用于判断总线是否处于空闲状态;如果是,则处理器检测待接收的数据包中与发送方的ID对应的发送方ID数据、与接收方法的ID对应的接收方ID数据、与主数据的字节长度对应的位长数据的至少一者是否存在停止位错误;如果否,则收发器依次接收发送方ID数据、接收方ID数据、位长数据和主数据,并在接收完主数据后接收CRC数据;处理器判断所接收到的数据是否出错;如果是,则储存器保存出错数据,并通过收发器反馈出错数据,以通过出错数据确定出错的原因。
其中,处理器用于判断接收方ID数据是否出错;如果否,则处理器判断CRC数据是否出错;如果否,则处理器判断储存器是否已满。
其中,处理器确定接收方ID数据出错时,储存器保存出错的接收方ID数据,或者处理器确定CRC数据出错时,储存器保存出错的CRC数据,又或者处理器确定储存器已满时,标记储存器的标记值为已满标记值;收发器反馈出错的接收方ID数据、出错的CRC数据或储存器的标记值为已满标记值。
本发明的有益效果是:区别于现有技术的情况,本发明所公开的数据包的发送方法包括:发送方判断总线是否处于空闲状态;如果是,则发送方判断储存待发送的数据包的储存页的标记是否为待发送标志值,其中数据包包括与发送方的ID对应的发送方ID数据、与接收方法的ID对应的接收方ID数据、与主数据的字节长度对应的位长数据和主数据;如果是,则发送方发送发送方ID数据,并通过发送方ID数据判断发送方的优先级是否最高;如果是,则发送方依次发送接收方ID数据、位长数据和主数据;发送方生成并发送CRC数据;其中,发送方以第一速率发送发送方ID数据,且发送方以第二速率发送接收方ID数据、位长数据和主数据,其中第一速率比第二速率低。通过上述方式,本发明可以在RS485总线上设置多台主机,可通过第一速率发送仲裁字段以判断是否存在有干扰,并在排出干扰后通过第二速率发送后续数据,使得多台主机在发送数据时不受到干扰,避免冲突。
附图说明
图1是本发明数据包的发送方法的流程示意图;
图2是本发明数据包的接收方法的流程示意图;
图3是本发明处理芯片的结构示意图。
具体实施方式
下面结合附图和实施方式对本发明进行详细说明。
如图1所示,图1是本发明数据包的发送方法的流程示意图。该方法包括以下步骤:
步骤S101:发送方判断总线是否处于空闲状态。
应理解,在步骤S101中,发送方和接收方都判断总线是否处于空闲状态。具体地,发送方和接收方通过总线所返回的电平来判断总线是否处于空闲状态,如总线所返回的电平为高电平时,判定总线处于空闲状态;又或者如总线所返回的电平为低电平时,判定总线处于空闲状态。
应理解,需要发送方和接收方都判断总线处于空闲状态后,发送方才会执行对接收方发送数据的操作。由于所有节点(如发送方或接收方)有时间上的误差,即发送方和接收方之间存在误差,发送方和接收方两者不可能同时能够判断出总线处于空闲状态,因此,为了确保两者都能处于空闲状态在发送数据,因此在发送方确定总线处于空闲状态时,发送方再次判断总线处于空闲状态的时间是否超过第一预设时间,如果是,发送方才会执行对接收方发送数据的操作,这样才有足够的时间让发送方和接收方都可以确定总线处于空闲状态。应理解,判断总线处于空闲状态的时间是否超过第一预设时间主要是用于判断节点之间的优先级,适用于多台节点同时等待总线空闲后发送数据,即总线处于空闲状态的时间超过第一预设时间的节点都可以发送数据。该第一预设时间保证的是所有节点内部的收发器有足够时间建成到总线空闲的状态,以确保所有节点的收发器可以顺利接收所有的数据包。且该第一预设时间同时用来设定第一优先级。
步骤S102:如果是,则发送方判断储存待发送的数据包的储存页的标记是否为待发送标志值。
在本实施例中,数据包包括与发送方的ID对应的发送方ID数据、与接收方法的ID对应的接收方ID数据、与主数据的字节长度对应的位长数据和主数据。
应理解,在步骤S102中,可以通过储存页的标记来判断数据包是否可以发送,如果储存页的标记为待发送标志值,则确定数据包可以发送,如果储存页的标记不为待发送标志值,则确定数据包不可以发送。其中待发送标志值为用户设定值,可以根据实际情况设定。
在步骤S102中,如果发送方确定总线不处于空闲状态,则返回步骤S101。
步骤S103:如果是,则发送方发送发送方ID数据,并通过发送方ID数据判断发送方的优先级是否最高。
在步骤S103中,当确定储存页的标记为待发送标志值,发送方就会开始发送方ID数据。应理解,在本实施例中,当发送方的优先级为最高时,才可以发送数据,当发送方的优先级不是最高级是不能发送数据的,即使发送数据也会被删除。因此在本实施例中先发送字节比较小的发送方ID数据来判断发送方的优先级是否最高,这样不会占据太多的资源,能够减少不必要的浪费。
另外,值得注意的是,发送方ID数据为用户设定的数据,具体需要根据用户需要而定,因此以发送方ID数据作为判断发送方的优先级是否最高,主要是看用户设定值而定,举例而言,以发送方ID数据的第一位电平作为判断值,当第一位电平为高电平时则判定发送方的优先级为最高,又或者当第一位电平为低电平时则判定发送方的优先级为最高。
另外,发送方ID数据判断发送方的优先级是否最高主要是用于第二判断优先级,适用于总线已经空闲一段时间后,只有最高优先级才能发送数据。应理解,判断总线处于空闲状态的时间是否超过第一预设时间主要是第一用于判断优先级,这次判断会同时得出多个节点可以发送数据,而第二次利用发送方ID数据判断优先级,可以判断出只有一个节点可以发送数据。
步骤S104:如果是,则发送方依次发送接收方ID数据、位长数据和主数据。
在本实施例中,总线优选为RS485总线。应理解,数据包的第一个字节是仲裁字段(即发送方ID数据为仲裁字段),剩余字节是后续数据(即发送方发送的接收方ID数据和主数据是后续数据)。本实施例的数据包的首字节(发送方ID数据)使用具有仲裁功能的总线(如CAN总线)的仲裁方式发送,避免冲突,剩下的数据(发送方发送的接收方ID数据和主数据)使用传统RS485高速传输模式,可分別为仲裁字段和后续数据设置不同的波特率,解決传统仲裁功能和高速通信不可兼得的问题。
值得注意的是,由于RS485硬件本身的原理,RS485硬件通过使能与否可以做到是强0弱1的模式(即RS485使能发送时,输出的是强0强1模式,RS485未使能发送时,不输出,总线默认状态是弱1),因此仲裁字段通过RS485硬件的强0弱1的模式来实现仲裁(即通过0来判断仲裁字段是否为最高优先级,0代表着仲裁字段为最高优先级)。因此可实现支持在RS485上设置多台主机,只要先发0即可先发送数据,支持多台主机通信。
另外,判断总线是否处于空闲状态主要是通过判断回读的数据是否为1,如果为1,则判定总线处于空闲状态。如果当前发送方发送仲裁字段时会同时回读RS485总线数据,如果发送的是数据1,而读回来的是数据0,那么代表有更高优先级的其他节点在发送数据,则当前节点的发送方停止发送,等RS485总线空闲了发送方再重新发送,直到发送成功。由于RS485硬件可以做到强0弱1的模式,只要有一个节点发送0,那么RS485总线便为0,那么该节点的发送方为最高优先级,可以先发送数据,即仲裁字段从第一位算起,为0的数量越多且越靠前该仲裁字段对应的节点的发送方位优先级越高,因为优先级高的发0读回的必要也是0,所以不会退出传输,而低优先及的发1读回了别人的0,所以退出传输。举例而言,第一节点的发送方所发送仲裁字段为00001110,第二节点的发送方所发送的仲裁字段为00110011,第三节点的发送方所发送的仲裁字段为00010011,从第一位算起,第一节点为0的数量最多,则第一节点的发送方为最高优先级,先发送数据,而第二节点和第二节点的发送方不能发送数据,这样第一节点发送数据包时就不会受到第二节点或第二节点的干扰。
步骤S105:发送方生成并发送CRC数据。
在本实施例中,数据包在传输过程中可能会受到干扰等原因导致数据出错,而CRC数据就是检查数据是否正确。而发送方把CRC数据放入数据包,让接收方拿出数据包中的数据和校验码,并通过校验算法比对数据是否正确。应理解,本实施例可通过硬件CRC校验和用户校验进行校验。其中硬件CRC校验只需要用户写好数据包,校验码由RS485硬件生成;而用户校验主要是通过用户自主写好校验码和数据,然后一起提交给RS485硬件进行传输,对用户来说会麻烦一些,但更加保险。在本实施例中,硬件CRC校验和用户校验可选,前者便捷且不佔用用户CPU资源,后者能额外确保模组与用户CPU之間传输的正确性。具体地,可通过设定值来判断是选择硬件CRC校验或用户校验,如当设定值为第一值时,选择硬件CRC校验,当设定值为第二值时,选择用户校验。
进一步的,在步骤S104发送完主数据之后,且在步骤S105生成CRC数据之前,该方法还包括:发送方清除储存页的待发送标志值。应理解,CRC数据是发送方本身生成的,因此当发送方发送完发送方ID数据、接收方ID数据、位长数据和主数据后,立刻清除储存页的待发送标志值,即标记储存页为空闲状态,让储存页重新开始写入其他数据。应理解,越早标记记储存页为空闲状态,用户就可以越早写入下一个数据包的数据,这样能够提高工作效率。
应理解,由于发送方先发送发送方ID数据来判断发送方的优先级是否最高,因此为了节约总线带宽,在本实施例中,发送方以第一速率发送发送方ID数据。进一步的,确定发送方为最高优先级,发送方以第二速率发送接收方ID数据、位长数据和主数据,其中第一速率比第二速率低。应理解,高速的好处就是总线带宽高,相同时间可以传输更多数据,低速部分是为了引入仲裁功能,被迫使用较低速率,相比CAN总线为了引入仲裁牺牲了全部速率,而本实施例只是牺牲了最开始一个字节的速率。
如图2所示,图2是本发明数据包的接收方法的流程示意图。应理解,图2的接收方法是基于图1的发送方法的。该方法包括以下步骤:
步骤S201:接收方判断总线是否处于空闲状态。应理解,该总线为RS485总线,判断RS485总线是否处于空闲状态,主要是判断接收方从RS485所读回的数据是否为1,如果是1,则判定总线为空闲状态。
应理解,在步骤S201中,只有接收方在确定总线处于空闲状态时才可以接收数据。
步骤S202:如果是,则接收方检测待接收的数据包中与发送方的ID对应的发送方ID数据、与接收方法的ID对应的接收方ID数据、与主数据的字节长度对应的位长数据的至少一者是否存在停止位错误。
在本实施例中,数据包包括发送方ID数据、接收方ID数据、位长数据和主数据。而发送方ID数据、接收方ID数据和位长数据均包括开始位和停止位,当发送方ID数据、接收方ID数据和位长数据中至少一者的开始位或停止位出错时,判定数据包中的发送方ID数据、接收方ID数据和位长数据存在停止位错误,则不会接收待接收的数据包,继续返回步骤S201。应理解,判断开始位是否出错主要是判断接收方接收到开始位是否超时,如果是,则判定出错。而判断停止位出错主要是判断停止位的数据是否正确,如果否,则判定出错。
步骤S203:如果否,则接收方依次接收发送方ID数据、接收方ID数据、位长数据和主数据,并在接收完主数据后接收CRC数据。
步骤S204:接收方判断所接收到的数据是否出错。
应理解,步骤S204包括以下子步骤:
步骤A:接收方判断接收方ID数据是否出错。应理解,该步骤主要是判断数据包是否发送给接收方本身,即接收方判断接收方ID数据与本身的ID是否相同,如果相同证明接收方ID数据没出错,确认该数据包是发送给自己;如果不相同证明接收方ID数据出错,确认该数据包不是发送给自己,可以忽略,则返回步骤S201。
如果接收方确定接收方ID数据没有出错,则执行步骤步骤B:接收方判断CRC数据是否出错。
如果接收方判定CRC数据有出错,返回步骤S201;如果接收方确定CRC数据没有出错,则执行步骤C:接收方判断储存页是否已满。如果接收方确定储存页已满(即储存页出错),当前储存页不能储存数据包,则返回步骤S201;如果接收方确定储存页未满,可以储存数据包,则将数据包储存到当前储存页中,则接收成功。
步骤S205:如果是,则接收方保存并反馈出错数据,以使得用户通过出错数据确定出错的原因。
应理解,在步骤S205中,当接收方ID数据、CRC数据和储存页中的至少一者出错,接收方保存并反馈出错数据。应理解,接收方接收到的数据都是保存在储存页中,即接收方一边接收数据一边将数据保存到储存页中。
应理解,在本实施例中,在步骤S205中,接收方保存并反馈出错数据的步骤包括:接收方确定接收方ID数据出错时,通过储存页保存出错的接收方ID数据;接收方反馈出错的接收方ID数据至发送方。
应理解,在其他实施例中,在步骤S205中,接收方保存并反馈出错数据的步骤包括:接收方确定CRC数据出错时,通过储存页保存出错的CRC数据;接收方反馈出错的CRC数据或至发送方。
应理解,在其他实施例中,在步骤S205中,接收方保存并反馈出错数据的步骤包括:接收方确定储存页已满时,标记储存页的标记值为已满标记值;接收方反馈标记值为已满标记值至发送方。
在本实施例中,数据出错后可以完整保留,方便用户判断出错的原因。当然,至于是否需要反馈给发送方,可以自行决定是否通知发送方,具体需要根据用户实际情况而定。应理解,错误数据包保留可以方便调试,能知道数据错成什么样,错在哪里,能分析出错原因,方便用户调试硬件设备或软件程序。
如图3所示,图3是本发明处理芯片的结构示意图。该处理芯片与图1中的发送方法和图2中的接收方法对应。该处理芯片包括储存器11、处理器12和收发器13。应理解,本实施例的处理芯片即可以发送数据,也可以接收数据。
当处理芯片作为发送方发送数据时,处理器12用于判断总线是否处于空闲状态。应理解,在发送数据时,发送方和接收方都需要判断总线是否处于空闲状态,两者都是需要确定总线处于空闲状态下发送方才能发送数据至接收方。由于所有节点(如发送方或接收方)有时间上的误差,即发送方和接收方之间存在误差,发送方和接收方两者不可能同时能够判断出总线处于空闲状态,因此,为了确保两者都能处于空闲状态在发送数据,因此在处理器12确定总线处于空闲状态时,处理器12再次判断总线处于空闲状态的时间是否超过第一预设时间,如果是,处理芯片才会执行对接收方发送数据的操作,这样才有足够的时间让发送方和接收方都可以确定总线处于空闲状态。应理解,判断总线处于空闲状态的时间是否超过第一预设时间主要是用于判断节点之间的优先级,适用于多台节点同时等待总线空闲后发送数据,即总线处于空闲状态的时间超过第一预设时间的节点都可以发送数据。该第一预设时间保证的是所有节点内部的收发器有足够时间建成到总线空闲的状态,以确保所有节点的收发器可以顺利接收所有的数据包。且该第一预设时间同时用来设定第一优先级。
处理器12在确定总线是否处于空闲状态时,判断用于储存待发送的数据包的储存器11的标记是否为待发送标志值。如果储存器11的标记为待发送标志值,则处理器12确定数据包可以发送,如果储存器11的标记不为待发送标志值,则处理器12确定数据包不可以发送。其中待发送标志值为用户设定值,可以根据实际情况设定。
在本实施例中,数据包包括与发送方的ID对应的发送方ID数据、与接收方法的ID对应的接收方ID数据、与主数据的字节长度对应的位长数据和主数据。
收发器13在处理器12确定用于储存待发送的数据包的储存器11的标记为待发送标志值时,发送发送方ID数据。在本实施例中,收发器13以第一速率发送发送方ID数据。
处理器12用于通过发送方ID数据判断发送方的优先级是否最高。应理解,在本实施例中,当发送方的优先级为最高时,才可以发送数据,当发送方的优先级不是最高级是不能发送数据的,即使发送数据也会被删除。因此在本实施例中先发送字节比较小的发送方ID数据来判断发送方的优先级是否最高,这样不会占据太多的资源,能够减少不必要的浪费。
另外,值得注意的是,发送方ID数据为用户设定的数据,具体需要根据用户需要而定,因此以发送方ID数据作为判断发送方的优先级是否最高,主要是看用户设定值而定。
另外,发送方ID数据判断发送方的优先级是否最高主要是用于第二判断优先级,适用于总线已经空闲一段时间后,只有最高优先级才能发送数据。应理解,判断总线处于空闲状态的时间是否超过第一预设时间主要是第一用于判断优先级,这次判断会同时得出多个节点可以发送数据,而第二次利用发送方ID数据判断优先级,可以判断出只有一个节点可以发送数据。
收发器13在处理器12确定发送方的优先级是否最高时,依次发送接收方ID数据、位长数据和主数据。
在本实施例中,总线优选为RS485总线。应理解,数据包的第一个字节是仲裁字段(即发送方ID数据为仲裁字段),剩余字节是后续数据(即发送方发送的接收方ID数据和主数据是后续数据)。本实施例的数据包的首字节(发送方ID数据)使用具有仲裁功能的总线(如CAN总线)的仲裁方式发送,避免冲突,剩下的数据(发送方发送的接收方ID数据和主数据)使用传统RS485高速传输模式,可分別为仲裁字段和后续数据设置不同的波特率,解決传统仲裁功能和高速通信不可兼得的问题。
值得注意的是,由于RS485硬件本身的原理,RS485硬件通过使能与否可以做到是强0弱1的模式(即RS485使能发送时,输出的是强0强1模式,RS485未使能发送时,不输出,总线默认状态是弱1),因此仲裁字段通过RS485硬件的强0弱1的模式来实现仲裁(即通过0来判断仲裁字段是否为最高优先级,0代表着仲裁字段为最高优先级)。因此可实现支持在RS485上设置多台主机,只要先发0即可先发送数据,支持多台主机通信。
因此,判断总线是否处于空闲状态主要是通过判断回读的数据是否为1,如果为1,则判定总线处于空闲状态。如果当前收发器13发送仲裁字段时会同时回读RS485总线数据,如果发送的是数据1,而读回来的是数据0,那么代表有更高优先级的其他节点在发送数据,则当前收发器13停止发送,等RS485总线空闲了发送方再重新发送,直到发送成功。由于RS485硬件可以做到强0弱1的模式,只要有一个节点发送0,那么RS485总线便为0,那么该节点的发送方为最高优先级,可以先发送数据,即仲裁字段从第一位算起,为0的数量越多且越靠前该仲裁字段对应的节点的发送方位优先级越高,因为优先级高的发0读回的必要也是0,所以不会退出传输,而低优先及的发1读回了别人的0,所以退出传输。
在本实施例中,收发器13以第二速率发送接收方ID数据、位长数据和主数据,其中第一速率比第二速率低,以低速发送发送方ID数据,方便回读。应理解,高速的好处就是总线带宽高,相同时间可以传输更多数据,低速部分是为了引入仲裁功能,被迫使用较低速率,相比CAN总线为了引入仲裁牺牲了全部速率,而本实施例只是牺牲了最开始一个字节的速率。
当收发器13发送完主数据后,处理器生成CRC数据,并通过收发器13发送CRC数据。
在本实施例中,数据包在传输过程中可能会受到干扰等原因导致数据出错,而CRC数据就是检查数据是否正确。而收发器13把CRC数据放入数据包,让接收方拿出数据包中的数据和校验码,并通过校验算法比对数据是否正确。应理解,本实施例可通过硬件CRC校验和用户校验进行校验。其中硬件CRC校验只需要用户写好数据包,校验码由RS485硬件生成;而用户校验主要是通过用户自主写好校验码和数据,然后一起提交给RS485硬件进行传输,对用户来说会麻烦一些,但更加保险。在本实施例中,硬件CRC校验和用户校验可选,前者便捷且不佔用用户CPU资源,后者能额外确保模组与用户CPU之間传输的正确性。具体地,可通过设定值来判断是选择硬件CRC校验或用户校验,如当设定值为第一值时,选择硬件CRC校验,当设定值为第二值时,选择用户校验。
应理解,在本实施例中,处理器12还用于在收发器13发送完主数据后清除储存器11的待发送标志值。也就是说,当收发器13发送完发送方ID数据、接收方ID数据、位长数据和主数据后,处理器12立刻清除储存器11的待发送标志值,即标记储存页为空闲状态,让储存页重新开始写入其他数据。应理解,越早标记记储存页为空闲状态,用户就可以越早写入下一个数据包的数据,这样能够提高工作效率。
当处理芯片作为接收方接收数据时,处理器12用于判断总线是否处于空闲状态。应理解,该总线为RS485总线,判断RS485总线是否处于空闲状态,主要是判断接收方从RS485所读回的数据是否为1,如果是1,则判定总线为空闲状态。
处理器12在确定总线处于空闲状态时,处理芯片才会执行接收数据的操作。
应理解,发送方和接收方都判断总线是否处于空闲状态。只有接收方都确定总线处于空闲状态下时才可以接收数据。
处理器12在确定总线是否处于空闲状态时,检测待接收的数据包中与发送方的ID对应的发送方ID数据、与接收方法的ID对应的接收方ID数据、与主数据的字节长度对应的位长数据的至少一者是否存在停止位错误。
在本实施例中,数据包包括发送方ID数据、接收方ID数据、位长数据和主数据。而发送方ID数据、接收方ID数据和位长数据均包括开始位和停止位,当发送方ID数据、接收方ID数据和位长数据中至少一者的开始位或停止位出错时,判定数据包中的发送方ID数据、接收方ID数据和位长数据存在停止位错误,则收发器13不会接收待接收的数据包。应理解,判断开始位是否出错主要是判断接收方接收到开始位是否超时,如果是,则判定出错。而判断停止位出错主要是判断停止位的数据是否正确,如果否,则判定出错。
收发器13在处理器12确定发送方ID数据、接收方ID数据、位长数据中的至少一者没有存在停止位错误时,依次接收发送方ID数据、接收方ID数据、位长数据和主数据,并在接收完主数据后接收CRC数据。
处理器12用于判断所接收到的数据是否出错。其中处理器12判断接收器13所接收到的数据是否出错具体包括:处理器12先判断接收方ID数据是否出错,主要是判断数据包是否发送给接收方本身;如果否,则处理器12继续判断CRC数据是否出错;如果否,则处理器12再次判断储存器是否已满。
储存器11在处理器12确定接收器13所接收到的数据出错时,保存出错数据,并通过收发器13反馈出错数据,以通过出错数据确定出错的原因。应理解,收发器13接收到的数据都是保存在储存器11中,即收发器13一边接收数据,储存器11一边储存数据。
其中保存并反馈出错数据具体包括:处理器12确定接收方ID数据出错时,储存器11保存出错的接收方ID数据;收发器13反馈出错的接收方ID数据至发送方,以使得用户通过出错数据分析出错原因。处理器12确定CRC数据出错时,储存器11保存出错的CRC数据;收发器13反馈出错的CRC数据至发送方,以使得发送方通过出错数据分析出错原因。处理器12确定储存器11已满时,标记储存器11的标记值为已满标记值;收发器13反馈储存器11的标记值为已满标记值至发送方,以使得发送方通过出错数据分析出错原因。
在本实施例中,数据出错后可以完整保留,方便用户判断出错的原因。当然,至于是否需要反馈给发送方,可以自行决定是否通知发送方,具体需要根据用户实际情况而定。应理解,错误数据包保留可以方便调试,能知道数据错成什么样,错在哪里,能分析出错原因,方便用户调试硬件设备或软件程序。
本实施例具有的有点:总线上各节点均可主动发起传输,通过节点地址仲裁以避免冲突;总线上每个数据包可以含有0~253字节;用户数据共有8个RX缓冲页和2个TX缓冲页,每一页256字节;硬件为每个数据包自动完成16位CRC生成与校验;波特率:103bps至9Mbps或者更高;可分別为仲裁字段和后续数据设置不同的波特率;兼容传统RS485总线,即通过设置第一兼容值来实现兼容模式,通过设置第二兼容值来进入传统RS485模式。
综上,本发明所公开的数据包的发送方法包括:发送方判断总线是否处于空闲状态;如果是,则发送方判断储存待发送的数据包的储存页的标记是否为待发送标志值,其中数据包包括与发送方的ID对应的发送方ID数据、与接收方法的ID对应的接收方ID数据、与主数据的字节长度对应的位长数据和主数据;如果是,则发送方发送发送方ID数据,并通过发送方ID数据判断发送方的优先级是否最高;如果是,则发送方依次发送接收方ID数据、位长数据和主数据;发送方生成并发送CRC数据;其中,发送方以第一速率发送发送方ID数据,且发送方以第二速率发送接收方ID数据、位长数据和主数据,其中第一速率比第二速率低。通过上述方式,本发明可以在RS485总线上设置多台主机,可通过第一速率发送仲裁字段以判断是否存在有干扰,并在排出干扰后通过第二速率发送后续数据,使得多台主机在发送数据时不受到干扰,避免冲突。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种数据包的发送方法,其特征在于,包括:
发送方判断总线是否处于空闲状态;
如果是,则所述发送方判断储存待发送的数据包的储存页的标记是否为待发送标志值,其中所述数据包包括与所述发送方的ID对应的发送方ID数据、与接收方法的ID对应的接收方ID数据、与主数据的字节长度对应的位长数据和主数据;
如果是,则所述发送方发送所述发送方ID数据,并通过所述发送方ID数据判断所述发送方的优先级是否最高;
如果是,则所述发送方依次发送所述接收方ID数据、所述位长数据和所述主数据;
所述发送方生成并发送CRC数据;
其中,所述发送方以第一速率发送所述发送方ID数据,且所述发送方以第二速率发送所述接收方ID数据、所述位长数据和所述主数据,其中所述第一速率比所述第二速率低。
2.根据权利要求1所述的发送方法,其特征在于,所述发送方发送完所述主数据后,且生成所述CRC数据之前,该方法还包括:
所述发送方清除所述储存页的待发送标志值。
3.一种处理芯片,其特征在于,包括处理器、储存器和收发器,其中:
所述处理器用于判断总线是否处于空闲状态;
如果是,则所述处理器判断用于储存待发送的数据包的储存器的标记是否为待发送标志值,其中所述数据包包括与所述发送方的ID对应的发送方ID数据、与接收方法的ID对应的接收方ID数据、与主数据的字节长度对应的位长数据和主数据;
如果是,则所述收发器发送所述发送方ID数据,且所述处理器通过所述发送方ID数据判断所述发送方的优先级是否最高;
如果是,则所述收发器依次发送所述接收方ID数据、所述位长数据和所述主数据;
所述处理器生成CRC数据,并通过所述收发器发送所述CRC数据;
其中,所述收发器以第一速率发送所述发送方ID数据,且所述收发器以第二速率发送所述接收方ID数据、所述位长数据和所述主数据,其中所述第一速率比所述第二速率低。
4.根据权利要求1所述的处理芯片,其特征在于,所述处理器还用于在所述收发器发送完所述主数据后清除所述储存器的待发送标志值。
5.一种数据包的接收方法,其特征在于,包括:
接收方判断总线是否处于空闲状态;
如果是,则所述接收方检测待接收的数据包中与发送方的ID对应的发送方ID数据、与所述接收方法的ID对应的接收方ID数据、与所述主数据的字节长度对应的位长数据的至少一者是否存在停止位错误;
如果否,则所述接收方依次接收所述发送方ID数据、所述接收方ID数据、所述位长数据和所述主数据,并在接收完所述主数据后接收CRC数据;
所述接收方判断所接收到的数据是否出错;
如果是,则所述接收方保存并反馈出错数据,以使得所述发送方通过所述出错数据确定出错的原因。
6.根据权利要求5所述的接收方法,其特征在于,所述接收方判断所接收到的数据是否出错的步骤包括:
所述接收方判断所述接收方ID数据是否出错;
如果否,则所述接收方判断所述CRC数据是否出错;
如果否,则所述接收方判断储存页是否已满。
7.根据权利要求5所述的接收方法,其特征在于,所述接收方保存并反馈出错数据的步骤包括:
所述接收方确定所述接收方ID数据出错时,通过所述储存页保存出错的所述接收方ID数据,或者所述接收方确定所述CRC数据出错时,通过所述储存页保存出错的所述CRC数据,又或者所述接收方确定所述储存页已满时,标记所述储存页的标记值为已满标记值;
所述接收方反馈出错的所述接收方ID数据、出错的所述CRC数据或标记值为已满标记值至所述发送方。
8.一种处理芯片,其特征在于,包括处理器、储存器和收发器,其中:
所述处理器用于判断总线是否处于空闲状态;
如果是,则所述处理器检测待接收的数据包中与发送方的ID对应的发送方ID数据、与所述接收方法的ID对应的接收方ID数据、与所述主数据的字节长度对应的位长数据的至少一者是否存在停止位错误;
如果否,则所述收发器依次接收所述发送方ID数据、所述接收方ID数据、所述位长数据和所述主数据,并在接收完所述主数据后接收CRC数据;
所述处理器判断所接收到的数据是否出错;
如果是,则所述储存器保存出错数据,并通过所述收发器反馈所述出错数据,以通过所述出错数据确定出错的原因。
9.根据权利要求8所述的处理芯片,其特征在于,
所述处理器用于判断所述接收方ID数据是否出错;
如果否,则所述处理器判断所述CRC数据是否出错;
如果否,则所述处理器判断所述储存器是否已满。
10.根据权利要求9所述的处理芯片,其特征在于,
所述处理器确定所述接收方ID数据出错时,所述储存器保存出错的所述接收方ID数据,或者所述处理器确定所述CRC数据出错时,所述储存器保存出错的所述CRC数据,又或者所述处理器确定所述储存器已满时,标记所述储存器的标记值为已满标记值;
所述收发器反馈出错的所述接收方ID数据、出错的所述CRC数据或所述储存器的标记值为已满标记值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710396394.0A CN107425939A (zh) | 2017-05-31 | 2017-05-31 | 一种处理芯片、数据包的发送及接收方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710396394.0A CN107425939A (zh) | 2017-05-31 | 2017-05-31 | 一种处理芯片、数据包的发送及接收方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107425939A true CN107425939A (zh) | 2017-12-01 |
Family
ID=60429243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710396394.0A Pending CN107425939A (zh) | 2017-05-31 | 2017-05-31 | 一种处理芯片、数据包的发送及接收方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107425939A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111223286A (zh) * | 2019-10-18 | 2020-06-02 | 北京研华兴业电子科技有限公司 | 基于Meter BUS的数据采集装置及方法 |
CN114500159A (zh) * | 2022-02-17 | 2022-05-13 | 杭州老板电器股份有限公司 | 中央吸油烟机系统的有线通讯方法、装置和电子设备 |
CN114900390A (zh) * | 2022-03-28 | 2022-08-12 | 深圳市元征科技股份有限公司 | 数据传输方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060062240A1 (en) * | 1991-11-12 | 2006-03-23 | Meier Robert C | Redundant radio frequency network having a roaming terminal communication protocol |
CN2879257Y (zh) * | 2006-02-21 | 2007-03-14 | 同济大学 | 基于多主通讯机制的多个温室群控装置 |
CN101136828A (zh) * | 2007-09-27 | 2008-03-05 | 广州市聚晖电子科技有限公司 | 一种基于rs485多主机有线串行通讯的方法 |
CN101262398A (zh) * | 2007-12-14 | 2008-09-10 | 华南理工大学 | 污染源监测系统监测子站通信网络 |
CN105354159A (zh) * | 2015-09-28 | 2016-02-24 | 上海海视电子有限公司 | 一种基于rs485分布式总线系统的控制方法 |
CN106357301A (zh) * | 2016-08-25 | 2017-01-25 | 阳光电源股份有限公司 | 一种级联型电力线载波通讯方法及装置 |
-
2017
- 2017-05-31 CN CN201710396394.0A patent/CN107425939A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060062240A1 (en) * | 1991-11-12 | 2006-03-23 | Meier Robert C | Redundant radio frequency network having a roaming terminal communication protocol |
CN2879257Y (zh) * | 2006-02-21 | 2007-03-14 | 同济大学 | 基于多主通讯机制的多个温室群控装置 |
CN101136828A (zh) * | 2007-09-27 | 2008-03-05 | 广州市聚晖电子科技有限公司 | 一种基于rs485多主机有线串行通讯的方法 |
CN101262398A (zh) * | 2007-12-14 | 2008-09-10 | 华南理工大学 | 污染源监测系统监测子站通信网络 |
CN105354159A (zh) * | 2015-09-28 | 2016-02-24 | 上海海视电子有限公司 | 一种基于rs485分布式总线系统的控制方法 |
CN106357301A (zh) * | 2016-08-25 | 2017-01-25 | 阳光电源股份有限公司 | 一种级联型电力线载波通讯方法及装置 |
Non-Patent Citations (1)
Title |
---|
宋晓伟等: "一种基于新型RS485总线的楼宇自控系统", 《建筑电气》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111223286A (zh) * | 2019-10-18 | 2020-06-02 | 北京研华兴业电子科技有限公司 | 基于Meter BUS的数据采集装置及方法 |
CN114500159A (zh) * | 2022-02-17 | 2022-05-13 | 杭州老板电器股份有限公司 | 中央吸油烟机系统的有线通讯方法、装置和电子设备 |
CN114500159B (zh) * | 2022-02-17 | 2023-12-15 | 杭州老板电器股份有限公司 | 中央吸油烟机系统的有线通讯方法、装置和电子设备 |
CN114900390A (zh) * | 2022-03-28 | 2022-08-12 | 深圳市元征科技股份有限公司 | 数据传输方法、装置、电子设备及存储介质 |
CN114900390B (zh) * | 2022-03-28 | 2024-05-14 | 深圳市元征科技股份有限公司 | 数据传输方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106776436B (zh) | 一种适用于多点互联的高速串行总线的通信方法 | |
CN107425939A (zh) | 一种处理芯片、数据包的发送及接收方法 | |
CN108282897A (zh) | 一种随机接入反馈、处理方法、基站及终端 | |
CN103905300B (zh) | 一种数据报文发送方法、设备及系统 | |
CN101788972A (zh) | 一种数据传输的系统与方法 | |
CN100502385C (zh) | 实现rs-485多点通讯的方法 | |
CN103098410A (zh) | 提高混合自动重复请求(harq)吞吐量 | |
CN106843942A (zh) | 穿戴式设备的固件升级方法及穿戴式设备 | |
CN104025690A (zh) | 一种调整发送时间的方法及用户设备 | |
CN103188059A (zh) | 快速通道互联系统中数据包重传方法、装置和系统 | |
CN104750588A (zh) | 一种基于串口通信的压力测试方法 | |
CN102238055B (zh) | 基于mdio接口的下载方法及系统 | |
CN108011692A (zh) | 一种用于单片机的数据通信方法 | |
CN108512785A (zh) | 一种数据传输协议方法 | |
CN101304362B (zh) | 重传缓冲装置及传输数据的方法 | |
CN104794089A (zh) | 适用于单片机的改进型uart通信的方法、装置及系统 | |
CN103685060B (zh) | 数据包发送方法及装置 | |
CN112291387A (zh) | 主从机自动寻址方法、装置、设备及存储介质 | |
CN108235382A (zh) | 一种传输速率调整的方法、节点设备以及服务器 | |
CN111835569B (zh) | 一种光口速率及模式的自适应方法、系统及存储介质 | |
CN103186440A (zh) | 检测子卡在位的方法、装置及系统 | |
US4584575A (en) | Method and device for the asynchronous series communication on the multipoint type of a plurality of logic transceivers | |
CN110809003A (zh) | 机器人和焊接设备间协议转换的方法及协议转换模块 | |
WO2021208836A1 (zh) | 一种harq-ack反馈方法及装置 | |
CN105765909A (zh) | 一种链路切换方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171201 |
|
RJ01 | Rejection of invention patent application after publication |