1. 程式人生 > >nrf51822藍芽學習筆記之例項分析PPI和SHORT

nrf51822藍芽學習筆記之例項分析PPI和SHORT

首先開啟PPI程式看到如下  刪除串列埠初始化部分方便檢視:


一、初始化定時器的方式

TIMER可以處於兩種模式:

1定時模式(Timer mode)

2計數模式(Counter mode)

兩種模式都可以通過觸發 啟動或停止 任務(START task or STOP task)來啟動或停止TIMER。

TIMER是計數方式是:count-up timer(向上計數):

Timer mode: 每個定時器週期(FTIMER) ,內部計數暫存器(Counter register ) +1.

Counter mode: 每次COUNT task被觸發的時候,Counter register +1.

此模式下,FTIMER和分頻係數就不起作用了。

TIMER可以通過位寬暫存器(BITMODE register)設定計數最大值(maximum value). 分頻和位寬暫存器(PRESCALER register and the BITMODE register)

只能在TIMER停止執行的時候對其進行修改,否則結果難以預料。

當計數超過了最大值時,計數暫存器會溢位,並自動從0重新開始計數。可通過執行CLEAR task 使TIMER清0。

比較和捕獲(Compare/Capture):

比較:每個捕獲比較暫存器(CC[0..3])都可以產生一個COMPARE event.當某個計數值計到與capture compare register CC[n]中的值相等時,就會產生一個COMPARE[n] event,這兩個n 是對應著的。

捕獲:每個capture/compare register都可以執行一個 capture task。每次capture[n] task被觸發,計數值都會被複制到CCP[n]暫存器

這裡Timer0  用的是定時模式而Timer1和Timer2都利用擴充套件一個比較事件用於觸發比較計時器清零事件。如圖



二、這裡利用了一個SHORT暫存器:Shortcuts:

作用:連結同一個外設的事件(event)和任務(task)的快捷方式,當事件發生的時候可以通過Shortcuts直接觸發任務。與PPI的功能類似,但是傳播時間比PPI更短。

快捷方式是被預先定義了的,使用者不可以通過軟體配置,使用者只能對其進行使能和關閉。一個快捷方式佔1位,每個外設最多32個快捷方式。

現在開始看PPI初始化函式:


關於TIME的事件暫存器和任務暫存器之前的關係:


 三、關於task和event暫存器描述理解

1、外設TASK暫存器 :

作用: 用來觸發外設的動作(actions),例如開始某個特定的行為。外設都能實現不同的Task,每個Task在該外設任務暫存器組(peripheral’s task register group) 中都有一個單獨的暫存器

觸發條件:可以通過軟體寫“1”到任務暫存器(task register)或者由外設本身或其他外設觸發相應的任務訊號來觸發某個TASK

2、外設Event暫存器:

作用:用來通知外設或CPU某個事件發生了,例如某個外設的狀態改變了。一個外設能夠產生多個Event,每個Event在事件暫存器組(peripheral’s event register group)中都有一個單獨的暫存器。

產生條件: 外設本身觸發了某個事件訊號(event signal),於是事件暫存器(event register)會更新用以反映該事件的發生。事件暫存器只有在軟體向其寫0的時候,才會被清零。

接下來的就看現象就知道PPI是怎麼回事了。最後附一張PPI和SHORT關係圖:


相關推薦

nrf51822學習筆記例項分析PPISHORT

首先開啟PPI程式看到如下  刪除串列埠初始化部分方便檢視: 一、初始化定時器的方式 TIMER可以處於兩種模式: 1定時模式(Timer mode) 2計數模式(Counter mode)

學習筆記例項廣播資料的解析

轉載自:https://blog.csdn.net/sinat_23338865/article/details/52170581 BLE 裝置工作的第一步就是向外廣播資料。廣播資料中帶有裝置相關的資訊。 本文主要說一下 BLE 的廣播中的資料的規範以及廣播包的解析,這是我們專案中的廣播資料

學習筆記建立連線的過程

傳送廣播資料包的叫廣播發起者(advertisers),在廣播通道接收廣播資料包但沒意向連線廣播發起裝置的叫掃描者( scanners), 需要連線到另一個裝置的裝置叫做 initiators,它監聽可連線的廣播資料包。如果advertiser正在使用一個可連線的廣播事件

數據結構與算法學習筆記如何分析一個排序算法?

編號 height href eight 代碼 [] www. 價值 它的 前言 現在IT這塊找工作,不會幾個算法都不好意思出門,排序算法恰巧是其中最簡單的,我接觸的第一個算法就是它,但是你知道怎麽分析一個排序算法麽?有很多時間復雜度相同的排序算法,在實際編碼中,那又如何

