三轴陀螺仪MPU3050驱动程序分析

三轴陀螺仪MPU3050驱动程序分析,第1张

  MPU3050是invensense公司的三轴陀螺仪芯片,三轴陀螺仪最大的作用就是“测量角速度,以判别物体的运动状态,所以也称为运动传感器

  下图是MPU3050的系统框图,芯片有1个中断引脚,可以通过i2c来控制,获取xGyro,yGyro,zGyro

  三轴陀螺仪MPU3050驱动程序分析,三轴陀螺仪MPU3050驱动程序分析,第2张

  设备驱动中用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));

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2629863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-11
下一篇 2022-08-11

发表评论

登录后才能评论

评论列表(0条)

保存