ANCS双核示例

介绍

本示例仅支持SF32LB55x系列,包含的功能有

  • BLE的广播、连接,以及对ANCS数据的基本处理。

  • BLE的service和application运行在LCPU(Low performance CPU)同时订阅ANCS的application运行在HCPU(High performance CPU)

函数入口:

  • HCPU

    1. app_ancs_init(): 该函数会订阅Data service的ANCS服务,并注册callback获取订阅数据。

  • LCPU

    1. main(): 系统开始调度后会被call到,该函数会enable BLE service进而打开BLE,初始化OS的mailbox,并进入while loop。在收到蓝牙power on的通知后打开广播。

    2. ble_app_event_handler(): 该函数通过BLE_EVENT_REGISTER注册到BLE service中,处理GAP/GATT/Common等BLE相关的事件。

      • 由于IOS要求配对以后才能访问ANCS,所以该handler里在连接后会主动发起配对。

    3. 自定义GATT service UUID:“00000000-0000-0070-7061-5F696C666973”。

      • 自定义characteristic UUID: “00000000-0000-0170-7061-5F696C666973”

相关Shell命令

  • HCPU

  1. 出厂化BLE相关Flash数据:nvds reset_all 1 - 为避免Flash冲突,第一次使用最好先下该命令。

  2. 设置蓝牙MAC地址:nvds update addr 6 [addr]. Example: nvds update addr 6 2345670123C3

手机端建议:

  1. iPhone手机推荐用第三方软件LightBlue,Android端用nRF Connect进行BLE测试。

注意事项:

  • 该工程默认启用睡眠模式,一旦运行会很快进入睡眠模式。进入睡眠模式后,无法连接Jlink,Uart也无法输入,蓝牙可以正常工作。可以把PA80接地来强制不进入睡眠模式。

  • 需要先编译LCPU,再编译HCPU。HCPU会将LCPU的image整合到其code中。

  • 需要在LCPU的Kconfig里面“config LCPU_ROM”以及在rtconfig.py加上“CUSTOM_LFLAGS = ‘rom.sym’”来启用LCPU ROM代码以减小RAM使用。