国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

帶響應的周期性廣播 (PAwR):實用指南

jf_14701710 ? 來源:jf_14701710 ? 作者:jf_14701710 ? 2025-08-21 08:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

帶響應的周期性廣播(PAWR)藍牙 5.4的一項新功能。它擴展了藍牙 5.0 中的周期性廣播協(xié)議。周期性廣播是指設備以確定的時間發(fā)送廣播數(shù)據(jù),現(xiàn)在可以進行雙向通信接收器可將響應有效載荷傳送回advertiser。有了 PAwR,現(xiàn)在就可以建立一個超大型的一對多雙向網(wǎng)絡,并以極低的功耗運行。在許多應用中,人們必須通過雙向通信管理成百上千個能源受限的設備,例如電子貨架標簽(ESL)、傳感器網(wǎng)絡、倉庫管理等。讓我們深入了解這項非常有趣的新技術。

1. PAwR 如何工作

1.1 廣播類型

藍牙 5.4 在邏輯傳輸層上定義了三種主要的廣告類型: 廣播(Advertising Broadcast, ADVB), 周期性廣播(Periodic Advertising Broadcast, PADVB), 和帶響應的周期性廣播 (Periodic Advertising with Responses, PAwR)。這些廣播協(xié)議允許advertiser向周圍任意數(shù)量的scanner廣播數(shù)據(jù),僅受advertiser射頻范圍的限制。

藍牙 LE 傳統(tǒng)廣播和藍牙 LE 擴展廣播都屬于 ADVB。在這些模式中,廣播是不規(guī)則的,數(shù)據(jù)只向一個方向發(fā)送。在大多數(shù)情況下,scanner需要有充足的電源,因為scanner和broadcaster之間沒有時間同步。此外,為避免advertiser之間的定時碰撞,廣播間隔會有 0-10 毫秒的隨機延遲。這就要求scanner具有較大的 RX 窗口,因此需要消耗更多的電流

與 ADVB 不同,周期性廣播(PADVB)進行定期且精確的定時廣播。scanner和advertiser之間有時間同步。PADVB 不使用 ADVB 的 0-10 毫秒隨機延遲。因此,scanner只需監(jiān)聽一段非常短且可預測的時間。利用周期性廣播建立一個大型的一對多低功耗網(wǎng)絡是可能的,例如音頻廣播、測向、物聯(lián)網(wǎng)網(wǎng)絡等。然而,缺少的是低功耗scanner只能接收數(shù)據(jù),而不能將數(shù)據(jù)發(fā)送回advertiser。

PAwR 的推出就是為了解決這個問題。它允許advertiser發(fā)送精確的常規(guī)廣播數(shù)據(jù),同時允許scanner向advertiser發(fā)送響應有效載荷。此外,在需要更高的吞吐量時,它還為advertiser提供了與scanner建立藍牙(Bluetooth LE)連接的機制。

1.2 時間

與其他類型的廣播類似,PAwR 的運行間隔稱為周期性廣播間隔(Periodic Advertising Interval)。它在準確的時間間隔內發(fā)生,沒有隨機延遲。每個 PAwR 事件都會有多個子事件。這與 PADVB 不同,在 PADVB 中,每個事件只有一個周期性廣播數(shù)據(jù)包。重要的是,同步到 PAwR 的scanner不會監(jiān)聽所有子事件,只會選擇它訂閱/同步到的子事件。多個scanner可以訂閱同一個子事件。這意味著一臺scanner可以訂閱多個子事件。每個廣播事件最多可以有 128 個子事件。

放大其中一個子事件,在事件開始時,有一個來自advertiser的傳輸包。它可以是:

AUX_SYNC_SUBEVENT_IND - 周期性廣播包.

AUX_CONNECT_REQ - advertiser的連接請求.

與該子事件同步的所有scanner都會掃描該數(shù)據(jù)包并處理有效載荷。數(shù)據(jù)包發(fā)出后,會有一列響應槽供scanner將其響應發(fā)送回advertiser。響應槽最多可達 256 個。在哪個響應槽上發(fā)送哪個scanner由應用程序/配置文件決定。為避免碰撞,一個響應槽中只能有一個scanner響應。

