3.4.3. APP - Nonconn_trans
3.4.3.1. 概述
Note
主要功能是在蓝牙BLE架构基础上自定义不可见的非连接模式数据传输示例,可支持2.4g。
3.4.3.2. 工程配置
配置app选择(apps/demo/transfer/include/app_config.h),如下图选择对应的应用示例
*//app case 选择,只能选1个,要配置对应的board_config.h* #define CONFIG_APP_NONCONN_24G 1 // 非连接收发
先配置板级board_config.h(apps/demo/transfer/board/bd47/board config.h),选择对应的开发板,可以使用默认的板级
#define CONFIG_BOARD_AW31N_DEMO #include "board_aw31n_demo_cfg.h"
配置角色,是发射机还是接收机,是否使用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非连接发射机 |
出现正确现象 |