CN105975424B - 一种主从串行通讯协议 - Google Patents
一种主从串行通讯协议 Download PDFInfo
- Publication number
- CN105975424B CN105975424B CN201610274612.9A CN201610274612A CN105975424B CN 105975424 B CN105975424 B CN 105975424B CN 201610274612 A CN201610274612 A CN 201610274612A CN 105975424 B CN105975424 B CN 105975424B
- Authority
- CN
- China
- Prior art keywords
- byte
- data
- address
- frame
- length
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0002—Serial port, e.g. RS232C
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种主从串行通讯协议,其包括一主设备和若干从设备,数据帧的传输格式为:协议帧的第1、2字节为包含子设备地址、命令、数据及CRC16校验的字节数;协议帧的第3、4字节为第1、2字节的取反;第5字节为从设备地址,第6字节为命令字节,最后两个字节为CRC16检验码,中间为数据字节。CRC16检验用于保证子设备地址、命令、数据等内容的传输正确性。该协议帧的格式定义首先通过数据长度及数据长度的取反实现了1帧数据传输开始的判断,数据长度信息的传输,数据长度自校验,可变数据长度的数据通讯,以及传输内容的校验验证,保证整个帧的传输正确性。分别给出了采用该格式数据帧的发送和接收程序实现方法。本发明能有效提高通讯速度、实时性及数据传输的正确性。
Description
技术领域
本发明涉及一种通讯协议,特别是主从串行通讯协议。
背景技术
目前,很多单片机系统或嵌入式系统需要与上位机系统进行实时通讯,完成参数的设置、采集数据的实时上传、内部存储测量结果的批量传输等,单片机系统或嵌入式系统作为从设备,上位机系统做为主设备,主设备与多个从设备之间多数采用RS232总线、RS485总线、以太网等串行通讯方式。而现有的modbus等串行主从通信协议,要求传输的数据帧之间满足一定延时条件,数据帧才可以连续发送,因此如何提高通讯速度、数据传输的实时性及正确性成为目前亟待解决的技术问题。
发明内容
针对上述问题,本发明的目的是提供一种主从串行通讯协议,该协议可以有效提高通讯速度与数据传输的正确性,且传输时数据帧之间不用插入时间延时来防止两个数据帧连接在一起无法区分。
为实现上述目的,本发明采取以下技术方案:一种主从串行通讯协议,其特征在于,它包括一主设备和若干从设备,步骤如下:1)设置协议内容:协议帧包含的字节串包括数据长度2字节、数据长度取反2字节、从设备地址1字节、命令1字节、数据字节以及最后两字节的crc16校验,总共N个字节;2)主设备向各个从设备通过传输协议帧发送控制命令及数据,其过程如下:2.1)设置缓冲区对应的从设备地址字节;2.2)设置缓冲区对应的命令字节;2.3)计算地址+命令+数据的字节长度;2.4)根据步骤2.3)计算得到的字节长度计算地址+命令+数据的CRC16校验码;2.5)追加2字节CRC16校验码至数据尾端;2.6)将步骤2.3)计算得到的字节长度加2并设置发送缓冲区的1-2字节;2.7)根据1-2字节取反的值设置发送缓冲区的3-4字节,将缓冲区内容发送至传输总线上,完成协议帧数据的发送;3)各从设备接收协议帧,完成数据传输。
优选地,所述步骤1)中,字节1—2为地址+命令+数据+2字节CRC16检验码的字节长度,数据长度占两个字节,最长能够表示65536个字节数。
优选地,所述步骤1)中,字节3—4为地址+命令+数据+2字节CRC16检验码的字节长度的取反,即字节1—2的取反;字节1-2与字节3-4不仅表示了要传输的数据长度及数据长度的自校验,还实现了一帧数据开始传输的判断。
优选地,所述步骤1)中,字节5为从设备地址,地址表示范围1-254;当主设备与多台从设备连接时,地址0作为广播地址,另外地址255用于参数设置地址,该情况只能应用于主设备与从设备一对一通讯的情况。
优选地,所述步骤1)中,字节6为命令字节,用cmd表示;命令的高半字节用于表示第1级命令分类,高半字节取值在0-7时,表示主设备发送到从设备的控制命令,最多分为8类主设备到从设备的一级指令;高半字节取值在8-15时,表示从设备发送到主设备的指令,最多分为8类从设备到主设备的一级指令;命令的低半字节用于表示第2级指令,取值在0-15之间,共分为16个二级指令。
优选地,所述步骤1)中,从字节6开始到字节N-2为止为数据字节,数据长度为0到N-8个字节,数据字节数为0时为纯命令字节;当命令字节6所表示的命令分类不足以区分更多命令时,进一步使用数据字节中的第1至第x个字节做更详细的命令划分。
优选地,所述步骤3)中,各从设备接收协议帧的过程如下:3.1)定义静态变量a、b、c、d、len、idx、flag,并将静态变量初始化为0,开始接收中断;3.2)令静态变量a=b、b=c、c=d、d=新接收字节;3.3)判断开始1帧数据的接收标志flag是否为真,若为真则接收缓冲区当前索引对应的内容等于d,并进入步骤3.4);反之则步骤3.6);3.4)将缓冲区索引加1,并判断缓冲区索引是否等于len;若等于则进入步骤3.5);若不等于len,则留在步骤3.4)中,继续接收后续字节,直到接收索引号等于len;3.5)设置一帧数据接收标志flag为假,即令flag=0,设置数据长度为0,即len=0,则一帧数据接收完毕;3.6)判断静态变量a是否等于c取反,并且静态变量b是否等于d取反,若两者同时满足则数据长度len等于b×255+a,进入下一步;反之,则提前结束接收中断;3.7)设置一帧数据的接收标志flag为真,即flag=1,提前结束接收中断。
本发明由于采取以上技术方案,其具有以下优点:1、本发明能有效提高通讯速度与数据传输的正确性。2、本发明提供的串行通讯协议主要应用于1对多从的通讯方式,该通讯协议不象modbus等串行协议,要求传输的数据帧之间满足一定延时条件,数据帧可以连续发送,数据帧之间不用插入时间延时来防止两个数据帧连接在一起无法区分。
附图说明
图1是本发明的协议帧发送流程示意图;
图2是本发明的协议帧接收流程示意图。
具体实施方式
下面结合附图和实施例对本发明进行详细的描述。
本发明提供一种主从串行通讯协议,其包括一主设备和若干从设备,其步骤如下:
1)设置协议内容:
协议帧包含的字节串包括数据长度2字节、数据长度取反2字节、从设备地址1字节、命令1字节、数据字节以及最后两字节的crc16校验,总共N个字节。其具体结构形式如表1所示。
表1
其中,字节1—2为地址+命令+数据+2字节CRC16检验码的字节长度,数据长度占两个字节,最长能够表示65536个字节数。
字节3—4为地址+命令+数据+2字节CRC16检验码的字节长度的取反,即字节1—2的取反。串行数据传输过程中,首先通过1-2字节与3-4字节的取反是否相同判断是否是一帧数据的开始,如果3-4字节取反后与1-2字节相同,则说明是1帧新的数据,此时将1-2字节合并为1个无符号16位整型数表示接下来要接收的字节数据长度,接下来连续接收该数据长度表示的字节数。字节1-2与字节3-4不仅表示了要传输的数据长度及数据长度的自校验,还实现了一帧数据开始传输的判断。
字节5为从设备地址,地址表示范围1-254。当主设备与多台从设备连接时,地址0作为广播地址,即主设备向所有子设备发送控制命令,从设备接收到地址为0的控制指令时,执行该指令。另外地址255用于系统参数设置地址,对主、从设备进行初始参数设置时使用该地址,该情况只能应用于主设备与从设备一对一通讯的情况,用来对初始设备即没有地址的设备进行地址等参数进行设置。
字节6为命令字节,用cmd表示。命令的高半字节用于表示第1级命令分类,高半字节取值在0-7(16进制0x0-0x7)时,表示主设备发送到从设备的控制命令,最多可分为8类主设备到从设备的一级指令;高半字节取值在8-15(16进制0x8-0xF时)时,表示从设备发送到主设备的指令,最多可分为8类从设备到主设备的一级指令。命令的低半字节用于表示第2级指令,取值在0-15之间,共可分为16个二级指令。
从字节6开始到字节N-2为止为数据字节,数据长度为0到N-8个字节,数据字节数可以为0,也就是纯命令字节。当命令字节6表示命令分类不足以区分更多命令时,可以进一步使用数据字节中的第1至第x个字节做更详细的命令划分。
2)如图1所示,主设备向各个从设备通过传输协议帧发送控制命令及数据,其过程如下:
2.1)设置缓冲区对应的从设备地址字节;
2.2)设置缓冲区对应的命令字节;
2.3)计算地址+命令+数据的字节长度;
2.4)根据步骤2.3)计算得到的字节长度计算地址+命令+数据的CRC16校验码;
2.5)追加2字节CRC16校验码至数据尾端;
2.6)将步骤2.3)计算得到的字节长度加2并设置发送缓冲区的1-2字节;
2.7)根据1-2字节取反的值设置发送缓冲区的3-4字节,将缓冲区内容发送至传输总线上,完成协议帧数据的发送。
3)如图2所示,各从设备接收协议帧,完成数据传输。其过程如下:
3.1)定义静态变量a、b、c、d、len、idx、flag,并将静态变量初始化为0,开始接收中断;
3.2)令静态变量a=b、b=c、c=d、d=新接收字节;
3.3)判断开始1帧数据的接收标志flag是否为真,若为真则接收缓冲区当前索引对应的内容等于d,并进入步骤3.4);反之则步骤3.6);
3.4)将缓冲区索引加1,并判断缓冲区索引是否等于len;若等于则进入步骤3.5);若不等于len,则留在步骤3.4)中,继续接收后续字节,直到接收索引号等于len;
3.5)设置一帧数据接收标志flag为假,即令flag=0,设置数据长度为0,即len=0,则一帧数据接收完毕;
3.6)判断静态变量a是否等于c取反,并且静态变量b是否等于d取反,若两者同时满足则数据长度len等于b×255+a,进入下一步;反之,则提前结束接收中断;
3.7)设置一帧数据的接收标志flag为真,即flag=1,提前结束接收中断。
上述各实施例仅用于说明本发明,各个步骤都是可以有所变化的,在本发明技术方案的基础上,凡根据本发明原理对个别步骤进行的改进和等同变换,均不应排除在本发明的保护范围之外。
Claims (6)
1.一种主从串行通讯协议,其特征在于,它包括一主设备和若干从设备,步骤如下:
1)设置协议内容:协议帧包含的字节串包括数据长度2字节、数据长度取反2字节、从设备地址1字节、命令1字节、数据字节以及最后两字节的crc16校验,总共N个字节;
2)主设备向各个从设备通过传输协议帧发送控制命令及数据,其过程如下:
2.1)设置缓冲区对应的从设备地址字节;
2.2)设置缓冲区对应的命令字节;
2.3)计算地址+命令+数据的字节长度;
2.4)根据步骤2.3)计算得到的字节长度计算地址+命令+数据的CRC16校验码;
2.5)追加2字节CRC16校验码至数据尾端;
2.6)将步骤2.3)计算得到的字节长度加2并设置发送缓冲区的1-2字节;
2.7)根据1-2字节取反的值设置发送缓冲区的3-4字节,将缓冲区内容发送至传输总线上,完成协议帧数据的发送;
3)各从设备接收协议帧,完成数据传输。
2.如权利要求1所述的一种主从串行通讯协议,其特征在于:所述步骤1)中,字节1—2为地址+命令+数据+2字节CRC16检验码的字节长度,数据长度占两个字节,最长能够表示65536个字节数。
3.如权利要求1所述的一种主从串行通讯协议,其特征在于:所述步骤1)中,字节3—4为地址+命令+数据+2字节CRC16检验码的字节长度的取反,即字节1—2的取反;字节1-2与字节3-4不仅表示了要传输的数据长度及数据长度的自校验,还实现了一帧数据开始传输的判断。
4.如权利要求1所述的一种主从串行通讯协议,其特征在于:所述步骤1)中,字节5为从设备地址,地址表示范围1-254;当主设备与多台从设备连接时,地址0作为广播地址,另外地址255用于参数设置地址,此时只能应用于主设备与从设备一对一通讯的情况。
5.如权利要求1所述的一种主从串行通讯协议,其特征在于:所述步骤1)中,字节6为命令字节,用cmd表示;命令的高半字节用于表示第1级命令分类,高半字节取值在0-7时,表示主设备发送到从设备的控制命令,最多分为8类主设备到从设备的一级指令;高半字节取值在8-15时,表示从设备发送到主设备的指令,最多分为8类从设备到主设备的一级指令;命令的低半字节用于表示第2级指令,取值在0-15之间,共分为16个二级指令。
6.如权利要求1所述的一种主从串行通讯协议,其特征在于:所述步骤3)中,各从设备接收协议帧的过程如下:
3.1)定义静态变量a、b、c、d、len、idx、flag,并将静态变量初始化为0,开始接收中断;
3.2)令静态变量a=b、b=c、c=d、d=新接收字节;
3.3)判断开始1帧数据的接收标志flag是否为真,若为真则接收缓冲区当前索引对应的内容等于d,并进入步骤3.4);反之则步骤3.6);
3.4)将缓冲区索引加1,并判断缓冲区索引是否等于len;若等于则进入步骤3.5);若不等于len,则留在步骤3.4)中,继续接收后续字节,直到接收索引号等于len;
3.5)设置一帧数据接收标志flag为假,即令flag=0,设置数据长度为0,即len=0,则一帧数据接收完毕;
3.6)判断静态变量a是否等于c取反,并且静态变量b是否等于d取反,若两者同时满足则数据长度len等于b×255+a,进入下一步;反之,则提前结束接收中断;
3.7)设置一帧数据的接收标志flag为真,即flag=1,提前结束接收中断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610274612.9A CN105975424B (zh) | 2016-04-28 | 2016-04-28 | 一种主从串行通讯协议 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610274612.9A CN105975424B (zh) | 2016-04-28 | 2016-04-28 | 一种主从串行通讯协议 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105975424A CN105975424A (zh) | 2016-09-28 |
CN105975424B true CN105975424B (zh) | 2018-06-26 |
Family
ID=56993834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610274612.9A Active CN105975424B (zh) | 2016-04-28 | 2016-04-28 | 一种主从串行通讯协议 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105975424B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109391582A (zh) * | 2017-08-03 | 2019-02-26 | 大族激光科技产业集团股份有限公司 | 一种通讯协议及激光器控制系统 |
CN111245694B (zh) * | 2019-09-17 | 2021-11-23 | 浙江中自机电控制技术有限公司 | 一种基于Modbus扩展通讯的故障处理方法 |
CN110995686B (zh) * | 2019-11-26 | 2022-04-01 | 珠海泰芯半导体有限公司 | 一种软件通信协议的校验方法 |
CN111818060B (zh) * | 2020-07-09 | 2023-04-07 | 厦门海为科技有限公司 | 一种支持混合及离散数据传输的通讯协议、方法及系统 |
CN111935112B (zh) * | 2020-07-29 | 2024-02-23 | 深圳市安车检测股份有限公司 | 一种基于串行的跨网数据安全摆渡设备和方法 |
CN112153063A (zh) * | 2020-09-28 | 2020-12-29 | 杭州浅海科技有限责任公司 | 一种适用于感应耦合传输的通讯协议 |
CN112462655B (zh) * | 2020-11-19 | 2023-09-01 | 北京大华无线电仪器有限责任公司 | 一种仪器仪表内部通讯方法 |
CN113489682B (zh) * | 2021-06-08 | 2023-05-12 | 北京控制工程研究所 | 一种基于SpaceWire总线通讯的变长度数据协议的通信方法及系统 |
CN115361094A (zh) * | 2022-08-18 | 2022-11-18 | 合肥美菱物联科技有限公司 | 一种冰箱通讯方法 |
CN116107800B (zh) * | 2023-04-12 | 2023-08-15 | 浙江恒业电子股份有限公司 | 一种校验码生成方法、数据恢复方法、介质、电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1744068A (zh) * | 2004-09-02 | 2006-03-08 | 北京中星微电子有限公司 | 一种适应于串行外围设备接口总线高层协议的帧结构 |
CN101179790A (zh) * | 2007-11-03 | 2008-05-14 | 青岛海信移动通信技术股份有限公司 | 一种移动终端处理器之间的串口通信方法 |
KR20090043724A (ko) * | 2007-10-30 | 2009-05-07 | 엘지전자 주식회사 | 대용량 데이터의 직렬 송수신 방법 |
CN102279835A (zh) * | 2011-06-29 | 2011-12-14 | 厦门雅迅网络股份有限公司 | 一种嵌入式系统中主从设备串行总线通信方法及动态识别过程 |
CN103632453A (zh) * | 2012-08-27 | 2014-03-12 | 广州市德信四海电子科技有限公司 | 游乐设施电子结算系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100578080B1 (ko) * | 2003-11-14 | 2006-05-10 | 엘지전자 주식회사 | 시리얼 통신 프로토콜 중 명령 및 데이터 전송 및 수신 방법 |
-
2016
- 2016-04-28 CN CN201610274612.9A patent/CN105975424B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1744068A (zh) * | 2004-09-02 | 2006-03-08 | 北京中星微电子有限公司 | 一种适应于串行外围设备接口总线高层协议的帧结构 |
KR20090043724A (ko) * | 2007-10-30 | 2009-05-07 | 엘지전자 주식회사 | 대용량 데이터의 직렬 송수신 방법 |
CN101179790A (zh) * | 2007-11-03 | 2008-05-14 | 青岛海信移动通信技术股份有限公司 | 一种移动终端处理器之间的串口通信方法 |
CN102279835A (zh) * | 2011-06-29 | 2011-12-14 | 厦门雅迅网络股份有限公司 | 一种嵌入式系统中主从设备串行总线通信方法及动态识别过程 |
CN103632453A (zh) * | 2012-08-27 | 2014-03-12 | 广州市德信四海电子科技有限公司 | 游乐设施电子结算系统 |
Non-Patent Citations (3)
Title |
---|
"PC与单片机串行通信的协议策略研究及应用";杨艳华;《云南大学学报(自然科学版)》;20071231;全文 * |
"基于虚拟仪器技术的测灰仪上位机软件开发";鞠佳勇;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130815(第8期);全文 * |
"精密光学斩波控制器设计";翟保尊等;《仪表技术与传感器》;20160331(第3期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN105975424A (zh) | 2016-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105975424B (zh) | 一种主从串行通讯协议 | |
US4989135A (en) | Communication control microcomputer | |
CN106155014B (zh) | 工业互联网现场层宽带总线实时性实现方法 | |
KR101956940B1 (ko) | 메모리 크기에 매칭하여 직렬 데이터 전송을 하는 방법 및 장치 | |
CN107919947A (zh) | 一种can总线长报文传输的编码方法 | |
CN105119793A (zh) | 一种传感器网络can总线帧格式的标识符分配方法 | |
CN103778772B (zh) | 一种用电信息采集系统中的分帧互联传输方法 | |
WO2010123970A1 (en) | Method for concatenating can data payloads | |
EP0602806A2 (en) | High-level data link controller (HDLC) receiver | |
CN105045743B (zh) | 一种具备优先级调度的多协议转换方法 | |
CN103365810B (zh) | 在c.a.n.总线上减少闪速存储装置编程时间的方法和设备 | |
KR101001074B1 (ko) | 버스 상에 데이터를 전송하기 위한 방법 | |
CN105007275A (zh) | 一种单向安全隔离数据传输方法和系统 | |
CN105868136A (zh) | 处理多个命令/命令帧的电子装置及命令帧处理方法 | |
CN105243039A (zh) | 一种串口通信系统及方法 | |
CN111209240B (zh) | 数据传输的方法、电子设备及存储介质 | |
CN110971491A (zh) | 一种电力系统101和104通讯规约处理系统及其处理方法 | |
CN107750358A (zh) | 数据处理方法 | |
CN103944820A (zh) | 一种数据的通信方法、主机、从机及通信系统 | |
CN103838587A (zh) | 基于gprs的控制系统远程升级方法及装置 | |
CN107506318A (zh) | 一种软件模拟串行数据传输装置 | |
CN107231455A (zh) | 一种分配通信地址的方法及装置 | |
US20130036243A1 (en) | Host-daughtercard configuration with double data rate bus | |
CN105515925A (zh) | 一种uart多主实时通信系统 | |
CN101425877A (zh) | 一种模块间通讯的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221018 Address after: Room B51, Jiali Hotel, No. 21, Jiuxianqiao Road, Chaoyang District, Beijing 100016 Patentee after: Beijing Kexin Electromechanical Technology Research Institute Co.,Ltd. Address before: 100192 Key Laboratory of Beijing city of Haidian District and small business Qinghe Road No. 12 electromechanical system Patentee before: BEIJING INFORMATION SCIENCE AND TECHNOLOGY University |
|
TR01 | Transfer of patent right |