您的位置:首页 > 其它

HFC-S mini芯片初始化

2008-04-18 17:09 267 查看
HFC-S mini芯片初始化还是比较复杂,就不写文字的初始化过程,直接贴代码,好在代码和注释都比较清楚。使用的语言为C,CPU为EZ80,使用的宏定义如下:

#define hfcAdr(adr) MEM_HDLC_ADR_ADR=adr; MEM_HDLC_DATA_ADR
#define readHfcAdr(adr,v) MEM_HDLC_ADR_ADR=adr; v=MEM_HDLC_DATA_ADR

初始化代码,下面这段代码一共初始化了3个通道,分别是B1、B2、AUX1:

hfcId=0;
//读取HFC芯片R_CHIP_ID寄存器内容,也就是芯片ID
while(hfcId !=V_CHIP_ID)
{
readHfcAdr(R_CHIP_ID,hfcId);
}
/* 下面这段代码是调试硬件时测试片内RAM使用
m=0;
for(k=0;k<256;k++)
{
hfcAdr(W_RAM_ADR_L)=m;
hfcAdr(W_RAM_ADR_H)=0;
hfcAdr(A_RAM_DATA)=m+1;
m++;
}
m=0;
for(k=0;k<256;k++)
{
hfcAdr(W_RAM_ADR_L)=m;
hfcAdr(W_RAM_ADR_H)=0;
readHfcAdr(A_RAM_DATA,buf[k]);
m++;
}
*/
//芯片复位
hfcAdr(W_CIRM)=V_CIRM_RST;
for(n=0;n<500;n++);
//复位完毕后,清除复位寄存器内容
hfcAdr(W_CIRM)=V_CIRM_DIS_RST;
for(n=0;n<500;n++);

//W_CLKDEL - Clock control register of the S/T module
hfcAdr(W_CLKDEL)=V_CLKDEL;
//W_SCTRL - Control register of the S/T interface, register 0
//V_SCTRL = 0x43,0100.0011b
//B0=1,B1 send data enabled
//B1=1,B2 send data enabled
//B2=0,S/T Interface mode,TE mode
//B3=0,D-Chanel priority, high
//B4=0,S/Q bits transmission disabled
//B5=0,96KHz test signal disabled
//B6=1,non capacitive line mode
//B7=0,Power down, normal operation
hfcAdr(W_SCTRL)=V_SCTRL;
//W_ST_WR_STA(0x30) - S/T state machine register
//设定初始值为0
hfcAdr(W_ST_WR_STA)=V_ST_WR_STA;
//W_SCTRL_R(0x33) - Control register of the S/T interface, register 2
//设定B1和B2频道都为通用操作模式
hfcAdr(W_SCTRL_R)=V_SCTRL_R;
//设定D、E通道为通用操作模式
hfcAdr(W_SCTRL_E) = 0x00;

//W_B1_SSL(0x20) - Slot assigner for HFC-channel[B1,TX] and PCM time slot configuration
//V_B1_SSL = 0xDD
//output buffer for STIO2 enabled
//使用29时隙
hfcAdr(W_B1_SSL)=V_B1_SSL;
//W_B1_RSL(0x24) - Slot assigner for HFC-channel[B1,RX] and PCM time slot configuration
//receive data from STIO1,使用29时隙
hfcAdr(W_B1_RSL)=V_B1_RSL;

hfcAdr(W_B2_SSL)=V_B2_SSL;
hfcAdr(W_B2_RSL)=V_B2_RSL;

//设定HDLC通道2的接收和发送时隙号
hfcAdr(W_AUX1_SSL) = V_AUX1_TX_ROUT + V_AUX1_TX_SL;
hfcAdr(W_AUX1_RSL) = V_AUX1_RX_ROUT + V_AUX1_RX_SL;

//W_MST_MODE0(0x14) - PCM mode, register 0
//V_MST_MODE0 = 0xEC
hfcAdr(W_MST_MODE0)=V_MST_MODE0;
//W_MST_MODE1(0x15) - PCM mode, register 1
//V_MST_MODE1 = 0x20,8MBit/s
hfcAdr(W_MST_MODE1)=V_MST_MODE1; // | 0x40, loop test
//W_MST_MODE2(0x16) - PCM mode, register 2
//V_MST_MODE2 = 0x34,选择时隙在96-127,SYNC_I is connected to SYNC_O
hfcAdr(W_MST_MODE2)=V_MST_MODE2;

//W_F_THRES(0x0C) - FIFO fill level control register
//V_F_THRES = 0xFF
hfcAdr(W_F_THRES)=V_F_THRES;
//W_F_MODE(0x0D) - 工作模式
//V_F_MODE = 0,Simple Mode
hfcAdr(W_F_MODE)=V_F_MODE;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: