# 概要 # 信道选择算法#2( CSA#2 )是更复杂更难跟踪的用于获得下一个连接事件的信道索引算法。在高通量使用情况下,算法#2比算法#1在避免干扰和多路径衰落效应方面更有效。 有关算法的详细说明,请参见蓝牙核心规范版本 5.0 的第 6 卷 B 部分 4.5.8.2 节。 下图 1 分别是使用 37 和 9 个频道的算法效果图,样本为 100 个事件。 ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/stack/channel_selection_algorithm/Images/CSA.png) 图1. 相同样本下,不同频道数对应的算法效果图。 ## 默认配置 ## 堆栈默认情况下支持 CSA#2 ,默认情况下也启用。也就是说,作为主设备,设备将尝试使用 CSA#2 建立连接。作为从设备,设备将接受 CSA#2 连接请求。在较低级别时,作为主设备,设备将发送 ChSel 字段设置为 1 的连接请求。作为从设备,设备将通过 ChSel 字段设置为 1 进行通告。 CSA#2 是否用于连接取决于对等设备支持的内容。该蓝牙核心规范版本 5.0 规定: 如果发起者响应于 ADV_IND 或 AD_DIRECT_IND PDU 发送了一个CONNECT_IND PDU,且一个或两个设备的 PDU 都将 ChSel 字段设置为 0 ,则在连接上应使用信道选择算法#1。否则使用信道选择算法#2。 有关更多详细信息,请参阅蓝牙核心规范版本 5.0 的第 6 卷 B 部分 4.5 节。 ## 禁用 CSA#2 ## 可以通过清除相应支持的功能位来禁用 CSA#2。 首先,使用 HCI_LE_ReadLocalSupportedFeaturesCmd()获取当前设置的本地支持的 LE 功能。 然后,在收集相应的 HCI_LE_READ_LOCAL_SUPPORTED_FEATURES 事件后(请参阅主机控制器接口( HCI )以了解有关如何接收事件的更多详细信息),清除LL_FEATURE_CHAN_ALGO_2 位(字节 1 的位 6 ),并使用 HCI_EXT_SetLocalSupportedFeaturesCmd()更新修改功能: case HCI_LE_READ_LOCAL_SUPPORTED_FEATURES : { uint8_t featSet [ 8 ]; //从接收到的事件( 返回的数据 memcpy ( featSet , &pMsg - > pReturnParam [ 1 ], 8 ))的第1-9行获取当前的特征集; //清除CSA#2功能位 CLR_FEATURE_FLAG ( featSet [ 1 ], LL_FEATURE_CHAN_ALGO_2 ); //更新具有修改功能的控制器 HCI_EXT_SetLocalSupportedFeaturesCmd ( featSet ); } 注意:对于 slave 广播之前必须这样做,对于 master initiating 之前必须这样做。 ## 加入我们 ## 文章所有代码、工具、文档开源。加入我们[**QQ群 591679055**](http://shang.qq.com/wpa/qunwpa?idkey=d94f12d37c3b37892af4b757c6dc34bea140f3f3128a8d68e556a3d728148e85)获取更多支持,共同研究CC2640R2F&BLE5.0。

CC2640R2F&BLE5.0-乐控畅联 © Copyright 2017, 成都乐控畅联科技有限公司.