WCH579如何使用BondManager?

#define GAPBOND_ERASE_SINGLEBOND? ? ? ? 0x417? //!< Erase a single bonded device. Write only. Must provide address type followed by device address.

#define GAPBOND_DISABLE_SINGLEBOND? ? ? 0x41A? //!< Disable a single bonded device. Write only. Must provide address type followed by device address.

#define GAPBOND_ENABLE_SINGLEBOND? ? ? ?0x41B? //!< Ensable a single bonded device. Write only. Must provide address type followed by device address.

調(diào)用GAPBondMgr_SetParameter的時(shí)候,第一個(gè)參數(shù)為上面三種時(shí),后面的參數(shù)(Must provide address type followed by device address.)怎么提供?

查看例程并沒有發(fā)現(xiàn)用法,想問下有參考的程序或者API手冊(cè)嗎,比如NV里保存了3個(gè)設(shè)備的綁定信息,怎么能指定禁止第二個(gè)回連?

還有就是在BondCB回調(diào)中,如果當(dāng)前新設(shè)備綁定成功,怎么知道當(dāng)前新綁定的設(shè)備是存儲(chǔ)到了第幾個(gè)綁定信息的位置?


通過image.png

這個(gè)函數(shù)去讀image.png

#define GAP_BOND_REC_ID_OFFSET????????????? 0 //!< NV ID for the main bonding record? 這個(gè)就是地址.

禁止第二個(gè)回連的話刪除第二個(gè)設(shè)備的綁定信息即可。


@wangyy

您好,按照您說的我試了下;

1、報(bào)錯(cuò)BLE_NVIC_GAP_BOND_START沒有定義;

..\Task\BleTask.c(131): error:? #20: identifier "BLE_NVID_GAP_BOND_START" is undefined


2、使用tmos_snv_read讀取這六種數(shù)據(jù)的讀取長度分別是多少?就是下面用法中要給多大的數(shù)組長度?

