CH579/CH57x藍牙主機使用注意事項


BLE主機的連接到收發數據的過程

BLE的連接過程,一般的典型過程是按照 "掃描>連接>服務發現>使能cccd>發送接收數據"

1,掃描

這里的掃描,就是主機端開啟掃描后,去得到從機的廣播數據,能夠得到的數據有:

  • MAC地址
  • 31字節廣播或者掃描回復數據(名稱,自定義信息都在這里面,通常需要做解析)
  • 信號強度

在掃描時候,我們既然可以得到這些數據,我們就可以根據這些來決定哪些從機是我們需要連接的從機,比如通過名稱,或者自定義的信息

2,連接

這里的連接,實際上是根據上面掃描過程中,得到的MAC地址以及MAC地址類型進行連接

3,service和characteristic的發現

連上以后,要進行相關的service和characteristic發現,來得到行營的GATT handle,因為通信時候,要根據這些handle來收發數據,類似以太網的TCP/UDP 端口號之類的

4,使能cccd(開啟notify)

這里的使能CCCD, 是當從機的characteristic具備notify/indicate主動發數據給主機的屬性時候,這時候主機端往往需要主動去使能這些,否則從機不能夠主動發送(當然從機也可以在本機主動開啟)

5,接收或者發送數據

write/write_no_respone

通常是主機對從機的操作,主機給從機發數據一般用這個命令,這一步依賴上面查到的gatt handle,當然,如果是事先知道這些handle,是可以直接發送,而不需要進行service和characteristic的發現
其中write_no_respone 不需要從機協議棧回復,這樣連接開銷小一些,在要求速度的場景,往往使用這個.

read

通常是主機對從機的操作,這一步依賴上面查到的gatt handle,當然,如果是事先知道這些handle,是可以直接發送,而不需要進行service和characteristic的發現

notify /indicate

通常這是從機對主機的操作,從機給主機發送數據一般用這個命令,由於主機是被動接收,所以接收時候往往是根據回掉函數得到相應的數據
但是notify /indicate 往往需要事先使能cccd從機那邊才能夠發送出來數據,所以根據實際情況,來執行 使能cccd(開啟notify)
根據上面查到的characteristic value的gatt handle 用wrtie
其中notify不需要主機協議棧回復,這樣連接開銷小一些,在要求速度的場景,往往使用這個


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM