CH573F 回連兼容問題

我拿 CH573 的 BLE HID Keyboard 例程燒錄,分別連接/綁定了一臺(tái)win11筆記本, 一個(gè)android 13手機(jī):

  1. 第一次連接筆記本, 正常都收到CH573發(fā)來的字母, 關(guān)閉筆記本藍(lán)牙.

  2. CH573連接手機(jī), 手機(jī)也可收到CH573發(fā)來的字母, 然后關(guān)閉手機(jī)藍(lán)牙.

  3. 再次打開筆記本藍(lán)牙,可以看到自動(dòng)連接上,但收不到CH573發(fā)來的字母.

  4. 筆記本/手機(jī)與CH573連接順序反一下,也是最后一次連接/綁定的設(shè)備能收到數(shù)據(jù), 回連上一個(gè)設(shè)備就收不數(shù)據(jù).

  5. 換成一個(gè) sony android 10手機(jī), 則CH573回連之前的筆記本/手機(jī)也能收到數(shù)據(jù).

可以幫看看是什么原因嗎,

您好,BLE的HID鍵盤例程中,只支持保存一個(gè)配對(duì)綁定的主機(jī)。推測當(dāng)前的情況是第二個(gè)配對(duì)的設(shè)備B,頂?shù)袅说谝粋€(gè)設(shè)備A在MCU中的配對(duì)綁定信息,但是這個(gè)過程中A設(shè)備無法獲悉配對(duì)綁定信息已丟失;那么B設(shè)備斷開后,再打開A設(shè)備,A設(shè)備仍會(huì)嘗試發(fā)起回連。

可以參考peripheral例程,添加RSSI打印的邏輯,觀察在“再次打開筆記本藍(lán)牙,可以看到自動(dòng)連接上,但收不到CH573發(fā)來的字母”的情況下是否有RSSI的打印,以此確定連接狀態(tài);如果第一次配對(duì)的A設(shè)備回連后沒有打印RSSI,基本可以確定是該問題。

解決方法是再添加一個(gè)配對(duì)綁定名額,參考下篇博客。BLE配對(duì)與綁定三(雜談) - SweetTea_lllpc - 博客園 (cnblogs.com)

image.png


我把我的程序發(fā)給您,可以幫忙加下 RSSI 和 MAC綁定數(shù)量嗎,參考添加這兩個(gè)功能都沒成功


您留個(gè)郵箱,給您發(fā)添加RSSI的代碼。配對(duì)綁定的修改請(qǐng)參考博客,博客有講解不清晰的您可以指出,我們幫您解答。


那先解決RSSI來確定是否綁定數(shù)量的原因, 昨天我在另外一個(gè)貼子(http://www.findthetime.net/bbs/thread-109932-1.html)留了個(gè)郵件, 有收到CH582的HID_Keyboard_RSSI_LINK例程, 但我手上只有CH573F的板子,沒有實(shí)測到;

我看例程上沒注冊(cè) peripheralRssiCB 這個(gè)回調(diào)函數(shù), 有點(diǎn)奇怪;

我添加了回調(diào)函數(shù), 但是參考 peripheral 注冊(cè)后就進(jìn)不了廣播狀態(tài)

//GAP?Role?Callbacks
static?gapRolesCBs_t?Peripheral_PeripheralCBs?=?{
????NULL,
????peripheralRssiCB,??????????//When?a?valid?RSSI?is?read?from?controller?(not?used?by?application)
??NULL
};


//Bond?Manager?Callbacks
static?gapBondCBs_t?hidDevBondCB?=?{
????NULL,
????hidDevPairStateCB,???????//綁定后即可進(jìn)入該函數(shù)
};

static?void?peripheralRssiCB(uint16_t?connHandle,?int8_t?rssi)
{
????PRINT("RSSI?-%d?dB?Conn??%x?\n",?-rssi,?connHandle);
}

if(events?&?START_DEVICE_EVT)
{
????GAPRole_PeripheralStartDevice(hidEmuTaskId,?&hidDevBondCB,?&Peripheral_PeripheralCBs);
????return?(events?^?START_DEVICE_EVT);
}

if(events?&?SBP_READ_RSSI_EVT)
{
????bStatus_t?res?=?GAPRole_ReadRssiCmd(hidEmuConnHandle);
????PRINT("RSSI?read?res:?%d,\n",?res);
????tmos_start_task(hidEmuTaskId,?SBP_READ_RSSI_EVT,?3200);
????return?(events?^?SBP_READ_RSSI_EVT);
}



image.png

image.png

添加回調(diào)函數(shù)的地方。

可以查看一下代碼,或者移植到573上,或者用比對(duì)工具比對(duì)新提供的工程與EVT工程的區(qū)別。


謝謝,之前沒看hiddev.c文件,現(xiàn)在可以打印出 RSSI 了.

BLE MAC 綁定數(shù)量我改了一下,好像回連也可以收發(fā)數(shù)據(jù)了,我再多測下看;

只是增加配對(duì)綁定名額應(yīng)該只要做博客里面的第五步就可以了吧, 我現(xiàn)在就只是做了第五步及修改了 MCU.c 的這個(gè)函數(shù):

uint32_t Lib_Write_Flash(uint32_t addr, uint32_t num, uint32_t *pBuf)

{

? ? EEPROM_ERASE(addr, EEPROM_PAGE_SIZE * BLE_SNV_NUM);

? ? EEPROM_WRITE(addr, pBuf, num * 4);

? ? return 0;

}

另外,這個(gè) 7FFFF應(yīng)該是 77FFF吧?

1710223320388.png



是77FFF-77E00,多謝指正,博客已修改。

修改綁定數(shù)量,只需要修改config.h中的配置即可,即博客第五點(diǎn)。

單個(gè)綁定占用256B,綁定數(shù)量需要跟占用的大小對(duì)應(yīng)。


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

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