具体情况,我想将原子哥的MPU6050例程改一下,因为原子哥的例程用的匿名四轴上位机是V2.6(两年前的版本),现在我想用匿名四轴上位机V4.06版本,但我不知道该在哪里改,才能实现两者的通信,貌似两者通信用的是串口
接下来是原始代码(串口部分)
//串口1发送一个字符
//c:要发送的字符
void usart1_send_char(u8 c)
{
while((USART1->SR&0X40)==0);//等待上一次发送完毕
USART1->DR=c;
}
//传送数据给匿名四轴上位机V2.6
//fun:功能字
//data:数据缓存区
void usart1_niming_report(u8 fun,u8*data,u8 len)
{
u8 send_buf[32];
u8 i;
if(len>28)return; //最多28字节数据
send_buf[len+3]=0; //校验数置0
send_buf[0]=0X88; //帧头
send_buf[1]=fun; //功能字
send_buf[2]=len; //复制数据
for(i=0;i<len;i++)send_buf[3+i]=data;
for(i=0;i<len+3;i++)send_buf[len+3]+=send_buf;
for(i=0;i<len+4;i++)usart1_send_char(send_buf); //·发送到串口1
}
//发送到加速度计和陀螺仪数据
void mpu6050_send_data(short aacx,short aacy,short aacz,short gyrox,short gyroy,short gyroz)
{
u8 tbuf[12];
tbuf[0]=(aacx>>8)&0XFF;
tbuf[1]=aacx&0XFF;
tbuf[2]=(aacy>>8)&0XFF;
tbuf[3]=aacy&0XFF;
tbuf[4]=(aacz>>8)&0XFF;
tbuf[5]=aacz&0XFF;
tbuf[6]=(gyrox>>8)&0XFF;
tbuf[7]=gyrox&0XFF;
tbuf[8]=(gyroy>>8)&0XFF;
tbuf[9]=gyroy&0XFF;
tbuf[10]=(gyroz>>8)&0XFF;
tbuf[11]=gyroz&0XFF;
usart1_niming_report(0XA1,tbuf,12);//自定义帧0XA1
}
//通过串口1上报结算后的姿态给电脑
void usart1_report_imu(short aacx,short aacy,short aacz,short gyrox,short gyroy,short gyroz,short roll,short pitch,short yaw)
{
u8 tbuf[28];
u8 i;
for(i=0;i<28;i++)tbuf=0;//??0
tbuf[0]=(aacx>>8)&0XFF;
tbuf[1]=aacx&0XFF;
tbuf[2]=(aacy>>8)&0XFF;
tbuf[3]=aacy&0XFF;
tbuf[4]=(aacz>>8)&0XFF;
tbuf[5]=aacz&0XFF;
tbuf[6]=(gyrox>>8)&0XFF;
tbuf[7]=gyrox&0XFF;
tbuf[8]=(gyroy>>8)&0XFF;
tbuf[9]=gyroy&0XFF;
tbuf[10]=(gyroz>>8)&0XFF;
tbuf[11]=gyroz&0XFF;
tbuf[18]=(roll>>8)&0XFF;
tbuf[19]=roll&0XFF;
tbuf[20]=(pitch>>8)&0XFF;
tbuf[21]=pitch&0XFF;
tbuf[22]=(yaw>>8)&0XFF;
tbuf[23]=yaw&0XFF;
usart1_niming_report(0XAF,tbuf,28);//飞空显示帧,0XAF
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
如果通信不了,你得找匿名最新的协议,对照着修改
理论上协议是不会变的
一周热门 更多>