产品中心

RTT zephyr_polling软件包 Bluenrg2蓝牙芯片启动流程
首页 > 产品中心 > 食品加工
来源:电竞比赛押注平台app    发布时间:2024-03-02 03:26:42

  在用标准的 HCI 指令控制设备做蓝牙操作之前,需要提前通过 VS Command 对设备做配置,只有正确配置好的设备才能正常使用。

  芯片产商只出售芯片,并不关注外围电路和具体的产品形态,这些是具体的ODM厂商来实现的。也就是芯片产商提供带HCI蓝牙功能的芯片,ODM设计电路并设计产品,之后通过HCI和芯片进行交互。实际各家ODM产商的需求各不相同,芯片产商为满足不同客户的需要,并且为了减少和客户的对接,就必然在同一套代码的基础上,需要提供一系列的配置参数来满足多种 ODM 厂商的需要。

  配置可以包括:固件烧录(部分没有带 FLASH 的蓝牙芯片每次上电都要重新烧录最新的固件)、蓝牙地址配置、配置(如RF接口,晶振类型等,部分蓝牙芯片需要)、波特率配置(HCI 一般是UART接口,默认是115200)以及芯片需要的由厂商要求的其他参数配置。

  此外,对于一些有Flash的芯片,可完全将配置参数等预烧录到了 Flash 中,使用时完全不需要配置任何参数,直接通过HCI接口操作使用即可。

  zephyr_polling 协议栈提供了 Boot 流程接口和 Prepare 流程接口,能够准确的通过实际芯片的需求实现启动配置。

  完成厂商的初始化流程,如固件下载,蓝牙地址配置等。在 chipset 注册好接口后,协议栈启动时会通过boot_start()回调启动 chipset(指协议栈 chipset 目录下的启动流程代码,下同) 的 Boot 流程,由于操作接口是 HCI,所以一般都是下发一个VS Command,然后根据 VS Event 来进行后续动作,协议栈会通过event_process()回调接口将收到的 event 上报给 chipset,当 chipset 认为操作结束时,通过调用bt_hci_set_boot_ready()接口通知协议栈boot流程结束。

  查阅 ST 官方提供的手册和例程资料,可以了解到 BlueNRG-2 的启动配置需求。

  配置发射功率的指令的 ogf 为0x3f,ocf 为0x00f。命令参数为是否启用高功率模式(0x00启用普通功率,0x01启用高功率)和功率放大器输出电平(允许的PA电平取决于设备)。

  初始化 GAP 层。注册GAP服务,并设置标准 GAP 服务特性:设备名称、Appearance、外围设备首选连接参数(仅限外围设备)。

  GAP 配置的指令的 ogf 为0x3f,ocf 为0x08a。配置为外围设备,若需要用做另外的角色,需要修改此处;不启用隐私策略(为保护地址不被窃取,进行地址加密/解密,并周期更新);设置设备名字长度。

  对于启动流程的返回响应,需要由event_process()回调进行判断和推进。这里为了方便,只对CMD_COMPLETE事件进行判断处理,推进 Prepare 流程进行。

  将上述实现的启动流程的函数指针打包到bt_hci_chipset_driver结构体中,供协议栈调用注册。

  完成 HCI 接口的时候虽然成功运行了 Beacon 例程,但 Beacon 例程是不有必要进行 chipset 启动配置流程的(运行时启用的是common空白回调)。运行外设的心率例程验证 Bluenrg2 蓝牙芯片启动流程。

  prepare_event_process 步骤的日志输出正常,设备连接、电池服务、心率服务正常。