• 資料介紹
  • 資料預(yù)覽
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

AN5469 BlueNRG-LP、BlueNRG-LPS 定時(shí)器模塊

01/09 16:23
1359
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

AN5469 BlueNRG-LP、BlueNRG-LPS 定時(shí)器模塊

399.00 KB

BlueNRG-LP、BlueNRG-LPS 是超低功耗的 BLE 單模片上系統(tǒng),符合 Bluetooth?規(guī)范。其架構(gòu)核心是 32 位的 CortexM0+。

本文檔介紹管理 BlueNRG-LP、BlueNRG-LPS 鏈路控制器定時(shí)器軟件模塊的特性和功能。不同硬件定時(shí)器的詳細(xì)描述詳見在無線電控制器參考手冊。

定時(shí)器模塊庫由兩層不同程度的抽象組成,允許應(yīng)用程序對與設(shè)備喚醒、用戶超時(shí)或預(yù)配置的無線電事務(wù)觸發(fā)相關(guān)的事件進(jìn)行編程。

因此,任何 BLE 和私有無線電應(yīng)用均基于定時(shí)器模塊庫。

模塊描述

模塊包括四個(gè)文件 : rf_driver_hal_vtimer.c 、 rf_driver_hal_vtimer.h 、 rf_driver_ll_timer.c , 以 及rf_driver_ll_timer.h。這些文件代表將應(yīng)用程序與硬件分開的兩個(gè)層。

第一層通過允許虛擬化設(shè)備上可用資源的軟件結(jié)構(gòu)抽象硬件計(jì)時(shí)器。第二層直接連接到硬件,可將以“不依賴于硬件的單位”表示的時(shí)間轉(zhuǎn)換為“依賴于硬件的單位”,反之亦然。這些轉(zhuǎn)換考慮了硬件定時(shí)器的計(jì)數(shù)速率。

虛擬定時(shí)器

BlueNRG-LP、BlueNRG-LPS 鏈路控制器提供定時(shí)器計(jì)數(shù)器,用于喚醒處于低功耗模式階段的設(shè)備(而非用于觸發(fā)無線電操作)。

定時(shí)器模塊利用單個(gè)定時(shí)器的硬件資源,實(shí)現(xiàn)多個(gè)虛擬定時(shí)器的分配。

對虛擬定時(shí)器數(shù)量的唯一限制是設(shè)備上的可用內(nèi)存空間。

虛擬定時(shí)器類似于普通定時(shí)器。例如,用戶可以對虛擬定時(shí)器進(jìn)行編程,以便在特定的時(shí)間執(zhí)行某些動作。

從應(yīng)用程序的角度來看,虛擬定時(shí)器是一個(gè)軟件結(jié)構(gòu),除了到期時(shí)間外,還包含指向某些用戶數(shù)據(jù)和回調(diào)的指針。回調(diào)是在時(shí)間耗盡時(shí)執(zhí)行的例程。

該軟件抽象允許在應(yīng)用程序定義的虛擬定時(shí)器之間共享硬件定時(shí)器的功能(如下所述)。

虛擬定時(shí)器啟動后,其實(shí)例將被放置在按到期時(shí)間排序的隊(duì)列中。如果虛擬定時(shí)器先于隊(duì)列中的其他事件運(yùn)行,則將其置于頂部,并對硬件定時(shí)器進(jìn)行編程。否則,當(dāng)輪次達(dá)到時(shí),虛擬定時(shí)器會在其他已經(jīng)啟動的定時(shí)器之間發(fā)生。

當(dāng)一個(gè)虛擬定時(shí)器到期后,內(nèi)部狀態(tài)機(jī)負(fù)責(zé)執(zhí)行鏈接到剛剛到期的虛擬定時(shí)器的回調(diào),并為隊(duì)列中的下一個(gè)定時(shí)器保留硬件計(jì)數(shù)器。

虛擬定時(shí)器的超時(shí)被視為絕對時(shí)間。這意味著,它(例如)像日歷上某個(gè)特定時(shí)間的事件一樣發(fā)生。

虛擬時(shí)基

在定時(shí)器模塊內(nèi)部,時(shí)間根據(jù)系統(tǒng)時(shí)間單位(STU)進(jìn)行測量。它與硬件振蕩器的變化無關(guān),并直接暴露給用戶。各超時(shí)事件均以 STU 表示。一個(gè) STU 等于 625/256μs(約 2.4414μs),可以輕松表達(dá)藍(lán)牙協(xié)議規(guī)定的時(shí)間。只有在對真正的計(jì)數(shù)器進(jìn)行編程,以 STU 表示的時(shí)間才會在硬件定時(shí)器計(jì)數(shù)單元中進(jìn)行轉(zhuǎn)換。

以 STU 為單位的時(shí)間累積在一個(gè) 64 位長的全局變量上。如果一個(gè)數(shù)字手表每 24 小時(shí)溢出清零一次,則定時(shí)器模塊的時(shí)基需要一百多萬年才會溢出清零。

而從不溢出清零的時(shí)基由于能夠顯示事件的先后順序,以及判斷某事件是否為過去事件,因而具有相當(dāng)高的實(shí)用性。

然而,此類時(shí)基必須處理硬件定時(shí)器的有限長度,因此也被稱為“虛擬時(shí)基”。為了正確地累積時(shí)間,必須在每次硬件定時(shí)器溢出清零之前至少更新一次虛擬時(shí)基變量。

這一重要機(jī)制存在于內(nèi)部,不對用戶負(fù)責(zé),由一個(gè)專用的虛擬定時(shí)器保持活動狀態(tài),且該定時(shí)器在初始化階段由模塊自動待命。

此類特殊的虛擬定時(shí)器通過定時(shí)器硬件容量允許的最大可能值定期進(jìn)行編程。這意味著,處于低功耗模式的設(shè)備會被周期性喚醒,以執(zhí)行時(shí)基維護(hù)。BlueNRG-LP、BlueNRG-LPS 大約每 138 分鐘喚醒一次。

資料預(yù)覽

相關(guān)推薦