這是 PAwR 的 R 部分,是與普通周期性廣播的主要區(qū)別。這樣就能以極低的功耗形成超大型雙向一對多網(wǎng)絡。可以發(fā)現(xiàn),scanner/observer只需在每個周期性廣播間隔喚醒一次,以掃描子事件傳輸包。如果它有數(shù)據(jù)提供給advertiser,就可以在其中一個響應時隙進行傳輸,然后再次休眠。由于并非所有scanner都需要同時發(fā)送數(shù)據(jù),因此一個advertiser可以為大量scanners提供服務。延遲時間很短;可低至周期性廣播間隔,根據(jù)advertiser的配置,間隔時間在 7.5ms 至 81.91875s 之間。

這里的限制是吞吐量。如果scanner需要傳輸或接收大量數(shù)據(jù),可能會受到廣播時間間隔的限制。如上所述,廣播時間間隔最長可達 81.91875 秒,將廣播時間間隔改為更短的時間間隔需要更新所有scanner以同步到新的時間間隔。在大多數(shù)情況下,這是不現(xiàn)實的。

解決這個問題的辦法是在scanner和advertiser之間建立藍牙 LE 連接。PAwR 支持在不使用傳統(tǒng) ADVB 的情況下建立連接。為了啟動連接,advertiser在子事件傳輸包中發(fā)送 AUX_CONNECT_REQ 包,而不是 AUX_SYNC_SUBEVENT_IND 包。AUX_CONNECT_REQ 包含scanner的地址和scanner進入藍牙 LE 連接時應使用的連接參數(shù)。待連接的scanner將以 AUX_CONNECT_RSP 作為回應。該響應應在 AUX_CONNECT_REQ 數(shù)據(jù)包之后立即發(fā)送,無需等待響應時隙。隨后將立即建立藍牙 LE 連接。advertiser將成為中心,scanner將成為外圍。通過這種分離的藍牙 LE 連接,它們可以以更高的吞吐量進行通信。

1.3 同步

要跟蹤周期性廣播并訂閱子事件,scanner需要從advertiser處獲得同步和 PAwR 信息。獲取同步信息的程序與普通周期性廣播PADVB 類似。scanner可以通過掃描擴展廣播數(shù)據(jù)包 ADV_EXT_IND 來獲取信息:

或者通過建立連接并執(zhí)行周期性廣播同步傳輸 (PAST) 程序。

這兩種方法各有利弊。掃描擴展廣播數(shù)據(jù)包 ADV_EXT_IND 不需要連接,但它要求scanner能夠進行連續(xù)掃描以捕捉廣播數(shù)據(jù)包。相比之下,使用 PAST 進行連接并接收定時信息可適用于電源有限的scanner儀,因為它只要求scanner進行正常的藍牙 LE 廣播。不過,這對advertiser的無線電調度要求更高,因為advertiser需要同時進行周期性廣播和掃描以建立藍牙 LE 連接。advertiser可以決定不做 ADV_EXT_IND,只做周期性廣播 AUX_SYNC_SUBEVENT_IND。這是為了減少advertiser的工作量。在這種情況下,PAST 是同步scanner的唯一選擇。

與 PADVB 相比,除了 SyncInfo(周期性廣播間隔、同步Packet Window Offset)外,還有一些專門用于 PAwR 的額外信息需要交換:

ACAD- Additional Controller Advertising Data:

響應訪問地址

子事件數(shù)量

子事件間隔

響應時隙延遲

響應槽間隔

您可能會發(fā)現(xiàn),這些程序中沒有定義scanner應訂閱哪些子事件或響應槽的信息。這就需要應用程序/上層來決定scanner應如何獲取有關子事件和響應槽的信息。例如,在執(zhí)行 PAST 時配置響應槽,或對scanner進行硬編碼,使其根據(jù)自身地址自動選擇響應槽。

2. PAwR 優(yōu)勢和局限

2.1 優(yōu)勢

一對多拓撲結構中的雙向通信. PAwR 為藍牙產(chǎn)品增加了一個重要的缺失部分:大規(guī)模雙向一對多網(wǎng)絡。在藍牙 5.4 之前,常見的藍牙網(wǎng)絡拓撲結構如下:

一對一。一個外設連接一個中心。

一對多,星形網(wǎng)絡。一個中心可以連接多個外圍設備,但鏈接數(shù)量有限,通常每個中心的連接數(shù)少于 20 個。

一對多廣播。一個advertiser可以向許多觀observers廣播數(shù)據(jù)。observers的數(shù)量可以非常多,但數(shù)據(jù)只能單向傳播,即從advertiser到observer。

