1. Trang chủ
  2. » Luận Văn - Báo Cáo

Giao tiếp với máy tính qua cổng USB và ứng dụng trong giao tiếp ngoại vi

126 33 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 126
Dung lượng 4,49 MB

Nội dung

BỘ GIÁO DỤC ĐÀO TẠO TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHỆ TP HCM KHOA : ĐIỆN - ĐIỆN TỬ NGÀNH ĐIỆN TỬ VIEN t h ô n g ^ ^ ^ ^ LUẬN VĂN TỐT NGHIỆP ĐỀ TÀI : GIAO T IẾ P VỚI M ÁY TÍNH QUA CƠNG USB VÀ ỨNG DỤNG TRONG GIAO T IẾ P NGOẠI VI GVHD SVTH MSSV LỚP : PHẠM HÙNG KIM KHÁNH : PHAN XUÂN TRƯỜNG : 02DHDT222 : 02DT1 l^a’ữưNGũMOL~K ĨLN THƯVĨỆN * * s 0-40 ám ZLãk ^ TP HỒ CHÍ MINH, 07/2007 Đ ề tài:G iao tiếp máy tính qua cổng U SB GVHD:Thầy Phạm Hùng Kim Khánh ứng dụng giao tiếp ngoại vi MỤC LỤC LỜI CẢM Ơ N LỜI MỞ Đ Ầ U MỤC LỤC.: CHƯƠNG I: GIỚI THIỆU S LƯỢC VỂ GIAO TIẾP USB Giới thiệu .8 Cấu trúc đồ hình USB (USB BUS TOPOLOGY) Cấu trúc truyền dẫn U S B 10 Giao tiếp USB nhìn sâu vào bên .12 Cấu trúc khung liệu U SB 16 USB protocol .17 Các dạng truyền nhận liệu USB 20 Các trạng thái hoạt động USB device 20 Qui trình kết nối device h o st 22 10 Descriptor 23 11 Kết luận 24 SVTH:Phan Xuân Trường Trang: Đ ề tàũGiao tiếp máy tính qua cổng U SB GVHD:Thầy Phạm Hùng Kim Khánh ứng dụng giao tiếp ngoại vi CHƯƠNG n : M ICROCHIP PIC18F4550 VÀ M ODULE GIAO TIẾP USB Sơ lược vi điều khiển PIC 25 Module giao tiếp USB vi điều khiển PIC18F4550 25 MPLAB ngơn ngữ lập trình C18 28 Kết luận 32 CHƯƠNG III: M ICROCHIP USB FIRM W ARE VÀ QUI TRÌNH ENUM ERATING Microchip USB firmware 33 Control transfer qui trình truyền nhận gói liệu qui trình enumerating 35 Các khai báo Microchip USB firmware qui trình enumerating 42 Tìm hiểu Microchip USB firmware qui trình enumerating 55 CHƯƠNG IV: MỘT SỐ VẤN ĐỂ DRIVER TRÊN MÁV TÍNH DÙNG CHO GIAO TIẾP USB LIÊN QUAN ĐẾN VI ĐIỂU KHIỂN PIC - CHƯƠNG TRÌNH ỨNG DỤNG GIAO TIẾP USB TRÊN MÁY TÍNH SVTH:Phan Xuân Trường Trang: Đề tàũGiao tiếp máy tính qua cổng USB ứng dụng giao tiếp ngoại vi GVHD:Thầy Phạm Hùng Kim Khánh Sơ lược thư viện hàm hệ điểu hành W INDOW 98 Thư viện liên kết động “mpusbapi.dll ” 102 CHƯƠNG V: ỨNG DỤNG GIAO TIẾP USB s DỤNG VI ĐIỂU KHIỂN PIC18F4550 ứ n g dụng giao tiếp USB sử dụng vi điều khiển PIC18F4550 105 Xây dựng sơ đồ nguyên lí cho mạch ứng dụng 107 Xây dựng chương trình thực giao tiếp USB cho người sử dụng máy tính sử dụng vi điều khiển PIC18F4550 110 3.1 Xây dựng lớp PlCConnector 110 3.2 Thiết kế giao diện người sử dụng cho ứng dụng 115 Xây dựng firmware cho ứng dụ ng 119 CHƯƠNG VI: BÁO CÁO TỔNG KẾT VỂ GIAO TIẾP USB Kết thực h iệ n 128 Kết luận 128 PHỤ LỤC TÀI LIỆU THAM K H Ả O 130 SVTH:Phan Xuân Trường Trang: Đ ề tài:G iao tiếp tính qua cổng U SB GVHD:Thầy Phạm Hùng Kim Khánh ứng dụng giao tiếp ngoại vi CHƯƠNG I: GIỚI TH IỆU S LƯỢC V Ề GIAO T IẾ P USB Tóm tắt: Báo cáo trình tìm hiểu v ề USB Phần hao gồm nội dung: Sơ lược v ề USB _ Giao tiếp USB nhìn sâu vào bên trịng _ Giao thức USB vấn đ ề có liên quan Giới thiệu USB (Universal Serial Bus) giải pháp nhanh chóng linh động đế thực giao tiếp máy tính thiết bị ngoại vi Hầu hết máy tính th ế hệ hỗ trợ giao tiếp USB, thích hợp cho việc giao tiếp với thiết bị ngoại vi thong dụng mouse, keyboard, thiết bị ngoại vi khác phát triển người sử dụng USB thiết k ế ngày hoàn thiện, giúp tạo nhiều thuận lợi cho người sử dụng Một sơ' ưu điểm USB so vói phưcmg thức giao tiếp trước máy tính thiết bị ngoại vi: - Dễ sử dụng: người sử dụng thiết bị ngoại vi giao tiếp qua USB việc cắm thiết bị vào cổng USB máy tính mà khơng cần quan tâm nhiều đến thao tác cài đặt, khai báo thiết bị Khi khơng cịn muốn sử dụng việc rút thiết bị Các thao tác lại thực máy tính thiết bị Ngoài nguồn cung cấp cho thiết bị đuợc hỗ trợ, nhiều trường hợp thiết bị không cẩn thêm nguồn, giúp giảm thiểu mức độ phức tạp cồng kềnh thiết bị - Tốc độ nhanh: so với phương thức giao tiếp trước tốc độ truyền nhận liệu USB nhanh nhiều (1.5 Mbps 12 Mbps đôi với USB 1.0 480 Mbps USB 2.0) Tốc độ cho phép đáp ứng hầu hết yêu cầu truyền nhận liệu người sử dụng, giúp cải thiện đáng kể tốc độ giao tiếp máy tính ngoại vi Giá thành hợp lí: độ phức tạp thiết bị cao hơn, nhiên giá thành thiết bị không cao, nhâ't trường họp sử dụng giao tiếp USB phiên l.x Bên cạnh câu trúc truyền dẫn đơn giản cho phép tiết kiệm chi phí thiết bị - Cho phép nhiều thiết bị đường truyền: USB cho phép tối đa 127 thiết bị giao tiếp với máy tính thịi điểm SVTH:Phan Xuân Trường Trang: Đề tài:Giao tiếp máy tính qua cổng USB ứng dụng giao tiếp ngoại vi GVHD:Thầy Phạm Hùng Kim Khánh Nhiều hỗ trợ cho người phát triển sản phẩm: người phát triển sản phẩm hỗ trợ công cụ cần thiết, từ hệ điều hành, phần mềm máy tính đến phần cứng firmware cho thiết bị Rất nhiều hãng sản xuất hỗ trợ giao tiếp - USB phát triển không ngừng mang lại nhiều thuận lợi cho người sử dụng người phát triển sản phẩm Tuy nhiên, bên cạnh USB cịn có sô' hạn chế định như: - Khoảng cách truyền nhận thiết bị ngoại vi máy tính khơng lớn, khoảng 5m (có khả lên đến hon 20m sử dụng Hub) - Yêu cầu nhiều hỗ trợ từ hệ điều hành phần mềm máy tính - Tốc độ liệu thực hạn chế - Chỉ thực giao tiếp máy tính (host) ngoại vi, khơng hỗ trợ chức giao tiếp ngoại vi vói nhau, giao tiếp host qua phưong thức multi-master Điều phần mục đích phát triển USB, bên cạnh cải tiến không ngừng (USB On The Go) dần khắc phục nhược điểm - Khi thiết bị gặp cố khả sửa chữa khó - Nhiều trở ngại cho người phát triển sản phẩm: câu trúc protocol phức tạp, cần có nhiều kiến thức lĩnh vực khác nhau, bên cạnh khó phát sai sót q trình phát triển sản phẩm CẤU TRÚ C ĐỔ H ÌNH CỦA USB (BUS TOPO LO G Y) Một mạng USB bao gồm thành phần: - Host: thông thường máy tính, đóng vai trị trung tâm mạng Một mạng USB có Host Device: thiết bị giao tiếp vói máy tính, có nhiệm vụ thực chức ngoại vi đó, hỗ trợ giao tiếp USB (được hỗ trợ protocol USB chức khác tưong thích vói hoạt động USB) - Hub: hiểu thiết bị trung gian device host Hub có vai trị mỏ rộng số lượng cổng giao tiếp vói host, đồng thịi điều chỉnh tốc độ liệu device host trường hợp có nhiều device gắn vào host vói tốc độ liệu khác SVTH:Phan Xuân Trường Trang:9 Đ ề tàũGiao tiếp máy tính qua cổng U SB GVHD:Thầy Phạm Hùng Kim Khánh ứng dụng giao tiếp ngoại vi Nhìn tổng thể mạng USB có câu trúc hình Đây mơ hình phù hợp cho USB để phục vụ cho việc giao tiếp máy tính thiết bị ngoại vi Hình 1.1: Đồ hình mạng USB Trung tâm mạng host nhất, thông thường máy tính Máy tính giao tiếp vói thiết bị qua hub trung tâm Thiết bị gắn vào hub trung tâm thiết bị ngoại vi hub khác SỐ lượng thiết bị cho phép tối đa mạng 127, số lớp đa cho phép lớp hình 1.1 CẤU TRÚC TRU YỀN DAN USB USB truyền liệu nguồn điện qua dây, bao gồm dây VUSB, GND hai dây truyền liệu D+/D- SVTH:Phan Xuân Trường Trang: 10 GVHD:Thầy Phạm Hùng Kim Khánh Đ ề tài:G iao tiếp máy tính qua cổng U SB ứng dụng giao tiếp ngoại vi TVV / £ ( m r - ĨĨD T ‘V Í7 >7 VBUS D+ DGND Hình 1.2: Câu trúc truyền đẫn USB Điện áp VUSB đường dây thông thường 5V Tùy thuộc vào chế đôh hoạt đông thiết bị mà giá trị điện áp dịng điện đường truyền thay đổi Dữ liều truyền đường dây có dạng tín hiệu vi sai hai dây D+ D- mã hóa dạng NRZI Dạng mã hóa cho phép truyền xung clock đường truyền Bên cạnh có khung đồng phát để xung clock đầu phát đầu thu trưóc liệu truyền Cực tính hai dây D+ D- đường truyền ln ngược hoạt động bình thường Ngồi tốc độ liệu cịn xác định thơng qua điện trở kéo lên hai dây D+ D- 3.3V (a) SVTH:Phan Xuân Trường Trang: 11 Đ ề tài:G iao tiếp máy tính qua cổng U SB GVHD:Thầy Phạm Hùng Kim Khánh ứng dụng giao tiếp ngoại vi 3.3V (b ) Hình 1.3: Tốc độ liệu phất thông qua điện trở kéo lên chân D+ D- ( a ) : thiết bị c h ế độ full speed ( b ) : thiết bị c h ế độ high speed Hai loại jack kết nôi thường sử dụng USB connector Type A Type B Hình dạng hai loại jack thể hình 1.4: Receptacle Type A t i l Recepttcal Type B /ĩ T \ i“ i T T Hình 1.4: USB connector Cáp truyền dẫn loại cáp dây có màư sắc qui định sau: Pin Number Cable Colour Función Red White Green Black Vbus (5 volts) DD+ Ground GIAO TIẾP USB NHÌN SÂU VÀO BÊN TRONG Trong phần này, giao tiếp USB phân tích kĩ thơng qua việc nhìn sâu vào bên giao tiếp USB host device SVTH:Phan Xuân Trường Trang: 12 Đề tài:Giao tiếp máy tính qua cổng USB ứng dụng giao tiếp ngoại vi GVHD:Thầy Phạm Hùng Kim Khánh Sau số khái niệm: ENDPOINT Có thể xem điểm cuối trình truyền nhận liệu host device Mỗi device có nhóm endpoint độc lập với định nghĩa device Có thể hiểu endpoint đệm liệu phía device q trình truyền nhận Mỗi endpoint định nghĩa thông qua sô' tham sô co sau: - Số thứ tự endpoint - Dung lượng tối đa endpoint Dạng truyền nhận liệu endpoint USB cho phép phương pháp truyền nhận liệu khác (control transfer, interrupt transfer, isochronous transfer bulk transfer) môi phương pháp truyền nhận yêu cầu dạng endpoint khác Các dạng truyền nhận đễ cập kĩ phần sau Hướng truyền nhận liệu: endpoint đảm nhiêm hướng truyền nhận liệu nhât định (truyền liệu nhận liệu) Endpoint endpoint đặc biệt, bao gồm endpoint input endpoint output, dùng cho dạng truyền nhận mặc định control transfer, dùng trình nhận dạng thiết lập chê độ hoạt động cho device device kết nôi với host Host dùng phương pháp đê nhận dạng device, nhận thông tin device thiết lập công cụ giao tiếp cho device Qui trình đề cập kĩ phần Mỗi device cho phép đa 16 endpoint input 16 endpoint output, kể endpoint input endpoint output PIPE Pipe, tạm dịch đường ống, dùng để nôi endpoint thiết bị buffer đệm device Khi đường ơng thiết lập, liệu di chuyển đường ống để từ device đến host ngược lại Mổỉ quan hệ endpoint device, buffer đệm host pipe thể hình sau: SVTH:Phan Xuân Trường Trang: 13 Đ ề tài:G iao tiếp máy tính qua cổng U SB GVHD.Thầy Phạm Hùng Kim Khánh ứng dụng giao tiếp ngoại vi cần sử dụng đến hàm thư viện Hàm Open() Hàm dung để mở đường ông định trước máy tính device để tiến hành truyền nhận dữa liệu Xem source code hàm để biết thêm chức cách viết hàm Hàm CloseO Hàm dùng để đóng đường ơhg mở hàm Open() Hàm cần gọi sau gọi hàm Open() Hàm DWORD SendReceivePacket(BYTE **SendData, DWORD SendLength, BYTE *RecèiveData, DWORD *ReceiveLength, UINT SendDelay, UINT ReceiveDelay); Đây hàm quan trọng cho ứng dụng giao tiếp USB Thơng thường, u cẩu máy tính gửi xhg thiết bị cần nhận trả lời thích hợp từ thiết bị Hàm bao quát hai chức năng, gửi yêu cầu chờ nhận trả lời từ thiết bị Các tham số hàm bao gồm: - SendData: trỏ tói buffer đệm chứa liệu cần gửi SendLength: kích thước liệu cần gửi ReceiveData: trỏ tới buffer đệm chứa liệu nhận - ReceiveLength: kích thước liệu mà máy tính muốn nhận Kích thước ân định máy tính qui định trao đổi liệu máy tính thiết bị SendDelay: thời gian chờ để gửi liệu, đơn vị tính mili giây ReceiveDelay: thời gian chờ để nhận liệu, đơn vị tính mili giây Ta sử dụng hàm để viết chương trình máy tính 3.2 Thiết k ế giao diện người sử dụng cho ứng dụng SVTH:Phan Xuân Trường Trang: 115 GVHD:Thầy Phạm Hùng Kim Khánh Đ ề tài:G iao tiếp máy tính qua cổng U SB ứng dụng giao tiếp ngoại vi Giao diện người sử dụng xây dựng cơng cụ lập trình Visual C++ dựa yêu cầu ứng dụng lớp PlCConnetor công cụ xây dựng sẵn Giao diện thiết k ế hình sau: ể * USB O f M il p p n n p AM I is i^ n n r M trp o i.1 IM I-.11| 11 k READ FIRMWARE VERSION I I READ PORT VALUE I TURN ON/OFF LEDs I r LED r LED r LED "]| r LED Cancel I Hình 5.2: Giao diện ứng dụng giao tiếp USB sử dụng vi điều khiển PIC Công cụ lập trình Visual C++ cho phép tạo nhiều thuận lợi trình xây dựng chương trình ứng dụng máy tính Sau xây dựng xong giao diện, cơng việc cịn lại người lập tình viết đoạn code tương ứng vói chức mà người sử dụng chương trình muốn thực thi Khi người sử dụng ấn nút "READ_FIRM W ARE_VERSION", giá trị phiên firmware xuât box bên cạnh Hàm chương trình viết cho nút bâím sau: void CVCPICUSBDemoDlg::OnReadVersion() { // TODO: Add your control notification handler code here m_PICConnector.Open(); byte send_buf[64],receive_buf[64]; DWORD RecvLength = 4; SVTH:Phan Xuân Trường Trang: 116 Đ ề tài:G iao tiếp máy tính qua cổng U SB GVHDiThầy Phạm Hùng Kữn Khánh ứng dụng giao tiếp ngoại vi #define READ_VERSION 0x00 send_buf[0] = READ_VERSION; send_buf[1] = 2; if(m_PICConnector.SendReceivePacket(send_buf,2,receive_buf,&RecvLength, 1000,1000)) ■ { if(receive_buf[0] != READ_VERSION II RecvLength != II receive_buf[1] != 0x0) { AfxMessageBoxfFail to read firmware version"); } else { m_Versionlnfo.Format("Firmware version: %d.%d", receive_buf[3], receive_buf[2]); UpdateData(FALSE); } } m_PICConnector.Close(); } Khi người sử dụng bấm nút "READ_PORT_VALUE"/ giá trị port D xuâ't box bên cạnh nút bâm Chưong tình viết cho nút bâm có source code sau: void CVCPICUSBDemoDlg::OnReadPortValue() { // TODO: Add your control notification handler code here m_PICConnector.Open(); byte send_buf[64],receive_buf[64]; DWORD RecvLength = 4; #define #define #define #define #define #define READ_PORT_VALUE 0x01 PORTA 0x00 PORTB 0x01 PORTO 0x02 PORTD 0x03 PORTE 0x04 send_buf[0] = READ_PORT_VALUE; send_buf[1] = 3; send_buf[2] = PORTD; if(m_PICConnector.SendReceivePacket(send_buf,3,receive_buf,&RecvLength,1000, SVTH:Phan Xuân Trường Trang: 117 Đ ề tàiiGiao tiếp máy tính qua cổng U SB ứng dụng giao tiếp ngoại vi GVHD:Thầy Phạm Hùng Kim Khánh 1000)) { if(receive_buf[0] != READ_PORT_VALUE II receive_buf[2] != PORTD II RecvLength !=4) { AfxMessageBox("Fail to read port value!"); } else { m_PortValue.Format("Value on PORT: %d",receive_buf[3]); UpdateData(FALSE); } } m_PICConnector.Close(); } Khi muốn bật tắt LED, người sử dụng bấm nút "check box" tương ứng với LED Chương trình viết cho "check box" tương tự Ở chương tình viết cho LED chọn làm ví dụ viết sau: void CVCPICUSBDemoDlg::Onl_ed1() { // TODO: Add your control notification handler code here m_PICConnector.Open(); UpdateData(TRUE); byte send_buf[64],receive_buf[64]; DWORD RecvLength = 1; #define TURN_LED 0x02 send_buf[0] = TURN_LED; send_buf[1] = 1; send_buf[2] = m_Led1; if(m_PICConnector.SendReceivePacket(send_buf,3,receive_buf, &RecvLength, 1000,1000)) { if(receive_buf[0] != TURN_LED || RecvLength !=1) { AfxMessageBox("Fail to turn leds!”); } } mPICConnector.CloseQ; _ SVTH:Phan Xuân Trường Trang: 118 Đ ề tàũGiao tiếp máy tính qua cổng U SB ứng dụng giao tiếp ngoại vi GVHD:Thầy Phạm Hùng Kim Khánh 26.X ây dựng firm w are cho ứng dụng Firmware cho ting dụng dựa Microchip USB Firmware Trong phần trước, ta tìm hiểu phân tích Microchip USB Firmware qui trình enumerating Bây ta tiếp tục sử dụng để phát triển ứng dụng dựa firmware Một điểm thận lợi sử dụng firmware là, người sử dụng dễ dàng can thiệp vào file cần thiết để phát triển ứng dụng Chỉ cần ý đến file sau: - File "user.h": chứa khai báo cần thiết cho hàm ứng dụng người sử dụng - File "user.c": chứa hàm cho phép người sử dụng mở rộng triêh khai ứng dụng File "usbdsc.h" "usbdsc.c": chứa khai báo câu hình hoạt động vi điều khiển PIC mà người phát triển ứng dụng muôn thiết lập - File "io_cfg.h": chứa khai báo cho chức IO chân vi điều khiển PIC - Các file chứa hàm cần thiết để truyền nhận liệu: tùy theo lớp device (HID, MSD hay generic) mà firmware có sẵn hàm xây dựng sẵn để thực thao tác truyền nhận liệu Trong ứng dụng này, ta ý đến lớp generic triển khai ứng dụng truyền nhận liệu dựa hàm xây dựng sẵn file "usbgen.c" "usbgen.h" Các thao tác lại cần đuợc tiên hành vói Microchip USB firmware liệt kê sau: - Khai báo descriptor tương ứng cho cấu hình hoạt động device mà người sử dụng mong muốn Các khai báo cách khai báo hướng dẫn cụ thể file "usbdsc.c" "usbdsc.h" SVTH:Phan Xuân Trường Trang: 119 Đ ề tài:G iao tiếp máy tính qua cổng U SB GVHDiThầy Phạm Hùng Kim Khánh ứng dụng giao tiếp ngoại vi - Khai báo tham số cần thiết cho ứng dụng Quan trọng khai báo câu trúc liuệu dung để truyền nhận máy tính vi điều khiển Các khai báo nên thực file "user.h" - Viết hàm tương ứng với thao tác cần thực máy tính gửi yêu cầu xuống vi điều khiển Sau qui trình cụ thể bước Bưởc 1: Khai báo descriptor Microchip USB firmware hướng dẫn khai báo descriptor chi tiết file "usbdsc.c" "usbdsc.h" Có thể sơ lược cách khai báo descriptor sau: Khai báo device descriptor: descriptor quan trọng Mỗi device có device descriptor mô tả số vân đề lien quan trực tiêp đến device Có thể tham khảo thêm tài liệu "USB specification" đế hiểu rõ tham số Sau khai báo xong device descriptor, Mỉcochip USB firmware tổ chức descriptor lại (configuration descriptor, interface descriptor, endpoint descriptor string descriptor) thành cấu hình (configuration) Một device cho phép nhiều câu hình hoạt động, mơi câu hình có cách tổ chức riêng để giao tiếp với máy tính Việc tổ chức descriptor cho phép firmware dễ dàng tìm descriptor mà host yêu cầu Trong phạm vi ứng dụng đề tài, câu hình hoạt động device tương đổì đơn giản khai báo file "usbdsc.c" "usbdsc.h" sau: /* Device Descriptor */ rom USB DEV DSC device _dsc= { sizeof(USB DEV DSC), // Size of this descriptor in bytes // DEVICE descriptor type DSC DEV, // USB Spec Release Number in BCD format 0x0200, // Class Code 0x00, // Subclass code 0x00, // Protocol code 0x00, // Max packet size for EP0, see usbcfg.h EP0 BUFF SIZE, //Vendor ID 0x04D8, // Product ID: PICDEM FS USB (DEMO OxOOOC, Mode) SVTH:Phan Xuân Trường Trang: 120 Đ ề tài:G iao tiếp máy tính qua cổng U SB GVHD:Thầy Phạm Hùng Kim Khánh ứng dụng giao tiếp ngoại vi 0x0000, 0x01, 0x02, 0x00, 0x01 // // // // Device release number in BCD format Manufacturer string index Product string index Device serial number string index // Number of possible configurations }; /* Configuration Descriptor */ CFG01 = { /* Configuration Descriptc>r */ // Size of this descriptor in bytes sizeofiUSB CFG DSC), // CONFIGURATION descriptor type DSC CFG, //Total length of data for this cfg sizeof(cfg01), // Number of interfaces in this cfg 1, // Index value of this configuration 1, // Configuration string index 0, //Attributes, see usbdefs_std_dsc.h DEFAULT, // Max power consumption (2X mA) 50, /* Interface Descriptor*/ sizeof(USB INTF DSC), DSC INTF, 0, 0, 2, 0x00, 0x00, 0x00, 0, // Size of this descriptor in bytes // INTERFACE descriptor type // Interface Number // Alternate Setting Number // Number of endpoints in this intf // Class code // Subclass code // Protocol code // Interface string index /* Endpoint Descriptors */ sizeof(USB_EP_DSC),DSC_ EP,_EP01_OUT,_INT,USBGEN_EP_SIZE,32, sizeof(USB EP DSC),DSC EP,_EP01_IN,_INT,USBGEN_EP_SIZE,32 }; rom struct{byte bLength;byte bDscType;word string[1];}sd000={ sizeof(sd000),DSC_STR,0x0409}; rom struct{byte bLength;byte bDscType;word string[25];}sd001={ sizeof(sd001),DSC STR, 'M',T,'c','r,,'o', c'.'h'/i'.’p',' ', III IMI 1n T , e'/c'/h ,'n 'o'.T.'o 'g'/y'.' , 1, n , c, SVTH:Phan Xuân Trường Trang: 121 Đ ề tàũGiao tiếp máy tính qua cổng U SB GVHD:Thầy Phạm Hùng Kim Khánh ứng dụng giao tiếp ngoại vi rom struct{byte bLength;byte bDscType;word string[33];}sd002={ sizeof(sd002), DSC_STR, 'p v iv c v d v e v m v v f '/ s v v u v s v b v \ 'D'/e'.'m'.'o',' VB'.'oVa'.V.'d',1\ ’(7C 7)\ ' 727070 rom const unsigned char*rom USB_CD_Ptr[]={&cfg01,&cfg01}; rom const unsigned char US B_S D_Pt r[]={&sd000, &sd 001, &sd002}; *rom CFG01 vùng nhó ROM vi điều khiển chứa descriptor liên quan đến câu hình hoạt động device (xem phần khai báo file "usbdsc.h") Có thể tham khảo thêm file "usb_std_dsc.h" để hiểu rõ hon phần khai báo Cách khai báo có nghĩa vi điều khiển có câu hình hoạt động, câu hình bao gồm interface, endpoint (endpoint output endpoint input) sử dụng kiểu truyền nhận interrupt transfer Các string descriptor đóng vai trị descriptor phu Buớc 2: khai báo tham số cẩn thiết cho ứng dụng Phần khai báo tiến hành file "user.h" Một phần khai báo quan trọng khai báo cấu trúc gói liệu mà máy tính vi điều khiển tiến hành tao đổi liệu Dạng gói liệu khai báo dựa yêu cầu ling dụng đề cập phẩn đầu sau: 7** s T R Ũ c T Ũ ******************************************************Ị R Ẽ S typedef union DATA_PACKET { byte _byte[USBGEN_EP_SIZE]; // For byte access word _word[USBGEN_EP_SIZE/2]; // For word access(USBGEN_EP_SIZE msut be even) struct { enum _ Í _ SVTH:Phan Xuân Trường Trang: 122 Đ ề tài:G iao tiếp máy tính qua cổng U SB GVHD:Thầy Phạm Hùng Kim Khánh ứng dụng giao tiếp ngoại vi READ_VERSION = 0x00, TURN_LED =0x01 READ_PORT_VALUE = 0x02 }CMD; byte len; >; • struct { unsigned :8; byte ID; }; struct { unsigned :8; byte led_num; byte led_status; }; struct { unsigned :8; word word_data; }; struct { unsigned :8; byte len; byte port_num; byte port_value; _ }, _ _ } DATA_PACKET; Cách khai báo tạo râít nhiều thuận lợi q trình thao tác với liệu Có thể thây rõ điều chưcmg trình ring dụng thêm vào file "user.c" Ngồi khai báo thêm tham số khác để phục vụ cho ứng dụng cụ thể Bước 3: V iế t hàm thực h iện trìn h trao đối liệu Đến đây, ta việc thao tác vói u cầu máy tính gửi xuống điều khiển chưong trình dành cho người sử dụng SVTH:Phan Xuân Trường Trang: 123 Đ ề tài:G iao tiếp máy tính qua cổng U SB ứng dụng giao tiếp ngoại vi GVHD:Thầy Phạm Hùng Kim Khánh Trước tiến hành viết chương trình, cần khái quát lại sô vâh đề sau: Quay trở lại chương trình firmware file "m ain.c" Cơng việc firmware khởi tạo hoạt động vi điều khiển Bên canh thao tác khỏi tạo liên quan đến module USB, firmware để trơng sẵn hàm "U serínit0" file "user.c" Các thao tác khởi tạo liên quan đến ứng dụng người sử dụng tiên hành viết chương trình hàm Trong phạm vi ứng dụng đề tài, ngoại vi đơn giản nên việc khởi tạo đơn giản, bao gồm việc khởi tạo port IO cho vi điều khiển PIC18F4550 sau: void Userlnit(void) { mlnitAIILEDsO; // xem file “io_cfg.h” TRISD = OxFF; }//end Userlnit Sau kết thúc bước khỏi tạo, chương trình se vào vịng lặp chính, bao gồm thao tác liên quan đến qui trình enumerating module USB giải trọn vẹn chương trình USBTaskO tìm hiểu phẩn trước Nêu không cần đến thao tác liên quan đến qui tình enumerating, chương trình ProcessIOO thực thi Đây thao tác ling dụng Chương trình ProcessIOQ viết file "user.c" sau: ^****************************************************************************** * Function: void ProcesslO(void) * * Precondition: None * * Input: * * Output: * * Side Effects: * None None None * Overview: This function is a place holder for other user routines * It is a mixture of both USB and non-USB tasks. _ SVTH:Phan Xuân Trường Trang: 124 Đề tài:Giao tiếp máy tính qua cổng USB ứng dụng giao tiếp ngoại vi * GVHD:Thầy Phạm Hùng Kim Khánh * Note: None *****************************************************************************/ void ProcesslO(void) { _ BlinkUSBStatusO; // User Application USB tasks if((usb_device_state CONFIGURED_STATE)||(UCONbits.SUSPND==1)) return; < ServiceRequestsO; }//end ProcesslO Chương trình kiểm tra lại trang thái hoạt động device (đã trang thái hoạt động bình thường (CONFIGIRED_STATE) hay chưa), sau tiến hành bước ứng dụng cụ thể chương trình ServiceRequest() Đây chương trình ứng dụng cụ thể người sử dụng firmware Chương trình ServiceRequest cho ứng dụng đề tài viết file "user.c" sau: void ServiceRequests(void) { byte index; if(USBGenRead((byte*)&dataPacket,sizeof(dataPacket))) { counter = 0; switch(dataPacket.CMD) { case READ_VERSION: //dataPacket._byte[0] is command //dataPacket._byte[1] is len dataPacket._byte[2] = MINOR_VERSION; dataPacket._byte[3] = MAJOR_VERSION; counter=0x04; break; case TURNLED: //Turn on/off first4 LEDs on port D // LED7 & LED8 are used as USB event indicators if(dataPacket.led_num == 3) { mLED_3 = dataPacket.led_status; counter = 0x01; _}//end if _ SVTH:Phan Xuân Trường Trang: 125 Đ ề tài:Giao tiếp máy tính qua cổng U SB ứng dụng giao tiếp ngoại vi GVHD:Thầy Phạm Hùng Kim Khánh if(dataPacket.led_num == 4) { mLED_4 = dataPacket.led_status; counter = 0x01; } if(dataPacket.led_num == 1) { • mLED_1 = dataPacket.led_status; counter = 0x01; > if(dataPacket.led_num == 2) { mLED_2 = dataPacket.led_status; counter = 0x01; } break; case READ_PORT_VALUE: // Read value on port D // This value is adjusted by a DIP switch if(dataPacket.port_num == PORT_D) { dataPacket.port_value = PORTD; counter = 0x04; } default: break; }//end switch if(counter != 0) { if(!mUSBGenTxlsBusy()) USBGenWrite((byte*)&dataPacket,counter); }//end if }//end if }//end ServiceRequests SVTH:Phan Xuân Trường Trang: 126 Đ ề tài:Giao tiếp máy tính qua cổng U SB GVHD:Thầy Phạm Hùng Kim Khánh ứng dụng giao tiếp ngoại vi Khi có liệu nhận từ máy tính thơng qua chương trình USBGenReadO (xem file "usbgen.c", chương trình phân tích u cầu gửi xuống từ máy tính tiến hành thao tác tương ling với yêu cẩu Quá trình phân tích dựa câu trúc gói liệu khai báo file "user.h", sau tiến hành gửi lại cho máy tính liệu mà máy tính yêu cầu thơng qua chương trình USBGenWrite() (xem file "usbgen.c") Như vậy, đến đây, ta hoàn thành việc xây dựng firmware cho ling dụng giao tiếp USB vi điều khiển PIC máy tính SVTH:Phan Xuân Trường Trang: 127 Đ ề tài:G iao tiếp máy tính qua cổng U SB ứng dụng giao tiếp ngoại vi GVHD:Thầy Phạm Hùng Kim Khánh CHƯƠNG VI: BÁO CÁO TỔNG K Ế T V Ề GIAO T IE P USB Tóm tắt: _ K ế t thực _ K ế t luận l.K ế t thực Sau tình tìm hiểu thực ling dụng, tóm tắt sơ lược kết thực ứng dụng sau: - Xây dựng chương trình ứng dụng giao tiếp USB máy tính - Xây dựng firmware vi điều khiển cho giao tiếp USB Thực giao tiếp USB máy tính vi điều khiến PIC máy tính Tuy nhiên, ứng dụng gặp phải số hạn chế cần khắc phục dần: ứ ng dụng đơn giản khơng mang tính thực nghiệm cao Chưa phát huy mạnh giao tiếp USB ưu điểm vượt trội giao tiếp USB Tốc độ truyền nhận liệu chậm, chưa tận dụng hết tính vi điều khiển PIC18F4550 module giao tiếp USB vi điều khiển PIC máy tính 2.K ết luận ứng dụng xây dựng cho phép củng cố lại kiên thức liên quan đến USB vi điều khiển PIC ứng dụng xây dựng dựa công cụ đắc lực liên quan đến USB vi điều khiển PIC, thư viện "mpusbapi.dll", Microchip USB firmaware, cho phép tạo nhiều thuận lợi trình tiếp cận USB, đồng thời hình thành sở cho việc triển khai ứng dụng phức tạp liên quan đến USB Quá trình xây dựng ứng dụng địi hỏi q trình tìm hiểu thực nghiêm túc kiên thức công cụ, cơng cụ lập trình Visual C++ SVTH:Phan Xn Trường Trang: 128 Đ ề tài:G iao tiếp máy tính qua cổng U SB ứng dụng giao tiếp ngoại vi GVHD:Thầy Phạm Hùng Kim Khánh máy tính, cơng cụ lập trình C18 vi điều khiên PIC nhiều thơng tin phụ trợ khác, khó tránh khỏi điểm chưa hợp lí, chưa tìm hiểu cặn kẽ cịn nhiều thiếu sót, đơn giản hóa tơi đa u cầu ứng dụng Điều cho thấy phức tạp việc phát triển giao tiếp USB, thơng qua đó, ta hiểu được, thây điểm mói, ưu điểm giao tiếp USB so với giao tiếp khác máy tính thiết bị ngoại vi Định hướng triển ứng dụng Hoàn thiện dần hướng đến tối ưu hóa vân để liên quan đến ứng dụng sở - Tìm hiểu sâu giao tiếp USB ứng dụng giao tiếp USB, thơng qua tạo sản phẩm ứng dụng tốt hơn, đa dạng - Phát triển thêm ngoại vi để nâng cao tính ứng dụng SVTH:Phan Xuân Trường Trang: 129 ... này, giao tiếp USB phân tích kĩ thơng qua vi? ??c nhìn sâu vào bên giao tiếp USB host device SVTH:Phan Xuân Trường Trang: 12 Đề tài :Giao tiếp máy tính qua cổng USB ứng dụng giao tiếp ngoại vi GVHD:Thầy... sử dụng Một sô' ưu điểm USB so vói phưcmg thức giao tiếp trước máy tính thiết bị ngoại vi: - Dễ sử dụng: người sử dụng thiết bị ngoại vi giao tiếp qua USB vi? ??c cắm thiết bị vào cổng USB máy tính. .. LIÊN QUAN ĐẾN VI ĐIỂU KHIỂN PIC - CHƯƠNG TRÌNH ỨNG DỤNG GIAO TIẾP USB TRÊN MÁY TÍNH SVTH:Phan Xuân Trường Trang: Đề tà? ?Giao tiếp máy tính qua cổng USB ứng dụng giao tiếp ngoại vi GVHD:Thầy Phạm

Ngày đăng: 05/03/2021, 16:03

TỪ KHÓA LIÊN QUAN

w