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;
#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;
相关文章推荐
- HFC-S mini芯片通道复位和初始化
- HFC-S mini芯片初始化
- HFC-S mini芯片时隙设置
- HFC-S mini芯片调试心得
- HFC-S mini芯片的数据发送处理
- HFC-S mini芯片数据接收处理
- Marvell 98DX51xx / 98DX81xx 系列交换芯片 内部初始化
- BCM 芯片SDK初始化
- Marvell 98DX51xx / 98DX81xx 系列交换芯片 内部初始化
- coreboot学习6:ramstage阶段之芯片初始化流程
- LPC2220芯片初始化代码研究(转)
- LPC17xx芯片中对ucosii操作系统节拍时钟初始化的时机选择
- Marvell 98DX51xx / 98DX81xx 系列交换芯片 内部初始化
- STM32中 初始化ADXL345芯片
- C8051Fxxx芯片初始化软件使用简介
- SDRAM芯片初始化、行有效、列读写时序(高手进阶,终极内存技术指南——完整/进阶版) ——本文为转载
- Linux初始化Nor Flash芯片及驱动
- (9)ok6410学习之芯片内部初始化之核心初始化
- ADAU功放芯片初始化设置
- 视频解码芯片SAA7111A的初始化