一起学nRF51xx 13 - twi & iic

2023-11-17

前言

在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

 

关注十三公众号

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一起学nRF51xx 13 - twi & iic 的相关文章

  • 数字芯片流程

    芯片设计分为前端设计和后端设计 前端设计 逻辑设计 和后端设计 物理设计 并没有同意严格的界限 这个过程中涉及到了与工艺有关的设计就是后端设计 一 需求分析 产品需要解决的问题 预测3 5年的趋向和走势 确保前瞻性 确保芯片是有卖点的 客户
  • kong dashboard UI 的使用 (使用kong 对服务反向代理,以及解决跨域问题)

    7 2Choose Security and click on ADD PLUGIN in cors then don t input content and click on ADD PLUGIN button directly 第一步登
  • 【Zotero6】插件Zotcard自定义笔记模板流程分享

    Zotero 个人感觉比Endnote更好用的文献管理器 集翻译 文献整理 笔记 查询期刊影响因子 期刊分区等集于一身的文献管理器 据说是一款开源软件官网就可以免费下载 安装附加的浏览器插件使用更方便 今天更新的是Zotero中的笔记插件
  • 计算机操作系统pcb是什么意思,简述PCB的含义以及作用

    描述 为了使参与并发执行的每个程序 包含数据都能独立地运行 在操作系统中必须为之配置一个专门的数据结构 称为进程控制块 PCB Process Control Block 进程与PCB是一一对应的 用户进程不能修改 进程控制块PCB的作用
  • muduo 架构解析

    muduo是一个基于Reactor模式的C 网络库 它采用非阻塞I O模型 基于事件驱动和回调 我们不仅可以通过muduo来学习linux服务端多线程编程 还可以通过它来学习C 11 Reactor是网络编程的一般范式 我们这里从react
  • RockyLinux9.1环境初始化

    下载镜像 https rockylinux org download 基础设置 硬件配置 系统配置 系统初始化 配置网络 配置网络 etc NetworkManager system connections ens160 nmconnect
  • 要言不烦先行指标与滞后指标的12个要点

    先行指标 leading indicator 是在结果发生之前对结果具有预测作用的度量数据 又称为超前指标 预测性指标 先导指标 领先指标 行为指标 过程指标等 滞后指标 lagging indicator 是对最终结果的度量数据 反映的是
  • jar包读取资源文件报错:找不到资源文件(No such file or directory)

    1 遇到问题 1 Maven项目开发阶段正常运行 Java程序可以读取配置文件 public class Main public static void main String args throws Exception Main read
  • python——返回函数、闭包函数、偏函数

    文章目录 1 返回函数 2 闭包函数 3 偏函数 1 返回函数 函数的返回值也可以是函数 def food name 外函数 def prepare 内函数 print f name 制作步骤 备菜 内部函数可以使用外部函数的变量 def
  • 看涨期权计算例题(期权案例计算)

    看涨期权又称认购期权 买进期权 买方期权 买权 延买期权 或 敲进 是指期权的购买者拥有在期权合约有效期内按执行价格买进一定数量标的物的权利 下文为大家科普看涨期权计算例题 期权案例计算 本文来自 期权酱 当看涨期权 Call Option
  • 同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示

    问题描述 提示 HBuilderX 真机调试异常 这个问题困惑了我好几天 终于解决了 同步资源失败 未得到同步资源的授权 请停止运行后重新运行 并注意手机上的授权提示 解决方案 提示 使用adb删除对应包名 问题未解决 尝试重新启动手机再运
  • 第十届蓝桥杯省赛C++B组 数列求值

    试题 C 数列求值 本题总分 10 分 问题描述 给定数列 1 1 1 3 5 9 17 从第 4 项开始 每项都是前 3 项的和 求第 20190324 项的最后 4 位数字 答案提交 这是一道结果填空的题 你只需要算出结果后提交即可 本
  • 以数据为中心的标记语言-->yaml

    目录 一 yaml 介绍 二 yaml 基本语法 三 数据类型 1 字面量 2 对象 3 数组 四 yaml 应用实例 1 需求 2 需求图解 3 代码实现 五 yaml 使用细节 一 yaml 介绍 YAML 是 YAML Ain t a
  • C++ 之 explicit,mutable,volatile 浅析

    explicit 放在构造函数前面可以阻止构造函数的隐式类型转换 这样可以避免不必要的错误 代码用例 public static explicit operator RMB float f uint yuan uint f uint jia
  • STM32 ADC详解

    目录 01 ADC简介 02 STM32的ADC外设 03 STM32ADC框图讲解 04 触发源 05 转换周期 06 数据寄存器 07 中断 08 电压转换 09 电路图设计 10 代码设计 01 ADC简介 ADC是Analog to
  • 给Linux扩充swap分区

    https blog csdn net u011109881 article details 73694700

