⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scu2niuc.c

📁 这是单板上DPRAM的驱动程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/*-------------------------------------------------------------------------*/ /*
    Module:  NiuC for niu interface , NiuC 0 is ABIS, NiuC 1 is cacsade
    Name:    Zhujing
    History: Time    Op
             99/9/22 Create
*/ /*-------------------------------------------------------------------------*/

#include <psos.h>
#include "board.h"
#include "sdev.h"
#include "bspcomm.h"
#include "bspspec.h"
#include "scu2niuc.h"

#define BT8370_REG                            unsigned char
#define BT8370_DLINKS_PER_PORT                2
#define BT8370_SA_BYTES_PER_PORT              5
#define BT8370_TS_PER_PORT                    32

#define BT8370_RUSLIP (1<<1)
#define BT8370_RFSLIP (1<<2)
#define BT8370_RSDIR  (1<<3)

#define BT8370_ALOOP                                 (1 << 0)
#define BT8370_FLOOP                                 (1 << 1)
#define BT8370_LLOOP                                 (1 << 2)
#define BT8370_PLOOP                                 (1 << 3)

#define BT8370_RLOF                                  (1 << 1)
#define BT8370_RLOS                                  (1 << 2)
#define BT8370_RALOS                                 (1 << 3)
#define BT8370_RAIS                                  (1 << 4)

