【WCH蓝牙系列芯片】-基于CH592开发板—信道检测使用说明

-------------------------------------------------------------------------------------------------------------------------------------

  蓝牙技术工作在 2.4 GHz 的 ISM频段,该频段的可用频率范围为2400MHz到2483.5MHz(2.400 GHz~2.4835 GHz)。低功耗蓝牙在2.4GHz ISM频段上定义了40个射频信道,从2402MHz开始每间隔2MHz一个信道,最高信道频率为2480MHz。BLE是40个频段,经典蓝牙则是79个频段。其中:

  • 3 个广播信道:37、38、39,用于设备发现和连接初始化。 对应的中心频率是2402MHz,2426MHz,2480MHz

  • 37 个数据信道:0 到 36,用于数据传输。

  • 比特率:蓝牙4.2和蓝牙5.0的速率上是不一样的

    • 1Mbps (蓝牙4.2规范)

    • 2Mbps(蓝牙5.0规范)   

  在上面的图上,3个绿色的信道就是蓝牙的主广播信道,其他的37个蓝牙的信道是用于副广播、同步广播、周期广播还有数据传输。

  在无线环境是动态变化的,随着周围设备的增加或减少、设备位置的移动、以及环境因素的变化,信道的干扰情况也会不断变化。可以通过定期检查和更新信道状态,设备可以实时适应环境的变化,动态选择最佳信道,确保稳定的通信质量。

  在2.4G程序中,可以通过信道检测函数来对这个40个信道进行检测。通过BLE_CheckHoppingMap 函数 对BLE 的扫描功能,对每个通道进行信号强度检测。可以帮助设备动态选择最佳信道进行通信,避免干扰,提高通信的稳定性和可靠性。

  通过选择干净的信道,可以减少数据重传次数,提高数据传输的吞吐量和速度,从而优化通信性能。

选择最佳信道可以减少因信道干扰导致的重传和通信失败,从而降低设备的功耗,延长电池寿命。

  在复杂的无线环境中,如存在多个 BLE 设备或干扰源时,BLE_CheckHoppingMap 函数可以帮助设备实时适应环境的变化,动态选择最佳信道,确保稳定的通信质量。

  这里以CH592芯片为例,在2.4G中,添加BLE_CheckHoppingMap 函数 ,针对周围环境的信道进行检测。

  在BLE蓝牙库中,添加一个extern int8_t BLE_CheckHoppingMap( int8_t rssi, uint8_t map[] );

  1. int8_trssi:表示信号强度阈值,单位是 dBm。在程序中,表示当检测到的信号强度大于设置的RSSI 时,认为该通道有干扰信号,标记为 bad

  2.uint8_t map[]:用于存储通道的状态信息。每个字节可以表示 8 个通道的状态,其中每一位对应一个信道。

  在主函数那边义需要定义检测的通道数据变量。数组长度为 5:由于蓝牙有 40 个信道,每个字节可以表示 8 个信道,因此需要 5 个字节来表示所有 40 个信道的状态。初始值均为 0xFF(二进制 11111111),表示所有通道初始状态下都是有效的(需要检测的通道)

  在主循环中,调用 BLE_CheckHoppingMap 函数,参数为:

  • rssi:-85 dBm,作为干扰信号的阈值。

  • map:传递通道掩码数组,用于存储检测结果。

  函数根据 -85 dBm 阈值和信号强度检测结果,更新 map 数组中通道的状态。如果有干扰信号超过阈值(信号强度大于 -85),对应通道的位会被标记为无效。

  通过串口打印就可以看到具体的检测的每一个信道的情况

 

posted on 2025-03-01 14:17  凡仕  阅读(249)  评论(0)    收藏  举报