当前文档版本为 NDK-v0.6.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

BLE PRF SAMPLE

1 功能概述

此项目演示BLE从机和2.4g同时工作双模例程,BLE从机例程介绍参考文档bleprph_hr.md。此例程是在bleprph_hr例程基础上增加了prf 2.4g相关功能。

2 环境要求

  • board: pan107x evb

  • uart(option): 用来显示串口log(波特率921600,选项8n1

  • 手机app nrf connect

3 编译和烧录

例程位置:<home>\nimble\samples\solutions\ble_prf_sample\keil_107x

使用keil进行打开项目进行编译烧录。

4 演示说明

  1. 烧录完成后,设备复位会显示上电log,上电后的log如下:

    [15:57:38.486]收←◆Try to load HW calibration data..
    WARNING: Cannot find valid calib data in current chip!
    - Chip Flash UID    : 425031563233391711550D3756039C78
    - Chip Flash Size   : 512 KB
    
    [15:57:38.519]收←◆rcl calib:30284
    
    [15:57:38.840]收←◆LL Spark Controller Version:d7c4bfa
    
    [15:57:38.910]收←◆app started
    
    [15:57:39.421]收←◆tx done
    
    [15:57:39.921]收←◆tx done
    
    [15:57:40.421]收←◆tx done
    

    “tx done”是2.4g发送完一包后的打印,例程默认每隔500ms发送一次。

  2. 使用手机 nrf connect 扫描蓝牙设备名称ble_hr并且连接

    image

    nrf connect连接ble_hr

    广播和连接的同时也能发送2.4g包。

5 2.4g初始化说明

2.4g初始化必须在BLE开始广播前,2.4g初始化代码如下:

pan_ant_init();

extern uint32_t BB_UsToTick(uint32_t us);
extern uint32_t RTC_GetCurrentTick(void);

uint32_t tick = RTC_GetCurrentTick();
prf_tx.interval      = BB_UsToTick(500000);			//prf interval 500ms
prf_tx.slot_duration = 6;					//prf work duration 6 * 1.25ms
prf_tx.before_point  = 0;
prf_tx.anchor_point  = tick;
prf_tx.AntStartCback = prf_event_handler;			//prf event cb
prf_tx.AntStopCback  = NULL;
prf_tx.priority      = 0;					//priority lowest 0,1,2; 2 highest
pan_ant_create(&prf_tx);

panchip_prf_init(&tx_config);
panchip_prf_set_chn(tx_config.rf_channel);

/*adr match bit */
PRI_RF_SetAddrMatchBit(PRI_RF, 0);
panchip_prf_set_data(&tx_payload);

/* Begin advertising */
blehr_advertise();
  1. 需要定义一个结构体”ab_event_node_t”

  2. 首先调用”pan_ant_init”接口,然后注册结构体”pan_ant_create(&prf_tx)”

  3. 结构体中需要填写几个关键参数:interval、slot_duration、anchor_point、AntStartCback、priority。

  4. 注册完2.4g事件后就可以启动2.4g收发了,例程在500ms定时回调中启动2.4g发射

  5. 发射完成后会有tx的中断

6 RAM/Flash资源使用情况

PAN107x:

Flash Size: 118.58k
RAM Size:  36.12 k