tmos_snv_read((mainRecordNvID(0),len, buff)

3、#define GAPBOND_ENABLE_SINGLEBOND? ? ? ?0x41B? //!< Ensable a single bonded device. Write only. Must provide address type followed by device address.

使用GAPBondMgr_SetParameter設(shè)置GAPBOND_ENABLE_SINGLEBOND,按照注釋提供 地址類型和設(shè)備地址;? ??

地址類型是下面的宏定義嗎?

// GAP_ADDR_TYPE_DEFINES GAP Address Types

#define ADDRTYPE_PUBLIC? ? ? ? ? ? ? ? ? ? ? ?0x00? //!< Use the BD_ADDR

#define ADDRTYPE_STATIC? ? ? ? ? ? ? ? ? ? ? ?0x01? //!< Static address

#define ADDRTYPE_PRIVATE_NONRESOLVE? ? ? ? ? ?0x02? //!< Generate Non-Resolvable Private Address

#define ADDRTYPE_PRIVATE_RESOLVE? ? ? ? ? ? ? 0x03? //!< Generate Resolvable Private Address

設(shè)備地址是使用tmos_snv_read((mainRecordNvID(0),len, buff)讀取到的嗎?

提供給GAPBondMgr_SetParameter函數(shù)地址類型和設(shè)備地址分別占幾個(gè)字節(jié)?直接前后拼接嗎?


你好,BLE_NVID_GAP_BOND_START封庫里面了,所以用不了。那可以自己管理設(shè)備地址,記錄地址信息存進(jìn)flash,調(diào)用GAPBondMgr_SetParameter的時(shí)候,后面的參數(shù)類型是1字節(jié)的地址類型加6字節(jié)的設(shè)備地址。


您好,這個(gè)傳入的6字節(jié)設(shè)備地址是本地從機(jī)地址還是綁定的主機(jī)地址?

1、如果是本地從機(jī)地址,是否需要綁定不同設(shè)備時(shí)分別設(shè)置不同的本地地址;

2、如果是綁定主機(jī)地址,在綁定成功后調(diào)用哪個(gè)API獲取綁定主機(jī)地址?


另外一個(gè)問題,WCH579不使用藍(lán)牙協(xié)議棧直接控制Radio能否和NRF24L01通訊?


NRF24L01通訊格式。

image.png


uint8_t buf[128] = {0};

//讀當(dāng)前綁定count

GAPBondMgr_GetParameter( GAPBOND_BOND_COUNT, buf );

PRINT("GAPBOND_BOND_COUNT %02x \r\n",buf[0]);


tmos_memset(buf,0,6);

//讀第二個(gè)綁定的地址

tmos_snv_read( mainRecordNvID(1), 6, buf);

for(uint8_t i=0;i<6;i++){

????PRINT("%02X ",buf[i]);

}

PRINT("\r\n");

//賦值,這里只是簡單測(cè)試? ? ? ? ? ?

tmos_memcpy(tmp+1,buf,6); //mac?

tmp[0] = 0x01; ???????????????????????//mac type, public address

//刪除

GAPBondMgr_SetParameter(GAPBOND_ERASE_SINGLEBOND, B_ADDR_LEN + 1, tmp)



@小張同學(xué)

tmos_snv_read( mainRecordNvID(1), 6, buf);

這條語句編譯不報(bào)錯(cuò)嗎?

我試了報(bào)錯(cuò):

..\Task\BleTask.c(131): error:? #20: identifier "BLE_NVID_GAP_BOND_START" is undefined





用庫是報(bào)錯(cuò)的。要不把BLE_NVID_GAP_BOND_START這個(gè)宏定義發(fā)給我吧,我自己在程序里定義下。


icon_rar.gifCH57xBLE_LIB_V160.zip

替換庫跟頭文件即可。


@wangyy 多謝 另外咱們這個(gè)可以直接調(diào)用Radio和nrf24l01通訊嗎?

image.png


BLE_NVID_GAP_BOND_START在0x20,


至于跟nrf24系列通訊,

ch57x 系列沒有針對(duì)nrf24去做 packet handler,其收發(fā)數(shù)據(jù)都是建立在ble的包格式上的,

如果要跟nrf24 通訊,只能讓nrf24 去盡量的適應(yīng)ble的packet,ch57x 系列只支持4.2,所以只能BLE 1Mbps的基帶,


互通:ch57x ble phy對(duì)接nrf2401類芯片

前提:1Mbps信道為頻點(diǎn)2402-2480,2Mhz步進(jìn)

(現(xiàn)代化數(shù)字架構(gòu)的接收機(jī)對(duì)FSK解調(diào)devitaion相容性非常好,只要帶寬夠,中心頻點(diǎn)一致,應(yīng)該問題不大)

?

Ch57x Ble phy -> nrf2401:

1,Nrf2401關(guān)閉9bit packet control field,使用固定長包,包長32byte

2,ch57x手動(dòng)構(gòu)造數(shù)據(jù)包,包括軟件構(gòu)造crc8/crc16,然后再軟件 異或 白化表(也可以只異或crc的位,實(shí)際數(shù)據(jù)在2401的接收端進(jìn)行反白化處理)(ch57x的白化也可以單獨(dú)關(guān)閉)

3,最大的有效數(shù)據(jù)為32byte-2字節(jié)=30字節(jié)(ch57x 包長可大于32byte)

?

Nrf2401->ch57x ble phy:

1,Nrf2401關(guān)閉9bit packet control field,使用固定長包包長32byte

2,NRF2401 按照ble 的方式構(gòu)造包,包括軟件計(jì)算crc24,,數(shù)據(jù)包寫入fifo前要異或白化表(符合ble phy的白化,然后寫入發(fā)射buffer??梢詤⒄?/span>nrf2401 實(shí)現(xiàn)beacon 的案例,

3,ch57x 正常接收模式即可

4,最大的有效數(shù)據(jù)為:32字節(jié)去掉藍(lán)牙兩個(gè)字節(jié)的頭,然后,去掉3字節(jié)的crc24,實(shí)際為27字節(jié)

?

上面,NRF2401的自動(dòng)ACK方式不能用



nrf24的同步字要用符合藍(lán)牙規(guī)范的4字節(jié)的同步字,并且要跟ch57x的配置一樣


@小張同學(xué) 多謝


@小張同學(xué)

您好,在操作BondMgr時(shí),需要指定地址是公共地址還是可解析地址,不止如何獲取以下兩個(gè)數(shù)據(jù)

1、需要在BondSaved回調(diào)時(shí)獲取當(dāng)前信息保存到NV內(nèi)的ID號(hào),用于讀取devAddr;

2、需要在BondSaved回調(diào)時(shí)獲取當(dāng)前設(shè)備的地址類型,我看結(jié)構(gòu)體linkDBItem_t中有addrType這個(gè)數(shù)據(jù),但是不清楚如何使用;



只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频