多對多,mesh。mesh網(wǎng)絡可提供大規(guī)模雙向網(wǎng)絡。不過,它需要由backbone節(jié)點組成的基礎設施來中繼信息。這些backbone節(jié)點通常需要主電源。連接的mesh網(wǎng)絡可以作為一種解決方案,但它可能比較復雜和僵化。

使用 PAwR,只需一個簡單的同步程序,即可建立一個擁有數(shù)百或數(shù)千個節(jié)點的一對多網(wǎng)絡。一個廣告商就可以管理與數(shù)千臺設備之間的數(shù)據(jù)收發(fā)任務。這里的亮點在于,這種雙向通信是以同步方式進行的,沒有泛洪或潛在的碰撞。

廣播數(shù)據(jù)可以頻繁更改。PAwR 允許頻繁更改廣播數(shù)據(jù)。特別是,主機可以精確控制哪個數(shù)據(jù)包將進入哪個廣播子事件。這是 ADVB 和 PADVB 所不具備的。使用 ADVB 和 PADVB 時,您可以隨時間更新廣播數(shù)據(jù),但數(shù)據(jù)是重復發(fā)送的,而且您對廣播進行時如何更新數(shù)據(jù)的控制也很有限。使用 PAwR 時,控制器會請求主機(應用程序)在每次廣播事件中更新數(shù)據(jù)。應用程序可以更新每個廣播事件中的每個子事件廣播數(shù)據(jù)包。

advertiser可與scanner建立藍牙 LE 連接。當對等設備需要傳輸大量數(shù)據(jù),而 PAwR 有限的吞吐量無法滿足要求時,例如向 ESL 標簽傳輸顯示圖像時,就會使用這種連接。它與普通的藍牙 LE 連接略有不同,不是由scanner,而是由周期性advertiser決定與scanner建立連接。它選擇應該連接哪個scanner。這樣做是有道理的,因為這樣可以避免大量節(jié)點同時發(fā)布連接廣播,造成廣播信道擁塞。此外,它還允許advertiser安排新的連接,以免與正在進行的 PAwR 活動相沖突。

低功耗運行,但仍有相對較低的延遲。scanner的功耗與正常藍牙 LE 連接時的功耗相似。這意味著超低功耗。設備可以使用紐扣電池運行數(shù)年,延遲時間等于網(wǎng)絡的周期性廣播間隔。

2.2 局限

該網(wǎng)絡依靠一個advertiser作為網(wǎng)關/接入點。這意味著網(wǎng)絡中的所有節(jié)點都必須在advertiser的覆蓋范圍內。可以通過多個advertiser來擴展網(wǎng)絡,但規(guī)范并沒有定義如何建立這樣的網(wǎng)絡。

吞吐量有限。advertiser需要為大量節(jié)點提供服務,與普通藍牙 LE 連接相比,數(shù)據(jù)吞吐量相對較低,具體取決于廣播間隔和響應槽的大小。

每個scanner可能沒有足夠的響應槽。多個scanner可以同步到同一個子事件,而子事件中的每個節(jié)點往往沒有足夠的響應槽。應用程序需要定義scanner應如何輪流向接入點發(fā)送數(shù)據(jù)。

PAwR 的設計將大部分復雜性放在了advertiser接入點一方。advertiser必須足夠強大,才能同時處理 PAwR 廣告、連接處理和節(jié)點管理任務。

PAwR 只處理堆棧的低端。它沒有規(guī)定網(wǎng)絡的高級功能,如流量控制、數(shù)據(jù)包確認、加密、身份驗證等。上層有責任為應用定制這些功能。

3. 在 nRF Connect SDK 中實現(xiàn)

本節(jié)主要介紹如何在 nRF Connect SDK 中實現(xiàn) PAwR 應用程序。nRF Connect SDK 在 v2.4.0 中添加了兩對示例來演示 PAwR。我們將深入代碼,了解 PAwR 在這些示例中是如何實現(xiàn)的。

帶響應的周期性廣播(PAwR) advertiser和同步 (periodic_adv_rsp& periodic_sync_rsp):

advertiser會定期發(fā)布廣播并掃描 PAST advertiser。建立藍牙 LE 連接后,它將發(fā)送 PAST 信息,然后發(fā)送子事件信息。

開始時,observer/scanner會做廣播以獲取 PAST 信息。同步后,它將收到子事件信息,從而知道應該監(jiān)聽哪個子事件。

周期性廣播連接程序 - 發(fā)起方和響應方 (periodic_adv_conn& periodic_sync_conn):

advertiser只做周期性廣播,不做 PAST。

observer/scanner掃描擴展廣播數(shù)據(jù)包并同步。同步后,它會在 PAwR 響應中向advertiser發(fā)送地址,以便advertiser通過 AUX_CONNECT_REQ 建立連接。有關子事件的信息是硬編碼。

3.1 廣播

讓我們仔細看看 periodic_adv_rsp 示例中是如何設置周期性廣播的:

pei:

#define NUM_RSP_SLOTS 5
#define NUM_SUBEVENTS 5

static const struct bt_le_per_adv_param per_adv_params = {
    .interval_min = 0xFF,
	.interval_max = 0xFF,
	.options = 0,
	.num_subevents = NUM_SUBEVENTS,
	.subevent_interval = 0x30,
	.response_slot_delay = 0x5,
	.response_slot_spacing = 0x50,
	.num_response_slots = NUM_RSP_SLOTS,
};
struct bt_le_ext_adv *pawr_adv;
static const struct bt_le_ext_adv_cb adv_cb = {
	.pawr_data_request = request_cb,
	.pawr_response = response_cb,
};

配置子事件和響應槽時間參數(shù)時需要格外注意。

廣播間隔應≥ subevent_interval * NUM_SUBEVENTS。

子事件間隔應≥ response_slot_delay + response_slot_spacing*NUM_RSP_SLOT

否則將收到錯誤 12 BT_HCI_ERR_INVALID_PARAM。

設置并開始廣播:

/* Create a non-connectable non-scannable advertising set */
bt_le_ext_adv_create(BT_LE_EXT_ADV_NCONN, &adv_cb, &pawr_adv);
/* Set periodic advertising parameters */
bt_le_per_adv_set_param(pawr_adv, &per_adv_params);
/* Enable Periodic Advertising */
bt_le_per_adv_start(pawr_adv);
/* Start Periodic Advertising */
bt_le_ext_adv_start(pawr_adv, BT_LE_EXT_ADV_START_DEFAULT);

在 bt_le_ext_adv_start() 之后,advertiser將進行擴展廣播和 PAwR。這包括圖 4 所示的數(shù)據(jù)包:ADV_EXT_IND、AUX_ADV_IND 和 AUX_SYNC_SUBEVENT_IND。

如上一節(jié)所述。advertiser可以選擇不做擴展廣播(ADV_EXT_IND 和 AUX_ADV_IND),只做周期性廣播。這將有助于減少advertiser的額外廣播活動,從而為更多連接/響應提供服務。要停止擴展廣播,可在周期性廣播開始后調用 bt_le_ext_adv_stop()。這不會停止周期性廣播。要停止周期性廣播,您需要調用 bt_le_per_adv_stop()。


注意:大多數(shù)嗅探器依靠擴展廣播的 Syncinfo 來跟蹤周期性廣播train。如果關閉擴展廣播,嗅探器就無法找到周期性廣播數(shù)據(jù)包。

周期性advertiser有 2 個回調:

pawr_data_request: 當有緩沖區(qū)可供advertiser更新子事件數(shù)據(jù)包內容時調用。通常,每個要更新的子事件插槽都會收到一個回調。在本例中,代碼只需在每個子事件中將計數(shù)器增加一個即可。

pawr_response: 當某個scanner對某個子事件做出響應時調用。在示例中,scanner只需回傳它在子事件數(shù)據(jù)包中收到的內容。

這些是與普通廣播或周期性廣播的主要區(qū)別。您現(xiàn)在可以控制精確廣播數(shù)據(jù)包(子事件數(shù)據(jù)包)的有效載荷。此外,您還可以從scanner中獲取響應數(shù)據(jù),這在其他類型的廣播中是無法通過掃描請求獲得的。

3.2 同步

要實現(xiàn)同步,需要擴展廣播或 PAST。如果要使用 PAST,則需要掃描普通廣播以建立藍牙 LE 連接,然后再使用 PAST。建立連接后,需要調用 bt_le_per_adv_set_info_transfer()。這將向scanner發(fā)送同步信息和 PAwR 信息。

在 periodic_adv_rsp 示例中,您可以找到一條寫入命令,用于發(fā)送一些有關scanner子事件編號和響應槽編號的專有數(shù)據(jù)(sync_config)。至于如何發(fā)送,則由應用程序自行決定。

以下代碼來自 periorid_adv_rsp。達到同步設備的最大數(shù)量后,advertiser會停止掃描。

while (num_synced < MAX_SYNCS) {
	err = bt_le_scan_start(BT_LE_SCAN_PASSIVE, device_found);
	if (err) {
		printk("Scanning failed to start (err %d)n", err);
		return 0;
	}

	printk("Scanning successfully startedn");

	k_sem_take(&sem_connected, K_FOREVER);

	err = bt_le_per_adv_set_info_transfer(pawr_adv, default_conn, 0);
	if (err) {
		printk("Failed to send PAST (err %d)n", err);

		goto disconnect;
	}

	printk("PAST sentn");

	discover_params.uuid = &pawr_char_uuid.uuid;
	discover_params.func = discover_func;
	discover_params.start_handle = BT_ATT_FIRST_ATTRIBUTE_HANDLE;
	discover_params.end_handle = BT_ATT_LAST_ATTRIBUTE_HANDLE;
	discover_params.type = BT_GATT_DISCOVER_CHARACTERISTIC;
	err = bt_gatt_discover(default_conn, &discover_params);
	if (err) {
		printk("Discovery failed (err %d)n", err);

		goto disconnect;
	}

	printk("Discovery startedn");

	err = k_sem_take(&sem_discovered, K_SECONDS(10));
	if (err) {
		printk("Timed out during GATT discoveryn");

		goto disconnect;
	}

	sync_config.subevent = num_synced % NUM_SUBEVENTS;
	sync_config.response_slot = num_synced / NUM_RSP_SLOTS;
	num_synced++;

	write_params.func = write_func;
	write_params.handle = pawr_attr_handle;
	write_params.offset = 0;
	write_params.data = &sync_config;
	write_params.length = sizeof(sync_config);

	err = bt_gatt_write(default_conn, &write_params);
	if (err) {
		printk("Write failed (err %d)n", err);
		num_synced--;

		goto disconnect;
	}

	printk("Write startedn");

	err = k_sem_take(&sem_written, K_SECONDS(10));
	if (err) {
		printk("Timed out during GATT writen");
		num_synced--;

		goto disconnect;
	}

	printk("PAwR config written to sync %d, disconnectingn", num_synced - 1);

disconnect:
	err = bt_conn_disconnect(default_conn, BT_HCI_ERR_REMOTE_USER_TERM_CONN);
	if (err) {
		return 0;
	}

	k_sem_take(&sem_disconnected, K_FOREVER);
	}

發(fā)送傳輸信息后,advertiser 會直接斷開連接。它不知道scanner是否與 PAwR 列車同步。可以通過在斷開連接前添加延遲或最好在斷開連接前收到scanner的響應來改善這種情況。您可以在本指南末尾提供的代碼中找到添加的延遲。

在scanner方面,如果查看 perioridc_sync_conn 樣本,就會發(fā)現(xiàn)它是如何注冊 PAwR 并掃描包含同步和 PAwr 信息的擴展廣播數(shù)據(jù)包的。

bt_le_scan_cb_register(&scan_callbacks);
bt_le_per_adv_sync_cb_register(&sync_callbacks);

err = bt_le_scan_start(BT_LE_SCAN_ACTIVE, NULL);
if (err) {
	printk("failed (err %d)n", err);

return 0;
}

請注意,在捕獲擴展廣播數(shù)據(jù)包后,您需要創(chuàng)建同步對象,以便scanner可以開始跟蹤周期性廣播數(shù)據(jù)包。要創(chuàng)建同步對象,需要調用 bt_le_per_adv_sync_create()。這將允許您在scanner同步到周期性廣播(而非 PAwR)時接收 bt_le_per_adv_sync_cb.synced 回調:

{
struct bt_le_per_adv_sync_subevent_params params;
uint8_t subevents[1];
char le_addr[BT_ADDR_LE_STR_LEN];
int err;

bt_addr_le_to_str(info->addr, le_addr, sizeof(le_addr));
printk("Synced to %s with %d subeventsn", le_addr, info->num_subevents);

params.properties = 0;
params.num_subevents = 1;
params.subevents = subevents;
subevents[0] = 0;
err = bt_le_per_adv_sync_subevent(sync, ?ms);
if (err) {
	printk("Failed to set subevents to sync to (err %d)n", err);
}

k_sem_give(&sem_per_sync);
}

