基于8位微控制器控制硬盘进行HDTV码流读写
//启动外部振荡器
OSCXCN=0x67; //外接24MHz的晶振
//配置外部晶体
while((OSCXCN&XTLVLD_BIT= =0)
{}
OSCICN=0x88; //选择外部振荡器作为系统时钟,禁止内部振荡
}
//配置交叉开关
void xbar_init(void)
{XBR0=0x04; //RX TX连到两个引脚
XBR1=0x04; //INT0连到断口引脚
XBR2=0x40; //使能交叉开关和弱上拉
PRT0CF=0xff; //控制FIFO读写,使能
PRT1CF=0x07; //控制CPLD读写,使能
PRT2CF=0x00; (P0口的所有输出为弱上拉(写硬盘命令字)
PRT3CF=0x00; //控制硬盘读写,使能
}
(凹丫丫范文网fanwen.oyaya.net收集整理)
3 ATA/ATAPI-4标准下的硬盘内部寄存器和PIO读时序关系
3.1 硬盘内部寄存器
目前,大部分计算机配置了两个IDE接口,地址范围分别为:0170~0117,0376~0376(对应PC机的Secondary IDE Channel)和01F0~01F6,03F6~03F6(对应PC机的Primary IDE Channel)。地址译码如表1所示。
表1 地址译码
·数据寄存器(170R/W):这是一个16位PIO数据寄存器,用于对扇区的读、写和格式化操作。MCU通过该寄存器向硬盘控制寄存器写入或从硬盘控制器读出扇区缓冲区的数据。
·错误寄存器(171R):该寄存器是一个8位的寄存器,它反映控制寄存器在诊断方式或操作方式下的错误原因。
·扇区数寄存器(172R/W):它记录读、写命令的扇区数。当多扇区传输时,每完成一个扇区操作,该寄存器自动减1,直至为0。如果初值为0,则表示256;如果有错误生,该寄存器包含已
《基于8位微控制器控制硬盘进行HDTV码流读写(第2页)》