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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PSoC 6 RTT積木式開發(fā)套件

RT-Thread官方賬號 ? 2024-05-10 08:35 ? 次閱讀

一、項目介紹

本系統(tǒng)的主控是CY8C624ABZI,負(fù)責(zé)智能門鎖的控制邏輯和藍(lán)牙的host,通過sdio和串口外接一個型號為cyw43012的wifi & ble controller combo,為系統(tǒng)提供聯(lián)網(wǎng)和藍(lán)牙功能。

本系統(tǒng)在軟件上由門鎖模塊、gatt模塊組成:gatt模塊實(shí)現(xiàn)一個基于gatt的智能門鎖的profile;門鎖模塊通過創(chuàng)建一個任務(wù)為系統(tǒng)其他應(yīng)用提供門鎖控制的服務(wù),提供注冊接口給上層應(yīng)用注冊 具體的門鎖驅(qū)動。

本項目使用的開發(fā)板是 RT-Thread 聯(lián)合英飛凌推出的一款集成32位雙核CPU子系統(tǒng)( ARM Cortex-M4 和 ARM Cortex-M0)的Psoc6-evaluationkit-062S2開發(fā)板。

2838db1e-0e65-11ef-9118-92fbcf53809c.png

二、CY8C624ABZI和CYW43012介紹

2.1 CY8C624ABZI介紹

285760c0-0e65-11ef-9118-92fbcf53809c.png

2.2 CYW43012介紹

英飛凌的AIROC cyw43012是一款超低功耗單芯片組合設(shè)備,具有雙頻2.4 GHz和5 GHz Wi-Fi 4(802.11n)和藍(lán)牙5.4。CYW43012采用低功耗架構(gòu),非常適合電池供電應(yīng)用,在這些應(yīng)用中,同類最佳的功耗至關(guān)重要。CYW43012支持256-QAM(適用于5 GHz頻段的20 MHz通道),支持802.11ac接入點(diǎn),數(shù)據(jù)速率最高可達(dá)78 Mbps。2.4和5GHz頻段均內(nèi)置片內(nèi)功率放大器和低噪聲放大器。

2892eab4-0e65-11ef-9118-92fbcf53809c.png28b2809a-0e65-11ef-9118-92fbcf53809c.png

三、CYW43012藍(lán)牙SDK介紹和注意事項

3.1 ATT和GATT介紹

3.1.1 ATT屬性

服務(wù)器持有客戶端需要訪問的資源,這些數(shù)據(jù)作為屬性存儲在服務(wù)器上。屬性是一種數(shù)據(jù)表示格式,由四個字段組成:屬性句柄,屬性類型,屬性權(quán)限,屬性值。

屬性句柄用于引用屬性,應(yīng)用通過句柄訪問指定的屬性;屬性類型通過UUID編碼,不同類型的屬性具有不同的含義和功能,如一個屬性的UUID如果為0x2803,表示這個屬性用于作為特征的開始,特別地,除了SIG已經(jīng)定義的類型,其他的類型主要作為用戶自定義的特征值,如在門鎖應(yīng)用中,自定義0xDD01為門鎖開關(guān)的特征值;屬性權(quán)限決定客戶端能夠?qū)傩圆扇〉牟僮?;屬性值是屬性存儲?shù)據(jù)的字段,在門鎖wifi配網(wǎng)功能中,屬性值存儲了客戶端想要傳給服務(wù)器進(jìn)行配網(wǎng)的wifi ssid和密碼。

屬性類型指定此屬性代表什么。這是通過使用通用唯一標(biāo)識符(簡稱為UUID)來實(shí)現(xiàn)的。UUID是一個128位的值,任何人都可以將其分配給屬性,而無需將其注冊到中央機(jī)構(gòu)。兩個不同方分配相同UUID的概率非常低(1/2128),因此UUID被認(rèn)為是唯一的。由于這些設(shè)備提供的許多功能都是常見的,因此為預(yù)定義的值保留了一系列UUID值,每個值都為常見用例公開了一組操作和數(shù)據(jù)。為了減少傳輸?shù)臄?shù)據(jù)量,這些值的長度為16位或32位,并且通過使用藍(lán)牙基本UUID和簡單的算術(shù)運(yùn)算來計算實(shí)際的UUID。

