智龙V3 获取MPU6050原始数据(iic驱动)

本文档介绍了如何在基于嵌入式Linux的智龙V3开发板上,通过IIC驱动获取MPU6050传感器的原始数据。内容包括修改《嵌入式Linux系统设计及应用》一书中IIC例子,设备注册,驱动注册,以及数据读取的C代码实现。通过编译加载驱动模块和运行用户程序,实现对MPU6050的加速度和陀螺仪数据的实时读取。
摘要由CSDN通过智能技术生成

修改书《嵌入式Linux系统设计及应用-基于国产龙芯SOCV2.3.0》中IIC的例子,获取MPU6050的数据。

1.连线方式,MPU6050的AD0连接GND,SDA连接P00,SCL连接P01。

             

2.注册新设备。使用i2c_new _device方法。文件保存为mpu6050_dev.c

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/i2c.h>
#include <linux/err.h>
#include <loongson1.h>
#include <linux/slab.h>


static struct i2c_board_info mpu6050_info = {    
    I2C_BOARD_INFO("mpu6050",0x68),
};

static struct i2c_client *mpu6050_client;

static int mpu6050_dev_init(void)
{
    struct i2c_adapter *i2c_adap;
    //打开第2复用gpio00,01,必须做
    __raw_writel(readl(LS1X_CBUS_SECOND0) | 1 ,LS1X_CBUS_SECOND0);
    __raw_writel(readl(LS1X_CBUS_SECOND0) |( 1 << 1 ) ,LS1X_CBUS_SECOND0);
        //使用i2c-0设备
    i2c_adap = i2c_get_adapter(0);
    mpu6050_client = i2c_new_device(i2c_adap, &mpu6050_info);
    i2c_put_adapter(i2c_adap);
    
    return 0;
}

static void mpu6050_dev_exit(void)
{
    i2c_unregister_device(mpu6050_client);
}


module_init(mpu6050_dev_init);
module_exit(mpu6050_dev_exit);
MODULE_LICENSE("GPL");

 i2c-*设备通过iic工具查询。

 3.注册新驱动。文件保存为mpu6050_drv.c

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/i2c.h>
#include <linux/err.h>
//#include <linux/regmap.h>
#include <linux/slab.h>
#include <linux/fs.h>
#include <asm/uaccess.h>


static int major;
static struct class *class;
static struct i2c_client *mpu6050_client;

/* 传入: buf[0] : addr
 * 输出: buf[0] : data
 */
static ssize_t mpu6050_read(struct file *

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值