5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
标题:
4合1高频头串口模式通信协议,留贴备忘
[打印本页]
作者:
t20109020
时间:
2020-5-25 18:45
标题:
4合1高频头串口模式通信协议,留贴备忘
通用协议数据为
0-26byte,27以后的附加字节貌似只和frskyX、frskyX2、hott几个协议有关。
byte0
前6bit功能尚未明确,有待分析
0b00000001 0x01 //协议编号(0-63)
0b
00000010 0x02 //failsafe
byte1 √
0b
10000000 0x80 //绑定标志
0b
01000000 0x40 //check 自动绑定
0b
00100000 0x20 //check range
0b
00011111 0x1F //协议编号(0-31)
byte2 √
0b
10000000 0x80 //功率 if rx_ok_buff[2]&0x80 ==1,power is low ,0-power high
0b
01110000 //子协议编号(0-7)bits 4-6 //sub_protocol=(rx_ok_buff[2]>>4)& 0x07;
0b
00001111 0x0F //rx_num编号(0-15)
byte3
//Option
频率调谐值,大多协议该值都为0
byte4...byte25
最难以理解的是通道数据,每通道11bit(0-2047),共占用22byte。
源码中的通道解码算法如下,相当晦涩难懂,那编码怎么弄呢?
volatile uint8_t *p=rx_ok_buff+3;
uint8_t dec=-3;
for(uint8_t i=0;i<NUM_CHN
;i++)
{
dec+=3;
if(dec>=8)
{
dec-=8;
p++;
}
p++;
uint16_t temp=((*((uint32_t *)p))>>dec)&0x7FF;
}
好在编码方面可以利用共用体简单的实现,如下。
union {
unsigned byte raw[22];
struct {
uint32_t channel1:11;
uint32_t channel2:11;
.
.
.
uint32_t channel16:11;
};
}channels;
byte26
//末尾附加标志,第5-6bit功能尚未明确
0b11000000 0xC0 //协议编号(0-255)
0b00110000 0x30 //rx_num编号(0-63)
0b00000001 0x01 //DISABLE_TELEM
0b00000010 0x02 //DISABLE_CH_MAP
作者:
狐狸
时间:
2020-9-9 22:40
通道数据部分的格式与SBUS数据格式一摸一样哈;可以网查一下就容易理解了
作者:
狐狸
时间:
2021-1-3 15:04
楼主:第一字节的前六bit的含义分析出来了么?
作者:
狐狸
时间:
2021-2-1 00:02
这几天细读Multiprotocol中的Multiprotocol.h,在其中的line757开始就是四合一高频头与遥控发射机的串行通信数据格式详解;
byte[0](串行数据的heater),有四种值:
0x55: sub_protocol values are 0..31 Stream contains channels 子协议值为编号0至31接收机协议
0x54: sub_protocol values are 32..63 Stream contains channels 子协议值为编号32至63接收机协议
0x57: sub_protocol values are 0..31 Stream contains failsafe子协议值为编号0至31接收机协议有失控保护
0x56: sub_protocol values are 32..63 Stream contains failsafe子协议值为编号32至63接收机协议有失控保护
byte[1]: sub_protocol|BindBit|RangeCheckBit|AutoBindBit; 接收机协议编号|绑定位|范围检查位|自动绑定位
sub_protocolis 0..31 (bits 0..4), value should be added with 32 if Stream[0] = 0x54 | 0x56
接收机协议编号(0 . .31)(bits 0..4),如果byte[0]= 0x54 | 0x56,值应该加32
byte[1]不是很好理解,bit0-4均为1的话,接收机协议已经为31(11111),大于31的必然会使用到bit5;所以估计四合一的MCU会配合 byte[0]处理;
----自己作遥控器主板程序的兄弟要注意了----
*
*
后面的byte[2]---[35]的内容与楼主的解释基本一致;
有心的木油可以仔细阅读一下最新版本的DIY-Multiprotocol-TX-Module,到今天版本已经到1.3.1.12。
作者:
狐狸
时间:
2021-2-1 00:24
说实在的,四合一程序Multiprotocol的两种接口:串行数据接口和PPM中的 PPM 对咱这些单片机菜鸟木油有点无语;
四合一高频头用来改造旧有的PPM信号FM调频AM调幅发射机有点骨头:旧的PPM发射机主板只有8个(最多10个)标准舵机PWM通道,而且PPM是模拟信号,比较鸡肋,所以还是要搞清楚Multiprotocol的串口通信最爽,毕竟可以扩展16个电位器通道加两个开关通道;SBUS接收机输出再加个SBUS转PWM板子就可以解码16PWM+2开关;
俺们公司的牛人弄了低分辨率(8bit)20电位器通道加16个开关通道的控板,用作救援车样机操作,非常爽哈;
得感谢Mr.Midelic等网上大神,当然还有Rcgroups和GitHub等网络平台哈!
欢迎光临 5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年) (http://bbs.5imx.com/)
Powered by Discuz! X3.3