关于NRF52832 一对多NUS数据传输问题

主机选用工程E:\nRF5_SDK\nRF5_SDK_15.2.0_9412b96\examples\ble_central_and_peripheral\experimental\ble_app_hrs_rscs_relay\pca10040\s132\arm5_no_packs

将rscs,hrs相关服务删除,并将NRF_SDH_BLE_CENTRAL_LINK_COUNT改成4,NRF_SDH_BLE_TOTAL_LINK_COUNT改成5,NRF_SDH_BLE_VS_UUID_COUNT改成2,并将RAM地址更改到合适的大小,我目前改为0x20003BF0

// NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. 
#ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT
#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 4
#endif

// NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count. 
// Maximum number of total concurrent connections using the default configuration.

#ifndef NRF_SDH_BLE_TOTAL_LINK_COUNT
#define NRF_SDH_BLE_TOTAL_LINK_COUNT 5

#ifndef NRF_SDH_BLE_VS_UUID_COUNT
#define NRF_SDH_BLE_VS_UUID_COUNT 2
#endif

下一步,将NUS服务添加上去。

1,参考工程E:\nRF5_SDK_15.2.0_181120\examples\ble_central\ble_app_uart_c\pca10040\s132\arm5_no_packs,将ble_nus_c服务添加上去

2,参考工程E:\nRF5_SDK_15.2.0_181120\examples\ble_peripheral\ble_app_uart\pca10040\s132\arm5_no_packs,将ble_nus服务添加上去

到了这里主机的服务基本就添加完成了,我们再来看从机的nus服务,可以直接用工程E:\nRF5_SDK_15.2.0_181120\examples\ble_peripheral\ble_app_uart\pca10040\s132\arm5_no_packs来作为从机,连接方式选择以蓝牙名字相同方式来连接。

连接好后,数据通信了,你会发现,主机总是与当前连接的从机,才能正常通信,与其它已经连接了的从机却又通信不上了。

是不上很蛋疼呢?哈哈.....

我也是纠结了很久啊,后来在对比了一下以前ble_app_hrs_rscs_relay的这个工程与从机ble_app_hrs和ble_app_rscs的通信方式,以为是因为服务的不同,才可以。后来又参考rscs服务自己写了一个新的服务,可能没写好,最终还是没到达目的,还是只能一对二同时通信。纠结啊!!!

后来还是在自己移植好的nus一对多的工程调试上找到了问题所在,最后将nus服务更改了一下,最终实现了一对四(一主四从)同时通信,而且主机还是主从一体的,还可以用手机连接和它通信。

 

 

 

 

 

 

你可能感兴趣的:(Bluetooth)