Sub-1G: Intelligent Search¶
重要
此例程仅存在于特殊版本的SDK中,如有需要请联系Panchip。
1 功能概述¶
intelligent search
演示了Sub-1G的智能搜索功能。在正常情况下,收发双方必须要设置相同的SF值才能进行通信。但是如果我们想同时接收多个SF值不同的设备,就需要使用智能搜索功能来实现。此例程就智能搜索功能进行了演示。
2 环境准备¶
PAN3730 EVB两块
Type-C USB线两条(用于供电和查看串口打印Log)
硬件接线:
使用USB线,将PC USB与EVB Type-C USB(USB->UART)相连
使用杜邦线或者跳线帽将EVB上的:
TX0 与 P00相连
RX0 与 P01相连
PC软件: 串口调试助手(UartAssist)或终端工具(SecureCRT),波特率921600
码表或者其他ANT接收设备,手机(nrf connect)
3 编译和烧录¶
例程位置:zephyr\samples_panchip\sub_1G\intelligent_search
编译时Board选择pan3730_evb,Config选择prj.conf
使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍。
4 演示说明¶
例程上电初始化会打印如下日志:
*** Booting Zephyr OS build zephyr-v2.7.0-999-gc2c0b41086a9 ***
[00:00:00.001,000] <dbg> sub1g.main: Sub-1G intelligent search sample start!
因为智能搜索例程是一个RX例程,所以需要一个TX端做配合进行测试,这里我们可以复用trx_sample
这个例程。首先我们把trx_sample
例程进行一点微调,在初始化的时候需要把intelligent_search_en置1。
cfg.intelligent_search_en = 1;
修改后,配置成发送设备,就可以用key2键发送数据了。
我们可以在TX端配置不同的SF值进行发送,并且查看接收端是否打印接收到的数据。正常情况下,只要在RX端设置范围内的SF值都可以正常通信,设置范围之外的SF值就会出现接收不到数据的情况。
cfg.sf = SUB_ONEG_SF_7; //SUB_ONEG_SF_8 SUB_ONEG_SF_9 SUB_ONEG_SF_10 SUB_ONEG_SF_11
5 开发者说明¶
启用ANT模块,需要在
prj.conf
文件中添加”CONFIG_SUB_ONEG=y”和”CONFIG_NEWLIB_LIBC=y”CONFIG_SUB_ONEG=y CONFIG_NEWLIB_LIBC=y
Sub-1G初始化
/** * @brief Configure the sub-1G module. * * @param cfg Pointer to the sub-1G config struct. * * @retval 0 If successful. * @retval -errno Negative errno code on failure. */ int sub_oneg_configure(sub_oneg_cfg *cfg);
使能搜索功能并设置SF接收范围
/** * @brief Control intelligent search. * * @param cfg Pointer to the sub-1G config struct. * @param sf_range SF range of search. * * @retval 0 If successful. * @retval -errno Negative errno code on failure. */ int sub_oneg_intelligent_search(sub_oneg_cfg *cfg, uint8_t sf_range);
Sub-1G接收启动
/** * @brief Start receive mode. * * @param cfg Pointer to the sub-1G config struct. * @param mode Set continue rx mode or single rx mode. * CONTINUE_RX_MODE: After the rx is finished, * it will not exit the rx mode and will remain in the rx mode. * SINGLE_RX_MODE: When rx is finished, it exits rx mode * @param timeout Set rx timeout(ms), 0 indicates no timeout until data is received. * * @retval 0 If successful. * @retval -errno Negative errno code on failure. */ int sub_oneg_receive_start(sub_oneg_cfg *cfg, sub_oneg_rx_mode_t mode, uint32_t timeout);
更多有关sub-1G的介绍请参考 Sub-1G使用指南文档。
6 RAM/Flash资源使用情况¶
Memory region Used Size Region Size %age Used
FLASH: 43836 B 384 KB 11.15%
SRAM: 9064 B 64 KB 13.83%