# 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项目](./images/APUSxiangmu.png) ![ISMBB工程](./images/ISMBBgongcheng.png) ## 1.2 编译方法 * make apus\_fpga\_1v_defconfig // 选择APUS工程配置 * make menuconfig // 勾选编译ISMBB模块 * make autoconf * make ismbb // 编译ISMBB模块 * make // 编译APUS工程,得到gxscpu.elf可执行文件 # 2 运行流程 ## 2.1 初始化 ![初始化](./images/chushihua.png) ## 2.2 定时排帧 ![定时排帧](./images/dingshipaizheng.png) ## 2.3 发射 ![发射](./images/fashe.png) ## 2.4 连续发射(仅手动模式) ![连续发射(仅手动模式)](./images/lianxufashe(jinshoudongmoshi).png) ## 2.5 接收 ![接收](./images/jieshou.png) ## 2.6 连续接收(仅手动模式) ![连续接收(仅手动模式)](./images/lianxujieshou(jinshoudongmoshi).png) ## 2.7 ACK收发(仅自动模式) ![ACK收发(仅自动模式)](./images/ACKshoufa(jinzidongmoshi).png) # 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排帧间隔时间。 |