正如您在代碼中發(fā)現(xiàn)的,同步后,如果您想接收 PAwR 子事件數(shù)據(jù)包,您需要調用 bt_le_per_adv_sync_subevent() 來訂閱一個或多個子事件。在本示例中,要訂閱的子事件被硬編碼為子事件 0,該子事件中的響應槽也被硬編碼為 0(參見 recv_cb 函數(shù))。

樣本將設備地址發(fā)送給advertiser,然后等待advertiser的連接(通過 AUX_CONNECT_REQ 連接 v2)。這是本應用程序特有的功能。調用 bt_le_per_adv_set_response_data(),其中包含要發(fā)送數(shù)據(jù)的子事件和響應槽。

static void recv_cb(struct bt_le_per_adv_sync *sync,
		const struct bt_le_per_adv_sync_recv_info *info, struct net_buf_simple *buf)
{
	int err;
	struct bt_le_oob oob;
	char addr_str[BT_ADDR_LE_STR_LEN];

	if (default_conn) {
		/* Only respond with address if not already connected */
		return;
	}

	if (buf && buf->len) {
		/* Respond with own address for the advertiser to connect to */
		net_buf_simple_reset(&rsp_buf);

		rsp_params.request_event = info->periodic_event_counter;
		rsp_params.request_subevent = info->subevent;
		rsp_params.response_subevent = info->subevent;
		rsp_params.response_slot = 0;

		err = bt_le_oob_get_local(BT_ID_DEFAULT, &oob);
		if (err) {
			printk("Failed to get OOB data (err %d)n", err);

			return;
		}

		bt_addr_le_to_str(&oob.addr, addr_str, sizeof(addr_str));
		printk("Responding with own addr: %sn", addr_str);

		net_buf_simple_add_u8(&rsp_buf, sizeof(bt_addr_le_t));
		net_buf_simple_add_u8(&rsp_buf, BT_DATA_LE_BT_DEVICE_ADDRESS);
		net_buf_simple_add_mem(&rsp_buf, &oob.addr.a, sizeof(oob.addr.a));
		net_buf_simple_add_u8(&rsp_buf, oob.addr.type);

		err = bt_le_per_adv_set_response_data(sync, &rsp_params, &rsp_buf);
		if (err) {
			printk("Failed to send response (err %d)n", err);
		}
	} else if (buf) {
		printk("Received empty indication: subevent %dn", info->subevent);
	} else {
		printk("Failed to receive indication: subevent %dn", info->subevent);
	}
}

3.3 連接 v2

當 PAwR advertiser 需要以更高的吞吐量或更低的延遲與scanner通信時,可以決定連接到同步scanner。為此,advertiser 需要獲得scanner設備的地址和scanner監(jiān)聽的子事件。要建立連接,需要調用 bt_conn_le_create_synced():

bt_addr_le_to_str(&peer, addr_str, sizeof(addr_str));
printk("Connecting to %s in subevent %dn", addr_str, info->subevent);

synced_param.peer = &peer;
synced_param.subevent = info->subevent;

/* Choose same interval as PAwR advertiser to avoid scheduling conflicts */
conn_param.interval_min = SUBEVENT_INTERVAL;
conn_param.interval_max = SUBEVENT_INTERVAL;

/* Default values */
conn_param.latency = 0;
conn_param.timeout = 400;

err = bt_conn_le_create_synced(adv, &synced_param, &conn_param, &default_conn);
if (err) {
	printk("Failed to initiate connection (err %d)", err);
}

在進行連接 v2 時,沒有掃描超時的概念,bt_conn_le_create_synced() 命令的結果會在下一個周期性廣播間隔中返回回調。

注意:建議選擇連接時間間隔等于或大于子事件時間間隔。這將減少調度配置,從而提高吞吐量。

4. 低功耗示例

附件是稍作修改的 periodic_adv_rsp 和 periodic_sync_rsp 示例。advertiser 將掃描并建立藍牙 LE 連接,以發(fā)送 PAST 信息和子事件信息。scanner與advertiser 同步后,將在每個廣播間隔發(fā)送數(shù)據(jù)。

