/BlueNRG-1-2-Mul-Connecteion

优化版 BlueNRG-1/2 多连接的Demo

Primary LanguageC

这个Demo是针对BlueNRG-1/2 的多连接demo(BLE_Examples\BLE_MS_Formula)进行优化改进的代码。

老Demo的缺陷:
1. 无法应用于实际工程,just a demo
2. 不稳定,断连后无法重连,只设定了发送数据
3. 通信速率慢


在使用新Demo之前,建议先阅读官方的老的资料
资料索引参考:C:\Program Files (x86)\STMicroelectronics\BlueNRG-1_2 DK 3.2.0\Docs\index.html
----> Bluetooth Low Energy (BLE) Multiple Connections scenarios formula and timing chart 
----> Bluetooth Low Energy (BLE) Multiple Connections scenarios guidelines 


重要概念:
BlueNRG-1/2 的多连接demo 是基于时间槽的【这点和BlueNRG-LP的不一样】。
所有BLE事件(包括广播,扫描间隔,连接事件)统一一个固定的周期。
如表格: Copy of Multiple_Connection_Formula_Timings_Chart.xlsx 里面图示.



文件ble_utils.c 中函数GET_Master_Slave_device_connection_parameters 就是通过给定的参数,计算相应的周期。
工程默认重要配置(Keil 为例子,IAR类似): 
Options for target ----->  Preprocessor Symbols:
LS_SOURCE=LS_SOURCE_EXTERNAL_32KHZ 
SMPS_INDUCTOR=SMPS_INDUCTOR_10uH 
BLE_STACK_CONFIGURATION=BLE_STACK_FULL_CONFIGURATION 
MASTER_SLAVE=1 MASTER_SLAVE_NUM_MASTERS=1 
MASTER_SLAVE_NUM_SLAVES=6 MASTER_SLAVE_SCAN_WINDOW=20.00 
MASTER_SLAVE_SLEEP_TIME=0.00 BLUENRG2_DEVICE 
HS_SPEED_XTAL=HS_SPEED_XTAL_32MHZ USER_BUTTON=BUTTON_1 DEBUG=1

工程默认BlueNRG-1 使用16M晶振,BlueNRG-2使用32M晶振,
使用内部DC-DC(SMPS_INDUCTOR=SMPS_INDUCTOR_10uH),
中心节点可以被一个主机连接(MASTER_SLAVE_NUM_MASTERS=1 )
中心节点可以连接6个子节点(MASTER_SLAVE_NUM_SLAVES=6)
扫描窗口20ms(MASTER_SLAVE_SCAN_WINDOW=20.00)

如果你的应用需求和此不同,可以自行更改验证。



默认守卫时间(守卫时间概念可以通过查看表格得知:Copy of Multiple_Connection_Formula_Timings_Chart.xlsx )
#define GUARD_TIME 1.6   //ms
#define GUARD_TIME_END 2.5 //ms

默认无需调整,但是如果你实际调试中如果打印最大空余时间槽(Print_Anchor_Period)
发现时间溢出了,则需要调整此处。