前言

在IIC总线是PHILIPS公司推出的一种串行总线。IIC总线有2根信号线SCK(时钟线)和SDA(数据线)。NRF51822中所谓的TWI总线跟IIC总线兼容,这里统称为IIC总线。IIC总线规定了不同类型的从机拥有不同的IICADRESS,主机访问从机的时候需要提供从机的IICADRESS。这使得IIC总线上可以同时挂很多个传感器,执行器件而不会冲突。

上图中R的取值范围是4.7-10K ,NRF51822的IIC控制器是作为主机使用, NRF51822 IIC总线控制器的结构示意图如下。

左边为TASK,右边是EVENT。

TASK:

1)STARTRX:NRF51822开始接收从机发过来的数据。

2)STARTTX:NRF51822开始发送数据到从机。

3)SUSPEND:暂停通讯。

4)RESUME:恢复SUSPEND暂停的通讯。

5)STOP:停止通讯。

EVENT:

1)RXDRDY:接收已经完成。

2)TXDSENT:发送已经完成。

3)BB(byteboundary):字节的分界线。每当NRF51822发送完或者接收到一个字节的数据,会产生这个EVNET。

4)SUSPENDED:通讯已经被暂停。

5)ERROR:通讯中产生了错误。

6)STOPPED:通讯已经被终止。

NRF51822写数据到从机的时序

开始条件---器件地址+写标志---从机ACK---第一个字节---从机ACK---第N字节----从机ACK-----停止条件。

NRF51822读取从机寄存器数据的时序

开始条件---器件地址+写标志---从机ACK---从机发送第一个字节数据到IIC控制器---主机发送应答信号---从机发送第N个字节到IIC控制器----停止条件。

寄存器介绍

本例程演示的是NRF51822通过IIC总线与开发板上的MPU6050通讯,读出MPU6050的WHOAMI寄存器的特征码(0x68),并通过串口打印输出结果。

示例详解

基于硬件平台:nrf51822ek_tm开发板。

本示例所用的最小系统板原理图:

  1. 工程创建:

    1. 打开KEIL,新建一个空工程:Project->NewuVisionProject

工程名为nrfxx-twi确认后按下图选择芯片为nrf51822_xxAA->ok

在弹出的对话框中勾选CMSIS中的CORE;Device中的Startup(后面有nrf51Series字样的);在nrf_device中勾选nrf_gpio, nrf_uart, nrf_delay,nrf_twi,nrf_err并在nrf_Libraries中勾选app_error,nrf_assert模块。

OK之后工程自动生成如下代码:

新建一个空白文档,保存为main.c,并加入工程中:

配置工程,选择使用MicroLIB库,可以减小程序体积:

加入NRF51定义,并选择化等级3,可以减小程序体积,但仿真运行时可能会出现与代码顺序不一致现象:

调试工具选择J-LINK,并将接口设置为SW口勾选下载程序后自动复位及运行:

  1. 工程代码

    1. OK之后在man.c中加入如下代码:

把程序编译,可以看到串口助手中打印了以下输出内容:

关于nrf51xx更详细介绍可以参看《nRF51822_RM_v3.0.1.pdf》或https://infocenter.nordicsemi.com/index.jsp。

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,会有不定期技术干货推出!!

文中源码资料下载,在公众号里给十三发消息:

下载|一起学nRF51xx 13

关注十三公众号

