
2. add para for phy_sniffer_start; 3. test case: case34, case44, case45, case48, case41, case42, case21.
163 lines
7.7 KiB
C
163 lines
7.7 KiB
C
#ifndef _JESD_CSU_H_
|
||
#define _JESD_CSU_H_
|
||
|
||
#include "typedef.h"
|
||
|
||
#define JS_204B_CONVERTER_BITS 16 // 12
|
||
#define JS_204B_CS_BITS 0 // 2
|
||
#define JS_204B_CF_VAL 0
|
||
|
||
#define JESD_CSU_RX0_TAG 0
|
||
#define JESD_CSU_TX0_TAG 1
|
||
#define JESD_CSU_RX1_TAG 2
|
||
#define JESD_CSU_TX1_TAG 3
|
||
|
||
#define JESD_CH_NUM 2 // rx0/rx1, tx0/tx1
|
||
#define JESD_LIST_NUM 2 // double 2.5ms, 2 lists for every ch
|
||
|
||
// 链表通道定义,tx/rx各有两个通道,小于等于4天线情况下,只会启用通道0
|
||
typedef enum _tagJesdCsuCh
|
||
{
|
||
JESD_CSU_CH0 = 0,
|
||
JESD_CSU_CH1 = 1
|
||
}numJesdCsuCh;
|
||
|
||
typedef struct _tagJesdCsuPara
|
||
{
|
||
uint8_t antNum; // 天线数
|
||
uint8_t cf;
|
||
uint8_t cs; // 控制字, =0
|
||
uint8_t n; // iq数据精度, = 16bit
|
||
uint8_t m; // 天线数*2
|
||
uint8_t nTotal; // n+cs+padding
|
||
uint8_t seq;
|
||
uint8_t margin;
|
||
uint8_t tfMode;
|
||
}stJesdCsuPara;
|
||
|
||
// 链表节点结构体定义
|
||
typedef struct _tagJesdCsuNodePara
|
||
{
|
||
uint32_t dataAddr; // 数据地址
|
||
uint32_t yStep; // 每个天线的数据总长度,B为单位
|
||
uint32_t allNum; // 需要csu搬运的总的数据长度,B为单位
|
||
}stJesdCsuNodePara;
|
||
|
||
|
||
/*******************************************************************************************************************
|
||
函数名称:jesd_set_protocol_rx_advance
|
||
函数入参:
|
||
uint32_t rxAdvance: 协议规定的接收提前量
|
||
返回值:
|
||
无
|
||
函数功能:协议规定的接收提前量,NR提前13us,LTE不提前,LTE模式下,需在建小区之前,调用该接口,修改协议提前量
|
||
********************************************************************************************************************/
|
||
void jesd_set_protocol_rx_advance(uint32_t rxAdvance);
|
||
|
||
/*******************************************************************************************************************
|
||
函数名称:jesd_csu_init
|
||
函数入参:
|
||
uint8_t antNum: 天线数
|
||
uint8_t margin: jesd csu一次搬移的数据量xnum=(32*2^margin)B,设置合理的margin值,确保allnum/xnum是个整数值
|
||
uint8_t tfMode: tdd/fdd mode
|
||
返回值:
|
||
0 : 正常
|
||
-1: 输入参数错误
|
||
函数功能:JESD CSU初始化
|
||
********************************************************************************************************************/
|
||
int32_t jesd_csu_init(uint8_t antNum, uint8_t margin, uint8_t tfMode);
|
||
|
||
/*******************************************************************************************************************
|
||
函数名称:jesd_orx_csu_init
|
||
函数入参:
|
||
uint8_t margin: jesd csu一次搬移的数据量xnum=(32*2^margin)B,设置合理的margin值,确保allnum/xnum是个整数值
|
||
返回值:
|
||
0 : 正常
|
||
-1: 还未正常执行jesd_csu_init
|
||
函数功能:JESD ORX通道CSU初始化
|
||
********************************************************************************************************************/
|
||
int32_t jesd_orx_csu_init(uint8_t margin);
|
||
|
||
/*******************************************************************************************************************
|
||
函数名称:jesd_csu_rx_inlatch_thres_cfg
|
||
函数入参:
|
||
uint8_t ch: rx通道ID,JESD_CSU_CH0: rx0, JESD_CSU_CH1: rx1
|
||
uint32_t send_threshold: 接收缓存InLatch的阈值,低于该值,CSU暂停向总线发起写请求
|
||
uint32_t almostfull_threshold: 接收缓存InLatch的阈值,不低于该值,CSU开始向总线发起写请求
|
||
返回值:
|
||
0 : 正常
|
||
-1: 输入参数错误
|
||
函数功能:JESD CSU初始化
|
||
********************************************************************************************************************/
|
||
int32_t jesd_csu_rx_inlatch_thres_cfg(uint8_t ch, uint32_t send_threshold, uint32_t almostfull_threshold);
|
||
|
||
// JESD CSU资源配置,可以根据通道ID和list ID,查询驱动所采用的tag号,从而查询对应的通道任务是否完成
|
||
/***********************************************************************************
|
||
ch list RegGroup CmdFIFO tagId = RegGroupId
|
||
rx0 0/1/2/3 0/4/8/12 0 0/4/8/12
|
||
tx0 0/1/2/3 1/5/9/13 1 1/5/9/13
|
||
rx1 0/1/2/3 2/6/10/14 2 2/6/10/14
|
||
tx1 0/1/2/3 3/7/11/15 3 3/7/11/15
|
||
************************************************************************************/
|
||
|
||
/*******************************************************************************************************************
|
||
函数名称:jesd_csu_rx_cfg
|
||
函数入参:
|
||
uint32_t listAddr: 链表地址,目前使用的双边多维链式DMA,地址要求0x40B对齐
|
||
uint32_t nodeNum: 链表包含的节点个数
|
||
stJesdCsuNodePara* pListNode: 指向链表节点首地址的指针
|
||
uint8_t nChId: 通道ID, JESD_CSU_CH0: rx0, JESD_CSU_CH1: rx1
|
||
uint8_t nListId: 链表ID, 0~1, 每个通道,最多支持2个链表配置,该参数可用于2.5ms双小区配置,
|
||
第一个2.5ms采用list0,第二个2.5ms采用list1
|
||
返回值:
|
||
0 : 正常
|
||
-1: 输入参数错误
|
||
函数功能:JESD RX通道CSU配置
|
||
********************************************************************************************************************/
|
||
int32_t jesd_csu_rx_cfg(uint32_t listAddr, uint32_t nodeNum, stJesdCsuNodePara* pListNode, uint8_t nChId, uint8_t nListId);
|
||
|
||
/*******************************************************************************************************************
|
||
函数名称:jesd_csu_tx_cfg
|
||
函数入参:
|
||
uint32_t listAddr: 链表地址,目前使用的双边多维链式DMA,地址要求0x40B对齐
|
||
uint32_t nodeNum: 链表包含的节点个数
|
||
stJesdCsuNodePara* pListNode: 指向链表节点首地址的指针
|
||
uint8_t nChId: 通道ID, JESD_CSU_CH0: tx0, JESD_CSU_CH1: tx1
|
||
uint8_t nListId: 链表ID, 0~1, 每个通道,最多支持2个链表配置,该参数可用于2.5ms双小区配置,
|
||
第一个2.5ms采用list0,第二个2.5ms采用list1
|
||
返回值:
|
||
0 : 正常
|
||
-1: 输入参数错误
|
||
函数功能:JESD TX通道CSU配置
|
||
********************************************************************************************************************/
|
||
int32_t jesd_csu_tx_cfg(uint32_t listAddr, uint32_t nodeNum, stJesdCsuNodePara* pListNode, uint8_t nChId, uint8_t nListId);
|
||
|
||
/*******************************************************************************************************************
|
||
函数名称:jesd_csu_orx_cfg
|
||
函数入参:
|
||
uint32_t listAddr: 链表地址,目前使用的双边多维链式DMA,地址要求0x40B对齐
|
||
uint32_t nodeNum: 链表包含的节点个数
|
||
stJesdCsuNodePara* pListNode: 指向链表节点首地址的指针
|
||
uint8_t nListId: 链表ID
|
||
返回值:
|
||
0 : 正常
|
||
-1: 输入参数错误
|
||
函数功能:JESD ORX通道CSU配置
|
||
********************************************************************************************************************/
|
||
int32_t jesd_csu_orx_cfg(uint32_t listAddr, uint32_t nodeNum, stJesdCsuNodePara* pListNode, uint8_t nListId);
|
||
|
||
/*******************************************************************************************************************
|
||
函数名称:jesd_csu_stat_lookup
|
||
函数入参:
|
||
uint8_t tag: tag号
|
||
返回值:
|
||
0 : 未完成
|
||
1 : 已完成
|
||
-1: 输入参数错误
|
||
函数功能:根据tag号,查询该tag号对应的通道任务是否完成
|
||
********************************************************************************************************************/
|
||
int32_t jesd_csu_stat_lookup(uint8_t tag);
|
||
|
||
#endif
|
||
|