工具/软件:Code Composer Studio
大家好,
我目前正在与Piccolo TMS320F2.8027万一起工作,并尝试连接10轴IMU (GY-86)中断板,该板具有通过I2C总线连接的MPU6050+ HMC5883LC+MS5611传感器5611传感器。 我可以与传感器通话并获得传感器:) 我还可以运行加速计和陀螺仪的数据融合来计算滚动和俯仰角度。 我还可以在磁力计上运行倾斜补偿算法来计算航向...
所有这些都在CPU计时器内,每2毫秒进行一次。 我每隔2毫秒调用一次计时器,它使用I2C在400 kHz下获取传感器数据运行密集的数学运算,包括一连串的分段, 多路复用和一些三角运算...所以我对执行时间很好奇,所以我在操作开始时将GPIO设为高,并在结束时将其设为低。...使用示波器,我测量了脉冲宽度,让我惊讶的是,脉冲宽度仅为20-40 us。 这是真的吗?
还是我犯了错误?
我还使用断点交叉检查并尝试使用CCS测量时钟周期,时钟显示显示在45万 时钟周期周围,所以我真的很困惑,哪一个是正确的...
所有操作都是使用基于IQ数学的定点库完成的,代码在闪存上运行...
有人可以给我一些建议吗? void A1执行数据处理和角度计算......
请在下面查找代码:
void A0 (void)
{//
A任务的循环速率同步
器if (CpuTimer2Regs.tcr.bit.tif ==1)
{
CpuTimer2Regs.tcr.bit.tif =1;//清除标志
//-------
(* A_Task_PTR)();//跳转至A任务(A1,A2,A3,...)
//------------------
}
}
空A1 (void)
//------------------
{
_IQ滚动,节距,cosroll,sinroll,cospitch,sinpitch, XH,YH;
中断计数++;
gPIO_setLow (myGPIO,gPIO_NUMBER_0); //代码开始
acel_x=I2CA_Read2Bytes (MPU6050_RA_ACCEL_XOUT_L,MPU6050_RA_ACCEL_XADD_H,MPU6050_ADD);//读取原始加速计x轴accel_y=I2CA_Read2CA_Read2CEU50_CA_X50_U50_URA_50
,URA_X50_URA_50,RA_X_RO_Read_50
,URA_50,URA_50,URA_50
,URA_X_U_50,URA_50,URA_X_U_50
//将原始数据y转换为g
az=_IQdiv(_IQ (((int)accel_z),_IQ (1.6384万));//将原始数据z转换为g
gx=_IQdiv((((int)gyro_x),_IQ (dvs)gy(gyx))z 65.5 ;//原始gyx转换65.5
成_igv=_igvi=_igvic=_qiqiq_yz( dvi) 65.5 ,ds_gyz/ gyz_gyz/ dvic=) 3.14 //转换为deg
pitch =_IQatan2 (ay,az);//_IQsin (_IQ (180/IQ) 3.14 ,_IQatan (1.0));//俯仰角度
=_IQadpy (_IQ (180/IQ),俯0.96
仰角=_IQad),0.005 0.96 0.005 57.2.9582万 57.2.9582万 角度=_IQad_Iq,3.14 0.04 0.04
//半径
cospitch中倾斜补偿的滚动角度正弦=_IQcos(_IQDIV(roll_angle,_IQ (57.2.9582万));//半径
sintitch中倾斜补偿的倾斜角度余弦=_IQsinPitch (_IQDIV (roll_angle,_IQ (57.2.9582万)));//纵倾角补偿的正弦值CA_DAT83_CA_Q_Q_21
,CA_CA_CA_CA_CA_Q58L_21
HMC5883L_address);
magx =_IQbumpy (_IQ ((int) mag_x),_IQ (0.73));
magy =_IQbumpy (_IQ ((int) mag_y),_IQ (0.73));
magz =_IQIq (_IQ (((int) mag_z),_IQ (0.73));
方向= magy,magany
xh =_IQbumpy(magx,cospility)+_IQbumpy(magz,sintpitle);
yh =_IQbumpy(magy,cosRoll)+_IQbumpy (magy,gpio)-_IQbumpy(_igiqi(mag,sinici),cospit_pit);
if (head_tiltilt_gip)
;
gpit_gip_gip_gip_head; gip_gip_gip_head; gip_gip_gip_gip_gip_gip_gip_gip) 6.28
;gip_head; gip_gip_head_gip_gip_gip_gip_gip_gip_gip_gip_gip_gip 6.2918 6.2918 57.2.9582万