void write_command_to_usb(alt_u8 command) { //延时>1.5us delayus(8);
//设置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); //延时100ns左右 //delayus(1); //拉高USB_WR IOWR_ALTERA_AVALON_PIO_DATA(USB_WR_BASE,1); //拉低A0 IOWR_ALTERA_AVALON_PIO_DATA(USB_A0_BASE,0); //设置USB_DB为输入 IOWR_ALTERA_AVALON_PIO_DIRECTION(USB_DB_BASE,0x00); //延时>1.5us delayus(8); } void write_data_to_usb(alt_u8 data) { //延时>1.5us //delayus(8); //IOWR_8DIRECT(CH376CTRL_0_BASE,0,data);
//设置USB_DB为输出 IOWR_ALTERA_AVALON_PIO_DIRECTION(USB_DB_BASE,0xff); //送数据到USB_DB IOWR_ALTERA_AVALON_PIO_DATA(USB_DB_BASE,data); //拉高USB_RD; IOWR_ALTERA_AVALON_PIO_DATA(USB_RD_BASE,1); //数据操作 A0=0 IOWR_ALTERA_AVALON_PIO_DATA(USB_A0_BASE,0); //拉低USB_WR IOWR_ALTERA_AVALON_PIO_DATA(USB_WR_BASE,0); //延时 //delayus(1); //拉高USB_WR IOWR_ALTERA_AVALON_PIO_DATA(USB_WR_BASE,1);
//设置USB_DB为输入 IOWR_ALTERA_AVALON_PIO_DIRECTION(USB_DB_BASE,0x00); //延时>600ns delayus(4); } alt_u8 read_data_from_usb(void) { //延时>1.5us //delayus(8); // return IORD_8DIRECT(CH376CTRL_0_BASE,0); alt_u8 data = 0; //返回数据变量定义
//设置USB_DB为输入 IOWR_ALTERA_AVALON_PIO_DIRECTION(USB_DB_BASE,0x00);
//拉高USB_WR; IOWR_ALTERA_AVALON_PIO_DATA(USB_WR_BASE,1); //数据操作 A0=0 IOWR_ALTERA_AVALON_PIO_DATA(USB_A0_BASE,0); //拉低USB_RD IOWR_ALTERA_AVALON_PIO_DATA(USB_RD_BASE,0); //延时>30ns数据输出有效,可以读取 //delayus(1); //读取数据 data = IORD_ALTERA_AVALON_PIO_DATA(USB_DB_BASE); //拉高USB_RD IOWR_ALTERA_AVALON_PIO_DATA(USB_RD_BASE,1);
//延时,读取结束>600ns delayus(4);
return data; } 取反出来的结果错误!晶振是正常起振的,25,26脚电压也没问题!请高手指教啊!谢谢!