KHÓA LUẬN TỐT NGHIỆP ĐỀ TÀI: Xây dựng một số phương thức truyền dữ liệu theo chuẩn truyền thông USB

78 2 0
KHÓA LUẬN TỐT NGHIỆP ĐỀ TÀI: Xây dựng một số phương thức truyền dữ liệu theo chuẩn truyền thông USB

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

LỜI NÓI ĐẦU N ố ệ ộ ệ ệ US ộ ộ Universal Serial Bus (USB) ( ) ộ ệ (T NV) T US ( ) ệ ố ộ T NV ộ US ộ ệ ệ PS … ố 03 ng Chƣơng 1: Tìm hiểu truyền thơng USB (Universal Serial Bus) Chƣơng 2: Hƣớng dẫn sử dụng phát triển CI-800A Chƣơng 3: Xây dựng số phƣơng thức truyền liệu sử dụng chuẩn USB D kinh ngh ệ ỏ ý â ỏ ý è ệ Sinh viên thực đề tài Lại Khắc Mạnh i NHẬN XÉT (Của giảng viên hƣớng dẫn) GIẢNG VIÊN HƢỚNG DẪN (Chữ ký, họ tên) ii NHẬN XÉT (Của giảng viên phản biện) GIẢNG VIÊN PHẢN BIỆN (Chữ ký, họ tên) iii MỤC LỤC LỜI NÓI ĐẦU i MỤ LỤ iv DAN MỤ Á ÌN VẼ vi DAN MỤ Á ẢN IỂU ix P ẦN 1: TỔN QUAN VẤN ĐỀ N IÊN ỨU PHẦN 2: NỘI DUNG KHÓA LUẬN ƯƠN TÌM IỂU VỀ TRUYỀN T ƠN US (UNIVERSAL SERIAL BUS) 11T 111 US 112 ệ ặ 1.1.3 Cá 114M ệ 115 ệ ố US US ý 12 ệ 1.1.1 Truy 112T 113T ẳ 1.1.4 Truy ƯƠN 21 US ặ 2.2 Module p 10 ố 11 ƯỚN D N S DỤN Ơ ẢN Ộ P ÁT TRIỂN I-800A 12 12 I/O USB 25 2.2.1 Module I/O CI-83001 25 222M 23K ệ US ố -83002 27 28 ƯƠN XÂY DỰN MỘT SỐ P ƯƠN T Ứ TRUYỀN DỮ LIỆU 29 S DỤN 31Đ UẨN US 29 L D 30 311M 30 312T 30 iv 3.1.3 T ố 31 314 32 315K ệ 32 3.2 T UART 33 321M 33 3.2.2 T 34 323T ố 34 324 38 325K 33M ệ 38 ỏ US 39 331M 39 332T 40 333T ố 40 334 40 335K 34M ệ 41 ỏ ộ US 42 341M 42 342T 42 343T ố 43 344 345K 43 ệ 43 KẾT LUẬN 46 TÀI LIỆU T AM K ẢO P Ụ LỤ v DANH MỤC CÁC HÌNH VẼ 11 US 12 US 13 Đ ố A 14 ệ US 15 S 16 D Status stage 18 .10 19 T ẳ 10 10 ố .11 21 I 800A 12 22 a s chào m ng 12 2.3 C a s thỏa thu n c p phép 13 24 ặ 13 nv 25 13 nh 2.6 C a s tùy ch n thi t l p .14 27 a s thi t l p tr ng thái 14 28 14 29 a s chào m ng 15 10 as 15 Hình 2.11 H n ch c a c a s phiên b Hình 2.12 Ch n c a s v 13 T 15 16 16 14 u chép c a s t p tin 16 15 a s tr ng thái thi t l p 17 16 .17 17 ặ 17 18 a s giao diệ Z-US ( 19 a s giao diệ Z-US ( K 20 as b US ) 18 ố US ) 18 u n USB .19 vi 21 a s giao diện EZ-USB 19 22 Vision2 20 23 n hộp tho i tệp d án 20 24 a s d án 21 25 n thi t b cho m c tiêu 21 26 n tùy ch n cho Target 'Target 1' 21 27 T n cho hộp tho i Target - 28 T n cho hộp tho i Target - tab Debud 22 29 u 22 ộp tho i thi t l p 22 nh 2.30 C a s d án 23 31 ặ 32 M 33 m d ng 23 ỡ lỗi-B u/D ng phiên gỡ lỗi .23 ộp tho i thông tin phiên b n Vision2 .24 34 K t nối với hộp tho i hệ thố 35 24 ộ ki m lỗi 24 36 Lệnh gỡ lỗi 25 37 D ng l i m d ng 25 38 ố trí module CI-83001 .26 39 ện module CI-83002 USB 27 Hình 3.1 Hệ thố u n USB s d ng CI-83002B USB ICE module CI- 83001 29 Hình 3.2 Hệ thố Hình 3.3 M u n USB s d ng module CI-83002 CI-83001 .29 ý u n LCD 30 Hình 3.4 Màn hình LCD 31 Hình 3.5.K t qu thí nghiệ u n hình LCD 32 Hình 3.6 M ch nguyên lý UART 33 Hình 3.7 C a s HyperTerminal 35 Hình 3.8 Thơng tin HyperTerminal 35 Hình 3.9 Hộp tho i mơ t k t nối 36 10 Đ n giá tr ặt 36 Hình 3.11 Tùy ch n danh sách b ng 37 vii 12 ặt HyperTerminal 37 Hình 3.13 C a s UART 38 Hình 3.14 Hộp tho i UART 38 Hình 3.15 Hộp tho i HyperTerminal 39 Hình 3.16 M ch ngun lý mơ bàn phím USB 39 Hình 3.17 C a s Notepad 41 Hình 3.18 Khi nh n SW1 module CI-83001 41 Hình 3.19 Khi n thêm SW2, SW3, SW4 41 Hình 3.20 Khi nh n thêm SW5, SW6, SW7, SW8 41 Hình 3.21 M ch nguyên lý mô chuột USB 42 Hình 3.22 V trí trỏ chuộ n SW 44 Hình 3.23 V trí trỏ chuột nh n SW5 44 Hình 3.24 V trí trỏ chuột nh n SW6 44 Hình 3.25 V trí trỏ chuột nh n SW7 45 Hình 3.26 V trí trỏ chuột nh n SW8 45 viii DANH MỤC CÁC BẢNG BIỂU 11 21 M ệ ặt c n thi ố 26 B ng 3.1 Trang thi t b s d ng cho thí nghiệm 30 B ng 3.2 Trang thi t b s d ng cho thí nghiệm 34 B ng 3.3 Trang thi t b s d ng cho thí nghiệm 40 B ng 3.4 Trang thi t b s d ng cho thí nghiệm 42 ix PHẦN 1: TỔNG QUAN VẤN ĐỀ NGHIÊN CỨU Lý chọn đề tài ộ Universal Serial Bus (USB) ( ) ệ ộ (T NV) T US ( ) ệ ố ộ T NV N ố ệ ộ ộ ệ ệ US ộ US ộ ệ ệ PS … X : Xây dựng số phƣơng thức truyền liệu theo chuẩn truyền thông USB Mục tiêu đề tài N ố ệ ộ â ộ ố I 800A Đối tƣợng nghiên cứu Mộ ố ệ US Phạm vi nghiên cứu Mộ ố US ệ Kết dự kiến đạt đƣợc Xâ ộ ố ệ -Đ ố L D -T UART (Universal Asynchronous Recceiver/Transmitter) -M ỏ -M ỏ US ộ US wrins(CtrOnOff); } // Cursor home void LcmHome(void) { wrins(0x02); } // Execute LCD Module control commands void wrins(unsigned char input) { LcmBsy(); LCM_RS=0; LCM_RW=0; LCM_EN=1; LCM_BUS=input; LCM_EN=0; } Phụ lục 2: Truyền thơng UART 2.1 Chương trình nguồn 2.1.1 U.I ứng dụng void CuartDlg::OnOut() { char ympUart[60] ; long OutPacketSize ; OutPacketSize=sizeof(sUart) ; LPTSTR pBuffer ; Cstring sBuffer ; int i ; if(IsConnect==false) { AfxmessageBox(_T("USB Connect fail ")) ; return } CEdit* OutValue=(Cedit*) GetDlgItem(IDC_OUT_VALUE) ; pBuffer= sBuffer.GetBuffer(60) ; OutValue->GetWindowText9(pBuffer;60) ; strcpy(tmpUart,pBuffer) ; OutPacketSize=strlen(tmpUart) ; for(i=0;i< OutPacketSize;i++) sUart[i]=tmpUart[i] ; sUart[OutPacketSize+1]=0 ; OutPacketSize= OutPacketSize+1 ; // Perfrom the BULK OUT if(USBDevice->BulkOutEndPt) { USBDevice->BulkOutEndPt->XferData(sUart , OutPacketSize) ; } } // -bool CuartDlg::OnConnect() { USBDevice->Open(0) ; if (USBDevice->Open() !=TRUE) { AfxMessageBox("Failed to Open Device") ; return false; } else { IsConnect=true ; return true ; } } // void CuartDlg::OnDisCon() { USBDevice->Close() ; IsConnect=false ; } 2.1.2 Chương trình sở ;; Endpoint Descriptor db DSCR_ENDPNT_LEN db DSCR_ENDPNT db 02H db ET_BULK db 00H db 02H db 00H ;; Endpoint Descriptor db DSCR_ENDPNT_LEN db DSCR_ENDPNT db 86H db ET_BULK db 00H db 02H db 00H 2.1.3 Đoạn văn Periph.c void TD_Init(void) { // Set the CPU clock to 48MHz CPUCS = ((CPUCS & bmCLKSPD)  bmCLKSPD1) ; EP2CFG = 0xA2; SYNCDELAY; EP6CFG = 0xE2; SYNCDELAY; SYNCDELAY; EP2CBL = 0x80; SYNCDELAY; EP2CBL = 0x80; AUTOPTRSETUP  =0x01 ; BREAKPT &= bmBPEN ; Rwuen = TRUE ; UartInit(57600) } // void TD_Poll(void) { int i-=0 ; char buf[60] //EP2468STAT : FX2 SFR indicates Endpoint 2//4/6/8 full/empty // : bmBIT0-bmEP2EMPTY // : bmBIT1-bmEP2FULL // : bmBIT2-bmEP4EMPTY // : bmBIT3-bmEP4 FULL // : bmBIT4-bmEP6EMPTY // : bmBIT5-bmEP6 FULL // : bmBIT6-bmEP8EMPTY // : bmBIT7-bmEP8 FULL if(!Ep2468STAT & bmEP2EMPTY)) { strpy(buf,EP2FIFOBUF) ; SYNCDELAY; EP2BCL = 0x80; UartPuts(buf); } } // UART port initialization void UartInit(unsigned int baudrate) { unsigned long CLKOUT=48000000 ; CKCON=CKCON  0x01 ; PCON=PCON  0x80 ; TMOD=0x02 ; TH1 =(256-(2*CLKOUT/128/baudrate)) ; SMOD1=1 ; SCON0=0x50 ; ET0=0 ; TI=1 ; TR1=1 ; } // Print charater void UartPutc(unsigned char c) { { } while(!TI) ; TI=0 ; SBUF0 =c ; } // Print string void UartPuts(unsigned char* s) { unsigned char i=0 : while(*(s+i)!= '\0 ') { UartPutc(*(s+i)) ; i++ ; } } Phụ lục 3: Mơ bàn phím USB 3.1 Chương trình nguồn 3.1.1 Chương trình sở Parafraph of Dscr.a51 HIDDscr: db db 21H db 10H, 01H db db db 22H db ReportDscrEnd-ReportDscr;0 HIDDDscrEnd: ;; Endpoint Dsecriptor H_Ep1InDscr: db H_Ep1InDscrEnd-H_Ep1InDscr db DSCR_ENDPNT db 10000001b db ET_INT db 64 db 00H db 10 H_Ep1InDscrEnd: // Hid device in dscr.A51, report descriptor of keyboard ReportDscr: ; keyboard Descirptor db 05h, 01h db 09h, 06h db 0A1h, 01h db 05h, 07h db 19h, 0E0h db 29h, 0E7h db 15h, 00h db 25h, 01h db 75h, 01h db 95h, 08h db 81h, 02h db 95h, 01h db 75h, 08h db 81h, 01h db 95h, 05h db 75h, 01h db 05h, 08h db 19h, 01h db 29h, 05h db 91h, 02h db 95h, 01h db 75h, 03h db 91h, 01h db 95h, 03h db 75h, 08h db 15h, 00h db 25h, 65h db 05h, 07h db 19h, 00h db 29h, 65h db 81h, 00h db 0C0h ReportDscrEnd: 3.1.2 Đoạn văn Periph.c void TD_Init(void) { // Set the CPU clock to 48MHz CPUCS = ((CPUCS & bmCLKSPD)  bmCLKSPD1) ; IOB=0x00 ; OBE=0x00 ; EP1INCFG=0xB0 ; AUTOPTRSETUP  = 0x01; BREAKPT & = bmBPEN; Rwuen = TRUE; } void TD_Poll(void) { Unsigned char xdata btn ; if(!(EP1INCS & bmEPBUSY)) { btn=IOB; if(btn!=0xFF) { EP1INBUF[0]=0; EP1INBUF[1]=0; EP1INBUF[2]=0; EP1INBUF[4]=0; if(!(btn & 0x01)) EP1INBUF[3]=30; else if(!(btn & 0x02)) EP1INBUF[3]=31; else if(!(btn & 0x04)) EP1INBUF[3]=32; else if(!(btn & 0x08)) EP1INBUF[3]=33; else if(!(btn & 0x10)) EP1INBUF[3]=34; else if(!(btn & 0x20)) EP1INBUF[3]=35; else if(!(btn & 0x40)) EP1INBUF[3]=36; else if(!(btn & 0x80)) EP1INBUF[3]=37; EP1INBC=5; SYNCDELAY; } else { EP1INBUF[0]=0; EP1INBUF[1]=0; EP1INBUF[2]=; EP1INBUF[3]=0; EP1INBUF[4]=0; EP1INBC=5; SYNCDELAY; } } } void SetupCommand(void) { void *dscr_prt; BYTE ReportLEn; int i; switch(SETUPDAT[1]) { case SC_GET_DESCRIPTOR: if (DR_GetDescriptor()) switch(SETUPDAT[3]) { case GD_HID: SUDPTRH = MSB(pHIDDscr); SUDPTRH = LSB(pHIDDscr); break; case GD_REPORT: switch(SETUPDAT[4]) { case 0: ReportLen=pReportDscrEnd-pReportDscr if(ReportLen>SETUPDAT[6]) ReportLen>SETUPDAT[6] ; while (ReportLen) { for(i=0;iSETUPDAT[6]) ReportLen=SETUPDAT[6]; while( ReportLen) { for(i=0;i

Ngày đăng: 05/01/2023, 09:58

Tài liệu cùng người dùng

Tài liệu liên quan