CSR1010藍芽開發探索(一)

2021-07-16 00:25:24 字數 1540 閱讀 6441

花了多少時間我已經不想提起,但是至少還是有點成果的,分析了不少**,也看了不少資料,發現比較接地氣的東西還是比較少,不多花點時間積累,說實話很辛苦。

現在還沒有足夠的水平上公升到藍芽協議的層次,飯要一口一口吃,不然就消化不良了不是?所以還是慢慢來,記錄一下探索藍芽協議的過程,希望對像我一樣白的新手會有幫助。

準備的開發板是keyfob,藍芽晶元csr1010,開發環境是csr uenergy sdk2.5.1,今天的內容是讓射頻工作起來,並且廣播我們的名字,讓其他藍芽裝置能夠發現。

**中設計到了韌體庫的部分函式,稍作說明:

1、設定裝置位址,位址格式分為lap低24位,uap高8位,nap無意義16位。(uap和nap是生產廠商的唯一標示碼)當然我們做測試就不要擔心了。

ls_err gapsetrandomaddress(const bd_addr_t *ra);
2、設定gap模式。

引數一:設定角色(四種值);引數二:設定可見性(三種值);引數三:連線性(三種值);引數四:可否繫結(兩種值);引數五:安全性(三種值)。

ls_err  gapsetmode (gap_role const role, gap_mode_discover const discover, gap_mode_connect const connect, gap_mode_bond const bond, gap_mode_security const security);
3、設定廣播間隙。

引數一二標示間隙最小值和最大值。

ls_err  gapsetadvinterval (uint32 const adv_min_us, uint32 const adv_max_us);
4、儲存廣播和掃瞄應答資料。

引數一:資料長度;引數二:資料;引數三:廣播資料/應答資料。

每次廣播資料的最大長度位31位元組,包含特定的7位元組。

- 3 位元組的ad標誌位由韌體新增;

- 1 位元組的ad長度由韌體新增;

- 1 位元組儲存廣播資料型別(使用者存入的第乙個位元組);

- 2 位元組儲存id;

ls_err  lsstoreadvscandata (uint16 const len, uint8 *const data, ad_src const src);
5、開始/停止廣播。

ls_err  lsstartstopadvertise (bool const go, whitelist_mode const wl_mode, ls_addr_type const addr_type);
下面是示例原始碼:

/* 再加工處理一下 */

addr.nap &= ~bd_addr_nap_random_type_mask;

addr.nap |= bd_addr_nap_random_type_nonresolv;

gapsetrandomaddress(&addr);

}void startadvertising(void)

CSR1010藍芽開發I O操作

csr1010開發前期準備 1.開發環境csr uenergy sdk 2.5.1 csr1010 i o開發須知 關於i o操作的函式庫被定義在標頭檔案中,查閱函式庫我們需要用到一下幾個函式 1 設定引腳模式,我們需要將其設為user模式。void piosetmodes uint32 mask,...

CSR藍芽開發除錯經驗

1.flash版本 bc5mm 8670等 使用blueflash燒錄程式。2.rom版本 57f 6145 8610等 eeprom使用 e2bluecmd 燒錄程式,flash使用nvscmd燒錄程式。3.bluetest定頻測試。4.cvc除錯需要在通話狀態 使用藍芽通話 除錯。5.e2blu...

Android 藍芽開發 《一》

關於android藍芽的開發 關於藍芽,官方文件上面提到可以用來 1.掃瞄其他的藍芽裝置 2.查詢當地的藍芽介面卡,對藍芽進行配對 3.建立rfcomn 序列 協議 通道 4.通過服務發現連線其他裝置 5.和其他裝置進行資料傳輸 6.管理多個連線 藍芽基礎 blutoothadapter 藍芽介面卡...