void write_command_to_usb(alt_u8 command) { //延時(shí)>1.5us delayus(8);
//設(shè)置USB_DB為輸出 IOWR_ALTERA_AVALON_PIO_DIRECTION(USB_DB_BASE,0xff); //送命令到USB_DB IOWR_ALTERA_AVALON_PIO_DATA(USB_DB_BASE,command); //拉高USB_RD IOWR_ALTERA_AVALON_PIO_DATA(USB_RD_BASE,1); //命令操作 A0=1 IOWR_ALTERA_AVALON_PIO_DATA(USB_A0_BASE,1); //拉低USB_WR IOWR_ALTERA_AVALON_PIO_DATA(USB_WR_BASE,0); //延時(shí)100ns左右 //delayus(1); //拉高USB_WR IOWR_ALTERA_AVALON_PIO_DATA(USB_WR_BASE,1); //拉低A0 IOWR_ALTERA_AVALON_PIO_DATA(USB_A0_BASE,0); //設(shè)置USB_DB為輸入 IOWR_ALTERA_AVALON_PIO_DIRECTION(USB_DB_BASE,0x00); //延時(shí)>1.5us delayus(8); } void write_data_to_usb(alt_u8 data) { //延時(shí)>1.5us //delayus(8); //IOWR_8DIRECT(CH376CTRL_0_BASE,0,data);
//設(shè)置USB_DB為輸出 IOWR_ALTERA_AVALON_PIO_DIRECTION(USB_DB_BASE,0xff); //送數(shù)據(jù)到USB_DB IOWR_ALTERA_AVALON_PIO_DATA(USB_DB_BASE,data); //拉高USB_RD; IOWR_ALTERA_AVALON_PIO_DATA(USB_RD_BASE,1); //數(shù)據(jù)操作 A0=0 IOWR_ALTERA_AVALON_PIO_DATA(USB_A0_BASE,0); //拉低USB_WR IOWR_ALTERA_AVALON_PIO_DATA(USB_WR_BASE,0); //延時(shí) //delayus(1); //拉高USB_WR IOWR_ALTERA_AVALON_PIO_DATA(USB_WR_BASE,1);
//設(shè)置USB_DB為輸入 IOWR_ALTERA_AVALON_PIO_DIRECTION(USB_DB_BASE,0x00); //延時(shí)>600ns delayus(4); } alt_u8 read_data_from_usb(void) { //延時(shí)>1.5us //delayus(8); // return IORD_8DIRECT(CH376CTRL_0_BASE,0); alt_u8 data = 0; //返回?cái)?shù)據(jù)變量定義
//設(shè)置USB_DB為輸入 IOWR_ALTERA_AVALON_PIO_DIRECTION(USB_DB_BASE,0x00);
//拉高USB_WR; IOWR_ALTERA_AVALON_PIO_DATA(USB_WR_BASE,1); //數(shù)據(jù)操作 A0=0 IOWR_ALTERA_AVALON_PIO_DATA(USB_A0_BASE,0); //拉低USB_RD IOWR_ALTERA_AVALON_PIO_DATA(USB_RD_BASE,0); //延時(shí)>30ns數(shù)據(jù)輸出有效,可以讀取 //delayus(1); //讀取數(shù)據(jù) data = IORD_ALTERA_AVALON_PIO_DATA(USB_DB_BASE); //拉高USB_RD IOWR_ALTERA_AVALON_PIO_DATA(USB_RD_BASE,1);
//延時(shí),讀取結(jié)束>600ns delayus(4);
return data; } 取反出來的結(jié)果錯(cuò)誤!晶振是正常起振的,25,26腳電壓也沒問題!請高手指教啊!謝謝!