Nordic 52832 BLE Central Demo 分析

写在前面:本文参照 examples/ble_central/ble_app_uart_c 例程,分析一下产品做主机central时通过ble uart来跟server数据交互的流程,有理解不到位的地方,还请高手指出并欢迎讨论, QQ:993650814


正文:                                                                           

同样也是实现两个方向的数据流:

第一个:PC ------->板子(Central)-------->server,这个主要是电脑通过物理串口,将数据传输到板子上,板子接受到数据之后作为Central,通过BLE将其发送到server端。

第二个:server------>板子(Central)-------->PC,这个就是server将数据通过BLE传送到板子Central端,然后板子通过物理串口将数据打印到PC端。

1、PC-->板子-->server

    在串口的回调函数里:

    

再看 ble_nus_c_string_send:


看一下这两个handle的来历:


这个函数中,


看一下这个 db_disc_handler



在刚开始的main函数里:




所以,最终调用的是 ble_nus_c_evt_handler这个函数:



ble_nus_c_string_send 函数中的这两个handle确认完毕。

2.server------>板子------->PC

    server 通过BLE uart 发送到Central中,Central端的协议栈将server端发过来的数据信息等打包,然后以BLE_GATTC_EVT_HVX这个事件上抛给应用,在派发函数ble_evt_dispatch中进行派发,




最后又是调到了 p_ble_nus_c->evt_handler(p_ble_nus_c, &ble_nus_c_evt);上面已经讲到过,这个函数指针是ble_nus_c_evt_handler这个函数。


3.    central 扫描参数的参数配置:


这个函数中:




4、Central 跟 Server的连接过程:

    毫无疑问,也是在协议栈的派发函数中,



    这里面同样注意一个参数:连接间隔m_connection_param



5、区分两个概念:

    我这里一直讲两个角色 Central 和 Server,其实有点不准确,更确切的应该是:

   在未发生连接之前两个角色分别叫:Central和 Peripheral;连接建立后,Client和Server。




猜你喜欢

转载自blog.csdn.net/weixin_40204595/article/details/81030219
今日推荐