使用的工程为是基于sdk10工程
在将以nRF51_SDK_10.0.0_dc26b5e\examples\peripheral\twi_sensor作为模版
修改代码main.c
#include <stdio.h> #include "boards.h" #include "app_util_platform.h" #include "app_error.h" #include "nrf_drv_twi.h" #include "nrf_delay.h" #include "mpu6050.h" #include "twi_master.h" #include "SEGGER_RTT.h" /** * @brief Function for main application entry. */ int main(void) { uint8_t id; twi_master_init(); SEGGER_RTT_printf(, "mpu6050 test\r\n"); SEGGER_RTT_printf(, "mpu6050 address 0X68\r\n"); if(mpu6050_init(0x68) == false) { SEGGER_RTT_printf(, "mpu6050 init fail\r\n"); } mpu6050_register_read(); SEGGER_RTT_printf(, "mpu6050 id is %02x \r\n",id); SEGGER_RTT_printf(, "mpu6050 address 0X69\r\n"); if(mpu6050_init(0x69) == false) { SEGGER_RTT_printf(, "mpu6050 init fail\r\n"); } mpu6050_register_read(); SEGGER_RTT_printf(, "mpu6050 id is %02x \r\n",id); while(true) { } }
备注:当 MPU_AD0 悬空/接 GND 的时候,模块的 IIC 从机地址为:0X68;当 MPU_AD0 接 VCC的时候,模块的 IIC 从机地址为:0X69。
为何要多写一个0X69呢,是由于实际测试的发现PIN8和PIN9短路了。。。所以宝宝心里苦不说。
需要添加文件
..\..\..\..\..\components\drivers_ext\mpu6050\mpu6050.c
..\..\..\..\..\components\drivers_nrf\twi_master\deprecated\twi_sw_master.c
添加头文件
..\..\..\..\..\components\drivers_ext\mpu6050
..\..\..\..\..\components\drivers_nrf\twi_master\deprecated
..\..\..\..\..\components\drivers_nrf\twi_master\deprecated\config
最后更据自己电路修改twi_master_config
#ifndef TWI_MASTER_CONFIG #define TWI_MASTER_CONFIG #define TWI_MASTER_CONFIG_CLOCK_PIN_NUMBER (10U) #define TWI_MASTER_CONFIG_DATA_PIN_NUMBER (9U) #endif
输出结果