使用的工程为是基于sdk10工程

在将以nRF51_SDK_10.0.0_dc26b5e\examples\peripheral\twi_sensor作为模版

修改代码main.c

 1 #include <stdio.h>
 2 #include "boards.h"
 3 #include "app_util_platform.h"
 4 #include "app_error.h"
 5 #include "nrf_drv_twi.h"
 6 #include "nrf_delay.h"
 7 #include "mpu6050.h"
 8 #include "twi_master.h"
 9 #include "SEGGER_RTT.h"
10 
11 /**
12  * @brief Function for main application entry.
13  */
14 int main(void)
15 {    
16     uint8_t id;
17     twi_master_init();   
18 
19     SEGGER_RTT_printf(0, "mpu6050 test\r\n");
20        SEGGER_RTT_printf(0, "mpu6050 address 0X68\r\n");
21      if(mpu6050_init(0x68) == false)
22      {
23          SEGGER_RTT_printf(0, "mpu6050 init fail\r\n");
24      }
25      mpu6050_register_read(0x75U, &id, 1);
26     SEGGER_RTT_printf(0, "mpu6050 id is %02x \r\n",id);
27     
28     SEGGER_RTT_printf(0, "mpu6050 address 0X69\r\n");
29     if(mpu6050_init(0x69) == false)
30     {
31         SEGGER_RTT_printf(0, "mpu6050 init fail\r\n");
32     }
33     mpu6050_register_read(0x75U, &id, 1);
34     SEGGER_RTT_printf(0, "mpu6050 id is %02x \r\n",id);
35     
36     while(true)
37     {
38     }
39 }

备注:当 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

 

输出结果

 

posted on 2016-04-19 12:12  陌鉎こ城sHi  阅读(1105)  评论(0编辑  收藏  举报