ISMBB驱动设计

时间

修订人

版本号

补充说明

2023-08-14

王培鑫

v1.0.0

1 工程介绍

1.1 模块位置

ISMBB位于APUS项目中的./drivers目录;目前包含的子模块有:

  • arch:仿照蓝牙,目前实现了assert断言处理

  • common:buffer、链表结构管理

  • dma:DMA

  • intc:中断处理

  • ip:包含IP和Driver

  • rf:射频管理

APUS项目

ISMBB工程

1.2 编译方法

  • make apus_fpga_1v_defconfig // 选择APUS工程配置

  • make menuconfig // 勾选编译ISMBB模块

  • make autoconf

  • make ismbb // 编译ISMBB模块

  • make // 编译APUS工程,得到gxscpu.elf可执行文件

2 运行流程

2.1 初始化

初始化

2.2 定时排帧

定时排帧

2.3 发射

发射

2.4 连续发射(仅手动模式)

连续发射(仅手动模式)

2.5 接收

接收

2.6 连续接收(仅手动模式)

连续接收(仅手动模式)

2.7 ACK收发(仅自动模式)

ACK收发(仅自动模式)

3 API和宏

API

Parameter

Description

gx_ismbb_tx_data_write

uint16_t length
void* payload

写数据接口,输入参数为待发射数据长度和内容。
为待发射的数据分配TX buffer后存放在TX queue中,等待发射。

gx_ismbb_rx_data_read

uint8_t* prefix_id
uint16_t* length
void* payload

读数据接口,输入参数为接收数据的RX id、长度和内容。
检查RX queue是否有数据接收,如有则将数据读出并释放RX buffer。

ismbb_rf_tx_set

uint8_t channel
uint8_t gain

TX频点和射频增益设置接口,输入参数为信道号和射频增益值。
用于TX跳频实现。

ismbb_rf_rx_set

uint8_t channel
uint8_t gain
uint8_t gain_mode

RX频点和射频增益设置接口,输入参数为信道号、射频增益值和增益模式(L/M/H)。低中频系统设计,RX频点 = TX频点 - 2M。
用于RX跳频实现。

Description

DMA_SUPPORT

控制发射或接收是否使能DMA。

ISMBB_BUF_MALLOC

控制TX和RX buffer是否通过malloc分配。

DEFAULT_TX_INTV
DEFAULT_RX_INTV

控制定时器TX和RX排帧间隔时间。