屬性句柄是一個非零值,用于引用屬性。通過增加屬性句柄值,將BLE服務(wù)器的所有屬性存儲在其數(shù)據(jù)庫中。連續(xù)的屬性不一定要有下一個整型句柄值。屬性句柄值之間允許有空格,但句柄值必須按升序排列。

屬性權(quán)限指定是否可以讀取和/或?qū)懭胭Y源,以及執(zhí)行此操作所需的安全級別。允許不同的安全組合。例如,屬性可能不需要讀取權(quán)限,但客戶端可能必須進(jìn)行身份驗(yàn)證才能修改資源。

屬性值可以是固定長度的,也可以是可變長度的。對于可變長度屬性值,一個PDU中只允許發(fā)送一個屬性值。如果該值太長,它可能會被分到多個PDU中。

有一種特殊類型的屬性不允許讀取,但可以寫入、通知或指示(我們稍后將討論最后兩個操作)。這些屬性稱為控制點(diǎn)屬性,因?yàn)樗鼈冎饕糜趹?yīng)用程序控制,而不是在設(shè)備之間傳遞數(shù)據(jù)。


3.1.2 ATT屬性方法

ATT協(xié)議還定義了讀取或?qū)懭雽傩缘姆椒āVС值姆椒ㄓ辛N,因此它們定義了六個協(xié)議數(shù)據(jù)單元(PDU)。就ATT協(xié)議而言,PDU是將被轉(zhuǎn)發(fā)到(或從)較低層,即邏輯鏈路控制和適配協(xié)議(L2CAP)層接收的分組,并且隨后將被封裝以在物理鏈路上發(fā)送(或分別被發(fā)送到較高層)。這六種方法及其PDU類型是:

命令:由客戶端發(fā)送到服務(wù)器并且不調(diào)用響應(yīng)請求:由客戶端發(fā)送到服務(wù)器并且調(diào)用響應(yīng)響應(yīng):當(dāng)接收到請求時由服務(wù)器發(fā)送到客戶端。

通知:由服務(wù)器發(fā)送到客戶端,而不調(diào)用響應(yīng)。它們是在客戶端沒有請求它們的情況下發(fā)送的。

指示:由服務(wù)器發(fā)送到客戶端,并調(diào)用響應(yīng)。它們是在客戶端沒有請求它們的情況下發(fā)送的。

確認(rèn):由客戶端發(fā)送到服務(wù)器,作為對指示的確認(rèn)。

3.1.3 GATT介紹

??Generic Attribute Profile(GATT)建立在屬性協(xié)議(ATT)之上,并為屬性協(xié)議傳輸和存儲數(shù)據(jù)提供通用的操作和框架。

??GATT定義了兩個角色:服務(wù)器和客戶端。GATT的角色不一定與特定的GAP角色捆綁在一起,而是可以由更高層的profile指定。

??GATT和ATT不不依賴于特定的controller,可以在BR/EDR和LE中使用。然而,GATT和ATT是在LE中是要求強(qiáng)制實(shí)現(xiàn)的,在LE應(yīng)用中使用GATT來發(fā)現(xiàn)設(shè)備能夠提供的服務(wù)。

??GATT服務(wù)器存儲著屬性協(xié)議傳輸需要的數(shù)據(jù),接受來自GATT客戶端的屬性協(xié)議請求、命令和確認(rèn),GATT服務(wù)器發(fā)送對請求的響應(yīng)??梢酝ㄟ^配置,讓GATT服務(wù)器在發(fā)生指定事件時向GATT客戶端異步地發(fā)送指示和通知。

??GATT規(guī)定了GATT服務(wù)器上包含的數(shù)據(jù)的格式,屬性協(xié)議傳輸?shù)膶傩员桓袷交癁榉?wù)和特征,服務(wù)包含一組特征,特征包含值和描述該特征值的任意數(shù)量的描述符。通過規(guī)定好的服務(wù)、特征和特征描述符的結(jié)構(gòu),GATT客戶端可以遍歷GATT服務(wù)器并向用戶顯示特征值,特征描述符以用戶可理解的方式對特征值進(jìn)行描述。

