USB小白學習之路(7) FPGA Communication with PC by CY7C68013,TD_init()解析
void TD_Init(void)
{
CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1); //設置CPU時鐘頻率為48M,寄存器CPUCS的位如下所示。此語句就是將CPUCS的b4,b3位設為10,
//同時不改變其他bit。
圖1 寄存器CPUCS的描述
//USBCS = Ox80; //set high speed mode 添加此語句時工程編譯不通過
IFCONFIG = 0XCB; //選擇內部時鐘頻率為48M,FIFO/GPIF采用異步操作模式,SLAVE FIFO接口(外部主控制器)
//IFCONFIG寄存器的描述如圖2所示,0xCB = 1100_1011,可見:
//內部時鐘,48MHz,IFCLK時鐘輸出關閉,IFCLK信號不翻轉,GPIF異步操作,關閉GPIF輸出,slave FIFO接口
圖2 寄存器IFCONFIG的描述
SYNCDELAY; //裏面是空語句,延時用
//REVCTL = 0X03; //0x01 //版本號,控制版本號的,不重要,不用管
//SYNCDELAY;
FIFOPINPOLAR = 0X00; //所有引腳為低電平有效,此寄存器控制Slave FIFO方式信號有效電平
SYNCDELAY; //FIFOPINPOLAR寄存器的描述如圖3所示
圖3 寄存器FIFOPINPOLAR的描述
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
FIFORESET = 0X80; //對從主機發送的數據進行握手
SYNCDELAY; //FIFORESET寄存器的描述如圖4所示。由圖4中可以看出,這裏寫入0x80是為了保證復位正常。
圖4 寄存器FIFORESET的描述
FIFORESET = 0X02; //復位FIFO
SYNCDELAY;
FIFORESET = 0X04; //復位FIFO
SYNCDELAY;
FIFORESET = 0X06; //復位FIFO
SYNCDELAY;
FIFORESET = 0X08; //復位FIFO
SYNCDELAY;
//由圖4可以看出,這四條語句分別復位端點:EP2,EP4,EP6,EP8
FIFORESET = 0X00; //保存操作,這裏也是由圖4可以得到,寫入0x00是為了使能相應請求。
SYNCDELAY;
EP6CFG =0xE0; //使能端點6,端點方向為輸入,塊傳輸方式,端點大小512字節,端點為4重緩沖
SYNCDELAY; //EP6CFG寄存器的描述如圖5所示,0xE0 = 1110_0000;
圖5 寄存器EP6CFG的描述
EP6FIFOCFG = 0X0C; // AUTOIN=1 ZEROLEN=1 WORDIDE=0 設置端點6為手動輸入,選擇總線數據寬度為8位
SYNCDELAY; //EP6FIFOCFG 寄存器的描述如圖6所示。
圖6
PINFLAGSAB = 0X00; //確定引腳FLAGA為EPX的PF標誌,FLAGB為EPX的FF標誌,FLAGC為EPX的EF標誌///
SYNCDELAY;
PINFLAGSCD = 0X00; //確定引腳FLAGA為EPX的PF標誌,FLAGB為EPX的FF標誌,FLAGC為EPX的EF標誌///
SYNCDELAY;
PORTACFG = 0X40; //PORTACFG.6=1 設置IOPA7為CS引腳
SYNCDELAY;
EP6AUTOINLENH = 0X02; //端點6 AUTOIN包長度高字節
SYNCDELAY;
EP6AUTOINLENL = 0X00; //端點6 AUTOIN包長度高字節
SYNCDELAY;
EP6BCH = 0x02; //512byte///*
SYNCDELAY;
EP6BCL = 0x00; //512byte///*
SYNCDELAY;
EP6FIFOPFH = 0X80; //端點6/SLAVE FIFO 可編程成級標誌的高位(高速方式和全速方式)//不懂///
SYNCDELAY;
EP6FIFOPFL = 0X00; //端點6/SLAVE FIFO 可編程成級標誌的高位(高速方式和全速方式) //不懂///
SYNCDELAY;
OUTPKTEND =0X82; //啟動OUT緩沖區
SYNCDELAY;
OUTPKTEND =0X82; //啟動OUT緩沖區
SYNCDELAY;
//AUTOPTRSETUP |= 0x01; //使能自動指針
Rwuen = TRUE;
}
USB小白學習之路(7) FPGA Communication with PC by CY7C68013,TD_init()解析