赞
踩
*飞控stm32串口5连接imu,串口五发送的指令会发送到imu中,如果是自定义的用户格式帧(比如:AA FF F1 03 01 01 01 A0 67)会先到imu,imu的串口1接stm飞控。串口2接数传,从串口1接收到的数据会通过串口二发送给数传,数传传给另一个数传,在通过USB线传输给上位机。
但是如果不是属于用户自定义的格式帧,imu会进行处理,比如飞控串口5一上电就会输出电池信息(如:AA FF 0D 04 0100 0000 6B 7F)imu会接收并处理,最后上位机得到的数据是(AA AF 0D 04 0100 0000 6B 7F)。
*
.数传的一个串口一直有数据时,闪烁绿灯,当另一个口也有数据进来时,会闪烁白灯,并且两个串口收到的数据都会在上位机显示 。
3.imu会把无人机的各种信息计算出来并且发送出来,两种HID连接方式上位机 都会接收到数据,飞控的UART5发给IMU数据,IMU并不会直接通过HID转发出来,它还是按自己计算出来的数据发出来(当然这只是基本数据,不包括用户自定义数据),用户自定义数据IMU不会自己发送,只会接收到UART5传来的用户自定义数据再通过HID转发。
case 0x30: //GPS数据
{
for (u8 i = 0; i < 23; i++)
{
send_buffer[(*_cnt)++] = ext_sens.fc_gps.byte[i];
}
}
break;
case30 里面是获取GPS数据,GPS的23个字节的数据都存储在 ext_sens.fc_gps.byte[i]函数里,这个数组里的数据是是GPS的23个字节的数据。具体每个字节数据的含义要看匿名协议手册。获取到send_buffer里面在后面的程序会通过串口5发送给凌霄imu,这时候灯光会依据凌霄imu的0x30的数据来变化,如果数据一直是空的,那么灯光闪红色,如果数据是有的,那么指示灯亮绿色说明GPS工作正常。如果没有0x30类的数据帧发送给凌霄imu,那么说明GPS无效,指示灯亮白色,说明没有接入GPS。
用自己的方法直接在0X30处发送数据,如下:
case 0x30: //GPS数据 { u8 cnt=0; u8 datasend[100]; datasend[cnt++]=0xAA; datasend[cnt++]=0xFF; datasend[cnt++]=0x30; datasend[cnt++]=0; for (u8 i = 0; i < 23; i++) { datasend[cnt++]=ext_sens.fc_gps.byte[i]; //send_buffer[(*_cnt)++] = ext_sens.fc_gps.byte[i]; } datasend[3]=cnt-4; u8 ac=0; u8 sc=0; for(u8 i=0;i<cnt;i++) { sc+=datasend[i]; ac+=sc; } datasend[cnt++]=sc; datasend[cnt++]=ac; DrvUart5SendBuf(datasend, cnt); }
与上面是一样的效果,只是串口五提前发送给了凌霄imu.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。