一、学习说明
感觉就是配置I2C通信,然后直接移植51代码。。。
二、代码分享:
1、头文件:
#ifndef I2C_GYRO_H_ #define I2C_GYRO_H_ /***********函数声明***********/ extern void Gyro_Init(void); extern void Read_GY(void); /*****************************/ /***********全局变量声明***********/ extern float Gyro_X ; extern float Gyro_Y ; extern float Gyro_Z ; /*********************************/ #endif
2、源文件:
#include "include.h" #include "common.h" #include "gpio.h" #include "I2C_GYRO.h" #include "lptmr.h" /***********管脚声明***********/ #define L3G_S_I2C_SDA (PTE21)//(PTB3)//(PTE0) //(PTE22)//(PTC1)// #define L3G_S_I2C_SCL (PTE5)//(PTB2)//(PTE1)//(PTE20)//(PTC0)// /*****************************/ //IO方向设置 #define L3G_I2C_SDA_IN() DDRE21 = 0//输入模式 #define L3G_I2C_SDA_OUT() DDRE21 = 1//输出模式 //IO操作函数 #define L3G_I2C_SCL PTE5_OUT //SCL #define L3G_I2C_SDA PTE21_OUT //SDA #define L3G_I2C_READ_SDA PTE21_IN //输入SDA /***********全局变量声明***********/ float Gyro_X = 0; float Gyro_Y = 0; float Gyro_Z = 0; /********************************/ //**********L3G4200D内部寄存器地址********* #define L3G_WHO_AM_I 0x0F #define L3G_CTRL_REG1 0x20 #define L3G_CTRL_REG2 0x21 #define L3G_CTRL_REG3 0x22 #define L3G_CTRL_REG4 0x23 #define L3G_CTRL_REG5 0x24 #define L3G_REFERENCE 0x25 #define L3G_OUT_TEMP 0x26 #define L3G_STATUS_REG 0x27 #define L3G_OUT_X_L 0x28 #define L3G_OUT_X_H 0x29 #define L3G_OUT_Y_L 0x2A #define L3G_OUT_Y_H 0x2B #define L3G_OUT_Z_L 0x2C #define L3G_OUT_Z_H 0x2D #define L3G_FIFO_CTRL_REG 0x2E #define L3G_FIFO_SRC_REG 0x2F #define L3G_INT1_CFG 0x30 #define L3G_INT1_SRC 0x31 #define L3G_INT1_TSH_XH 0x32 #define L3G_INT1_TSH_XL 0x33 #define L3G_INT1_TSH_YH 0x34 #define L3G_INT1_TSH_YL 0x35 #define L3G_INT1_TSH_ZH 0x36 #define L3G_INT1_TSH_ZL 0x37 #define L3G_INT1_DURATION 0x38 //**************************************** #define L3G_SlaveAddress 0xD2 //定义器件在IIC总线中的从地址,根据ALT ADDRESS地址引脚不同修改 #define L3G_SlaveAddfire 0x69 //定义器件在IIC总线中的从地址,根据ALT ADDRESS地址引脚不同修改 //========================================================