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

📄 e1.h

📁 芯片bt8237的底层驱动,实现E1/T1帧的构建
💻 H
📖 第 1 页 / 共 3 页
字号:

typedef struct
{
	unsigned char rsbi:2;
	unsigned char rsb_ctr:1;
	unsigned char bus_frz:1;
	unsigned char rsyn_neg:1;
	unsigned char rpcm_neg:1;
	unsigned char sig_off:1;
	unsigned char bus_rsb:1;
}st_rsb_cr;
typedef union
{
    unsigned char byte;
    st_rsb_cr bit;
}un_rsb_cr;

typedef struct
{
	unsigned char tsbi:2; 
	unsigned char tsb_ctr:1; 
	unsigned char tsb_align:1; 
	unsigned char tsyn_neg:1;     //输出sync在falling edge时
	unsigned char tpcm_neg:1;      //在falling edge输出数据
	unsigned char tx_align:1;      // 使用TMSYNC(transmitter multiframe sync)信号from system bus  
	unsigned char bus_tsb:1; 
}st_tsb_cr;
typedef union
{
    unsigned char byte;
    st_tsb_cr bit;
}un_tsb_cr;

typedef struct
{
	unsigned char thru:1;
	unsigned char frz_on:1;
	unsigned char frz_off:1;
	unsigned char debounce:1;
	unsigned char unicode:1;
	unsigned char set_sig:1;
	unsigned char set_rsig:1;
	unsigned char reserved:1;
}st_rsig_cr;
typedef union
{
    unsigned char byte;
    st_rsig_cr bit;
}un_rsig_cr;

typedef struct
{
	unsigned char reserved_0:1;
	unsigned char ruslip:1;
	unsigned char rfslip:1;
	unsigned char rsdir:1;
	unsigned char reserved_4:1;
	unsigned char tuslip:1;
	unsigned char tfslip:1;
	unsigned char tsdir:1;
}st_sstat;
typedef union
{
    unsigned char byte;
    st_sstat bit;
}un_sstat;

typedef struct
{
	unsigned char rslip_rd:1;
	unsigned char rslip_wr:1;
	unsigned char rdelay:6;
}st_rphase;
typedef union
{
    unsigned char byte;
    st_rphase bit;
}un_rphase;

typedef struct
{
	unsigned char tslip_rd:1;
	unsigned char tslip_wr:1;
	unsigned char tdelay:6;
}st_tphase;
typedef union
{
    unsigned char byte;
    st_tphase bit;
}un_tphase;

typedef struct
{
	unsigned char perr_sbc:1;
	unsigned char perr_rpc:1;
	unsigned char perr_tpc:1;
	unsigned char reserved:5;
}st_perr;
typedef union
{
    unsigned char byte;
    st_perr bit;
}un_perr;

typedef struct
{
	unsigned char assign:1;
	unsigned char tsig_ab:1;
	unsigned char tindo:1;
	unsigned char rindo:1;
	unsigned char rloop:1;
	unsigned char sig_lp:1;
	unsigned char insert:1;
	unsigned char reserved:1;
}st_sbc;
typedef union
{
    unsigned char byte;
    st_sbc bit;
}un_sbc;

typedef struct
{
	unsigned char tsigd:1;
	unsigned char tsigc:1;
	unsigned char tsigb:1;
	unsigned char tsiga:1;
	unsigned char tlocal:1;
	unsigned char tidle:1;
	unsigned char tloop:1;
	unsigned char tb7zs:1;
}st_tpc;
typedef union
{
    unsigned char byte;
    st_tpc bit;
}un_tpc;

typedef struct
{
	unsigned char rsigd:1;
	unsigned char rsigc:1;
	unsigned char rsigb:1;
	unsigned char rsiga:1;
	unsigned char rlocal:1;
	unsigned char sig_stk:1;
	unsigned char ridle:1;
	unsigned char rsig_ab:1;
}st_rpc;
typedef union
{
    unsigned char byte;
    st_rpc bit;
}un_rpc;


