本篇体验板上的五向按键的控制,主要分3部分:硬件分析,软件实现,测试效果。
一、硬件分析
1 MPU6050模块
2 板载MPU6050电路
FireBLE开发板上的六轴加速度传感器MPU6050模块原理图,如下图左边所示:它通过I2C接口与蓝牙芯片QN9021进行数据通信。MPU6050的中断引脚连接到了QN9021的P3_1引脚,原因在于:MPU6050的有效数据的获取是需要中断来提醒MCU,再进行采集。
MPU6050与控制器连接的3个引脚的功能配置如下表所示,其中IIC引脚又通过电平转换电路(如上图右边部分)连接到了扩展引脚端J10,可用来连接用户自定义设备。
P3_1 |
MPU6050_INT 0: P3_1 (I/O):GPIO 1: T0_2 (I/O):Timer 0 input capture /clock or PWM output 2: AIN1 (I):ADC input channel 1 3: ACMP0- (I):Analog comparator negative input |
P2_4 |
SCL_TR—J10 MPU6050_SCL 0: P2_4 (I/O):GPIO 1: SCL (I/O):I2C master clock output with pull-up 2: PWM1 (O):PWM1 output 3: T3_ECLK (I/O):Timer 3 external clock input or PWM output |
P2_3 |
SDA_TR—J10 MPU6050_SDA 0: P2_3 (I/O):GPIO 1: SDA (I/O):I2C data transmit 2: ACMP0_O (O):Analog comparator result output 3: T3_0 (I/O):Timer 3 input capture /clock or PWM output |
二 软件实现
1 移植MPU6050源码,在官方提供的源码中,已经提供了MPU6050的测试代码,该代码已经进行了模块化编程,移植只需要复制粘贴即可。但从头文件可看出,它是由正点原子(STM32的开荒者)提供。具体源码位置:即将mpu_6050.c和mpu_6050.h复制到自己的项目中,并参考mpu6050_example.c的测试例程,进行移植、封装。
2 根据mpu6050_example.c文件中的例程,编写MPU6050初始化封装函数
void MPU6050Init(void) { MPU_Init(); //MPU6050模块初始 MPU_IntInit();//中断引脚初始化 }3 MPU6050测试函数,该函数由main函数直接调用
void TestMPU6050(void) { SystemInit(); UartInit(); //初始化串口 MPU6050Init(); //初始化MPU6050 OLED_Init(); //初始化 OLED OLED_Clear(); OLED_ShowString(0,0,(uint8_t*)"ICkey MPU6050"); OLED_ShowString(0,3,(uint8_t*)" 20151006"); printf("ICkey MPU6050 "); printf("20151006rn"); delay(5000000); while (1) { MPU6050Show(); //显示获取的数据 delay(500000); } }三 测试效果
1 OLED显示
2 串口显示