編譯原理學習筆記自上而下分析

一、自上而下分析法 從根部開始構造語法樹 自上而下分析法不能因為左遞迴存在而陷入死迴圈,不能產生回溯,即每一步推導的產生式必須是唯一的 1.消除左遞迴 左遞迴 形如A->Aa |b ,這種在建立分析樹時一直在左子樹死迴圈,因為推導的結果中最左還是A 或者多個

資料結構與演算法學習筆記如何分析一個排序演算法?

前言 現在IT這塊找工作,不會幾個演算法都不好意思出門,排序演算法恰巧是其中最簡單的,我接觸的第一個演算法就是它,但是你知道怎麼分析一個排序演算法麼?有很多時間複雜度相同的排序演算法,在實際編碼中,那又如何選擇呢?下面我們帶著問題一起學習一下。  正文 一、常見經典的排序方法 (圖片來自於一畫素)

TensorFlow學習筆記原始碼分析(3)---- retrain.py

"""簡單呼叫Inception V3架構模型的學習在tensorboard顯示了摘要。 這個例子展示瞭如何採取一個Inception V3架構模型訓練ImageNet影象和訓練新的頂層,可以識別其他類的影象。 每個影象裡,頂層接收作為輸入的一個2048維向量。這

Android 普通學習筆記

Android 普通藍芽學習 雖然做開發有一段時間了,但是有關藍芽方面一直接觸的不多,正好目前有一個關於藍芽開發的需求,雖然是用到的BLE和普通藍芽有些區別,但是既然學習了就順便把普通藍芽也學習一下,也為了以後自己少走些彎路,先將這些學習筆記學習下來。官方文件

TensorFlow學習筆記原始碼分析(1)----最近演算法nearest_neighbor

import numpy as np import tensorflow as tf # Import MINST data import input_data mnist = input_data.read_data_sets("/tmp/data/", one_hot

JFinal個人學習筆記原始碼分析3

上篇分析完了initActionMapping()的原始碼。JFinal原始碼裡初始化init方法還有: boolean init(JFinalConfig jfinalConfig, Serv

dbms_lob包學習筆記三:instrsubstr存儲過程

hello 字節數 TE bms HERE substring 成功 其中 oracle instr和substr存儲過程,分析內部大對象的內容 instr函數與substr函數 instr函數用於從指定的位置開始,從大型對象中查找第N個與模式匹配

Linux學習筆記1——文件目錄管理(硬連接軟連接)(連結檔,相當於快捷方式)

class 學習linux lock 訪問 接下來 所有 sdn ext test 在這節將要學習linux的連接檔,在之前用"ls -l" 查看文件屬性的命令時, 其中第二個屬性是連接數。那麽這個連接數是幹什麽的?這就要理解inode。 先說一下文件是怎麽存儲的。

Java學習筆記物件傳值引用總結

<strong><span style="font-size:18px;"> public class Test { public static void main(String[] args) { // TODO Auto-generated method s

SNMP學習筆記SNMPv3的配置認證以及TroubleShooting

  0x00 增加snmp v3使用者 增加使用者的時候,必須要停止SNMP服務。 # service snmpd stop # net-snmp-config --create-snmpv3-user -ro -a ttlsapwd -x DES -X ttlsades ttlsa

Java學習筆記——if條件語句三目運算子

一、if條件語句   語法: if(條件){     執行語句1;   }else{     執行語句2; }   二、三目運算子 ?    條件運算子 語法: 表示式?結果1:結果2;   如果表

Java學習筆記——if條件語句三目運算符

三目運算 img bubuko color if條件語句 最大 image mage true 一、if條件語句 語法: if(條件){   執行語句1; }else{   執行語句2; } 二、三目運算符 ? 條件運算符 語法: 表達式?結果1:

sklearn學習筆記決策樹分類線性迴歸

decisoin tree: # -*- coding: utf-8 -*- import sklearn from sklearn import tree import matplotlib.pyplot as plt from sklearn.model_selection impor

前端學習筆記js中apply()call()方法詳解

經過網上的大量搜尋,漸漸明白了apply()和call方法的使用,為此寫一篇文章記錄一下。 定義 apply()方法: Function.apply(obj,args)

機器學習筆記簡化成本函式梯度下降

Simplified Cost Function and Gradient Descent Note: [6:53 - the gradient descent equation should have a 1/m factor] We can compress our c

RedHatOpenStack學習筆記二RHOS專案使用者管理

RedHatOpenstack的專案和使用者管理 用firefox 訪問192.168.100.130, 登入dashboard 輸入admin/Redhatopenstack1,登入 使用舉例