typedef union
{
    unsigned char byte;
    st_did did;		//000
    st_cro cr0;		//001
    st_jat_cr jat_cr;	//002
    st_irr irr;		//003
    st_isr7 isr7;	//004
    st_isr6 isr6;	//005
    st_isr5 isr5;	//006
    st_isr4 isr4;	//007
    st_isr3 isr3;	//008
    st_isr2 isr2;	//009
    st_isr1 isr1;	//00a
    st_isr0 isr0;	//00b
    st_isr7 ier7;	//00c
    st_isr6 ier6;	//00d
    st_isr5 ier5;	//00e
    st_isr4 ier4;	//00f
    st_isr3 ier3;	//010
    st_isr2 ier2;	//011
    st_isr1 ier1;	//012
    st_isr0 ier0;	//013
    st_loop loop;	//014
    st_dl3_ts dl3_ts;	//015
    st_fstat fstat;	//017
    st_pio pio;		//018
    st_poe poe;		//019
    st_cmux cmux;	//01a
    st_tmux tmux;	//01b
    testc test;		//01c
    
    			//01d~01f reserved
    
    
 	st_liu_cr	liu_cr;		//020
  	st_rstat 	rstat;		//021
  	st_rliu_cr 	rliu_cr;	//022
	st_rcr0 	rcr0;		//040
	st_rpatt	rpatt;		//041
	st_ralm 	ralm;		//045
	st_latch 	latch;		//046
	st_alm1 	alm1;		//047
	st_alm2 	alm2;		//048
	st_alm3 	alm3;		//049
	st_tliu_cr	tliu_cr;	//068
	st_tcr1 	tcr1;		//071
	st_tfrm 	tfrm;		//072
	st_terror 	terror;		//073
	st_tman 	tman;		//074
	st_talm 	talm;		//075
	st_tpatt 	tpatt;		//076
	st_tlib 	tlb;		//077
	st_clad_cr 	clad_cr;	//090
	st_csel 	csel;		//091
	st_cphase	cphase;		//092
	st_ctest	ctest;		//093
	st_bop 		bop;		//0a0
	st_rbop		rbop;		//0a2	
	st_bop_stat bop_stat;//0a3
	st_dl_ctl dl1_ctl;//0a6
	st_dl_ctl dl2_ctl;//0b1
	st_rdl_ffc rdl1_ffc;//0a7
	st_rdl_ffc rdl2_ffc;//0b2
	st_rdl_stat rdl1_stat;//0a9
	st_rdl_stat rdl2_stat;//0b4
	st_prm prm;		//0aa
	st_tdl_stat tdl1_stat;	//0ae
	st_tdl_stat tdl2_stat;	//0b9
	st_sbi_cr sbi_cr;	//0d0
	st_rsb_cr rsb_cr;	//0d1
	st_tsb_cr tsb_cr;	//0d4
	st_rsig_cr rsig_cr;	//0d7
	st_sstat sstat;		//0d9
	st_rphase rphase;	//0db
	st_tphase tphase;	//0dc
	st_perr perr;		//0dd
	st_sbc sbc;		//0e0~0ef
	st_tpc tpc;		//100~11f
	st_rpc rpc;		//180~19f
}un_bt8370_reg;

