ANT+: ANT BSC¶
重要
此例程仅存在于特殊版本的SDK中,如有需要请联系Panchip。
1 功能概述¶
ant_bsc
演示了ANT+ bicycle cadence and speed profile在PAN1080 SoC上的使用方法,主要包括:
Profile三种模式的传感器例程
另外,此Sample还演示了对程序加密的方法,加密之后的程序需要芯片烧录加密信息,未烧录加密信息的芯片不能正常运行。
2 环境准备¶
PAN1081 EVB一块
Type-C USB线一条(用于供电和查看串口打印Log)
硬件接线:
使用USB线,将PC USB与EVB Type-C USB(USB->UART)相连
使用杜邦线或者跳线帽将EVB上的:
TX0 与 P00相连
RX0 与 P01相连
PC软件: 串口调试助手(UartAssist)或终端工具(SecureCRT),波特率921600
码表或者其他ANT接收设备
3 编译和烧录¶
例程位置:zephyr\samples_panchip\ant_plus\ant_bsc
使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍。
4 演示说明¶
本例程中:
例程默认踏频模式上报数据。
例程自带的模拟器支持手动模式和自动模式改变发送数据
手动和自动模式切换需要在
sdk_config.h
文件修改以下宏,1代表自动模式,0代表手动模式#define BSC_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 Speed and Cadence TX sample started.
rev count: 0
event time: 1024
rev count: 60
event time: 2048
......
4.2 三种模式切换¶
本例程支持Cadence、Speed、Combined三种模式,切换模式需要在sdk_config.h
文件修改以下宏
BSC_DEVICE_TYPE表示设备类型,BSC_MSG_PERIOD表示通道周期,根据profile协议规定设置即可。
#define BSC_DEVICE_TYPE 0x7A
#define BSC_MSG_PERIOD 8102
4.3 加密开启¶
本例程演示了固件加密的方法,开启加密需要在prj.conf
文件中将以下宏配置修改为y。
CONFIG_FIRMWARE_ENCRYPTION=y
开启加密后,编译将会在当前工程目录生成一个encrypt_info_enc.bin
的加密配置文件,此文件需要通过PANLINK烧录到芯片后程序才能正常运行。
更多详细加密流程说明请查看Zephyr Encrypt开发指南
、PANLINK操作指南
。
5 开发者说明¶
启用ANT模块,需要在
prj.conf
文件中添加”CONFIG_USE_PANPLAT_ANT=y”和”CONFIG_ENABLE_PANCHIP_PRF=y”CONFIG_USE_PANPLAT_ANT=y CONFIG_ENABLE_PANCHIP_PRF=y
初始化ANT
通道配置
ANT通信是基于通道的,所以配置通道是必不可少的步骤。下列是通道配置的参数
ant_channel_config_t channel_cfg = { .channel_num = BSC_CHANNEL_NUMBER, // 通道号,默认为0 .channel_type = BSC_CHANNEL_TYPE, // 通道类型,Master or slave .ext_assign = 0, // 暂不支持,填0即可 .rf_frequency = BSC_RF_FREQ, // 通信频率,ANT+固定为2457 .transmission_type = BSC_TRANSMISSION_TYPE, // 传输类型,按照协议规定设置 .device_type = BSC_DEVICE_TYPE, // 设备类型,按照协议规定设置 .device_num = BSC_DEVICE_NUMBER, // 设备编号 16bit,自定义 .channel_period = BSC_MSG_PERIOD, // 通道周期,按照协议固定设置 .network_number = BSC_NETWORK_NUMBER // 网络号,必须设置为0,不支持其他网络号 };
设置网络
下列接口实现设置ANT+网络
ant_plus_key_set(channel_cfg.channel_num);
启动ANT
下列接口实现启动ANT协议
ant_stack_init();
初始化profile
下列接口实现BSC传感器的初始化
err_code = ant_bsc_sensor_init(&bsc_profile, &channel_cfg);
下列接口实现打开BSC传感器
err_code = ant_bsc_sensor_open(&bsc_profile);
下列接口实现注册BSC的handler函数,handler函数需要处理ANT栈返回的一些消息,比如发送成功消息,发送失败消息,接收到数据的消息等等。
ant_evt_handle_register(&evt);
初始化simulator
SDK为BSC提供了一个simulator,以便于实例程序可以模拟实际数据进行测试。
下列接口实现初始化bsc simulator。参数BSC_SIMULATOR_AUTO_UPDATE为1表示simulator自动改变发送数据,为0表示需要人工按键改变发送数据。
ant_bsc_simulator_init(&bsc_profile, BSC_SIMULATOR_AUTO_UPDATE);
更新数据
下列接口实现更新发送数据。实际使用根据需要可以实现自己的更新函数
ant_bsc_update_simulator(&bsc_profile, 0);
发送数据
下列接口实现推送发送数据的事件。实际使用中根据是否需要更新发送数据的情况调用
ant_bsc_sensor_evt_handler(&ant_evt, &bsc_profile);
6 RAM/Flash资源使用情况¶
Memory region Used Size Region Size %age Used
FLASH: 28788 B 1020 KB 2.76%
SRAM: 9440 B 64 KB 14.40%