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

Sub-1G: CAD

重要

此例程仅存在于特殊版本的SDK中,如有需要请联系Panchip。

1 功能概述

cad演示了Sub-1G的检测空中信号功能。此功能可以检测空中的Chirp信号,并使用拉高电平的方式通知系统。

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\cad

编译时Board选择pan3730_evb,Config选择prj.conf

使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍

4 演示说明

例程上电初始化会打印如下日志:

*** Booting Zephyr OS build zephyr-v2.7.0-1011-g1a6a1aa69d89  ***
[00:00:00.000,000] <dbg> sub1g.main: Sub-1G CAD sample start!

因为CAD例程是一个RX例程,所以需要一个TX端做配合进行测试,这里我们可以复用trx_sample这个例程。将一块儿开发板配置成发送设备,就可以用key2键发送数据了。每次发送就可以在CAD测试端看到如下日志:

[00:01:36.017,000] <dbg> sub1g.sub_oneg_main_thread: Chirp signal is detected

[00:01:36.033,000] <dbg> sub1g.sub_oneg_irq_handler: Rx done

注意事项

开发板默认没有焊接R1电阻,也就是P55脚与CAD的中断脚(GPIO11)没有连接,需要再R1焊接一个0欧姆的电阻。

检测信号的时候,我们一般会先计算此时的配置下一个chirp信号持续的时间,然后连续等待3个chirp以上的时间如果CAD中断脚还是高电平的话就说明空中是有chirp的,反之可能是误触发。

5 开发者说明

  1. 启用ANT模块,需要在prj.conf文件中添加”CONFIG_SUB_ONEG=y”和”CONFIG_NEWLIB_LIBC=y”

    CONFIG_SUB_ONEG=y
    CONFIG_NEWLIB_LIBC=y
    
  2. Sub-1G初始化

    cfg.cad_en = 1;   //使能CAD功能
    /**
     * @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);
    
  3. 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);
    
  4. 获取当前一个chirp持续的时间

    /**
     * @brief Start receive mode.
     *
     * @param bw      BW value.
     * @param sf      SF value.
     *
     * @retval time
     */
    uint32_t get_chirp_time(uint8_t bw, uint8_t sf);
    

更多有关sub-1G的介绍请参考 Sub-1G使用指南文档

6 RAM/Flash资源使用情况

Memory region         Used Size  Region Size  %age Used
FLASH:       42708 B       384 KB     10.86%
SRAM:        8768 B        64 KB     13.38%