#define bt8370_TS_PER_PORT			32
#define bt8370_SA_BYTES_PER_PORT	5
#define bt8370_DLINKS_PER_PORT		2
typedef struct 
{
    bt8370_reg did;			//00                               /device identification   8370是09/
    bt8370_reg cr0;			//01                               /Primary Control register      00/
    bt8370_reg jat_cr;		//02                                       /Jitter Attenuator Configuration 00/
    bt8370_reg irr;			//03                              /Interrupt Request register 中断请求寄存器/(read only)
    bt8370_reg isr7;		//04
    bt8370_reg isr6;		//05
    bt8370_reg isr5;		//06                                      /error interrupt status    r/
    bt8370_reg isr4;		//07
    bt8370_reg isr3;		//08                                       /Timer Interrupt Status             r/
    bt8370_reg isr2;		//09
    bt8370_reg isr1;		//0A
    bt8370_reg isr0;		//0B
    bt8370_reg ier7;		//0C
    bt8370_reg ier6;		//0D
    bt8370_reg ier5;		//0E
    bt8370_reg ier4;		//0F
    bt8370_reg ier3;		//10
    bt8370_reg ier2;		//11
    bt8370_reg ier1;		//12
    bt8370_reg ier0;		//13
    bt8370_reg loop;		//14
    bt8370_reg dl3_ts;		//15
    bt8370_reg dl3_bit;		//16
    bt8370_reg fstat;		//17
    bt8370_reg pio;			//18
    bt8370_reg poe;			//19
    bt8370_reg cmux;		//1A
    bt8370_reg tmux;		//1B
    bt8370_reg test;		//1C
    bt8370_reg reserved_1D[3];	//1D,1E,1F
    bt8370_reg liu_cr;		//20	->	Receive LIU                  /从20到3c为receive liu/
    bt8370_reg rstat;		//21                /RLIU的configuration所在/
    bt8370_reg rliu_cr;		//22
    bt8370_reg lpf;			//23
    bt8370_reg vga_max;		//24                                        /receive sensitivity level由此设定/
   /vga(variable gain amplifier)          在固定gain的情况下the RLIU sensitivity的值存在vga_max中/
    bt8370_reg eq_dat;		//25
    bt8370_reg eq_ptr;		//26     //add by mark  用于判断eq  预加重的相关系数
    bt8370_reg dslice;		//27
    bt8370_reg eq_out;		//28
    bt8370_reg vga;			//29
    bt8370_reg pre_eq;		//2A
    bt8370_reg reserved_2B[5];	//2B~2F
    bt8370_reg coeff[8];	//30~37
    bt8370_reg gain[5];		//38~3C
    bt8370_reg reserved_3D[3];	//3D~3F
    bt8370_reg rcr0;		//40	->	Digital Receiver                  /从40到49为digital receiver/
    bt8370_reg rpatt;		//41
    bt8370_reg rlb;			//42
    bt8370_reg lba;			//43
    bt8370_reg lbd;			//44
    bt8370_reg ralm;		//45
    bt8370_reg latch;		//46
    bt8370_reg alm1;		//47
    bt8370_reg alm2;		//48
    bt8370_reg alm3;		//49
    bt8370_reg reserved_4A[6];	//4A~4F
    bt8370_reg ferr[2];		//50,51	->	Error/Alarm Counters                /50到59是error和alarm部分/
    bt8370_reg cerr[2];		//52,53
    bt8370_reg lcv[2];		//54,55
    bt8370_reg febe[2];		//56,57
    bt8370_reg berr[2];		//58,59
    bt8370_reg reserved_5A;		//5A
    bt8370_reg rsa4;		//5B	->	Receive Sa-Byte
    bt8370_reg rsa5;		//5C	->	Receive Sa-Byte
    bt8370_reg rsa6;		//5D	->	Receive Sa-Byte
    bt8370_reg rsa7;		//5E	->	Receive Sa-Byte
    bt8370_reg rsa8;		//5F	->	Receive Sa-Byte
    bt8370_reg shape[8];	//60~67	->	TLIU
    bt8370_reg tliu_cr;		//68
    bt8370_reg reserved_69[7];	//69~6F
    bt8370_reg tcr0;		//70	->	Digital Transmitter
    bt8370_reg tcr1;		//71
    bt8370_reg tfrm;		//72
    bt8370_reg terror;		//73
    bt8370_reg tman;		//74
    bt8370_reg talm;		//75
    bt8370_reg tpatt;		//76
    bt8370_reg tlb;			//77
    bt8370_reg lbp;			//78
    bt8370_reg reserved_79[2];	//79,7A
    bt8370_reg tsa4;		//7B	->	Transmit Sa-Byte
    bt8370_reg tsa5;		//7C	->	Transmit Sa-Byte
    bt8370_reg tsa6;		//7D	->	Transmit Sa-Byte
    bt8370_reg tsa7;		//7E	->	Transmit Sa-Byte
    bt8370_reg tsa8;		//7F	->	Transmit Sa-Byte
    bt8370_reg reserved_80[16];	//80~8F
    bt8370_reg clad_cr;		//90	->	CLAD
    bt8370_reg csel;		//91
    bt8370_reg cphase;		//92
    bt8370_reg ctest;		//93
    bt8370_reg reserved_94[12];	//94~9F
    bt8370_reg bop;			//A0	->	BOP
    bt8370_reg tbop;		//A1
    bt8370_reg rbop;		//A2
    bt8370_reg bop_stat;	//A3
    bt8370_reg dl1_ts;		//A4	-> Data Link
    bt8370_reg dl1_bit;		//A5	-> Data Link
    bt8370_reg dl1_ctl;		//A6	-> Data Link
    bt8370_reg rdl1_ffc;	//A7	-> Data Link
    bt8370_reg rdl1;		//A8	-> Data Link
    bt8370_reg rdl1_stat;	//A9	-> Data Link
    bt8370_reg prm;			//AA	-> Data Link
    bt8370_reg tdl1_fec;	//AB	-> Data Link
    bt8370_reg tdl1_eom;	//AC	-> Data Link
    bt8370_reg tdl1;		//AD	-> Data Link
    bt8370_reg tdl1_stat;	//AE	-> Data Link
    bt8370_reg dl2_ts;		//AF	-> Data Link
    bt8370_reg dl2_bit;		//B0	-> Data Link
    bt8370_reg dl2_ctl;		//B1	-> Data Link
    bt8370_reg rdl2_ffc;	//B2	-> Data Link
    bt8370_reg rdl2;		//B3	-> Data Link
    bt8370_reg rdl2_stat;	//B4	-> Data Link
    bt8370_reg reserved_B5;	//B5	-> Data Link
    bt8370_reg tdl2_fec;	//B6	-> Data Link
    bt8370_reg tdl2_eom;	//B7	-> Data Link
    bt8370_reg tdl2;		//B8	-> Data Link
    bt8370_reg tdl2_stat;	//B9	-> Data Link
    bt8370_reg dl_test1;	//BA	-> Test
    bt8370_reg dl_test2;	//BB	-> Test
    bt8370_reg dl_test3;	//BC	-> Test
    bt8370_reg dl_test4;	//BD	-> Test
    bt8370_reg dl_test5;	//BE	-> Test
    bt8370_reg reserved_BF[17];	//BF~CF
    bt8370_reg sbi_cr;		//D0	->	System Bus Interface
    bt8370_reg rsb_cr;		//D1
    bt8370_reg rsync_bit;	//D2
    bt8370_reg rsync_ts;	//D3
    bt8370_reg tsb_cr;		//D4
    bt8370_reg tsync_bit;	//D5
    bt8370_reg tsync_ts;	//D6
    bt8370_reg rsig_cr;		//D7
    bt8370_reg rsync_frm;	//D8
    bt8370_reg sstat;		//D9
    bt8370_reg stack;		//DA
    bt8370_reg rphase;		//DB
    bt8370_reg tphase;		//DC
    bt8370_reg perr;		//DD
    bt8370_reg reserved_DE[2];	//DE,DF
    bt8370_reg sbc[32];		//E0~EF
    bt8370_reg tpc[32];		//100~11F
    bt8370_reg tsig[32];	//120~13F
    bt8370_reg tslip_lo[32];//140~15F
    bt8370_reg tslip_hi[32];//160~17F
    bt8370_reg rpc[32];		//180~19F
    bt8370_reg rsig[32];	//1A0~1BF
    bt8370_reg rslip_lo[32];//1C0~1DF
    bt8370_reg rslip_hi[32];//1E0~1FF
} st_bt8370;

