PPI部分学习思维导图

PPI原理

1.1PPI简介

PPI实现的就是通过初始化配置,将不同外设的事件和任务连接起来,让事件自动去触发任务的功能,PPI有多个通道,

每个通道包含一个EEP和TEP,使用PPI连接外设事件和外设任务的时候,将外设事件寄存器的地址写入EEP,将外设任务

寄存器的地址写入到PPI通道的TEP,然后使能该PPI通道即可实现外设事件和外设任务的连接。

1.2预编程PPI通道

PPI中的通道20和通道31已经被预编程,这些PPI通道已经分配给了特定的外设事件和外设任务,CPU不能对这些通道进行

配置,但是CPU可以把他们加入到PPI组,也可以使能或禁止这些PPI通道。

详细见nRF52832数据手册

1.3PPI组

如果需要一个事件能同时触发多个任务或者一个任务能同时被多个事件触发,可以通过PPI组来实现。

相关寄存器

CHEN寄存器:使能或禁止PPI通道

CHENSET寄存器:用于使能PPI通道

CHENCLR寄存器:禁止PPI通道

PPI的应用步骤

3.1初始化PPI模块

uint32_t nrf_drv_ppi_init	(	void 		)

3.2分配PPI通道

PPI通道是由驱动来分配的,而不是应用程序指定的,当需要一个PPI通道的时候,调用nrf_drv_ppi_channel_alloc()函数

该函数会查找空闲的PPI通道,并将查找到的第一个PPI通道传递给函数的输入参数p_channel

uint32_t nrf_drv_ppi_channel_alloc	(	nrf_ppi_channel_t * 	p_channel	)

3.3配置PPI通道的EEP和TEP

uint32_t nrf_drv_ppi_channel_assign	(
nrf_ppi_channel_t channel, //PPI channel to be assigned endpoints
uint32_t eep, //事件寄存器的地址
uint32_t tep //任务寄存器的地址
)

地址的获得有两种方式

(1)从芯片的应用指南中查到

(2)通过调用外设的驱动函数来获得地址

如Timer0的COMPARE[0]事件寄存器地址获得

__STATIC_INLINE uint32_t nrf_drv_timer_event_address_get	(
nrf_drv_timer_t const *const p_instance,
nrf_timer_event_t timer_event
)

3.4使能PPI通道

uint32_t nrf_drv_ppi_channel_enable	(	nrf_ppi_channel_t 	channel	)

参考资料

1 艾克姆科技 《nRF52832开发教程》

nRF52832-PPI部分学习的更多相关文章

  1. 废旧鼠标先别丢,用来学习nRF52832 的QDEC

    刚发现nRF52832有一个 QDEC,SDK13.0中还有驱动,但是不太友好.  如果大家有废旧鼠标,建议拆一个编码器下来“学习”.鼠标的一般原理如下: 图一 图中那个SW4 ALPS EC10E  ...

  2. NRF52832学习笔记

    一.打印函数 printf("");用于在调试串口时在电脑端的串口调试工具上打印: 宏定义时每行后面的斜杠,在最后一行不加斜杠.

  3. CSS3与页面布局学习总结(四)——页面布局大全

    一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能 ...

  4. CSS3与页面布局学习笔记(四)——页面布局大全(负边距、双飞翼、多栏、弹性、流式、瀑布流、响应式布局)

    一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能 ...

  5. IOS学习之路--OC的基础知识

    1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...

  6. CSS3与页面布局学习总结(四)——页面布局大全BFC、定位、浮动、7种垂直居中方法

    目录 一.BFC与IFC 1.1.BFC与IFC概要 1.2.如何产生BFC 1.3.BFC的作用与特点 二.定位 2.2.relative 2.3.absolute 2.4.fixed 2.5.z- ...

  7. 手机端web学习基础--from慕课网

    web知识零零散散的知道一些,但总感觉不够系统,遇到问题不知道如何解决,因此特此来系统的学习一下web前端的知识.从慕课网的web基础看起.下面学习http://www.imooc.com/learn ...

  8. 各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式

    编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放 license收费等 ...

  9. Github上PHP资源汇总大全,php学习的好资料

    Github上PHP资源汇总大全,php学习的好资料 国外程序员ziadoz 在Github上收集整理了PHP的各种资源,内容包括模板.框架.数据库.安全等方面的库和工具.汇总了各种PHP资源,供各位 ...

随机推荐

  1. git小技巧--如何从其他分支merge个别文件或文件夹

    在实际工作中,一个大型的项目或版本迭代可能不是一次上线,可能会分好几次上线,这时候就会涉及创建多个分支,进行分别开发. 创建分支 功能分为2个分支,分别为A.B. A上面有个列表页功能 B上面有个详情 ...

  2. socket - option编程:SO_REUSEADDR

    网友vmstat多次提出了这个问题:SO_REUSEADDR有什么用处和怎么使用.而且很多网友在编写网络程序时也会遇到这个问题.所以特意写了这么一篇文章,希望能够解答一些人的疑难. 其实这个问题在Ri ...

  3. API网关性能比较:NGINX vs. ZUUL vs. Spring Cloud Gateway vs. Linkerd(转)

    前几天拜读了 OpsGenie 公司(一家致力于 Dev & Ops 的公司)的资深工程师 Turgay Çelik 博士写的一篇文章(链接在文末),文中介绍了他们最初也是采用 Nginx 作 ...

  4. C#.Net环境下的缓存技术

    转载:https://www.cnblogs.com/lvjy-net/p/8297679.html 一.缓存技术本节将介绍以下技术: 使用Asp.Net缓存: 使用Remoting Singleto ...

  5. 【题解】 Luogu P4312 / SP4155 [COCI 2009] OTOCI / 极地旅行社

    原题地址:P4312 [COCI 2009] OTOCI / 极地旅行社/SP4155 OTOCI - OTOCI lct入门难度的题,十分弱智(小蒟蒻说lct是什么,能吃吗?) bridge操作判联 ...

  6. python简说(七)元组,集合

    一.元组 元组也是一个list,但是它的值不能改变 定义元组的时候,只有一个元素,后面得加逗号 oracle_info = (123,) 二.集合 1.集合天生就可以去重,集合是无序的 2.#交集 r ...

  7. DPAA1是如何辅助cpu进行网络加速的?

    1.为何会出现DPAA1? 1.1 如果没有多核处理器的出现可能就不会出现这个东东了! 1.2 怎么会跟多核处理器扯上关系呢? 1.2.1 先聊聊单核处理器会怎么处理网络包呢? 单核同一时刻只能处理一 ...

  8. UVA 818 Cutting Chains(状压 + 暴搜)题解

    题意:有1~n个小环,他们中的有些互相扣在一起,问你至少切开几个能把这写小环串成一条链 思路:还是太菜了,题目给的n<=15,显然可以暴力解决. 用二进制表示每个环切还是不切,然后搜索所有情况. ...

  9. Calculate difference between consecutive data points in a column from a file

    cat > temp0015101269125  awk 'p{print $0-p}{p=$0}' temp00152-633-7 REF: https://www.unix.com/shel ...

  10. C# this.Invoke和this.BeginInvoke 最简单的写法

    https://blog.csdn.net/gtosky4u/article/details/20118813 this.BeginInvoke(new EventHandler(delegate { ...