typedef struct {
    BT8370_REG DID;
    BT8370_REG CR0;
    BT8370_REG JAT_CR;
    BT8370_REG IRR;
    BT8370_REG ISR7_ALARM1;
    BT8370_REG ISR6_ALARM2;
    BT8370_REG ISR5_ERROR;
    BT8370_REG ISR4_COUNT;
    BT8370_REG ISR3_TIMER;
    BT8370_REG ISR2_DL[BT8370_DLINKS_PER_PORT];
    BT8370_REG ISR0_PATT; 
    BT8370_REG IER7_ALARM1;
    BT8370_REG IER6_ALARM2;
    BT8370_REG IER5_ERROR;
    BT8370_REG IER4_COUNT;
    BT8370_REG IER3_TIMER;
    BT8370_REG IER2_DL[BT8370_DLINKS_PER_PORT];
    BT8370_REG IER0_PATT; 
    BT8370_REG LOOP;
    BT8370_REG DL3_TS;
    BT8370_REG DL3_BIT;
    BT8370_REG FSTAT;
    BT8370_REG PIO;
    BT8370_REG POE;
    BT8370_REG CMUX;
    BT8370_REG TMUX;
    BT8370_REG TEST;
    BT8370_REG SPARE_1[3];
    BT8370_REG LIU_CR;
    BT8370_REG RSTAT;
    BT8370_REG RLIU_CR;
    BT8370_REG LPF;
    BT8370_REG VGA_MAX;
    BT8370_REG EQ_DAT;
    BT8370_REG EQ_PTR;
    BT8370_REG DSLICE;
    BT8370_REG EQ_OUT;
    BT8370_REG VGA;
    BT8370_REG PRE_EQ;
    BT8370_REG SPARE1[5];
    BT8370_REG COEFF[8];
    BT8370_REG GAIN[5];
    BT8370_REG SPARE_2[3];
    BT8370_REG RCR0;
    BT8370_REG RPATT;
    BT8370_REG RLB;
    BT8370_REG LBA;
    BT8370_REG LBD;
    BT8370_REG RALM;
    BT8370_REG LATCH;
    BT8370_REG ALM1;
    BT8370_REG ALM2;
    BT8370_REG ALM3;
    BT8370_REG SPARE_3[6];
    BT8370_REG FERR[2];
    BT8370_REG CERR[2];
    BT8370_REG LCV[2];
    BT8370_REG FEBE[2];
    BT8370_REG BERR[2];
    BT8370_REG AERR;
    BT8370_REG RSA[BT8370_SA_BYTES_PER_PORT];
    BT8370_REG SHAPE[8];
    BT8370_REG TLIU_CR;
    BT8370_REG SPARE_4[7];
    BT8370_REG TCR0;
    BT8370_REG TCR1;
    BT8370_REG TFRM;
    BT8370_REG TERROR;
    BT8370_REG TMAN;
    BT8370_REG TALM;
    BT8370_REG TPATT;
    BT8370_REG TLB;
    BT8370_REG LBP;
    BT8370_REG SPARE_5[2];
    BT8370_REG TSA[BT8370_SA_BYTES_PER_PORT];
    BT8370_REG SPARE_6[16];
    BT8370_REG CLAD_CR;
    BT8370_REG CSEL;
    BT8370_REG CPHASE;
    BT8370_REG CTEST;
    BT8370_REG SPARE_7[12];
    BT8370_REG BOP;
    BT8370_REG TBOP;
    BT8370_REG RBOP;
    BT8370_REG BOP_STAT;
    
    BT8370_REG DL1_TS;
    BT8370_REG DL1_BIT;
    BT8370_REG DL1_CTL;
    BT8370_REG RDL1_FFC;
    BT8370_REG RDL1;
    BT8370_REG RDL1_STAT;
    BT8370_REG PRM;
    BT8370_REG TDL1_FEC;
    BT8370_REG TDL1_EOM;
    BT8370_REG TDL1;
    BT8370_REG TDL1_STAT;
    BT8370_REG DL2_TS;
    BT8370_REG DL2_BIT;
    BT8370_REG DL2_CTL;
    BT8370_REG RDL2_FFC;
    BT8370_REG RDL2;
    BT8370_REG RDL2_STAT;
    BT8370_REG SPARE_75[1];
    BT8370_REG TDL2_FEC;
    BT8370_REG TDL2_EOM;
    BT8370_REG TDL2;
    BT8370_REG TDL2_STAT;
    
    BT8370_REG DL_TEST[5];
    BT8370_REG SPARE_8[17];
    BT8370_REG SBI_CR;
    BT8370_REG RSB_CR;
    BT8370_REG RSYNC_BIT;
    BT8370_REG RSYNC_TS;
    BT8370_REG TSB_CR;
    BT8370_REG TSYNC_BIT;
    BT8370_REG TSYNC_TS;
    BT8370_REG RSIG_CR;
    BT8370_REG RSYNC_FRM;
    BT8370_REG SSTAT;
    BT8370_REG STACK;
    BT8370_REG RPHASE;
    BT8370_REG TPHASE;
    BT8370_REG PERR;
    BT8370_REG SPARE_9[2];
    BT8370_REG SBC[BT8370_TS_PER_PORT];
    BT8370_REG TPC[BT8370_TS_PER_PORT];
    BT8370_REG TSIG[BT8370_TS_PER_PORT];
    BT8370_REG TSLIP_LO[BT8370_TS_PER_PORT];
    BT8370_REG TSLIP_HI[BT8370_TS_PER_PORT];
    BT8370_REG RPC[BT8370_TS_PER_PORT];
    BT8370_REG RSIG[BT8370_TS_PER_PORT];
    BT8370_REG RSLIP_LO[BT8370_TS_PER_PORT];
    BT8370_REG RSLIP_HI[BT8370_TS_PER_PORT];
    }BT8370Reg;