随机推荐

  • 【计算机视觉

    文章目录 一 检测相关 1篇 1 1 SegmentAnything helps microscopy images based automatic and quantitative organoid detection and analy
  • vue-cli3项目打包后自动化部署到服务器

    一 安装 scp2 npm install scp2 save dev 二 写好脚本 例如 upload js 下面任选一个即可 位置和 package json平级即可 简略版 use strict 引入scp2 var client r
  • ctfhub 基础认证

    1 打开题目环境 2 点击click跳出来一个登录弹窗 随便输入用户名和密码登录试试 没有返回任何有用信息 3 查看附件 得到一堆密码 应该是要直接爆破 4 点击click抓包后发送到repeater模块 重新发包得到 Do u know
  • python global local nonlocla

    目录 What is the global keyword Rules of global Keyword Use Global Example 1 Accessing global Variable From Inside a Funct
  • redis-cli的安装

    1 下载redis cli 2 解压缩 3 简易配置 4 查看redis Cli的使用说明 5 常规连接指令 redis cli h 目标主机ip地址 p 端口号
  • {System.InvalidOperationException: 未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序。

    System InvalidOperationException 未在本地计算机上注册 Microsoft Ace OleDb 12 0 提供程序 在 System Data OleDb OleDbServicesWrapper GetDa
  • 前端面试-HTML5篇

    链接 https www nowcoder com questionTerminal 来源 牛客网 Question 6 描述一下 cookies sessionStorage 和 localStorage 的区别 cookit是网站为了标
  • ThreadPoolExecutor源码解析

    ThreadPoolExecutor源码解析 一 新建线程池的是构造方法 public ThreadPoolExecutor int corePoolSize int maximumPoolSize long keepAliveTime T
  • 超详细手把手教你App上线AppStore

    作为一个iOSer上线流程是不可或缺的技能 今天就带领大家重温上线流程 一 准备工作 已付费的开发者账号 开发者账号分为以下四种类型 个人 Individual 资费 99 年 公司 Company 99 年 企业 Enterprise 2
  • C# RichTextBox显示不同颜色文字

    region 日志记录 支持其他线程访问 public delegate void LogAppendDelegate Color color string text
  • C语言(关于unsigned char的几个问题)

    关于unsigned char unsigned char是char 的无符号类型 同char一样占用1个字节 存储范围为0 255 所存储的数据服从以下规律 数据服从于一个闭环 当我们输入0 255之间的数据之时 以0为起点 顺时针走向
  • CentOS安装MariaDB

    CentOS安装MariaDB 此处以CentOS 7 x86 64 安装MariaDB 10 2为例 MariaDB数据库是 MySQL 的一个分支 主要由开源社区在维护 采用 GPL 授权许可 MariaDB完全兼容 MySQL 包括A
  • Java并发测试中的发现

    这个程序是用来测试线程并发性用的 可以看出这个程序存在的问题还是很多的 1 共享变量count没有实现可见性 2 count 操作不是原子操作 内部可能发生重排序 我的目标是让结果为threadA和threadB的结果任何一个得出20000
  • mysql show tables like,带多个LIKE值的SHOW TABLES语句

    mysql gt SHOW TABLES like cms Tables in tianyan cms cms 1 row in set 0 00 sec Result mysql gt SHOW TABLES like cms or li
  • 火猴之产品组成热点图编程(firemonkey)

    效果图 用途 地图 产品组成 举例 以产品组成为例 如最近最火的机甲大师 思路 1 组件 TMSFMXHotSpotImage1 TMSFMXHTMLText1 2 加载背景 编辑热点区域 代码 操作 1 右键窗体 打开编辑热点窗口 2 加
  • Delphi游戏开发网址大全[转贴]

    Source Code http www codefans com CodeList Catalog 5 CodeTime Desc 1 html http www vscodes com sitemap html http www itl
  • 推荐4个Flutter重磅开源项目

    早上好 骚年 我是小 G 我的公众号 菜鸟翻身 会推荐 GitHub 上有用的项目 一分钟 get 一个优秀的开源项目 挖掘开源的价值 欢迎关注我 近年来 随着移动智能设备的快速普及 移动多端统一开发框架已成为一个热门话题 这里为你整理了
  • Tomcat配置虚拟目录

    一 直接在Tomcat的目录中配置虚拟目录 可能会出现的错误 当你输入地址 http localhost 端口号 demo 时可能会出现404 此时 可修改conf文件夹下的web xml中找到如下所示代码 将红框内false改为true即
  • React基础第一天-jsx

    React 基础 整体介绍 内容介绍 React 概述 JSX React 组件基础 React 介绍 目标 了解react的基本概念 是什么 React 官网 React 中文网 React 官网新版尝鲜 React 是用于构建用户界面的
  • 一起学nRF51xx 13 - twi & iic

    前言 在IIC总线是PHILIPS公司推出的一种串行总线 IIC总线有2根信号线SCK 时钟线 和SDA 数据线 NRF51822中所谓的TWI总线跟IIC总线兼容 这里统称为IIC总线 IIC总线规定了不同类型的从机拥有不同的IICADR