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

ANT+: ANT BPWR

重要

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

1 功能概述

ant_bpwr演示了ANT+ Bicycle power profile在PAN1080 SoC上的使用方法,主要包括:

  • 自行车功率传感器例程,包含三种模式(standard、wheel torque、Crank torque)。

2 环境准备

  • PAN1080 EVB一块

  • Micro USB线一条(用于供电和查看串口打印Log)

  • 硬件接线:

    • 使用USB线,将PC USB与EVB MicroUSB(USB->UART)相连

    • 使用杜邦线将EVB上的:

      • UART1 TX与P06相连

      • UART1 RX与P07相连

  • PC软件: 串口调试助手(UartAssist)或终端工具(SecureCRT),波特率921600

  • 码表或者其他ANT接收设备

3 编译和烧录

例程位置:zephyr\samples_panchip\ant_plus\ant_bpwr

目前可使用ZAL工具或quick build脚本进行编译和下载。

脚本位置:quick_build_samples\ant_plus\ant_bpwr.bat

打开脚本后默认会编译项目,编译完成时,可输入字符进行后续下载等操作:

Input the keyword to continue:
  'b' build                         编译项目
  'r' make clean and rebuild        重新编译项目
  'f' flash download                下载
  'e' erase chip                    擦除芯片
  'o' open project by VS Code       打开 `VS Code`,可查看源码,执行编译下载等
  others exit                       退出
wait input:

4 演示说明

本例程中:

  1. 例程默认Standard Power-Only模式上报数据。

  2. 例程自带的模拟器支持手动模式和自动模式改变发送数据

    手动和自动模式切换需要在sdk_config.h文件修改以下宏,1代表自动模式,0代表手动模式

    #define BPWR_SIMULATOR_AUTO_UPDATE          1
    
    • 自动模式

      自动模式下功率数据会自动变化并上报,此时观察码表或其他接收设备会看到功率项的显示在变化。

    • 手动模式

      手动模式需要按键控制数据的变化,EVB板的Key1实现功率数增加,Key2实现功率数减少。

4.1 例程日志:

如果运行正常,会持续输出如下日志:

*** Booting Zephyr OS build zephyr-v2.7.0-528-ga1bfaee13973  ***
*** libprf-v1.1.0-fa77ba3 ***
*** libant-v1.0.0-5745a878 ***
ANT+ Bicycle power TX sample started.
instant power: 1000
accumul power: 1000

instant power: 1000
accumul power: 2000

4.2 三种模式切换

本例程支持standard、wheel torque、Crank torque三种模式,切换模式需要在sdk_config.h文件修改以下宏

/* <0=> Power Only Sensor    */
/* <1=> Wheel Torque Sensor  */
/* <2=> Crank Torque Sensor  */
#define SENSOR_TYPE                      0

5 开发者说明

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

    CONFIG_USE_PANPLAT_ANT=y
    
  2. 初始化ANT

    • 通道配置

      ANT通信是基于通道的,所以配置通道是必不可少的步骤。下列是通道配置的参数

      ant_channel_config_t channel_cfg = {
      	.channel_num = BPWR_CHANNEL_NUMBER,           // 通道号,默认为0
      	.channel_type = BPWR_CHANNEL_TYPE,            // 通道类型,Master or slave
      	.ext_assign = 0,                              // 暂不支持,填0即可
      	.rf_frequency = BPWR_RF_FREQ,                 // 通信频率,ANT+固定为2457
      	.transmission_type = BPWR_TRANSMISSION_TYPE,  // 传输类型,按照协议规定设置
      	.device_type = BPWR_DEVICE_TYPE,              // 设备类型,按照协议规定设置
      	.device_num = BPWR_DEVICE_NUMBER,             // 设备编号 16bit,自定义
      	.channel_period = BPWR_MSG_PERIOD,            // 通道周期,按照协议固定设置
      	.network_number = BPWR_NETWORK_NUMBER         // 网络号,必须设置为0,不支持其他网络号
      };
      
    • 设置网络

      下列接口实现设置ANT+网络

      ant_plus_key_set(channel_cfg.channel_num);
      
    • 启动ANT

      下列接口实现启动ANT协议

      ant_stack_init();
      
  3. 初始化profile

    • 下列接口实现功率传感器的初始化

    err_code = ant_bpwr_sensor_init(&bpwr_profile, &channel_cfg);
    
    • 下列接口实现打开功率传感器

    err_code = ant_bpwr_sensor_open(&bpwr_profile);
    
    • 下列接口实现注册BPWR的handler函数,handler函数需要处理ANT栈返回的一些消息,比如发送成功消息,发送失败消息,接收到数据的消息等等。

    ant_evt_handle_register(&evt);
    
  4. 初始化simulator

    SDK为BPWR提供了一个simulator,以便于实例程序可以模拟实际数据进行测试。

    下列接口实现初始化bpwr simulator。参数BPWR_SIMULATOR_AUTO_UPDATE为1表示simulator自动改变发送数据,为0表示需要人工按键改变发送数据。

    ant_bpwr_simulator_init(&bpwr_profile, BPWR_SIMULATOR_AUTO_UPDATE);
    
  5. 更新数据

    下列接口实现更新发送数据。实际使用根据需要可以实现自己的更新函数

    ant_bpwr_update_simulator(&bpwr_profile, 0);
    
  6. 发送数据

    下列接口实现推送发送数据的事件。实际使用中根据是否需要更新发送数据的情况调用

    ant_bpwr_sensor_evt_handler(&ant_evt, &bpwr_profile);