一起学nRF51xx 13 - twi iic相关推荐

  1. 一起学nRF51xx 15 - spis

    前言 SPIS是一个从SPI,它与EasyDMA一起支持与外部的主SPI超低功耗串行通信.EasyDMA使得SPIS交互无需CPU的介入.在提高数据传输效率的同时还减轻了CPU的负担. SPIS即是S ...

  2. 一起学nRF51xx 8 -  Time

    前言 Nrf518xx的TIMER有以下几部分组成(nrf51822有三个定时器--time0/1/2): 1)计数时钟源.有1M.16M 2种时钟源. 2)时钟源分频器.用来设置分频,范围是2的0- ...

  3. 一起学nRF51xx 0 - 环境搭建

    前言 物联网时代怎么能少得了蓝牙4.0,Nordic的nRF5x系列MCU如 nRF51822 是功能强大.高灵活性的多协议 SoC,非常适用于 Bluetooth® 低功耗和 2.4GHz 超低功耗 ...

  4. 一起学nRF51xx 23 -  s130蓝牙API介绍

    张十三 前言 通过前面的章节,我们学习了nrf51的蓝牙协议栈(S130)的基本使用,对S130协议栈的实现原理有了一定了解,也认识到了S130协议栈的强大,那么协议栈中的API接口具体是什么功能?各 ...

  5. 一起学nRF51xx 22 -  实现一个具体SVC调用功能的demo

    前言 上一节<一起学nRF51xx 21 -  蓝牙项目工程的初始化流程解读>讲到nordic的蓝牙协议栈是通过SVC来实现APP与协议栈之间通接口调用的,那么如何来实现一个具体SVC调用 ...

  6. 一起学nRF51xx 21 -  蓝牙项目工程的初始化流程解读

    前言 本节主要工作是对<一起学nRF51xx 20 -  移植SDK蓝牙例程>章节程序进行解读. 示例详解 基于硬件平台:nrf51822ek_tm开发板. 本示例所用的最小系统板原理图: ...

  7. 一起学nRF51xx 20 -  移植SDK蓝牙例程

    前言 Nordic公司为nRF51系列SOC提供有完整的开发SDK包,里面有大量的例程,通过学习官方例程并最终应用到自己项目工程中是一个比较高效的学习与项目开发技巧,本节将与大家一起完成蓝牙例程的移植 ...

  8. 一起学nRF51xx 19 -  移植SDK普通接口例程

    一起学nRF51xx 19 -  移植SDK普通接口例程 张十三 前言 Nordic公司为nRF51系列SOC提供有完整的开发SDK包,里面有大量的例程,通过学习官方例程并最终应用到自己项目工程中是一 ...

  9. 一起学nRF51xx 18 -  蓝牙协议栈烧录

    前言 在讲协议栈前我们先简要介绍一下NORDIC公司的协议栈特点: 1 协议栈和应用程序代码没有链接时间依存性,并可独立编译和更新 2 堆栈受运行时保护,应用程序访问受限或被阻止 3 堆栈为 100% ...

最新文章

  1. 数据恢复knowledge
  2. python常用命令汇总-python数据分析之pandas常用命令整理
  3. ES6第一节:开发环境的搭建
  4. linux云服务器状态上报解决方案:外发个人邮箱
  5. 相同布局在不同手机上显示不同_不懂响应式,不同尺寸屏幕下的页面很难达到最佳效果...
  6. leetCode —— 1200.最小绝对差
  7. _百万内最魔性的GT跑车 测试捷豹F-TYPE P380四驱版
  8. 全新语音 AI 芯片、两大 AI 开发者平台重磅推出,全方位解读科大讯飞全球 1024 开发者节!...
  9. SpringBoot2.x 同个文件的加载顺序,静态资源文件
  10. 【李宏毅2020 ML/DL】P79 Generative Adversarial Network | Tips for improving GAN
  11. 1106 冒泡排序的语法树
  12. access中如何画斜线_三维并没有想象中那么难,思路清晰画图就简单
  13. 思科认证CCNA专业英文词汇全集(4)
  14. CImage对象使用罗伯特算子进行边缘检测
  15. thinkpad使用u盘启动
  16. 各种计算机绘图的应用场合,cad制图员面试技巧
  17. 常用的电脑快捷键,常用快捷键大全,提高办公工作效率
  18. 更换ip地址后虚拟机无法联网,连接失败
  19. Win7蓝牙耳机怎么连接电脑
  20. 仓库防霉防潮作业指导书

热门文章

  1. MySql基础入门-mysql体系结构
  2. 生活中的实验 —— 磁铁的使用
  3. 四则运算APP最后阶段
  4. 毕业生必须知道:干部身份、三方协议、派遣证
  5. winner or loser
  6. 卸载和安装LINUX上的JDK
  7. UA MATH567 高维统计专题1 稀疏信号及其恢复6 随机设计矩阵下LASSO的估计误差
  8. Linux下第一个java程序没有成功
  9. MFC视图滚动条的基本使用和C语言输出三角形的MFC版本
  10. 病毒特征码定位原理和首次使用MyCCL