3.3 GATT-BASED PROFILE層次結(jié)構(gòu)

GATT Profile規(guī)定了Profile交換數(shù)據(jù)的結(jié)構(gòu)。此結(jié)構(gòu)定義Profile中使用的基本元素,如服務(wù)和特征。結(jié)構(gòu)的頂層是Profile。Profile由實(shí)現(xiàn)用例所必需的一個或多個服務(wù)組成。服務(wù)由特征或?qū)ζ渌?wù)的引用組成。每個特征都包含一個值,并且可能包含有關(guān)該值的可選信息。服務(wù)和特征以及特征的組成部分(即,值和描述符)包含Profile數(shù)據(jù),存儲在服務(wù)器的屬性中。

Service:服務(wù)是用于實(shí)現(xiàn)設(shè)備或設(shè)備部分的特定功能或特性的數(shù)據(jù)和相關(guān)行為的集合。服務(wù)可以引用其他主要或次要服務(wù)和/或組成該服務(wù)的一組特征。有兩種類型的服務(wù):主要服務(wù)和次要服務(wù)。主要服務(wù)是提供設(shè)備的主要功能的服務(wù)。輔助服務(wù)是提供設(shè)備的輔助功能并且從該設(shè)備上的至少一個主服務(wù)引用的服務(wù)。為了保持與早期客戶端的向后兼容性,服務(wù)定義的較新版本只能添加新的引用服務(wù)或可選特征。服務(wù)定義的較新版本也被禁止更改與服務(wù)定義的先前版本相比的行為。服務(wù)可以在一個或多個配置文件中使用,以滿足特定的用例。

Referenced Services:引用的服務(wù)是將服務(wù)器上的另一個服務(wù)定義合并為引用它的服務(wù)的一部分的方法。當(dāng)一個服務(wù)引用另一個服務(wù)時,整個引用的服務(wù)將成為新服務(wù)的一部分,包括任何嵌套的引用服務(wù)和特征。引用的服務(wù)仍作為獨(dú)立服務(wù)存在。嵌套參照的深度沒有限制。

Characteristic:特征是在服務(wù)中使用的值,以及有關(guān)如何訪問值的屬性和配置信息以及有關(guān)如何顯示或表示值的信息。特征定義包含特征聲明、特征屬性和值。它還可以包含描述服務(wù)器相對于特征值的值或允許配置的描述符。

3.2 CYW43012 SDK應(yīng)用編程接口

3.2.1 SDK架構(gòu)

SDK由platform和bt協(xié)議棧組成,platform為bt協(xié)議棧提供調(diào)用controller的接口,可以使用串口或者芯片內(nèi)部的ipc,bt協(xié)議棧主要由HCI_TX和HCI_RX兩個任務(wù)完成,HCI_TX任務(wù)完成串口數(shù)據(jù)的發(fā)送,HCI_RX完成串口數(shù)據(jù)的接收和協(xié)議棧的處理。在協(xié)議棧中,回調(diào)用戶注冊的gap和gatt事件回調(diào)函數(shù),在回調(diào)函數(shù)中,處理用戶的邏輯。

3.2.2 應(yīng)用編程接口

wiced_bt_stack_init注冊藍(lán)牙回調(diào),示例中注冊了app_bt_management_callback,當(dāng)藍(lán)牙準(zhǔn)備好時,在回調(diào)中處理BTM_ENABLED_EVT事件,啟動藍(lán)牙應(yīng)用,在app_bt_application_init中初始化gatt服務(wù)器。

在初始化gatt服務(wù)的過程中,通過wiced_bt_gatt_register注冊gatt的回調(diào),這個回調(diào)是用戶的編程接口;通過wiced_bt_gatt_db_init初始化屬性表gatt_database,gatt_database是用戶定義的gatt profile。

3.2.3 自定義profile

根據(jù)gatt_database示例,通過PRIMARY_SERVICE_UUID16和CHARACTERISTIC_UUID16定義服務(wù)和特征。

