资源简介
自己写的基于linux mpu6050的iic驱动代码 已在开发板上运行过了
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “mpu6050.h“
struct mpu6050_device{
struct i2c_client *mpu6050_client;
struct cdev cdev;
}
static struct mpu6050_device *mpu6050;
static int major;
static struct class *class;
//static struct device *dev;
static const struct i2c_device_id mpu6050_id[] = {
{ “mpu6050“ 0 }
{ }
};
static int mpu6050_read (struct i2c_client *client unsigned char reg)
{
/*传入buf[0]:addr*/
struct i2c_msg msg[2];
unsigned char reg_addrdata;
//copy_from_user(®_addrbuf1);
msg[0].addr=client->addr;
msg[0].flags =0;
msg[0].len =1;
msg[0].buf=®_addr;
msg[1].addr =client->addr;
msg[1].flags=I2C_M_RD;
msg[1].len=1;
msg[1].buf=&data;
i2c_transfer(client->adaptermsg2);
//i2c_smbus_read_byte_data(mpu6050_clientaddr);
// copy_to_user(buf&data1);
return data;
}
static int mpu6050_write (struct i2c_client *client unsigned char reg unsigned char val)
{
/*buf[0] addr
*buf[1] data
*/
struct i2c_msg msg;
unsigned char buf[2];
buf[0]=reg;
buf[1]=val;
//unsigned char reg_addrdata;
//unsigned char ker_buf[2];
//copy_from_user(ker_bufbuf2);
//reg_addr=ker_buf[0];
//data=ker_buf[1];
msg.addr=client->addr;
msg.flags=0;
msg.buf =buf;
msg.len=2;
i2c_transfer(client->adapter&msg1);
return 0;
}
static int mpu6050_ioctl(struct file *file unsigned int cmdunsigned long arg)
{
union mpu6050_data data;
struct i2c_client *client = mpu6050->client;
switch(cmd) {
case GET_ACCEL:
data.accel.x = mpu6050_read_byte(client ACCEL_XOUT_L);
data.accel.x |= mpu6050_read_byte(client ACCEL_XOUT_H) << 8;
data.accel.y = mpu6050_read_byte(client ACCEL_YOUT_L);
data.accel.y |= mpu6050_read_byte(client ACCEL_YOUT_H) << 8;
data.accel.z = mpu6050_read_byte(client ACCEL_ZOUT_L);
data.accel.z |= mpu6050_read_byte(client ACCEL_ZOUT_H) << 8;
break;
case GET_GYRO:
data.gyro.x = mpu6050_read_byte(client GYRO_XOUT_L);
data.g
- 上一篇:linux 配置文件读写C
- 下一篇:编译原理优先算法代码,及详细实验报告
相关资源
- 直流无刷电机方波驱动 stm32 例程代码
- elantech触控板驱动程序 v13.6.11 官方最
- 联想y470无线网卡驱动 for 32位64位
- 松下plc FP-XH的驱动
- uboot到linux logo显示不间断 补丁
- IMX385驱动代码.zip
- mpu6050+hmc5883L.rar
- 组态王驱动开发包3.0.0.7(中文)
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- CASS9.1最新S4数据及驱动+ET199数据及驱
- UNIX/LINUX编程实践教程的源码
- 带有死区延时的H桥直流电机驱动电路
- Linux任务管理器
- linux应用层的华容道游戏源代码
- USB转串口驱动,FT232R驱动程序,最新
- 德卡D3读卡器测试程序驱动文件
- WinCE下CP210x的驱动程序
- ubuntu9.10 可加载内核模块和字符设备驱
- MCGS触摸屏西门子s7_1200驱动
- FPGA在步进电机驱动上的应用实例及代
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- RA8806液晶驱动程序
- MP3文件ID3v2ID3v2APEv2标签读取
- 内核驱动进程保护演示程序
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- 组态王中S7-300TCP驱动
- STC12C5A60S2 CH4521 驱动数码管 显示
- STM32F103 CC2500完整驱动(模拟SPI)
- 操作系统实验——虚存管理实验
评论
共有 条评论