static void BT8370Init( BT8370Reg  *bt8370, int mode ) /* mode=1 hdsl */
{
    int i;
    
/*-----------------------------------------------------------------------*/
/*  全局控制状态寄存器                                                   */
/*-----------------------------------------------------------------------*/    
    bt8370->CR0 = 0;          /* RESET = 0;  
                                 FRAME[3:0] = 0000, FAS only; 
                                 T1/E1 = 0, E1模式.                   */
    bt8370->JAT_CR = 0;       /* JEN = 0, JDIR = 0, E1通路;
                                 JCENTER = 0, 正常模式;
                                 JSIZE = 000,8 bits.               */                             

/*-----------------------------------------------------------------------*/
/*  中断使能寄存器                                                       */
/*-----------------------------------------------------------------------*/    
    bt8370->IER7_ALARM1 = 0x1E;  /* RAIS = 1,  使能RAIS,全1告警;
                                    RALOS = 1, 使能RALOS,接收模拟信号丢失告警;
                                    RLOS = 1,  使能RLOS,接收信号丢失告警;
                                    RLOF = 1,  使能RLOF,接收帧丢失。      */
    bt8370->IER6_ALARM2 = 0;
    bt8370->IER5_ERROR =  0x40;  /* RSLIP = 1, 使能RSLIP。 */
    bt8370->IER4_COUNT = 0;
    bt8370->IER3_TIMER = 0;
    bt8370->IER2_DL[0] = 0;
    bt8370->IER2_DL[1] = 0;
    bt8370->IER0_PATT = 0;

/*-----------------------------------------------------------------------*/
/*  基本控制状态寄存器                                                   */
/*-----------------------------------------------------------------------*/
    bt8370->LOOP = 0;       /* 正常模式 */
    bt8370->DL3_TS = 0x61;
    bt8370->DL3_BIT = 0xff;
    bt8370->FSTAT = 0x9;
    bt8370->PIO = 0xE4;     /* ONESEC_IO = 1, ONESEC 输出;  
                                RDL_IO = 1,    RDLCKO 和 RDLO;
                                TDL_IO = 1,    TDLCKO 和 TDLI 信号;
                                INDY_IO = 0,   TNEGO 和 TPOSO;       
                                RFSYNC_IO = 0, RFSYNC 输入;          
                                RMSYNC_IO = 1, RMSYNC 输出;
                                TFSYNC_IO = 0, TFSYNC 输入;
                                TMSYNC_IO = 0, TMSYNC 输入.               */
    bt8370->POE = 0x0;      /* 所有输出使能.   */
    bt8370->CMUX = 0x40;    /* RSBCKI[1:0] = 01, RSB 的时钟源为 TSB;
                                TSBCKI[1:0] = 00, 正常的TSB时钟;
                                CLADI[1:0] = 00,  正常的CLAD时钟;
                                TCKI[1:0] = 00,  TCKI 作为 TCKI 的时钟源. */
    bt8370->TMUX = 0;
    bt8370->TEST = 0;
    
/*-----------------------------------------------------------------------*/
/*  RLIU 寄存器                                                          */
/*-----------------------------------------------------------------------*/    
    bt8370->LIU_CR = 0x41;  /* RST_LIU = 0, 正常模式; (推荐0x41)
                               SQUELCH = 1;
                               FORCE_VGA = 0, 
                               RDIGI = 0, E1输入使能;
                               ATTN[1:0] = 11.    */
    bt8370->RSTAT = 0x2a;
    bt8370->RLIU_CR = 0xb1; /* FRZ_SHORT = 0, (推荐0xb1)
                               HI_CSLICE = 0, 正常模式;
                               AGC[1:0] = 11, AGC 观察周期, 2048bits;
                               EQ_FRZ=0,OOR_BLOCK = 0, RBLO = 0, LONG_EYE = 1 */
    bt8370->LPF = 0x33;     /* RPLL 低通滤波器增益 */
    bt8370->VGA_MAX = 0x34; /* (推荐0x34) */
    bt8370->EQ_DAT = 0xea;
    bt8370->EQ_PTR = 0x0;
    bt8370->DSLICE = 0xba;  /* (推荐0xba) */
    bt8370->EQ_OUT = 0xda;  /* M1_ERR[1:0] = 11, 缺省值; (推荐0xda)
                               M2_ERR[1:0] = 01, 缺省值;
                               EQ_OUT[3:0] = 1010, 缺省值.  */
    bt8370->VGA = 0x12;
    bt8370->PRE_EQ = 0xa6;  /* (推荐0xa6)*/
    bt8370->COEFF[0] = 0xe2;
    bt8370->COEFF[1] = 0x7e;
    bt8370->COEFF[2] = 0x76;
    bt8370->COEFF[3] = 0x36;
    bt8370->COEFF[4] = 0xe9;
    bt8370->COEFF[5] = 0xb;
    bt8370->COEFF[6] = 0xe5;
    bt8370->COEFF[7] = 0xed;
    bt8370->GAIN[0] = 0x16;
    bt8370->GAIN[1] = 0x1f;
    bt8370->GAIN[2] = 0x21;
    bt8370->GAIN[3] = 0x24;
    bt8370->GAIN[4] = 0x26;                        
    
/*-----------------------------------------------------------------------*/
/*  RCVR 寄存器                                                          */
/*-----------------------------------------------------------------------*/ 
    bt8370->RCR0 = 0x9;    /* RAMI=0,接收格式为B8ZS/HDB3(E1); 
                                  接收HDSL信号时,RAMI = 1;
                              RABORT = 0, 正常帧操作;
                              RFORCE = 0, 
                              BT8370_RLOFD-A = 1100, 
                                  接收帧检验标准为三个连续的FAS错误;
                              RZCS = 0;   */
    bt8370->RPATT = 0x39;
    bt8370->RLB = 0; 
    bt8370->LBA = 0;
    bt8370->LBD = 0;                                
    bt8370->RALM = 0x20;    /* FS_NFAS = 1, FERR 和 FRED 包含 FS/NFAS.     */
    bt8370->LATCH = 0x0b;
                                                              
/*-----------------------------------------------------------------------*/
/*  TLIU 寄存器                                                          */
/*-----------------------------------------------------------------------*/ 
    bt8370->SHAPE[0] = 0x14;
    bt8370->SHAPE[1] = 0x14;
    bt8370->SHAPE[2] = 0x14;
    bt8370->SHAPE[3] = 0x14;
    bt8370->SHAPE[4] = 0;
    bt8370->SHAPE[5] = 0;
    bt8370->SHAPE[6] = 0;
    bt8370->SHAPE[7] = 0;
    bt8370->TLIU_CR = 0x4a;     /* TURNS = 0, 1:1.36传输比;
                                   TERM = 1,
                                   LBO[1:0] = 00,
                                   PULSE[2:0] = 101, 75欧同轴电缆, E1模式;
                                   AISCLK = 0.    */
                                    
/*-------------------------------------------------------------------------------------*/
/*  TRANSMIT 寄存器                                                                    */
/*-------------------------------------------------------------------------------------*/ 
    bt8370->TCR0 = 0;       /* TFRAME[3:0] = 0000, 传输帧格式只包含FAS.   */
    bt8370->TCR1 = 0xD1;    /* TNRZ = 1, TPOSO/TNEGO 由  TNRZO/MSYNCO 代替;
                                TABORT = 1, 
                                TLOFC-A = 100, 传输失帧标准为连续的三个FAS错误;
                                TZCS[1:0] = 01, ZCS 为HDB3.   */
    bt8370->TFRM = 0x11;    /* INS_MYEL = 0, 
                               INS_YEL = 1, 插入远端告警(YELLOW ALARM 在E1中即为远端告警);
                               INS_MF = 0,
                               INS_FE = 0,
                               INS_CRC = 0,
                               INS_FBIT = 1, 插入帧头        */
    bt8370->TERROR = 0;
    bt8370->TMAN = 0xf8;                                
    bt8370->TALM = 0x10;    /* AUTO_YEL = 1, 跟随FRED状态变化(FRED;addr0x49) */
    bt8370->TPATT = 0;
    bt8370->TLB = 0;
    bt8370->LBP = 0xfe;
    
/*-------------------------------------------------------------------------------------*/
/*  Transmit Sa-Byte 缓冲区                                                            */
/*-------------------------------------------------------------------------------------*/ 
    bt8370->TSA[0] = 0xff;
    bt8370->TSA[1] = 0xff;
    bt8370->TSA[2] = 0xff;
    bt8370->TSA[3] = 0xff;
    bt8370->TSA[4] = 0xff;
                                
/*-------------------------------------------------------------------------------------*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -