基于嵌入式linux iic 总线读写mpu6050
来源:互联网 发布:js new date 减一天 编辑:程序博客网 时间:2024/05/22 16:39
/************************************************************///文件名:mpu6050.c//功能:测试linux下iic读写mpu6050程序//使用说明: (1)// (2)// (3)// (4)//作者:huangea//日期:2016-10-03/************************************************************/ //包含头文件#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/ioctl.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<sys/select.h>#include<sys/time.h>#include<errno.h> //宏定义 #defineSMPLRT_DIV0x19#defineCONFIG0x1A#defineGYRO_CONFIG0x1B#defineACCEL_CONFIG0x1C#defineACCEL_XOUT_H0x3B#defineACCEL_XOUT_L0x3C#defineACCEL_YOUT_H0x3D#defineACCEL_YOUT_L0x3E#defineACCEL_ZOUT_H0x3F#defineACCEL_ZOUT_L0x40#defineTEMP_OUT_H0x41#defineTEMP_OUT_L0x42#defineGYRO_XOUT_H0x43#defineGYRO_XOUT_L0x44#defineGYRO_YOUT_H0x45#defineGYRO_YOUT_L0x46#defineGYRO_ZOUT_H0x47#defineGYRO_ZOUT_L0x48#definePWR_MGMT_10x6B#defineWHO_AM_I0x75#defineSlaveAddress0xD0 #define Address 0x68 //MPU6050地址 #define I2C_RETRIES 0x0701#define I2C_TIMEOUT 0x0702#define I2C_SLAVE 0x0703 //IIC从器件的地址设置#define I2C_BUS_MODE 0x0780 typedef unsigned char uint8; int fd = -1; //函数声明static uint8 MPU6050_Init(void);static uint8 i2c_write(int fd, uint8 reg, uint8 val);static uint8 i2c_read(int fd, uint8 reg, uint8 *val);static uint8 printarray(uint8 Array[], uint8 Num); //MPU6050初始化static uint8 MPU6050_Init(void){fd = open("/dev/i2c-0", O_RDWR); // open file and enable read and write if(fd < 0){perror("Can't open /dev/MPU6050 \n"); // open i2c dev file failexit(1);}printf("open /dev/i2c-0 success !\n"); // open i2c dev file succes if(ioctl(fd, I2C_SLAVE, Address)<0) { //set i2c address printf("fail to set i2c device slave address!\n");close(fd);return -1;}printf("set slave address to 0x%x success!\n", Address); i2c_write(fd,PWR_MGMT_1,0X00); i2c_write(fd,SMPLRT_DIV,0X07); i2c_write(fd,CONFIG,0X06); i2c_write(fd,ACCEL_CONFIG,0X01); return(1);} //MPU6050 wirte bytestatic uint8 i2c_write(int fd, uint8 reg, uint8 val){int retries;uint8 data[2]; data[0] = reg;data[1] = val;for(retries=5; retries; retries--) {if(write(fd, data, 2)==2)return 0;usleep(1000*10);}return -1;} //MPU6050 read bytestatic uint8 i2c_read(int fd, uint8 reg, uint8 *val){int retries; for(retries=5; retries; retries--)if(write(fd, ®, 1)==1)if(read(fd, val, 1)==1)return 0;return -1;} //get datashort GetData(unsigned char REG_Address){char H,L;i2c_read(fd, REG_Address, &H);i2c_read(fd, REG_Address + 1, &L); return (H<<8)+L;}// mainint main(int argc, char *argv[]){MPU6050_Init();usleep(1000*100);while(1){printf("\033[2J");usleep(1000*200);printf("ACCE_X:%6d\n ",GetData(ACCEL_XOUT_H));printf("ACCE_Y:%6d\n ",GetData(ACCEL_YOUT_H));printf("ACCE_Z:%6d\n ",GetData(ACCEL_ZOUT_H));printf("GYRO_X:%6d\n ",GetData(GYRO_XOUT_H));printf("GYRO_Y:%6d\n ",GetData(GYRO_YOUT_H));printf("GYRO_Z:%6d\n ",GetData(GYRO_ZOUT_H));} close(fd);}
阅读全文
0 0
- 基于嵌入式linux iic 总线读写mpu6050
- 嵌入式 IIC总线协议
- IIC总线读写小记
- 基于sopc的iic总线对24LC256读写操作
- AT24Cxx芯片读写--IIC总线
- Linux-IIC驱动(1)-IIC总线介绍
- 基于mini6410平台:uboot添加支持IIC总线的eeprom读写
- 基于FPGA EEPROM读写实现及IIC总线协议和时序分析
- LINUX IIC总线 MISC driver
- 写Linux应用读写IIC 总线上的24c02 ,验证驱动是否正确
- 关于IIC与MPU6050
- 基于HAL库 Stm32虚拟IIC总线
- 嵌入式linux之IIC驱动
- IIC总线
- IIC总线
- IIC总线
- IIC总线
- IIC总线
- mysql 查看连接数 查看被锁的表
- 用ViewPage实现不同的滑动效果
- 让控件融入系统状态栏(沉浸式)
- JAVA中对list map根据map某个key值进行排序
- MyBatis select标签
- 基于嵌入式linux iic 总线读写mpu6050
- MySQL mysql-5.7.17 的配置与搭建
- Codeforces Round #433 (Div. 2)A&B
- Learning Path : Your mentor to become a machine learning expert
- 三极管工作状态
- jquery ui table
- dll导出接口
- 向量化与for循环耗时对比——python实现
- 第2章:SQL基础