nRF51822之模拟IIC

使用的工程为是基于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短路了。。。所以宝宝心里苦不说。

nRF51822之模拟IIC

nRF51822之模拟IIC

需要添加文件

nRF51822之模拟IIC

..\..\..\..\..\components\drivers_ext\mpu6050\mpu6050.c

..\..\..\..\..\components\drivers_nrf\twi_master\deprecated\twi_sw_master.c

添加头文件

nRF51822之模拟IIC

..\..\..\..\..\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

输出结果

nRF51822之模拟IIC

上一篇:使用JS获取上一页的url地址


下一篇:Chrome开发者工具之JavaScript内存分析(转)