3.3 SDK調(diào)試方法

默認(rèn)cybt_platform_trace.h中的日志等級是CYBT_TRACE_LEVEL_ERROR,只在出錯的時候打印log,用戶在遇到問題調(diào)試時,可以根據(jù)需要調(diào)整log等級。

3.4 注意事項:取消.heap段從flash加載,減少1M的flash空間占用

startup_psoc6_02_cm4.S中,sdk會從flash復(fù)制數(shù)據(jù)到內(nèi)存的.heap和.stack段,導(dǎo)致這部分段是READONLY的,占了1M的flash,我理解這部分是在主控做低功耗(standby模式)時heap掉電的時候用于從flash恢復(fù)heap中的內(nèi)容,如果主控不需要stanby模式可以注釋相關(guān)代碼釋放1M的flash給到應(yīng)用。

四、創(chuàng)建基于gatt的智能門鎖的profile

定義智能門鎖的gattdb

1//---------------------------服務(wù)和特征---------------------------
2
3//智能門鈴服務(wù)
4
5#define__UUID_SERVICE_SMART_LOCK0xD000
6
7//門鎖開關(guān)
8
9#define__UUID_CHARACTERISTIC_LOCK_SWITCH0xD001
10
11//密碼
12
13#define__UUID_CHARACTERISTIC_LOCK_PASSWORD0xD002
14
15//門鈴鈴聲
16
17#define__UUID_CHARACTERISTIC_DOORBELL_RINGTONE0xD003
18
19//音量
20
21#define__UUID_CHARACTERISTIC_VOLUME0xD004
22
23//電池電量
24
25#define__UUID_CHARACTERISTIC_BATTERY_LEVEL0xD005
26
27//離家布防
28
29#define__UUID_CHARACTERISTIC_FORTIFICATION0xD006
30
31//逗留偵測
32
33#define__UUID_CHARACTERISTIC_STAY_DETECTION0xD007
34
35//逗留感應(yīng)距離
36
37#define__UUID_CHARACTERISTIC_STAY_INDUCTION_DISTANCE0xD008
38
39//逗留保持時間
40
41#define__UUID_CHARACTERISTIC_STAY_INDUCTION_TIME0xD009
42
43//wifi配網(wǎng)服務(wù)
44
45#define__UUID_SERVICE_PROV_WIFI0xD100
46
47//WIFIssid和密碼
48
49#define__UUID_CHARACTERISTIC_SSID_AND_PSWD0xD101
50
51//---------------------------句柄---------------------------------
52
53/*ServiceGenericAccess*/
54
55#defineSMART_LOCK_SERV0x0001
56
57#defineSMART_LOCK_CHARACTER_SWITCH0x0002
58
59#defineSMART_LOCK_CHARACTER_VALUE_SWITCH0x0003
60
61#defineSMART_LOCK_CHARACTER_PASSWORD0x0004
62
63#defineSMART_LOCK_CHARACTER_VALUE_PASSWORD0x0005
64
65#defineSMART_LOCK_CHARACTER_DOORBELL_RINGTONE0x0006
66
67#defineSMART_LOCK_CHARACTER_VALUE_DOORBELL_RINGTONE0x0007
68
69#defineSMART_LOCK_CHARACTER_VOLUME0x0008
70
71#defineSMART_LOCK_CHARACTER_VALUE_VOLUME0x0009
72
73#defineSMART_LOCK_CHARACTER_BATTERY_LEVEL0x000a
74
75#defineSMART_LOCK_CHARACTER_VALUE_BATTERY_LEVEL0x000b
76
77#defineSMART_LOCK_CHARACTER_FORTIFICATION0x000c
78
79#defineSMART_LOCK_CHARACTER_VALUE_FORTIFICATION0x000d
80
81#defineSMART_LOCK_CHARACTER_STAY_DETECTION0x000e
82
83#defineSMART_LOCK_CHARACTER_VALUE_STAY_DETECTION0x000f
84
85#defineSMART_LOCK_CHARACTER_STAY_INDUCTION_DISTANCE0x0010
86
87#defineSMART_LOCK_CHARACTER_VALUE_STAY_INDUCTION_DISTANCE0x0011
88
89#defineSMART_LOCK_CHARACTER_STAY_INDUCTION_TIME0x0012
90
91#defineSMART_LOCK_CHARACTER_VALUE_STAY_INDUCTION_TIME0x0013
92
93#defineSMART_LOCK_PROV_SERV0x0014
94
95#defineSMART_LOCK_CHARACTER_SSID_AND_PSWD0x0015
96
97#defineSMART_LOCK_CHARACTER_VALUE_SSID_AND_PSWD0x0016