主要修改是關閉scanner上的 UART 日志記錄,并在響應中添加更多有意義的數(shù)據(jù)。scanner會在每個響應槽發(fā)送其內部溫度。advertiser 略有改動,使其在更長的廣播間隔時間內更加穩(wěn)健。代碼的主要目的是展示scanner(傳感器)在不同周期性廣播間隔下的低功耗。

您可以在此處下載演示源代碼(在 nRF Connect SDK v2.5.0 上進行了測試): 8562.PAwR_Demo.zip

運行示例時,您將在advertiser 一側看到每個scanner的溫度報告:

wKgZPGimbPSAIRD3AADHsGLhA-A46.jpeg

與 periodic_adv_rsp 相同,advertiser 只支持每個子事件一個scanner。但可以修改代碼,使每個子事件支持更多scanner或增加子事件的數(shù)量。您需要決定同一子事件中的scanner應如何發(fā)送響應的邏輯;通常情況下,每個子事件的響應槽數(shù)量小于scanner數(shù)量。

以下是scanner在不同周期性廣播間隔(從 100 毫秒到 1 秒再到 10 秒)下的功率測量結果。這就改變了scanner的延遲時間。延遲時間越長,功耗越低。

每隔 100 毫秒輸出 80uA 電流,每個子事件有 4 個字節(jié)的響應。

每個子事件以 1 秒間隔 15uA 響應 4 個字節(jié)。

7.3uA 間隔 10 秒,每個子事件響應 4 個字節(jié)。

在相對較低的 1 秒延遲時間內,可以實現(xiàn) 15uA 的超低功耗。我們可以使用容量為 250mAh 的 CR2032 電池進行粗略計算。如果我們能將 70% 的容量用于藍牙 LE,那么它的壽命為 250mAh * 70% / 15uA = 12500 小時 = 520 天。

5. 總結

