本文章用于学习研究之用,请勿用于商业用途。
JR(JAPAN REMOTE)是模型界一家知名企业,其生产的遥控器具有相当的市场占有率,DX4E是它的产品线中低端的一款产品,其内部是由模拟板和数字高频头两部分组成的。为了用自己的控玩一些仅支持JR遥控器的玩具(见本人其他博文),我对高频头和模拟板之间的通讯协议进行了分析,在这里做一个小小的分享,希望能帮到大家。
一、 总体来说,通讯协议的物理层,就是常见的UART(串行通讯协议,具体我就不解释了),不过波特率很特别,是12500bps;通讯也是按数据包的方式发送的,数据包的频率是50Hz(一秒钟50个数据包);每个数据包的长度是14字节。
二、数据包分为3种,一是普通数据包,二是对码数据包,三是遥控器识别数据包。其中,第三类数据包仅仅是针对MCPX这类模型而言的,不具有通用性,我也懒得说了。
三、数据包的格式:数据包的14个字节,按2字节一组,分别是导引头+6个通道值(2*1+2*6=14)
四、“通道值”的格式:两个字节构成一个16bit数值,高字节在前,高6位是通道号,低10位是通道的值;通道号为0~5,通道值为0~1023。比如下文举例的普通数据包的副翼通道0x05 0xff,就是0x05ff= 0000 0101 1111 1111 ,拆分为1 和511,就是代表1通道为511(511为0~1023的中立点)。
五、在遵守上述规则的前提下,对码数据包如下,我猜想除了导引头,其他数据字节都是不重要的。
uchar McpBindData[]={
0x98,0x00, //导引头
0x00,0x00,
0x05,0xff,
0x09,0xff,
0x0d,0xff,
0x10,0xaa,
0x14,0xaa
};
六、普通数据包的格式如下:这也是最重要的
uchar McpCtrlData[]={
0x18,0x00,//普通数据包的导引头
0x00,0x8a, //油门:最低
0x05,0xff, //副翼:中点
0x09,0xff, //升降:中点
0x0d,0xff, //方向:中点
0x13,0x54, //3D开关:关
0x14,0xaa //油门锁:释放 (螺距)
};
七、对码时,先发送1秒钟左右的对码数据包,接着就发送普通数据包,直至接收机对码成功为止。
分享到此,如有错误还望海涵。
用户377235 2015-7-17 16:36
用户1376226 2013-1-8 15:10
用户403664 2012-8-9 10:57