五、門鎖任務(wù)

門鎖任務(wù)負(fù)責(zé)接收其他任務(wù)對門鎖的請求,在smart_door_init初始化的時候注冊用戶的門鎖驅(qū)動,與具體門鎖驅(qū)動解耦。門鎖操作集和門鎖結(jié)構(gòu)體定義如下:

1structsmart_lock_ops
2
3{
4
5 smart_lock_err_t(*smart_lock_switch)(smart_lock_t*lock,uint8_tonoff);
6
7};
8
9structsmart_lock
10
11{
12
13 uint32_tinited:1;
14
15 uint32_tstate:1;
16
17 uint32_trsvd:30;
18
19 uint8_tmsg_num;
20
21 rt_thread_tthread;
22
23 rt_mq_tmsg;
24
25 structsmart_lock_ops*lock_ops;
26
27};

六、總結(jié)

有幸參加了rtthread和英飛凌聯(lián)合舉行的開發(fā)板測評活動,領(lǐng)到了心心念念的開發(fā)板,rtthread工作人員已經(jīng)適配好了英飛凌CY8C624ABZI的bsp和cyw43012的藍(lán)牙sdk,在實(shí)現(xiàn)智能門鎖的profile中,主要在回調(diào)中處理。開發(fā)過程得到了微信群里大佬們的幫助,也學(xué)習(xí)到了很多,感謝rtthread和英飛凌提供的機(jī)會。

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

    關(guān)注

    12

    文章

    170

    瀏覽量

    91914
  • 藍(lán)牙
    +關(guān)注

    關(guān)注

    114

    文章

    5823

    瀏覽量

    170308
  • RTT
    RTT
    +關(guān)注

    關(guān)注

    0

    文章

    65

    瀏覽量

    17126
