单片机/MCU论坛
直播中

jf_15811252

3年用户 249经验值
擅长:嵌入式技术
私信 关注
[文章]

【HD-G2UL-EVM开发板体验】+ 陀螺仪数据读取

前言

接上次OLED屏幕显示的实现,本次使用IIC实现陀螺仪数据读取。

硬件设计

引脚使用与上次OLED屏幕的接口一致,使用IIC0实现,只在程序上进行修改。

image.png

实物连接:
4A4F53951586D9D28AFE077E0C400D42.jpg

软件设计

#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>

#define SMPLRT_DIV 0x19

#define CONFIG 0x1A

#define GYRO_CONFIG 0x1B

#define ACCEL_CONFIG 0x1C

#define ACCEL_XOUT_H 0x3B

#define ACCEL_XOUT_L 0x3C

#define ACCEL_YOUT_H 0x3D

#define ACCEL_YOUT_L 0x3E

#define ACCEL_ZOUT_H 0x3F

#define ACCEL_ZOUT_L 0x40

#define TEMP_OUT_H 0x41

#define TEMP_OUT_L 0x42

#define GYRO_XOUT_H 0x43

#define GYRO_XOUT_L 0x44

#define GYRO_YOUT_H 0x45

#define GYRO_YOUT_L 0x46

#define GYRO_ZOUT_H 0x47

#define GYRO_ZOUT_L 0x48

#define PWR_MGMT_1 0x6B

#define WHO_AM_I 0x75

#define SlaveAddress 0xD0

#define Address 0x68 //MPU6050地址

#define I2C_RETRIES 0x0701

#define I2C_TIMEOUT 0x0702

#define I2C_SLAVE 0x0703 //IIC从器件的地址设置

#define I2C_BUS_MODE 0x0780

int 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));

    usleep(1000 * 200);

    printf("ACCE_Y:%6d\n ", GetData(ACCEL_YOUT_H));

    usleep(1000 * 200);

    printf("ACCE_Z:%6d\n ", GetData(ACCEL_ZOUT_H));

    usleep(1000 * 200);

    printf("GYRO_X:%6d\n ", GetData(GYRO_XOUT_H));

    usleep(1000 * 200);

    printf("GYRO_Y:%6d\n ", GetData(GYRO_YOUT_H));

    usleep(1000 * 200);

    printf("GYRO_Z:%6d\n\n ", GetData(GYRO_ZOUT_H));

    sleep(1);

}



close(fd);

}

编译,将生成的可执行文件使用SSH传入开发板中。
image.png
添加可执行文件权限:
image.png

进行陀螺仪原始数据读取:
image.png

总结

本次陀螺仪原始数据读取完成,实现过程中相对比较方便,不用进行底层驱动开发,在应用层调用接口打开IIC设备即可。
image.png

更多回帖

发帖
×
20
完善资料,
赚取积分