2.3.BLE的编写
蓝牙程序的编写主要是作为从机s110,和主机s120以及主从机s130。都是需要先下载。教程可参见hex下载教程。
主要参考的资料:n36 (里面详细阐述了第一个ble程序,入门必看的)
S110以及s120的程序
Nrf51 sdk
去官网找问题的答案:https://devzone.nordicsemi.com/question
学习方法:如果以前接触过无线通信的单片机应用理解比较容易,没接触过可以先从整体把握,先不要拘泥于一些细节问题。看观察下方框图,从整体了解,慢慢接触。
学习的话,可以先从ble_app_template,这个例程是一个模板。
从机方框图
从机下载前先下s110协议栈,结合程序和方框图分析:从机经过初始化后,就会进入sd_app_evt_wait();但出现event时进入event处理,在ble stack event,即on_ble_evt(ble_evt_t * p_ble_evt)里。一般肯定有处理的中断connected,disconnected,timeout。具体还包含哪些中断可以直接看ble_gap.h。当需要获取rssi时,需要现在connected里开启sd_ble_gap_rssi_start(m_conn_handle);
然后新增event BLE_GAP_EVT_RSSI_CHANGED: 当rssi发送变化时即进入event处理.
主机方框图
主机下载前先下s120协议栈,结合程序和方框图分析:主机经过初始化后,就会进入sd_app_evt_wait(); 至少有三个event入口。一个硬件连接,一个数据连接,一个客户端连接。
对于rssi的获取,s120目前只有在连接前扫描阶段可以获取,其他时间不行。可参见下面的描述。
https://devzone.nordicsemi.com/question/6975/sd120-central-device-rssi-problem/
数据接收:client_handling_ble_evt_handler(ble_evt_t* p_ble_evt)的BLE_GATTC_EVT_HVX: