MPU3050是invensense公司的三轴陀螺仪芯片,三轴陀螺仪最大的作用就是“测量角速度,以判别物体的运动状态,所以也称为运动传感器。
下图是MPU3050的系统框图,芯片有1个中断引脚,可以通过i2c来控制,获取xGyro,yGyro,zGyro
设备驱动中用mpu3050_sensor结构体来描述MPU3050设备对象(对象中包含i2c客户端及输入设备来处理获取的x,y,z轴数据的传递)
structmpu3050_sensor{//mpu3050传感器
strucTI2c_client*client;//i2c客户端
structdevice*dev;//设备文件
strucTInput_dev*idev;//输入设备
};
用axis_data来描述获取的xGyro,yGyro,zGyro的数值
structaxis_data{//轴数据
s16x;//x轴
s16y;//y轴
s16z;//z轴
};
首先注册i2c设备
module_i2c_driver(mpu3050_i2c_driver);
staTIcstrucTI2c_drivermpu3050_i2c_driver={
.driver={
.name=“mpu3050”,
.owner=THIS_MODULE,
.pm=&mpu3050_pm,
.of_match_table=mpu3050_of_match,
},
.probe=mpu3050_probe,//i2cprobe方法
.remove=__devexit_p(mpu3050_remove),
.id_table=mpu3050_ids,
};
i2c设备与驱动匹配需要在板级驱动中注册i2c驱动
htconemax板的做法如下
staticstructi2c_board_info__initdatampu3050_GSBI12_boardinfo[]={
{
I2C_BOARD_INFO(“mpu3050”,0xD0》》1),
.irq=PM8921_GPIO_IRQ(PM8921_IRQ_BASE,PM_GYRO_INT),
.platform_data=&mpu3050_data,
},
};
然后调用
i2c_register_board_info(MSM8064_GSBI2_QUP_I2C_BUS_ID,
mpu3050_GSBI12_boardinfo,
ARRAY_SIZE(mpu3050_GSBI12_boardinfo));
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)