Board 层

更新时间:2022-11-24 09:20:05下载pdf

Board 层包含芯片原厂提供的 SDK,以及用于对接涂鸦体系的适配文件,即蓝牙抽象层 bal 和硬件抽象层 hal。

蓝牙抽象层

该层封装了蓝牙 Beacon 收发函数 bal_beacon_txrx(u32 tx_cnt, u32 rx_cnt) ,实现 Beacon 的收发。

bal_beacon_txrx

函数名 bal_beacon_txrx
功能概述 实现 Beacon 的收发
参数 tx_cnt:37 , 38 , 39 信道轮流发送 Beacon 数据的总次数(需要为 3 的倍数)
rx_cnt:37 , 38 , 39 信道轮流接收 Beacon 数据的总次数(需要为 3 的倍数)
返回值
备注 待发送 Beacon 数据放在 tx_buf[31] 中(参考代码中直接使用,请勿改动)
接收到的 Beacon 数据放在 rx_buf[39] 中(参考代码中直接使用,请勿改动)

注意

  • 如果收发不能并行,调用上述函数,先发送,再接收。
  • 如果条件允许,可以一直开接收,在接收回调函数中放置;
  • 如果条件允许,发送按照最小时间间隔发送。

硬件抽象层

Tuya Beacon 协议栈中的防重放序列号,加密 key 等信息需要借助一个 256 字节任意位置读写的非易失存储驱动,和一个用来给协议栈提供定时逻辑的 us 级别的系统滴答驱动,因此用户按照以下要求实现五个函数。

hal_storage_256_init

函数名 hal_storage_256_init
功能概述 初始化一块大小为 256 字节的非易失存储驱动
参数
返回值 0
备注 按照要求实现该函数

hal_storage_256_read_bytes

函数名 hal_storage_256_read_bytes
功能概述 从某地址空间读取某长度字节的数据
参数 u16 offset:地址偏移量
u8* pdata:读取的数据
u8 len:读取数据的字节数
返回值 0
备注 按照要求实现该函数,建议采用双备份方式

hal_storage_256_write_bytes

函数名 hal_storage_256_write_bytes
功能概述 将某长度字节的数据写入某地址空间
参数 u16 offset:地址偏移量
u8* pdata:指向需要写入的数据
u8 len:写入数据的字节数
返回值 0
备注 按照要求实现该函数,建议采用双备份方式

hal_clock_get_system_tick

函数名 hal_clock_get_system_tick
功能概述 获取当前 tick
参数
返回值 tick 值
备注 按照要求实现该函数

hal_clock_time_exceed

函数名 hal_clock_time_exceed
功能概述 计算当前 tick-old_tick 是否超过了设定时间 span_us,超过则返回 true (非阻塞)
参数 u32 ref:old_tick,设定时间时的 tick
u32 span_us:设定的定时时间
返回值 true :1
false:0
备注 按照要求实现该函数