Sub-1G: trx sample¶
重要
此例程仅存在于特殊版本的SDK中,如有需要请联系Panchip。
1 功能概述¶
trx_sample
演示了BLE和Sub-1G的使用方法,此例程只能在PAN3730 Soc上运行。例程实现了使用BLE进行简单配网后,利用Sub-1G信号进行远距离通信。本例程为了更好的观察提供了RGB灯的控制。
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\trx_sample
编译时Board选择pan3730_evb,Config选择prj.conf
使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍。
4 演示说明¶
例程上电初始化会打印如下日志:
*** Booting Zephyr OS build zephyr-v2.7.0-998-ge555e7b98489 ***
*** llcontroller-v1.0.0-07cf993f ***
controller initializing....
[00:00:00.001,000] <dbg> sub1g.main: BLE and Sub_1G trx sample start!
[00:00:00.001,000] <wrn> bt_hci_core: Failed to set device name (-12)
[00:00:00.100,000] <inf> bt_hci_core: Identity: F5:A6:75:BF:C1:57 (random)
[00:00:00.100,000] <inf> bt_hci_core: HCI: version 5.1 (0x0a) revision 0x0003, manufacturer 0x07d1
[00:00:00.100,000] <inf> bt_hci_core: LMP: version 5.1 (0x0a) subver 0x0000
[00:00:00.103,000] <inf> bt_adv: Start Advertising as F5:A6:75:BF:C1:57 (random)
此时我们用手机app nrf connect
可以搜索到Sub1G Device2这个设备并进行连接。连接成功后需要进行配网操作。选择下图红框中的服务,并向此服务上传两字节数据,具体协议格式如下:
Device type(1 Byte) |
Device Number(1 Byte) |
---|---|
0x00 - 接收设备 0x01 - 发送设备 |
取值范围:0x01- 0xFF |
BLE选择服务如下:
此时例程将上报的配网信息进行保存,但不会立即生效,直到APP端主动断开连接,才认为是配网结束,并开始配置网络
设置为发送设备的日志如下,设备编号设置为1:
[00:12:11.887,000] <inf> sub1g: device msg: 1 1
[00:20:21.262,000] <dbg> sub1g.sub_oneg_main_thread: sub-1G init success
设置为接收设备的日志如下,设备编号也设置为1,编号必须与发送设备设置一致
[00:00:22.998,000] <inf> sub1g: device msg: 0 1
[00:00:25.695,000] <dbg> sub1g.sub_oneg_init: Sub-1G rx open
[00:00:25.695,000] <dbg> sub1g.sub_oneg_main_thread: sub-1G init success
配网结束后,就可以使用发送设备的key2键发送控制信息,去控制接收设备的RGB灯。日志如下:
发送设备日志:
[00:37:53.076,000] <dbg> sub1g.button2_irq_callback_falling: Prepare send open light command
[00:37:53.093,000] <inf> sub1g: command send success
接收设备日志:
[00:00:53.215,000] <dbg> sub1g.sub_oneg_main_thread: Light ON
如果想重新返回配网模式,则短按key1键即可返回配网模式进行重新配网。
5 开发者说明¶
启用Sub-1G驱动,需要在
prj.conf
文件中添加”CONFIG_SUB_ONEG=y”和”CONFIG_NEWLIB_LIBC=y”CONFIG_SUB_ONEG=y CONFIG_NEWLIB_LIBC=y
启用BLE模块,需要在
prj.conf
文件中添加以下宏定义CONFIG_BT=y CONFIG_BT_SMP=n CONFIG_BT_PERIPHERAL=y CONFIG_BT_DIS=y CONFIG_BT_DIS_PNP=n CONFIG_BT_BAS=y CONFIG_BT_DEVICE_NAME="Sub1G Device2" CONFIG_BT_DEVICE_APPEARANCE=833 CONFIG_BT_AUTO_PHY_UPDATE=n CONFIG_BT_DEBUG_LOG=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);
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发送数据
/** * @brief Start send mode. * * @param cfg Pointer to the sub-1G config struct. * @param buffer Send data buffer. * @param length Send data length. * @return int The time it takes to send. */ int sub_oneg_send(sub_oneg_cfg *cfg, uint8_t *buffer, size_t length);
Sub-1G停止接收
/** * @brief Exit receive mode. * * @param cfg Pointer to the sub-1G config struct. */ void sub_oneg_receive_stop(sub_oneg_cfg *cfg);
更多有关sub-1G的介绍请参考 Sub-1G使用指南文档。
6 RAM/Flash资源使用情况¶
Memory region Used Size Region Size %age Used
FLASH: 103272 B 256 KB 39.40%
SRAM: 30100 B 50 KB 58.79%