使用的工程为是基于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

输出结果

nRF51822之模拟IIC的更多相关文章

  1. stm32软件模拟IIC读取PX4FLOW光流传感器数据

    这段时间在做全国光电设计大赛,用到了px4的px4flow光流传感器,用软件模拟iic读取数据不定期会导致px4flow死机,查了资料和光流的源码,发现这个光流用了stm32的硬件iic,所以对软件模 ...

  2. GPIO模拟IIC接口信号质量分析

    信号质量有问题的波形001: 信号质量有问题的波形002: 从上图可以看出,GPIO口模拟的I2C接口,电平都存在半高的情况. 因为I2C的接口是通过GPIO模拟实现的,该时钟信号线SCL内部默认为下 ...

  3. lpc1788IO口模拟IIC

    #ifndef __MYIIC_H_ #define __MYIIC_H_ #include "common.h" #include "delay.h" #in ...

  4. STM32F10X -- 模拟IIC程序

    听说STM32的IIC硬件做的很鸡肋,所以在这里通过模拟的方式实现IIC协议.此程序能成功对AT24C02操作. 程序中的带参数宏 IIC_DELAY(time)的功能是延时time us,在实际中具 ...

  5. 【STM32】IIC的基本原理(实例:普通IO口模拟IIC时序读取24C02)(转载)

     版权声明:本文为博主原创文章,允许转载,但希望标注转载来源. https://blog.csdn.net/qq_38410730/article/details/80312357 IIC的基本介绍 ...

  6. STM32 软件模拟 IIC 代码,标准库、HAL库可用

    #ifndef _IIC_H #define _IIC_H #include "stdio.h" #include "stm32f1xx_hal.h" /* 定 ...

  7. GPIO软件模拟IIC时序

    一.MPU6050中的IIC时序 1.1 START和STOP SDA和SCL在高电平时,SDA拉低表示START.SCL拉低,表示可以传输数据. SDA和SCL在低电平时,SDA拉高表示STOP. ...

  8. 模拟IIC总线多设备挂载(12864OLED屏幕+GY30光照传感器)

    最终效果展示 OLED屏幕和GY30光照传感器(BH1750FVI)都连接在一个IIC(I2C)总线上,所以只需要接4根线即可.获取到的光照强度可以在OLED上实时显示并通过串口打印.IIC是IO模拟 ...

  9. C51—模拟IIC总线实现EEPROM存取数据

    a - 什么是IIC总线 -什么是EEPROM -IIC总线的通信格式 模块化设计注解 整体代码 - 什么是IIC总线 IIC总线是同步通信的一种特殊形式,具有接线口少.控制简单.器件封装形式小.通信 ...

随机推荐

  1. FireBug使用总结

    FireBug是一个用于网站前端的开发工具,它是Firefox浏览器的一个拓展插件,它可以调试JavaScript.查看DOM.分析CSS.监控网络流量以及进行Ajax交互等.提供了几乎前端开发需要的 ...

  2. 拼图游戏 v1.1

    我一直对拼图游戏比较有兴趣,市面上卖的所谓“1000块拼图”也玩过不少,不过玩那个太占地方,后来也不再买了,同时也就萌生了在电脑上玩拼图的想法. 现在虽然有很多拼图游戏,但能大多数只能支持几十或几百块 ...

  3. LightOJ1064 Throwing Dice(DP)

    第一眼以为是概率DP,我还不会.不过看题目那么短就读读,其实这应该还不是概率DP,只是个水水的DP.. dp[n][s]表示掷n次骰子点数和为s的情况数 dp[0][0]=1 dp[i][j]=∑dp ...

  4. 详解Adorner Layer(zz)

    首先,千万不要觉得Adorner离你很远,因为最简单的WPF界面也会用到Adorner.在WPF中,下面的几个很常见的功能,都是用Adorner实现的.     1. 光标(caret)     2. ...

  5. 不容易系列之二[HDU2042]

    不容易系列之二 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  6. Transactional topologies —— 事务拓扑

    事务拓扑是怎么回事? Storm guarantees that every message will be played through the topology at least once. St ...

  7. Codeforces 55D (数位DP+离散化+数论)

    题目链接: http://poj.org/problem?id=2117 题目大意:统计一个范围内数的个数,要求该数能被各位上的数整除.范围2^64. 解题思路: 一开始SB地开了10维数组记录情况. ...

  8. Task<TResult> 类

    https://msdn.microsoft.com/zh-cn/library/dd321424.aspx

  9. RN组件之Switch与Picker

    一.Switch选择开关控件 1.该组件为Android/IOS通用的两种状态的开关组件 2.属性方法 (1)disabled bool:如果该值为true,用户就无法点击switch开关,默认为fa ...

  10. Javascript刷新页面大全

    非模态刷新父页面:window.opener.location.reload(); 模态刷新父页面:window.dialogArguments.location.reload(); 先来看一个简单的 ...