发 帖  
原厂入驻New
[经验]

单片机解算D-Bus信号分享

2020-9-26 10:49:25  274 算法 单片机
分享
1
void Remote_Rx(uint8_t *RxMsg)
{
    int ind = 0;
     //飞控接收机八通道算法
    Remote.ch0 = ((RxMsg[ind+2]&0x07)<<8|RxMsg[ind+1])& 0x07FF;
    Remote.ch1 = ((RxMsg[ind+3]&0x3f)<<5|RxMsg[ind+2]>>3)& 0x07FF;
    Remote.ch2 = ((RxMsg[ind+5]&0x01)<<10|RxMsg[ind+4]<<2|RxMsg[ind+3]>>6)& 0x07FF;
    Remote.ch3 = ((RxMsg[ind+6]&0x0f)<<7|(RxMsg[ind+5]&0xfe))& 0x07FF;
    Remote.ch4 = ((RxMsg[ind+7]&0x7f)<<4|(RxMsg[ind+6]>>4))& 0x07FF;
    Remote.ch5 = ((RxMsg[ind+9]&0x03)<<9|RxMsg[ind+8]<<1|(RxMsg[ind+7]>>7))& 0x07FF;
    Remote.ch6 = ((RxMsg[ind+10]&0x1f)<<6|(RxMsg[ind+9]>>2))& 0x07FF;
    Remote.ch7 = ((RxMsg[ind+11]<<3)|(RxMsg[ind+10]>>5))& 0x07FF;
   
}
//void Remote_Tx(uint8_t *RxMsg)
//{
    //此方案为数传,串口发送,未尝试,PWM比较稳定
//    int ind=0;
//    int i = 12;
//    RxMsg[ind] = 15;
//    RxMsg[ind+1] = Remote.ch0;
//    RxMsg[ind+2] = (Remote.ch1 << 3)|(Remote.ch0 >> 8);
//    RxMsg[ind+3] = (Remote.ch2 << 6)|(Remote.ch1 >> 5);
//    RxMsg[ind+4] = (Remote.ch2>>2);
//    RxMsg[ind+5] = (Remote.ch3<<1)|(Remote.ch2>>10);
//    RxMsg[ind+6] = (Remote.ch4<<4)|(Remote.ch3>>7);
//    RxMsg[ind+7] = (Remote.ch5<<7)|(Remote.ch4>>4);
//    RxMsg[ind+8] = (Remote.ch5>>1);
//    RxMsg[ind+9] = (Remote.ch6<<2)|(Remote.ch5>>9);
//    RxMsg[ind+10] = (Remote.ch7<<5)|(Remote.ch6>>6);
//    RxMsg[ind+11] = (Remote.ch7>>3);
//    for(;i <BUFLEN+1;i++)
//    {
//        RxMsg = usart_dma_bf;
//    }
//}
//高度累加
void expected_data(void)
{
    if(Remote.ch2 > 1024)
        expected_high = expected_high + 0.01;
    if(Remote.ch2 < 1024)
        expected_high = expected_high - 0.01;
//          PID_limit(expected_high,10, 450);
}

相关经验

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表