重工电子论坛

标题: 不定长自定义串口协议 [打印本页]

作者: 程浥    时间: 2016-8-10 11:48
标题: 不定长自定义串口协议
本帖最后由 程浥 于 2016-8-10 11:54 编辑

1 概述
通信协议采用三层协议机制,物理层、数据链路层以及应用层。
约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。


2 物理层
        串口配置
这里将串口配置划分到物理层;
采用RS232三线协议,
波特率:115200bps,
奇偶校验:无校验,
数据位:8位,
停止位:1位,
流控:无,

        帧接收
采用中断接收数据,数据放入队列里,利用定时器判断帧时间间隔,达到固定时间认为一帧数据接收完毕。

3 数据链路层

表1 协议

        数据格式
通信协议格式AA+长度(数据包长度)+应用层协议+CRC8+0x55
现分别对各部分做详细介绍:
Head:包头。长度:1 bit
                该字段为帧的包头。
len:数据长度。长度:1 bits
该字段仅用于表示数据的长度。
data:数据段。长度:n  bits
由命令ID和数据组成,数据由结构体构造,详细见协议层。
Crc:校验。长度:1 bits
                使用crc16校验,取8位。
tail:包尾。长度:1 bits
该字段为帧的包尾。

        转义定义
为了提高容错性,对除包头(0xAA)和包尾(0x55)进行转义处理
转义定义:对于非包头,包尾数据,出现0xAA , 0x55以及转义字符0xCC的数据均做转义处理,转义格式0xCC+数据,也就是在数据前面添加转义字符0xCC。

        校验处理
校验成功使用数据,校验命令ID,校验失败作为丢弃处理;

4 应用层
【空】


5 其他
cpu:stm32f407
平台:keil5
代码基于HAL库,里面建里有source insight工程

MX40_APP_UART.zip

3.38 MB, 下载次数: 7


作者: 张金权-11级电子    时间: 2016-8-11 17:08
666,试下用串口空闲中断,不占用定时器资源
作者: 张金权-11级电子    时间: 2016-8-11 17:09
你把ST32的程序发在51版块里,有私心哦
作者: 程浥    时间: 2016-8-17 16:58
张金权-11级电子 发表于 2016-8-11 17:09
你把ST32的程序发在51版块里,有私心哦

你咬我
作者: 张金权-11级电子    时间: 2016-8-29 16:38
程浥 发表于 2016-8-17 16:58
你咬我

我呸                                                      




欢迎光临 重工电子论坛 (http://www.cqutlab.cn/) Powered by Discuz! X3.1