3.4.3. APP - Nonconn_trans

3.4.3.1. 概述

Note

主要功能是在蓝牙BLE架构基础上自定义不可见的非连接模式数据传输示例,可支持2.4g。

3.4.3.2. 工程配置

  1. 配置app选择(apps/demo/transfer/include/app_config.h),如下图选择对应的应用示例

*//app case 选择,只能选1个,要配置对应的board_config.h*
#define CONFIG_APP_NONCONN_24G 1 // 非连接收发
  1. 先配置板级board_config.h(apps/demo/transfer/board/bd47/board config.h),选择对应的开发板,可以使用默认的板级

#define CONFIG_BOARD_AW31N_DEMO
#include "board_aw31n_demo_cfg.h"
  1. 配置角色,是发射机还是接收机,是否使用2.4g模式(ble_noconn_deal.h)

#define CFG_RF_USE_24G_CDOE       1  // 是否使用24识别码

//配置收发角色
#define CONFIG_TX_MODE_ENABLE     1 //发射器
#define CONFIG_RX_MODE_ENABLE     0 //接收器

3.4.3.3. 数据收发模块

实现代码文件在ble_noconn_deal.c和ble_noconn_deal.c

  • 主要发射机和接收机配置宏如下:

//------------------------------------------------------
#define CFG_RF_USE_24G_CDOE       1  // 是否使用24识别码
#define CFG_RF_24G_CODE_ID        0x5555AAAA // 24g 识别码(32bit),发送接收都要匹配:!!!初始化之后任意非连接时刻修改配对码API:rf_set_conn_24g_coded

//配置收发角色
#define CONFIG_TX_MODE_ENABLE     1 //发射器
#define CONFIG_RX_MODE_ENABLE     0 //接收器

#define GATT_ROLE_CLIENT         1
#define GATT_ROLE_SERVER         0

//------------------------------------------------------
//TX发送配置
#define TX_DATA_COUNT             100  //发送次数,决定os_time_dly 多久
#define TX_DATA_INTERVAL          20 //发送间隔>=20ms

#define ADV_INTERVAL_VAL          ADV_SCAN_MS(TX_DATA_INTERVAL)//unit: 0.625ms
#define RSP_TX_HEAD               0xff


//------------------------------------------------------
//RX接收配置
//搜索类型
#define SET_SCAN_TYPE       SCAN_ACTIVE
//搜索 周期大小
#define SET_SCAN_INTERVAL   ADV_SCAN_MS(200)//unit: 0.625ms
//搜索 窗口大小
#define SET_SCAN_WINDOW     ADV_SCAN_MS(200)//unit: 0.625ms
  • 发射器发送接口

*//发送数据, len support max is 60*
int ble_tx_send_data(const u8 *data, u8 len)
  • 接收器接收接口

void ble_rx_data_handle(const u8 *data, u8 len)
  • 发射机可通过按键测试发送数据

void noconn_tx_key_test(uint8_t key_event, uint8_t key_value)
{
#if CONFIG_TX_MODE_ENABLE
        log_info(">>>>>>>>>noconn_tx_key_test\n");
        // 24g收发通信test,
        // k1单击亮led1,k1双击灭led1
        // k2单机亮led2,k2双击灭led2
        on_off_opcode_t on_off_opcode;
        on_off_opcode.led_opcode = LED_ON_OFF_OPCODE;
        if (key_value == TCFG_ADKEY_VALUE0) {
                on_off_opcode.led_num = LED1;
                on_off_opcode.led_status = (key_event == KEY_EVENT_CLICK) ? LED_ON_STATUS : LED_OFF_STATUS;
        } else if (key_value == TCFG_ADKEY_VALUE1) {
                on_off_opcode.led_num = LED2;
                on_off_opcode.led_status = (key_event == KEY_EVENT_CLICK) ? LED_ON_STATUS : LED_OFF_STATUS;
        }

        if (key_event == KEY_EVENT_DOUBLE_CLICK) {
                on_off_opcode.led_status = LED_OFF_STATUS;
        }
        noconn_tx_send_data(&on_off_opcode, sizeof(on_off_opcode_t));
#endif
}

3.4.3.4. case默认应用资源(默认使用AW31N DEMO开发板)

Note

demo默认占用外设资源如下,具体可以查看board_aw31n_demo_cfg.h

I/O口占用情况

PA口 I/O

默认占用情况

PA3

默认打印UART0引脚

PA8

adkey检测引脚

PA9

LED控制引脚

硬件定时器占用情况

定时器

默认占用情况

TIMER0

暂无使用

TIMER1

暂无使用

TIMER2

暂无使用

TIMER3

暂无使用

串口占用情况

串口

默认占用情况

UART0

SDK打印

UART1

暂无使用

UART2

暂无使用

3.4.3.5. case默认应用功能现象

(默认使用AW31N DEMO开发板 LED1-PA9 LED2-PA10(开启LED2宏) ADKEY-PA8)

操作

现象结果

BLE 2.4g非连 接发射机(默认开低功耗)k1三击:软关机,任意按键唤醒

出现正确现象

BLE 2.4g非连接发射机 (默认开低功耗)k1单击控制接收机led1亮,测试软关机唤 醒按键不丢(在软关机状态下单击k1依旧能够控制接收机)

出现正确现象

BLE 2.4g非连接发射机 (默认开低功耗)k2单击控制接收机led2亮,测试软关机唤 醒按键不丢(在软关机状态下单击k2依旧能够控制接收机)

出现正确现象

BLE 2.4g非连 接接收机(默认不开低功耗)led控制见2.4g非连接发射机

出现正确现象