#define ADDR_BT8370(a)			(*(volatile st_bt8370 *)a)
#define bt8370					ADDR_BT8370(0xCFFFFC00)
#define ABT8370					ADDR_ABYTE(0xCFFFFC00)
#define BGET(x)		bt.byte = bt8370.x
#define BSET(x)		bt8370.x = bt.byte

// define access LED mode
#define LED_ON		0
#define LED_OFF		1
#define LED_XOR		2
#define LED_UNKOWN	100

// define xdragon_prologue step                            /*prologue 序言*/
#define XDRAGON_STARTUP					0x00

#define XDRAGON_INIT					0x10

#define XDRAGON_PRE_NORMAL				0x20

#define XDRAGON_NORMAL					0x30

#define XDRAGON_DISABLE					0x80

#define XDRAGON_ERROR					0xF0

#define XDRAGON_STOP					0xFF

#define XDRAGON_UNKOWN					0xFFFF



                                                                                      /*coefficents 系数*/
////////////////////////////////////////////////////implement RLIU Long and Short Haul coefficients start/////////////////////
/*Short Haul Software Coefficient Table */
#define SHORT_HAUL_STATE	3
#define LONG_HAUL_STATE		4




static U8 aCoeff_val[22][8] =                                  /*Coefficient Table for Short Haul Twisted Pair T1/E1
120/100 Ω Interface*/
{
{0xf8,0x7a,0x3a,0x7,0x19,0x6,0x10,0xa},/* VGA = 0xc */
{0xf7,0x79,0x39,0x8,0x20,0x5,0xd,0x7},/* VGA = 0xd */
{0xf8,0x79,0x37,0x9,0x1c,0x9,0x13,0x5},/* VGA = 0xe */
{0xef,0x6a,0x59,0x26,0xfc,0x4,0xf6,0xfc},/* VGA = 0xf */
{0xe8,0x7e,0x37,0x17,0xf5,0x9,0xf7,0x1},/* VGA = 0x10 */
{0xe8,0x7e,0x37,0x17,0xf5,0x9,0xf7,0x1},/* VGA = 0x11 */
{0xf0,0x6d,0x3a,0x13,0xfa,0xa,0xf2,0xfe},/* VGA = 0x12 */
{0xf2,0x71,0x37,0x0e,0xfe,0x2,0xf2,0x2},/* VGA = 0x13 */
{0xf0,0x6e,0x34,0xb,0x0,0x3,0xfb,0x3},/* VGA = 0x14 */
{0xef,0x6f,0x33,0xa,0xfc,0x5,0xfc,0x0},/* VGA = 0x15 */
{0xef,0x6e,0x33,0x8,0xfa,0x6,0xf6,0x0},/* VGA = 0x16 */
{0xeb,0x6d,0x34,0xa,0xeb,0x3,0xf0,0x0},/* VGA = 0x17 */
{0xef,0x70,0x34,0x3,0xf2,0x5,0xf3,0xff},/* VGA = 0x18 */
{0xf0,0x7f,0xb,0xa,0xe7,0x7,0x6,0x4},/* VGA = 0x19 */
{0xec,0x7c,0x9,0x8,0xe3,0x5,0x4,0x2},/* VGA = 0x1a */
{0xf0,0x7d,0xc,0x4,0xe6,0x6,0x3,0x1},/* VGA = 0x1b */
{0xed,0x7b,0x9,0x0,0xe8,0x9,0x2,0x3},/* VGA = 0x1c */
{0xef,0x6a,0x1b,0xf9,0xe9,0x6,0xf2,0x2},/* VGA = 0x1d */
{0xed,0x67,0x28,0xf0,0xe7,0x8,0xf0,0xff},/* VGA = 0x1e */
{0xef,0x74,0x11,0xee,0xec,0x5,0xf7,0x1},/* VGA = 0x1f */
{0xef,0x62,0x2a,0xe6,0xef,0x3,0xfa,0x0},/* VGA = 0x20 */
{0xec,0x61,0x30,0xe4,0xe9,0x2,0xf9,0x2},/* VGA = 0x21 */
};


/*Long Haul Coefficients Table*/
static U8 aCoeff_default[6][8] =             
{
{0xea,0x7b,0x3f,0x12,0xfc,0x08,0xf8,0x00},
{0xed,0x62,0x37,0xd8,0x12,0xee,0x15,0xfc},
{0xe6,0x6f,0x1d,0xec,0xdb,0x0f,0xef,0x03},
{0xda,0x7a,0x26,0xf2,0xb0,0x22,0xeb,0x04},
{0xd7,0x78,0x2c,0xdb,0xb6,0x1a,0xfe,0x00},
{0xe1,0x65,0x33,0xf7,0xde,0x0a,0xfa,0x00},
};

////////////////////////////////////////////////////implement RLIU Long and Short Haul coefficients end/////////////////////

⌨️ 快捷键说明

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