收藏 人收藏

    評論

    相關(guān)推薦

    深入測試:大道至簡—Cypress PSoC 4000S CapSense原型開發(fā)套件評測(二)

    2017貿(mào)澤電子智造創(chuàng)新大賽第二彈:Cypress PSoC 4000S CapSense原型開發(fā)套件評測!
    的頭像 發(fā)表于 09-20 09:00 ?8711次閱讀

    Cypress PSoC 4000S CapSense原型開發(fā)套件

    2017貿(mào)澤電子智造創(chuàng)新大賽第二彈:Cypress PSoC 4000S CapSense原型開發(fā)套件評測!
    的頭像 發(fā)表于 09-20 10:00 ?9087次閱讀

    賽普拉斯推出PSoC? 6 BLE Pioneer套件

    賽普拉斯今日宣布推出PSoC? 6 BLE Pioneer套件PSoC Creator?4.2集成開發(fā)環(huán)境(IDE),使設(shè)計人員能夠利用
    的頭像 發(fā)表于 10-10 14:19 ?9931次閱讀

    PSoC 4000S完整原型開發(fā)套件和參考設(shè)計

    實(shí)現(xiàn)按鈕、滑塊和其他控件的最佳性能時,開發(fā)團(tuán)隊的開發(fā)速度會受到延緩。 為了支持項目開發(fā),Cypress Semiconductor PSoC 4000S CapSense 原型
    的頭像 發(fā)表于 07-25 09:34 ?9261次閱讀
    <b class='flag-5'>PSoC</b> 4000S完整原型<b class='flag-5'>開發(fā)套件</b>和參考設(shè)計

    【英飛凌PSoC 6】新建RTT工程

    介紹英飛凌PSoC 6 RTT開發(fā)板環(huán)境創(chuàng)建
    的頭像 發(fā)表于 04-24 15:29 ?1942次閱讀
    【英飛凌<b class='flag-5'>PSoC</b> <b class='flag-5'>6</b>】新建<b class='flag-5'>RTT</b>工程

    CY8CKIT-025:PSoC精密模擬開發(fā)套件

    CY8CKIT-025:PSoC精密模擬開發(fā)套件
    發(fā)表于 11-19 16:22

    PSOC3開發(fā)套件原理圖

    PSOC3開發(fā)套件原理圖.zip希望能夠?qū)Υ蠹医窈蟮膶W(xué)習(xí)有所幫助
    發(fā)表于 11-22 14:16

    CY8CKIT-040 PSoC 4000開發(fā)套件低成本開發(fā)平臺

    4000開發(fā)套件可實(shí)現(xiàn)具有高端功能的低成本器件。 CY8CKIT-040開發(fā)套件支持開放平臺,可通過支持Arduino硬件社區(qū)的板載接頭完全訪問PSoC 4000器件。我們通過板載
    發(fā)表于 04-10 09:39

    賽普拉斯Cypress PSoC 6 MCU簡介及常見4款開發(fā)套件工具板

    開發(fā)套件:下圖所示的CY8CPROTO-063-BLE原型開發(fā)套件,同樣也支持PSoC 6 BLE系列器件。它提供了一個開放封裝分線板,可
    發(fā)表于 12-10 14:25

    ZigBee開發(fā)套件內(nèi)容

    ZigBee開發(fā)套件內(nèi)容開發(fā)套件
    發(fā)表于 11-15 17:35 ?165次下載

    賽普拉斯發(fā)布新版PSoC開發(fā)套件

    賽普拉斯(Cypress)發(fā)表可編程系統(tǒng)單晶片架構(gòu)PSoC 3與PSoC 5新款CY8CKIT-025開發(fā)套件。
    發(fā)表于 12-31 10:07 ?1209次閱讀

    賽普拉斯PSoC 4新架構(gòu)開發(fā)套件現(xiàn)通過e絡(luò)盟全球預(yù)售

    e絡(luò)盟及賽普拉斯半導(dǎo)體公司(納斯達(dá)克股票代碼:CY)日前宣布客戶現(xiàn)可通過e絡(luò)盟預(yù)訂全新的PSoC? 4 Pioneer開發(fā)套件。PSoC 4架構(gòu)將賽普拉斯一流的PSoC模擬和數(shù)字架構(gòu)同
    發(fā)表于 04-16 16:32 ?1353次閱讀

    什么是物聯(lián)網(wǎng)開發(fā)套件?如何挑選物聯(lián)網(wǎng)開發(fā)套件

    關(guān)鍵詞:物聯(lián)網(wǎng) , 開發(fā)套件 物聯(lián)網(wǎng)應(yīng)用的高速增長催生了越來越多的開發(fā)套件,為從事物聯(lián)網(wǎng)產(chǎn)品和系統(tǒng)設(shè)計的工程師提供了豐富多樣的新工具。但在選擇開發(fā)套件時,五花八門的產(chǎn)品也會讓設(shè)計師感到眼花繚亂。 物
    發(fā)表于 05-29 17:55 ?5228次閱讀

    Neptune開發(fā)套件_2021

    Neptune開發(fā)套件指南
    發(fā)表于 08-18 12:28 ?3次下載

    玩轉(zhuǎn)PSoC 6 RTT積木開發(fā)套件,實(shí)現(xiàn)毫米波雷達(dá)等實(shí)用功能

    本期英飛凌手工課,將由來自英飛凌的工程師Jenson給大家?guī)?b class='flag-5'>PSoC62withCAPSENSEevaluationkit(下稱PSoC6RTT開發(fā)板)和其積木
    的頭像 發(fā)表于 03-20 08:35 ?980次閱讀
    玩轉(zhuǎn)<b class='flag-5'>PSoC</b> <b class='flag-5'>6</b> <b class='flag-5'>RTT</b><b class='flag-5'>積木</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)套件</b>,實(shí)現(xiàn)毫米波雷達(dá)等實(shí)用功能