资源描述:
《超级串口通信协议》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、通信协议撰写叶春勇2011-8-26起版本V1.0一.为了规范所有需要的通信操作二.帧格式字节0123456…..N序号字节FFxxxxxxxxxxxx…..xx内容字节帧头发送端接收端操作类帧长帧类型帧参数校验和含义标记设备号设备号型(注:xx表示恰当的某数值,zz表示任意数值;)帧头标记:一帧传输的起始标记,固定为FFH帧长:该帧的总长度;使用两个字节表示传输一帧长度最大为64KB,帧长=8+帧参数长度发送端设备号:指明该帧数据是谁发送的(源);○1接收端设备号:指明该帧数据是向谁发送的(目的);○1帧类型:表明该帧的类型,它可以是数据帧,命令帧…
2、..等等操作类型:表明该帧指明的具体操作,比如命令帧中用于指明是什么命令,执行怎样的操作帧参数:可以是数据,状态的参数等校验和:该帧的校验和字节,校验方法是该帧的所有数据从字节0到字节N的和必须为0○1:设备号00特指主机,FF特指广播地址.01—FE指任意普通设备号○2:帧格式结构体typedefstruct{uint8head;//帧头uint8length_h;//帧长度高字节uint8length_l;//帧长度低字节uint8source_no;//发送设备号uint8directory_no;//接收设备号uint8type;//帧类型ui
3、nt8handle;//操作类型uint8*parameter;//参数域内容指针uint8check_sum;//校验和}struct_frame;○3在某些帧中,帧参数域可以是不存在的帧类型字含义表帧类型字类型名称含义00空闲帧通常用于通知对方传输告一段落,通信结束01数据帧这一帧以传输数据为目的的帧,02命令帧这是一帧传输命令的帧03状态帧对命令帧的响应○4对在所有过程中,任何时刻,通信各方都有可能收到到“命令帧–重传上一帧”的命令请求.后文解释各帧中,不再分别解释.○5对于通信的任何一端,它发送的任何帧都应该得到对方对此帧的应答,通信必须是”有
4、去有回”○6一次通信过程可以由任何一端发起,任何端接收到空闲帧,返回“状态—ok”并且结束一次传输任务,直到它收到有新的通信请求,或其自身需要引发一次传输请求.○7可以使用本协议的部分帧来进行通信交流,但是此时设备收到他不使用的帧时,应该返回“状态帧----错误”错误字=2(收到不支持帧)○8举例;mcu从pc获取MP3文件进行解码,并返回解码pcm结果值的通信流程PCMCUPCMCU请求数据请求接收数据返回数据返回OK解码返回OK发出数据返回OK返回OK请求数据请求接收数据返回数据返回OK解码返回OK发出数据返回OK返回OK请求数据空帧返回OK空帧返
5、回OK返回OKMCU向PC请求mp3数据MCU向PC发送PCM数据三.空闲帧0123456…..7FFxx08xxxx00zz不存在xx帧头发送端接收端帧长帧类型操作类型帧参数校验和标记设备号设备号a.空闲帧通常用于通知对方任务完成,比例文件传输完毕(所有字节已经发完)b.对此帧的应答是“状态帧—ok”四.数据帧4.1数据帧0123456…..NFFxxxxxxxx01xx…..xx帧头发送端接收端帧长帧类型操作类型帧参数校验和标记设备号设备号a.数据帧.单纯地表示此帧中帧参数携带的是数据.b.帧参数携带的是需要传输的数据部分c.操作类型含义表操作类型
6、含义/作用00表示该帧是结尾帧,数据传输完毕表示该帧之后还有后续帧,这是因为需要传输的数据量01比较大,需要进行多帧传输.d.应答表应答含义/作用状态帧–ok表示成功接收到数据命令帧–展缓传输(只用于多帧传输中)需要暂缓传输下一帧命令帧---继续传输(只用于多帧传输中)要求传送下一帧五.命令帧5.1命令帧----数据请求012345678,910,1112FF000dxxxx0201xxxxxxxx数据单帧最帧头发送端接收端操作类总长度帧长帧类型类型大长度校验和标记设备号设备号型帧参数a.操作类型01表示数据请求b.数据类型:指出需要请求何种数据,因为
7、接收此帧数据的设备可以提供多种数据,不同系统中对数据类型的区别由用户自行定义c.总长度:表示此次请求需要的数据总量c.单帧最大长度:指出对方返回一帧数据可以携带的最大数据量(数据域长).(因为设备接收一帧数据的buf是有限长的).c.对此命令的响应是“数据帧”或”空闲帧”5.2命令帧----接收请求012345678,910FF000bxxxx0202xxxxxx数据帧头发送端接收端操作类总长度帧长帧类型类型校验和标记设备号设备号型帧参数a.操作类型02表示通知对方准备接收数据b.数据类型,总长度与“命令帧---数据请求”相同c.对此命令的响应是“状态
8、帧---信息报告”得到接收端可以接收的最大单帧数据长度(参数长度),如果发送端需要发送的总长度