TA的每日心情 | 郁闷 2013-6-24 20:22 |
---|
签到天数: 4 天 连续签到: 1 天 [LV.2]偶尔看看I
|
通信以包为单位,传输介质有三种:nRF24L01+、串口和TCP。
如无特别说明,字节顺序为小端顺序。
nRF24L01+的包格式为:
1.协议版本:uint8_t
2.包类型:uint8_t
3.包内容:uint8_t[]
4.CRC-16-CCITT校验:uint16_t,计算范围为1~3,大端字节顺序。
串口和TCP的包格式为:
1.包前导符:uint8_t[2] = {0x55,0xAA}
2.包长度:uint8_t,等于3~6的字节数。
3.协议版本:uint8_t
4.包类型:uint8_t
5.包内容:uint8_t[]
6.CRC-16-CCITT校验:uint16_t,计算范围为3~5,大端字节顺序。
协议版本
0x00 => 调试版。
包类型和包内容
0x01 => 返回姿态四元数,包内容={wxyz:float[4]}。
0x04 => 返回位置,包内容={xyz:float[3]}。
0x06 => 获取四元数姿态,包内容空。
0x09 => 获取位置,包内容空。
0x14 => 获取xyz向量,包内容={type:uint8_t}。
type=0x01,加速度计原始值
type=0x02,加速度计校正值
type=0x03,陀螺仪原始值
type=0x04,陀螺仪校正值
type=0x05,罗盘原始值
type=0x06,罗盘校正值
0x15 => 返回xyz向量,包内容={type:uint8_t,xyz:float[3]}。
type为向量类型,取值同0x14包;
0x16 => 返回示波器值,包内容={channel:uint8_t,value:float[]}。
value[i]的通道号为channel+i。
0x18 => 获取状态。包内容={which:uint8_t[]}。
which[i]=0x01,电池电压。
which[i]=0x02,当前电机油门值。
0x19 => 返回状态。包内容={which:uint8_t,value}
which[i]=0x01,电池电压,value={voltage:float}。
which[i]=0x02,当前电机油门值,value={throttle:float[4]}。
0x1A => 返回消息。包内容={msg:char[]},UTF-8编码,不带结束符'\0'。
0x1B => Bootloader命令,包内容={cmd:uint8_t,param}。
cmd=0x01,进入Bootloader模式,param空。
cmd=0x02,开始刷app,param空。
cmd=0x03,设置app长度和crc,param={len:uint32_t,crc:uint32_t}。
cmd=0x04,写app,param={blockIndex:uint16_t,data:uint32_t[]}。
cmd=0x05,查询有哪些未写的块,param空。
cmd=0x06,进入app。
0x1C => Bootloader状态。包内容={status:uint8_t,param}。
status=0x01,Bootloader等待命令状态,param空。
status=0x02,准备好刷app,param空。
status=0x03,正在写app,param={bytesWrittenAmount:uint32_t}。
status=0x04,返回有哪些未写的块,param={{index:uint16_t,length:uint16_t}[]}。
status=0x05,写入完成,但crc检验失败,param空。
status=0x06,刷app成功,param空。
status=0x07,已经进入app。
0x1D => 操作参数模块。包内容={code:uint8_t,param}。
code=0x11,读RAM,param={pos:uint8_t,len:uint8_t}。
code=0x12,返回RAM的值,param={pos:uint8_t,value:float[]}。
code=0x13,写入RAM,param={pos:uint8_t,value:float[]}。
code=0x21,读Flash,param={pos:uint8_t,len:uint8_t}。
code=0x22,返回Flash的值,param={pos:uint8_t,value:float[]}。
code=0x23,写入Flash,param空。
code=0x25,重置Flash里的参数为默认值,param空。
0x1E => 锁定姿态模式控制,param={code:uint8_t,param}
code=0x01,起飞前准备,param空。包括航偏角校正等。
code=0x02,已准备好起飞,param空。
code=0x03,未准备好起飞,param空。
code=0x04,设定控制参数,param={t:float,wxyz:float[4]},
t为基础油门,wxyz为控制四元数。
|
|