PAwR 是藍牙 LE 的一項令人興奮的新功能。它增強了周期性廣播協(xié)議,可能會為藍牙 LE 技術在新的商業(yè)垂直領域打開大門。藍牙 LE 和 PAwR 使許多曾經(jīng)無法實現(xiàn)或過于復雜的應用變得可行。我們很高興看到它將如何實施,并隨時準備幫助您將這項技術推向市場。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 藍牙
    +關注

    關注

    119

    文章

    6312

    瀏覽量

    178690
  • 低功耗
    +關注

    關注

    12

    文章

    3438

    瀏覽量

    106691
  • 藍牙5.0
    +關注

    關注

    9

    文章

    89

    瀏覽量

    28742
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    KT6368A藍牙芯片在廣播間隙導致的電源抖動引起mcu被喚醒說明

    10mA,休眠約 490ms、電流趨近于 0,500ms 廣播周期平均功耗 180uA),正常情況下 3.3V 供電且載能力合適時不會出現(xiàn)電源抖動,但需留意 10mA 瞬間電流可能引發(fā)的電源波動,極端情況或喚醒外圍 MCU。
    的頭像 發(fā)表于 11-26 20:55 ?536次閱讀
    KT6368A藍牙芯片在<b class='flag-5'>廣播</b>間隙導致的電源抖動引起mcu被喚醒說明

    RTC Alarm組件在設定新時間后周期性分鐘和小時鬧鐘無響應是怎么回事?

    若設置時間比當前時間大則導致鬧鐘過時無法設置RTC回調導致鬧鐘無響應 若設置時間比當前時間小會導致鬧鐘在時鐘更新到設置時間之前都有中空間隔無鬧鐘響應故修改成直接設置為當前時間,當過時后再更新鬧鐘
    發(fā)表于 09-29 07:40

    藍牙 v5.4 概述 (PAwR, EAD, ESL, LE Gatt)

    的應用,如零售、資產(chǎn)跟蹤和智慧家居環(huán)境。 主要優(yōu)勢包括: 與數(shù)千個終端節(jié)點進行雙向通信 響應周期性廣播 (PAwR) 加密
    發(fā)表于 08-31 21:25

    高溫振動傳感器在600°C環(huán)境下工作時,輸出信號出現(xiàn)周期性噪聲干擾,可能的原因有哪些?如何解決?

    高溫振動傳感器在600°C環(huán)境下工作時,輸出信號出現(xiàn)周期性噪聲干擾,可能的原因有哪些?如何解決?
    的頭像 發(fā)表于 08-05 10:13 ?956次閱讀
    高溫振動傳感器在600°C環(huán)境下工作時,輸出信號出現(xiàn)<b class='flag-5'>周期性</b>噪聲干擾,可能的原因有哪些?如何解決?

    STM32G474進入Fault3中斷沒辦法設置成周期性觸發(fā)嗎?

    到最低也不行。想請教下,進入Fault3中斷沒辦法設置成周期性觸發(fā)嗎?這種持續(xù)觸發(fā)中斷的方式使程序在中斷里出不來怎么辦呢?即使把Fault3中斷優(yōu)先級設置到最低15而FreeRTOS的基本時鐘優(yōu)先級
    發(fā)表于 08-01 07:23

    藍牙無線通訊-藍牙5.4概述

    ? ** PAwR響應周期性廣播)** ?:支持無連接模式下的雙向通信,廣播數(shù)據(jù)時允許
    發(fā)表于 07-31 15:58

    學校SIP廣播對講解決方案

    學校 SIP 廣播對講系統(tǒng)解決方案**** 一、方案背景與目標 隨著校園信息化建設推進,傳統(tǒng)廣播系統(tǒng)存在布線復雜、功能單一、應急響應滯后等問題。本方案基于 IP 網(wǎng)絡與 SIP 協(xié)議,構建集日常
    發(fā)表于 07-30 18:51

    學校做廣播對講系統(tǒng)干貨分享

    對校園廣播對講系統(tǒng)建設選擇SIP協(xié)議的廣播對講系統(tǒng)具有前瞻,SIP 廣播對講系統(tǒng)基于 SIP 協(xié)議,具有融合、安裝簡便、音質優(yōu)良、功能豐
    發(fā)表于 07-24 15:59

    什么是藍牙BLE5.4

    優(yōu)勢,重點是增強了通信能力、安全和效率。這些改進尤其適用于涉及大量設備的應用,如零售、資產(chǎn)跟蹤和智慧家居環(huán)境。 主要優(yōu)勢包括: 與數(shù)千個終端節(jié)點進行雙向通信 響應周期性
    發(fā)表于 07-21 14:56

    CYW20829是否可以使用 BLE 長距離(編碼 PHY)功能啟用 PAWR

    是否可以使用 BLE 長距離(編碼 PHY)功能啟用 PAWR
    發(fā)表于 06-27 07:31

    為什么使用評估板EVAL-AD7760收集的數(shù)據(jù)中會出現(xiàn)周期性毛刺?

    為什么使用評估板 EVAL-AD7760 收集的數(shù)據(jù)中會出現(xiàn)周期性毛刺。以下是無信號輸入、差分輸入 100kHz、1.35Vpp 正弦波、差分輸入 100kHz、2.5Vpp 正弦波的圖像(采集了約 8,000,000 個點)。
    發(fā)表于 04-15 07:41

    NTM88H135ST1的最大周期性喚醒間隔是多少?

    NTM88H135ST1的最大周期性喚醒間隔是多少。
    發(fā)表于 04-11 08:09

    藍牙 v5.4 概述 (PAwR, EAD, ESL, LE Gatt)

    的應用,如零售、資產(chǎn)跟蹤和智慧家居環(huán)境。 主要優(yōu)勢包括: 與數(shù)千個終端節(jié)點進行雙向通信 響應周期性廣播 (PAwR) 加密
    的頭像 發(fā)表于 04-09 09:35 ?1847次閱讀
    藍牙 v5.4 概述 (<b class='flag-5'>PAwR</b>, EAD, ESL, LE Gatt)

    海通證券李軍:周期性調整與技術變革雙重驅動,并購成破局之道

    在當下科技迅猛發(fā)展的時代,集成電路作為數(shù)字時代的 “根技術”,其重要不言而喻。全球半導體行業(yè)正受周期性調整與技術變革的雙重驅動,在此大背景下,中國集成電路產(chǎn)業(yè)在政策扶持與市場需求的雙重推動下
    發(fā)表于 03-16 14:08 ?1410次閱讀

    【瑞薩RA2L1入門學習】03. RTC 時鐘日歷&amp;鬧鐘&amp;周期性中斷

    、月、日、時、分、秒等時間信息;在計時模式下,RTC則用于產(chǎn)生固定周期的中斷,如每秒一次的中斷。RTC 常見的操作包括設置時間、設置定時鬧鈴、配置周期性中斷以及啟動或停止操作。 設置時間:可以通過編程
    發(fā)表于 03-07 16:45