本帖最后由 bitter 于 2023-7-3 15:24 编辑
1.前言
最近入手了一块NRF52840 DK开发板,打算学习学习有关蓝牙的一些知识。在这里记录一下学习过程
2.芯片介绍
有关NRF52840芯片的一些资料,大家可以在官网上查阅:nRF52840
3.蓝牙工程包SDK
在官网上下载有关的SDK包:https://www.nordicsemi.com/Products/nRF52840/Compatible-downloads?lang=zh-CN
有关SDK包的一些介绍,大家可以参考这篇博客:nrf52840芯片入门
4.蓝牙协议栈样例分析
在下载的SDK包中,有很多的例程,在此分析一下蓝牙协议栈样例,其路径为nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_template,有关分析大家可以参考这篇博文:nrf52840蓝牙协议栈样例分析,我在这里补充一些
①log打印初始化
进入有关log_init()函数的内部:
我们可以看到NRF_LOG_LFCLK_FREQ这个宏定义,其值为32768。因此,当我们想要使用log功能时,硬件上必须要有一个32.768kHz晶振,才能完成对应的初始化。
——
——
然后,找到有关log的UART相关初始化,我们可以发现其使用的是UAERT0,TX引脚为P0.06,未使用RX功能,波特率为115200。
——
——
——
——
——
——
②协议栈默认配置设置
进入协议栈配置函数内部,我们发现实际上配置协议栈使用的是sd_ble_cfg_set函数,根据其上的注释,我们可以发现两点:在sd_softdevice_enable已使能而sd_ble_enable未使能的任何地方,我们都可以调用该函数对协议栈进行配置;由app_ram_base分配给SoftDevice的内存量应该要足够大。
其中参数cfg_id为枚举BLE_CONN_CFGS、BLE_COMMON_CFGS、BLE_GAP_CFGS或BLE_GATTS_CFGS。
③GAP初始化
安全模式配置一共有以下几种:
④广播初始化
广播名称显示ble_advdata_name_type_t枚举为
广播标志
⑤连接参数更新
连接参数ble_conn_params_init_t结构体为