LỜI NÓI ĐẦU Trong lĩnh vực Điện Điện tử nói chung và ngành Tự động hóa nói riêng, truyền thông và ghép nối các thiết bị là vấn đề then chốt và rất phổ biến. Phần lớn các thiết bị, các hệ thống đều được kết nối với máy tính để thu thập thông tin, lưu trữ số liệu, điều khiển và giám sát các trạng thái của thiết bị. Ở trình độ của sinh viên, hầu hết các mô hình hay sản phẩm đều được kết nối qua giao thức RS232. Giao thức này rất quen thuộc và dễ thực hiện, tuy nhiên bản thân nó cũng quá lỗi thời so với yêu cầu về tốc độ truyền của công nghệ ngày nay. Vì vậy trong đề tài Tốt Nghiệp này em xin gửi đến quí thầy cô cùng tất cả các bạn đọc giao thức USB, một phương pháp mới để tăng tốc độ truyền của dữ liệu, đồng thời thân thiện hơn với người dùng. Nội dung của đề tài này gồm 6 chương: Chương I: TỔNG QUAN ĐỀ TÀI Chương II: TỔNG QUAN VỀ GIAO THỨC USB Chương III: TỔNG QUAN VỀ MẠNG TRUYỀN THÔNG 1 DÂY Chương IV: TỔNG QUAN VỀ PIC 18F25504550 Chương V: GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ DS18B20 Chương VI: THIẾT KẾ VÀ LẮP RÁP CÁC MÔ HÌNH Mặc dù bản thân cũng rất nổ lực trong việc tìm kiếm thông tin, tài liệu để hoàn thành đề tài một cách trọn vẹn nhất nhưng mắc sai sót là điều khó tránh khỏi. Thành thật mong quý thầy cô cùng bạn đọc góp ý kiến để đề tài ngày càng hoàn thiện Cuối cùng em xin gửi lời cảm ơn chân thành đến gia đình, thầy cô và bạn bè đã động viên, giúp đỡ trong suốt thời gian qua. Đặc biệt, gửi lời cảm ơn đến thầy Lâm Tăng Đức đã trực tiếp hướng dẫn để đề tài được hoàn thành Mục Lục CHƯƠNG I: TỔNG QUAN ĐỀ TÀI Error Bookmark not defined. 1.1:Tầm quan trọng của truyền thông và ghép nối máy tính với ngànhTự động hóa Error Bookmark not defined. 1.2:Thực trạng hiện nay Error Bookmark not defined. 1.3: Nội dung đề tài Error Bookmark not defined. CHƯƠNG II: TỔNG QUAN VỀ GIAO THỨC USB VÀ LỚP HID Error Bookmark not defined. 2.1: Giới thiệu sơ bộ về giao thức USB Error Bookmark not defined. 2.2:Quá trình phát triển giao thức USB Error Bookmark not defined. 2.3: Phân tích ưu điểm và nhược điểm của giao thức USB Error Bookmark not defined. 2.3.1: Ưu điểm: Error Bookmark not defined. 2.3.2: Nhược điểm Error Bookmark not defined. 2.4: Giới thiệu các lớp của giao thức USB Error Bookmark not defined. 2.4.1: Lớp thiết bị âm thanh (Audio) Error Bookmark not defined. 2.4.2: Lớp thiết bị thẻ thông minh (ChipSmart Card Interface) Error Bookmark not defined. 2.4.3: Các thiết bị truyền thông (Modems and Networks) Error Bookmark not defined. 2.4.4: Lớp thiết bị bảo mật thông tin Error Bookmark not defined. 2.4.5 Lớp các thiết bị nâng cấp firmware Error Bookmark not defined. 2.4.6:Lớp các thiết bị tương tác với con người (Human Interface) Error Bookmark not defined. 2.4.7:Cầu chuyển đổi hồng ngoại (IrDA) Error Bookmark not defined. 2.4.8: Lớp các thiết bị lưu trữ thứ cấp (Mass Storage) Error Bookmark not defined. 2.4.9:Lớp các thiết bị in ấn (Printers) Error Bookmark not defined. 2.4.10:Lớp các thiết bị lưu giữ hình ảnh tĩnh (Still Image Capture) Error Bookmark not defined. 2.4.11: Các thiết bị đo đạc và kiểm tra Error Bookmark not defined. 2.4.12: Lớp thiết bị ảnh động (Video) Error Bookmark not defined. 2.4.13: Thực hiện các chức năng không tiêu chuẩn Error Bookmark not defined. 2.5:Lớp thiết bị giao diện người sử dụng (HIDHuman Interface Device) Error Bookmark not defined. 2.5.1: Khái niệm về HID Error Bookmark not defined. 2.5.2: Các yêu cầu về phần cứng Error Bookmark not defined. 2.5.3: Các yêu cầu về vi chương trình (Firmware) Error Bookmark not defined. 2.5.4: Cách thức để chỉ ra một thiết bị thuộc lớp HID Error Bookmark not defined. 2.5.5: Bộ mô tả báo cáo (Report Descriptor) Error Bookmark not defined. 2.5.6: Các yêu cầu mà host có thể gửi tới một thiết bị thuộc lớp HID Error Bookmark not defined. 2.6: Sự hỗ trợ của Hệ điều hành với lớp HID Error Bookmark not defined. 2.7: Chọn chip Error Bookmark not defined. CHƯƠNG III: TỔNG QUAN VỀ MẠNG TRUYỀN THÔNG 1 DÂY Error Bookmark not defined. 3.1:Định nghĩa mạng truyền thông 1 dây Error Bookmark not defined. 3.2: Tổng quan về Bus 1 dây Error Bookmark not defined. 3.3: Các yêu cầu Error Bookmark not defined. 3.4:Hoạt động của bus 1 dây Error Bookmark not defined. 3.4: Mạng một dây và Vi điều khiển PIC Error Bookmark not defined. CHƯƠNG IV: TỔNG QUAN VỀ PIC 18F25504550 Error Bookmark not defined. 4.1: Giới thiệu PIC 18F25504550 Error Bookmark not defined. 4.2: Khái quát chức năng USB trong PIC Error Bookmark not defined. 4.2.1:Trạng thái và điều khiển USB Error Bookmark not defined. 4.2.2: Thanh ghi điểu khiển (UCON) Error Bookmark not defined. 4.2.3: Thanh ghi cấu hình USB (UCFG) Error Bookmark not defined. 4.2.4: Thanh ghi trạng thái USB Error Bookmark not defined. 4.2.5: Thanh ghi điều khiền USB ENDPOINT( UEPn) Error Bookmark not defined. 4.2.6: Thanh ghi trạng thái ngắt của giao thức USB Error Bookmark not defined. 4.2.7: Thanh ghi kích hoạt trạng thái ngắt của giao thức USB Error Bookmark not defined. CHƯƠNG V: GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ DS18B20 Error Bookmark not defined. 5.1: Khái quát chung Error Bookmark not defined. 5.2: Cấu trúc phần cứng Error Bookmark not defined. 5.3:Hoạt động đo nhiệt độ Error Bookmark not defined. 5.4: Hoạt động báo hiệu Error Bookmark not defined. 5.5: Thanh ghi cấu hình và độ phân giải Error Bookmark not defined. 5.6: 8 Bit CRC Error Bookmark not defined. 5.7: Tập lệnh Error Bookmark not defined. 5.7.1: Lệnh ROM Error Bookmark not defined. 5.7.2: Lệnh chức năng bộ nhớ Error Bookmark not defined. 5.8: Chuẩn 1 dây với cảm biến DS18B20 Error Bookmark not defined. 5.8.1: Thời gian khởi động bus Error Bookmark not defined. 5.8.2: Thiết lập các Slots ở chế độ ghi cho Master Error Bookmark not defined. CHƯƠNG VI: THIẾT KẾ VÀ LẮP RÁP MỘT SỐ CÁC ỨNG DỤNG Error Bookmark not defined. 6.2: Sơ đồ nguyên lý Error Bookmark not defined. 6.3: Môđun thu phát RF 8 phím bấm Error Bookmark not defined. 6.3.1: Môđun thu RF Error Bookmark not defined. 6.3.2: Mô đun phát RF (Remote 8 phím) Error Bookmark not defined. 6.4: LCD 16x2 Error Bookmark not defined. 6.5: Công cụ hỗ trợ Error Bookmark not defined. 6.6: Xây dựng giao diện trên máy tính bằng VB 6.0 Error Bookmark not defined. 6.7: Sơ đồ khối firmware bên trong chip Error Bookmark not defined. 6.8: Một số hình ảnh của sản phẩm Error Bookmark not defined. TÀI LIỆU THAM KHẢO Error Bookmark not defined. PHỤ LỤC Error Bookmark not defined. Phụ Lục 0: Chương trình xây dựng giao diện trên VB Error Bookmark not defined. Phụ Lục 1: Chương trình REMOTE 8 phím Error Bookmark not defined. Phụ Lục 2: Chương trình đo nhiệt độ và ghép nối máy tính qua cổng USB Error Bookmark not defined. Phụ Lục 3: Thư viện chuẩn 1dây Error Bookmark not defined. Phụ Lục 4: Danh sách các chip có hỗ trợ giao thức USB Error Bookmark not defined.
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN
BỘ MÔN: TỰ ĐỘNG HÓA
-o0o -
THUYẾT MINH ĐỒ ÁN TỐT NGHIỆP
NGHIÊN CỨU, THIẾT KẾ HỆ THỐNG CẢM BIẾN NHIỆT ĐỘ GIAO TIẾP VÀ GHÉP NỐI MÁY TÍNHQUA GIAO THỨC
USB/LỚP HID
GVHD: ThS Lâm Tăng Đức SVTH: Nguyễn Hữu Việt
MSSV: 105106061149
Đà Nẵng, tháng 5/2011
Trang 2Trong lĩnh vực Điện - Điện tử nói chung và ngành Tự động hóa nói riêng,
truyền thông và ghép nối các thiết bị là vấn đề then chốt và rất phổ biến Phần lớn các thiết bị, các hệ thống đều được kết nối với máy tính để thu thập thông tin, lưu trữ số liệu, điều khiển và giám sát các trạng thái của thiết bị Ở trình độ của sinh viên, hầu hết các mô hình hay sản phẩm đều được kết nối qua giao thức RS-232 Giao thức này rất quen thuộc và dễ thực hiện, tuy nhiên bản thân nó cũng quá lỗi thời so với yêu cầu về tốc độ truyền của công nghệ ngày nay Vì vậy trong đề tài Tốt Nghiệp này em xin gửi đến quí thầy cô cùng tất cả các bạn đọc giao thức USB, một phương pháp mới để tăng tốc độ truyền của dữ liệu, đồng thời thân thiện hơn với người dùng
Nội dung của đề tài này gồm 6 chương:
Chương I: TỔNG QUAN ĐỀ TÀI
Chương II: TỔNG QUAN VỀ GIAO THỨC USB
Chương III: TỔNG QUAN VỀ MẠNG TRUYỀN THÔNG 1 DÂY
Chương IV: TỔNG QUAN VỀ PIC 18F2550/4550
Chương V: GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ DS18B20
Chương VI: THIẾT KẾ VÀ LẮP RÁP CÁC MÔ HÌNH
Mặc dù bản thân cũng rất nổ lực trong việc tìm kiếm thông tin, tài liệu để hoàn thành đề tài một cách trọn vẹn nhất nhưng mắc sai sót là điều khó tránh khỏi Thành thật mong quý thầy cô cùng bạn đọc góp ý kiến để đề tài ngày càng hoàn thiện
Cuối cùng em xin gửi lời cảm ơn chân thành đến gia đình, thầy cô và bạn bè đã
động viên, giúp đỡ trong suốt thời gian qua Đặc biệt, gửi lời cảm ơn đến thầy Lâm
Tăng Đức đã trực tiếp hướng dẫn để đề tài được hoàn thành
Đà Nẵng tháng 5 năm 2011 Sinh viên thực hiện NGUYỄN HỮU VIỆT
Trang 3CHƯƠNG I: TỔNG QUAN ĐỀ TÀI Error! Bookmark not defined
1.1:Tầm quan trọng của truyền thông và ghép nối máy tính với ngànhTự động hóa
Error! Bookmark not defined 1.2:Thực trạng hiện nay Error! Bookmark not defined 1.3: Nội dung đề tài Error! Bookmark not defined
CHƯƠNG II: TỔNG QUAN VỀ GIAO THỨC USB VÀ LỚP HID Error! Bookmark
not defined
2.1: Giới thiệu sơ bộ về giao thức USB Error! Bookmark not defined 2.2:Quá trình phát triển giao thức USB Error! Bookmark not defined 2.3: Phân tích ưu điểm và nhược điểm của giao thức USB Error! Bookmark not
defined
2.3.1: Ưu điểm: Error! Bookmark not defined 2.3.2: Nhược điểm Error! Bookmark not defined 2.4: Giới thiệu các lớp của giao thức USB Error! Bookmark not defined 2.4.1: Lớp thiết bị âm thanh (Audio) Error! Bookmark not defined 2.4.2: Lớp thiết bị thẻ thông minh (Chip/Smart Card Interface) Error! Bookmark
Bookmark not defined
2.4.7:Cầu chuyển đổi hồng ngoại (IrDA) Error! Bookmark not defined 2.4.8: Lớp các thiết bị lưu trữ thứ cấp (Mass Storage) Error! Bookmark not
defined
2.4.9:Lớp các thiết bị in ấn (Printers) Error! Bookmark not defined
Trang 4Bookmark not defined
2.4.11: Các thiết bị đo đạc và kiểm tra Error! Bookmark not defined 2.4.12: Lớp thiết bị ảnh động (Video) Error! Bookmark not defined 2.4.13: Thực hiện các chức năng không tiêu chuẩn Error! Bookmark not defined 2.5:Lớp thiết bị giao diện người sử dụng (HID-Human Interface Device) Error!
Bookmark not defined
2.5.1: Khái niệm về HID Error! Bookmark not defined 2.5.2: Các yêu cầu về phần cứng Error! Bookmark not defined 2.5.3: Các yêu cầu về vi chương trình (Firmware) Error! Bookmark not defined 2.5.4: Cách thức để chỉ ra một thiết bị thuộc lớp HID Error! Bookmark not
defined
2.5.5: Bộ mô tả báo cáo (Report Descriptor) Error! Bookmark not defined 2.5.6: Các yêu cầu mà host có thể gửi tới một thiết bị thuộc lớp HID Error!
Bookmark not defined
2.6: Sự hỗ trợ của Hệ điều hành với lớp HID Error! Bookmark not defined 2.7: Chọn chip Error! Bookmark not defined
CHƯƠNG III: TỔNG QUAN VỀ MẠNG TRUYỀN THÔNG 1 DÂY Error!
Bookmark not defined
3.1:Định nghĩa mạng truyền thông 1 dây Error! Bookmark not defined 3.2: Tổng quan về Bus 1 dây Error! Bookmark not defined 3.3: Các yêu cầu Error! Bookmark not defined 3.4:Hoạt động của bus 1 dây Error! Bookmark not defined 3.4: Mạng một dây và Vi điều khiển PIC Error! Bookmark not defined
CHƯƠNG IV: TỔNG QUAN VỀ PIC 18F2550/4550 Error! Bookmark not defined
4.1: Giới thiệu PIC 18F2550/4550 Error! Bookmark not defined 4.2: Khái quát chức năng USB trong PIC Error! Bookmark not defined 4.2.1:Trạng thái và điều khiển USB Error! Bookmark not defined 4.2.2: Thanh ghi điểu khiển (UCON) Error! Bookmark not defined 4.2.3: Thanh ghi cấu hình USB (UCFG) Error! Bookmark not defined
Trang 54.2.5: Thanh ghi điều khiền USB ENDPOINT( UEPn) Error! Bookmark not
CHƯƠNG VI: THIẾT KẾ VÀ LẮP RÁP MỘT SỐ CÁC ỨNG DỤNG Error!
Bookmark not defined
6.2: Sơ đồ nguyên lý Error! Bookmark not defined 6.3: Mô-đun thu phát RF 8 phím bấm Error! Bookmark not defined 6.3.1: Mô-đun thu RF Error! Bookmark not defined 6.3.2: Mô đun phát RF (Remote 8 phím) Error! Bookmark not defined 6.4: LCD 16x2 Error! Bookmark not defined 6.5: Công cụ hỗ trợ Error! Bookmark not defined 6.6: Xây dựng giao diện trên máy tính bằng VB 6.0 Error! Bookmark not defined
Trang 66.8: Một số hình ảnh của sản phẩm Error! Bookmark not defined TÀI LIỆU THAM KHẢO Error! Bookmark not defined PHỤ LỤC Error! Bookmark not defined Phụ Lục 0: Chương trình xây dựng giao diện trên VB Error! Bookmark not
defined
Phụ Lục 1: Chương trình REMOTE 8 phím Error! Bookmark not defined Phụ Lục 2: Chương trình đo nhiệt độ và ghép nối máy tính qua cổng USB Error!
Bookmark not defined
Phụ Lục 3: Thư viện chuẩn 1-dây Error! Bookmark not defined Phụ Lục 4: Danh sách các chip có hỗ trợ giao thức USB Error! Bookmark not
defined
Trang 7i
Trường đại học Bách Khoa Độc Lập - Tự Do - Hạnh Phúc
Khoa Điện - *** -
NHIỆM VỤ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP
Tên: NGUYỄN HỮU VIỆT Lớp: 06D6
Khoa: Điện Nghành: Tự Động Hóa
1 - Đề tài: NGHIÊN CỨU, THIẾT KẾ HẾ THỐNG CẢM BIẾN NHIỆT ĐỘ GIAO TIẾP VÀ GHÉP NỐI MÁY TÍNH QUA GIAO THỨC USB/LỚP HID
2 - Nội dung thiết kế:
Chương I: TỔNG QUAN ĐỀ TÀI
Chương II: TỔNG QUAN VỀ GIAO THỨC USB VÀ LỚP HID
Chương III: TỔNG QUAN VỀ MẠNG 1 DÂY
Chương IV: TỔNG QUAN VỀ PIC 18F2550/4550
Chương V: GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ DS18B20
Chương VI: THIẾT KẾ VÀ LẮP RÁP CÁC MÔ HÌNH
3 - Ngày giao đề tài: Ngày tháng năm 2011
4 - Ngày nộp đề tài: Ngày tháng năm 2011
Ngày tháng năm 2011 Ngày tháng năm 2011
Cán bộ duyệt Cán bộ hướng dẫn
ThS Lâm Tăng Đức
Trang 8i
Ngày tháng năm 2011 Ngày tháng năm 2011
Trưởng Bộ Môn Chủ tịch hội đồng
TS Nguyễn Hoàng Mai
Trang 10CHƯƠNG I: TỔNG QUAN ĐỀ TÀI
1.1:Tầm quan trọng của truyền thông và ghép nối máy tính với ngànhTự
động hóa
- Ngày nay trong tất cả các nhà máy, xí nghiệp, các hệ thống, các thiết bị đều có thể liên lạc và trao đổi thông tin cho nhau thông qua các chuẩn truyền dẫn khác nhau Chính điều này đã tạo nên sự hoạt động hài hòa giữa các thiết bị trong hệ thống
- Bên cạnh việc trao đổi thông tin cho nhau, các thiết bị phải được kết nối để đưa
dữ liệu về máy tính chủ Từ máy chủ người điều khiển có thể nhận biết được trạng thái hoạt động, thông tin sảm phẩm đồng thời cũng có thể lưu trữ, in ấn được các thông số này khi cần thiết
1.2:Thực trạng hiện nay
Hiện nay giao thức RS-232 được sử dụng phổ biến nhất để thực hiện việc ghép nối các thiết bị ngoại vi với máy tính Tuy nhiên giao thức này đã quá lỗi thời vì tốc độ truyền hạn chế và khả năng linh hoạt không cao Chính vì vậy, các máy tính hiện đại đều đã tháo bỏ, chỉ còn lại các cổng giao thức USB Vì vậy để có thể ghép nối các thiết
bị ngoại vi với máy tính hiện đại các nhà thiết kế đã sử dụng các giải pháp sau:
Một là sử dụng mô đun chuyển đổi USB-COM (Hình 1.1)
Hai là sử dụng chip chuyển đổi USB-COM (Hình 1.2)
Hình 1.1 Mô đun chuyển đổi USB qua COM
Trang 11Hình 1.2 Chip chuyển đổi USB-COM (PL2303)
Nhìn trên nhiều phương diện, đây là vấn đề lớn cho mỗi nhà tiết kế cần cân nhắc
- Xét về mặt kinh tế: Thêm Mô-đun chuyển đổi hay Chip chuyển đổi đều làm tăng giá thành của sản phẩm
- Xét về mặt kỹ thuật: Chúng ta biết rằng giao thức USB có tốc độ truyền khá cao vào khoảng 12Mbit/sec (với chuẩn full-speed) trong khi đó giao thức RS-232 chỉ có 20Kbit/sec Đây được gọi là nguyên lý truyền thông “cổ chai” Vấn đề này cần tránh trong việc thiết kế các ứng dụng
- Xét về mặt lợi ích của người sử dụng: Các thiết bị đã nêu ở trên đều cần có driver riêng cộng với tính “ảo” của nó đã gây lên một số trở ngại cho người sử dụng Vậy để giải quyết vấn đề này, đề tài đã đi vào nghiên cứu để đưa ra giải pháp mới nhằm khắc phục các yếu điểm trên, bằng cách ghép nối các thiết bị ngoại vi với máy tính trực tiếp qua giao thức USB
1.3: Nội dung đề tài
Thiết kế và lập trình ứng dụng sử dụng giao thức USB/lớp HID bao gồm những phần sau:
- Tổng quan về giao thức USB
- Giới thiệu chip có hỗ trợ giao thức USB, PIC18F2550/4550
-Thiết kế và lắp rápbàn phím không dây dạng thu nhỏ và mạch đo nhiệt độ
- Tìm hiểu sự hỗ trợ của Hệ điều hành với các lớp trong giao thức USB
- Xây dựng chương trình giao diện trên Windowsbằng VB 6.0 để cập nhật giá trị nhiệt độ được gửi lên từ Vi điều khiển trực tiếp qua giao thức USB
Trang 12- Tạo firmware cho Vi điều khiển để Hệ điều hành có thể tự động nhận ra thiết bị
và không cần driver giống như các thiết bị hiện có trên thị trường (Bàn phím, chuột…)
- Trong đề tài này cảm biến nhiệt độ DS18B20 được sử dụng để đo nhiệt độ của môi trường sau đó truyền giá trị về Vi điều khiển Trên thị trường hiện hay có hai loại cảm biến nhiệt độ phổ biến là: cảm biến có tín hiệu đầu ra liên tục (analog temperature sensor) và cảm biến có tín hiệu đầu ra số (digital temperature sensor) Đối với các cảm biến liên tục tín hiệu đầu ra hầu hết là điện áp còn đối với cảm biến số thì đầu ra là một chuẩn truyền thông nào đó, có thể là I2C, SPI hay UART.Riêng cảm biến này sử dụng chuẩn truyền thông “1 dây” Thông qua cảm biến này đề tài cũng giới thiệu đến thầy
cô và các bạn một giải pháp khá đơn giản trong lĩnh vực truyền thông: “Mạng truyền thông 1 dây”
- Sơ đồ khối cho các mô hình:
Trang 13CHƯƠNG II: TỔNG QUAN VỀ GIAO THỨC USB VÀ LỚP HID
2.1: Giới thiệu sơ bộ về giao thức USB
Hình 2.1 Đầu cắm USB (type A)
USB (Universal Serial Bus) là một giao thức cho phép kết nối giữa các thiết bị
ngoại vi và máy tính chủ Giao thức này được phát minh và phát triển bởi Ajay Bhatt
trong khi ông làm việc tại Intel.USB đã thay thế cho nhiều giao thức đa dạng và phức tạp cũ như cổng giao tiếp nối tiếp và cổng giao tiếp song song…
USB có thể kết nối với nhiều thiết bị ngoại vi như chuột máy tính, bàn phím, máy
in, camera kỹ thuật số, các ỗ đĩa flash và ổ đĩa di động…Kể từ khi ra đời USB đã trở thành giao thức kết nối tiêu chuẩn cho các thiết bị này
Buổi ban đầu mới ra đời USB chỉ được thiết kế giành riêng cho máy tính cá nhân, nhưng thời gian trôi qua USB cũng trở nên phổ biến với các thiết bị như Smartphone,PDAs, Video game…
Không giống như các chuẩn truyền thông cũ (RS-232, Parallel port), cổng USB có cung cấp sẵn nguồn điện vì vậy các thiết bị ngoại vi kết nối qua cổng USB không cần nguồn riêng, ngoại trừ các thiết bị cần công suất lớn
Trang 142.2:Quá trình phát triển giao thức USB
Một nhóm gồm 7 công ty bắt đầu tìm hiểu và phát triển giao thức này từ năm 1994gồm Compaq, NEC, DEC, IBM, Intel, Cortel và Microsoft
Phiên bản USB 1.0 được ra đời vào tháng 1 năm 1996 với tốc độ truyền 1.5MBit/s (Low speed) Phiên bản 1.1 được công bố vào tháng 9 năm 1998 với hai cấp tốc độ truyền 1.5 MBit/s (Low speed) và 12 MBit/s (Full speed) USB 1.1 có bổ sung thêm một kiểu truyền thông mới “interrupt OUT” Tháng 4 năm 2000 giao thức USB 2.0 ra đời với 3 cấp tốc độ truyền 1.5 MBit/s (Low speed), 12 MBit/s (Full speed), 480 MBit/s (High speed) Ngày 12 tháng 11 năm 2008 giao thức USB 3.0 ra đời với tốc độ truyền 5 GBit/s Sản phẩm sử dụng USB 3.0 đầu tiên được ra đời vào tháng 1 năm
2010
( Trong đồ án này chỉ tìm hiểu về giao thức USB 2.0 Full speed)
2.3: Phân tích ưu điểm và nhược điểm của giao thức USB
2.3.1: Ưu điểm:
2.3.1.1:Đối với người sử dụng
- USB rất linh hoạt đủ để tương thích với nhiều loại thiết bị ngoại vi, thay vì làm nhiểu kiểu đầu cắm cho từng loại thiết bị khác nhau ở đây ta chỉ cần 1 mà thôi
- Tự động thiết lập cấu hình: Khi người dùng kết nối thiết bị ngoại vi USB vào máy tính, Hệ điều hành sẽ phát hiện và tải xuống một driver tương ứng Với 1 số thiết bị trong lần kết nối đầu tiên, Hệ điều hành sẽ yêu cầu người dùng cho vào 1 đĩa
có chứa driver, sau đó quá trình cài đặt sẽ tự động tiến hành Chúng ta cũng không cần khởi động lại máy tính trước khi sử dụng thiết bị ngoại vi đó
- Dễ dàng kết nối: Chúng ta không cần phải tháo rời máy tính để cắm thiết bị vào, bởi vì tất cả các máy tính đã có cổng USB ở mặt trước và mặt sau của máy
- Cáp nối đơn giản: Cáp có 4 sợi bên trong, nhỏ gọn, dài khoảng 5 mét, nếu có Hub thì có thể dài đến 30 mét Cổng và Cáp USB đã được thiết lập sao cho cắm không
bị sai chiều
Trang 15Bảng 2.1:Bảng so sánh các giao thức
- Cắm nóng: Chúng ta có thể cắm và tháo thiết bị khỏi máy tính bất cứ lúc nào chúng ta cần mà không làm hỏng máy tính hay thiết bị Hệ điều hành tự động nhận ra thiết bị khi nó được cắm vào và sẵn sàng để dùng
- Không cần người dùng cài đặt thêm: Người dùng không cần phải chọn địa chỉ cổng và cũng không có jumper nào để thiết lập các mục đích khác
- Nhiều thiết bị có thể cắm vào một máy tính mà không yêu cầu phần cứng quá phức tạp
- Đôi khi không cần nguồn cung cấp: Với các thiết bị không yêu cầu công suất lớn (+5V, 500mA) ta không cần cấp nguồn ngoài cho thiết bị
Trang 16- Tốc độ truyền khá cao: Với USB Low speed 1.5MBit/s,Full speed 12MBit/s, High speed 12MBit/s Dưới đây là 2.1 bảng so sánh các giao thức
-Độ tin cậy cao: Độ tin cậy của USB được thừa kế cả phần cứng và giao thức cho việc truyền dữ liệu Đặc điểm của phần cứng giúp cho việc loại trừ nhiễu được dễ dàng.Đồng thời cơ chế tự kiểm tra lỗi và yêu cầu gửi lại giúp cho giao thức này tăng
độ tin cậy
-Giá thành hạ: Mặc dù USB phức tạp hơn các giao thức trước đây, tuy nhiên giá thành cho thiết bị lại không quá đắt
-Tiết kiệm năng lượng: Những mạch điện tiết kiệm năng lượng tự động
“power down” khi thiết bị USB ở chế độ chờ và sẵn sàng khi chúng cần được sử dụng Giảm tiêu thụ năng lượng đồng nghĩa với việc tiết kiệm tiền, thân thiện với môi trường
và cũng tặng tuổi thọ của Pin
2.3.1.2:Đối với người thiết kế
- Sự linh hoạt trong thiết kế: USB có 4 phương thức truyền và 3 cấp tốc độ, điều này giúp cho USB tương thích với nhiều loại thiết bị ngoại vi Tùy thuộc vào đặc điểm của từng thiết bị ngoại vi mà ta chọn phương thức và tốc độ truyền cho phù hợp
- Sự hỗ trợ của hệ điều hành: Hầu hết các hệ điều hành đều hỗ trợ giao thức USB, điển hình là Windows 98 trở về sau này
- Sự hỗ trợ của thiết bị ngoại vi: Trên thị trường có rất nhiều dòng Vi điều khiển hỗ trợ giao thức USB Ví dụ: PIC 18F2550/18F4550/18F14K50 của hãng Microchip
- Sự hỗ trợ về kiến thức: Ngày nay cùng với sự phát triển của máy tính và mạng Internet, chúng ta có thể tìm thấy thông tin cần thiết một cách đơn giản Ví dụ:
www.usb.org
Trang 17- Giao tiếp Chủ-Chủ: Giao thức USB chỉ cho phép kết nối giữa máy tính chủ và thiết bị ngoại vi mà thôi Còn việc kết nối 2 máy tính chủ, trao đổi dữ liệu trực tiếp với nhau qua USB là điều không thể
- Cập nhật đa thiết bị: USB không cho phép máy chủ gửi cùng lúc nhiều dữ liệu xuống nhiều thiết bị khác nhau
- Một số yêu cầu cho phần cứng: Đối với các thiết bị không hỗ trợ USB ta phải
sử dụng bộ chuyển đổi USB qua các giao thức khác cho phù hợp Các máy tính đời cũ,
hệ điều hành không hỗ trợ giao thức USB cũng là một vấn đề cần nhắc tới
Trang 18
2.4: Giới thiệu các lớp của giao thức USB
Dưới đây là bảng thống kê các lớp của giao thức USB
Bảng 2.2: Bảng liệt kê các lớp của giao thức USB
2.4.1: Lớp thiết bị âm thanh (Audio)
Lớp thiết bị âm thanh chính là lớp các thiết bị gửi và nhận dữ liệu âm thanh Dữ liệu âm thanh có thể là tiếng nói được mã hoá, nhạc hay bất kỳ một loại âm thanh nào khác Các thiết bị thuộc lớp thiết bị âm thanh có thể sử dụng kiểu truyền đẳng thời cho luồng âm thanh hoặc kiểu truyền khối cho dữ liệu đã được mã hoá bằng giao thức MIDI (Musical Instrument Digital Interface)
2.4.2: Lớp thiết bị thẻ thông minh (Chip/Smart Card Interface)
Thẻ thông minh là các loại thẻ quen thuộc được sử dụng cho việc gọi điện thoại, thẻ ra vào, trả cước cầu đường, bảo hiểm y tế, giải mã cho các bộ thu truyền hình vệ tinh và nhiều các ứng dụng khác, những ứng dụng này yêu cầu một khối lượng thông tin nhỏ hoặc trung bình với sự truy cập dữ liệu lưu trong thẻ một cách dễ dàng Mỗi thẻ là một module bao gồm bộ nhớ và thường thêm một CPU Nhiều thẻ cho phép cập nhật nội dung của chúng để thay đổi một số thông tin ví dụ như giá trị tiền trong thẻ tín dụng hay mã của thẻ Để truy cập một thẻ thông minh, bạn kết nối nó với thiết bị giao diện thẻ thông minh (CCID-Chip Card Interface Device) thường bằng cách nhét thẻ
Trang 19vào khe đọc hoặc soi nó trước các bộ đọc đối với loại thẻ không cần tiếp xúc USB định nghĩa lớp thiết bị giao diện thẻ thông minh vì có một số thiết bị giao diện thẻ thông minh (CCID) sử dụng giao diện USB để giao tiếp với máy tính
2.4.3: Các thiết bị truyền thông (Modems and Networks)
Lớp các thiết bị truyền thông bao gồm hai loại thiết bị chính là: thiết bị thoại và các thiết bị mạng tốc độ trung bình Thiết bị thoại bao gồm điện thoại tương tự, modem tương tự, Các bộ thích nghi đầu cuối ISDN và điện thoại số Các thiết bị mạng bao gồm modem ADSL, modem điện tín, 10BASE-T Ethernet adapter và Hub
2.4.4: Lớp thiết bị bảo mật thông tin
Lớp thiết bị bảo mật định nghĩa cách thức giúp ta điều khiển sự truy cập tới các file, âm nhạc, hình ảnh hoặc các dữ liệu khác được truyền trên bus (ví dụ muốn copy một file nào đó lên thiết bị hoặc đọc nội dung được lưu trong thiết bị thì phải có password)
2.4.5 Lớp các thiết bị nâng cấp firmware
Lớp thiết bị cập nhật firmware định nghĩa một giao thức cho phép máy chủ gửi firmware tăng cường hoặc sửa lỗi cho một thiết bị Sau khi nhận sự nâng cấp firmware thì thiết bị sẽ được thiết lập lại để sử dụng firmware mới của nó Lớp thiết bị này được biết đến khi chúng ta sử dụng chức năng bootloader cho vi điều khiển
2.4.6:Lớp các thiết bị tương tác với con người (Human Interface)
Lớp thiết bị giao diện người sử dụng bao gồm các loại bàn phím, thiết bị con trỏ
và các bộ điều khiển dùng để chơi game Đối với những thiết bị này, máy chủ đọc thông báo từ thiết bị và gần như lập tức thực hiện theo các yêu cầu của người sử dụng (các yêu cầu này mang tính giao tiếp trực tiếp giữa người sử dụng và máy) như sự ấn phím, sự di chuyển của con chuột Máy chủ phải đáp ứng đủ nhanh sao cho người sử dụng không nhận thấy độ trễ rất nhỏ giữa yêu cầu của họ và các đáp ứng của máy
2.4.7:Cầu chuyển đổi hồng ngoại (IrDA)
Lớp thiết bị cầu liên kết dữ liệu hồng ngoại định nghĩa những yêu cầu về phần cứng và các giao thức cho phép việc truyền tải dữ liệu ở khoảng cách ngắn thông qua
Trang 20năng lượng hồng ngoại Thiết bị cầu liên kết dữ liệu hồng ngoại sẽ được nối với máy chủ qua cổng USB cho phép máy chủ sử dụng giao diện USB để giám sát, điều khiển
và truyền dữ liệu qua một giao diện hồng ngoại
2.4.8: Lớp các thiết bị lưu trữ thứ cấp (Mass Storage)
Lớp thiết bị lưu trữ thứ cấp chính là các thiết bị có thể truyền dữ liệu theo cả hai hướng (từ máy chủ tới thiết bị hoặc từ thiết bị về máy chủ) Điển hình cho lớp thiết bị này có thể kể đến các ổ đĩa mềm, ổ đĩa cứng, ổ CD, ổ DVD và ổ nhớ flash Các loại camera cũng có thể sử dụng lớp lưu trữ thứ cấp cho phép việc truy cập các file hình ảnh trong bộ nhớ của camera Trong các máy tính sử dụng hệ điều hành Windows, các thiết bị thuộc lớp lưu trữ thứ cấp sẽ xuất hiện như các ổ đĩa trong cửa sổ My Computer
và hệ điều hành cho phép người sử dụng sao chép, di chuyển và xoá các dữ liệu trong các thiết bị đó
2.4.9:Lớp các thiết bị in ấn (Printers)
Lớp printer được áp dụng cho các thiết bị chuyển đổi dữ liệu nhận được thành dạng văn bản, hình ảnh trên giấy hoặc một số dạng khác Các máy in đời đầu chỉ in được các dòng chữ trong những font đơn cố định Đối với các máy in fun hay laser thì
có thể in nhiều dòng chữ dưới nhiều định dạng font khác nhau, đồng thời cũng có thể
in các hình ảnh phức tạp
2.4.10:Lớp các thiết bị lưu giữ hình ảnh tĩnh (Still Image Capture)
Lớp thiết bị này bao gồm các loại máy ảnh và máy quét Công việc chủ yếu của lớp thiết bị này là truyền dữ liệu hình ảnh từ thiết bị lên máy tính chủ Ngoài ra một vài thiết bị còn có thể nhận dữ liệu từ máy tính Nếu tất cả những gì ta cần là truyền các file hình ảnh từ một máy ảnh lên máy tính chủ thì ta có thể đưa một máy ảnh vào lớp thiết bị lưu trữ thứ cấp
2.4.11: Các thiết bị đo đạc và kiểm tra
Lớp các thiết bị đo lường và kiểm tra là để dành cho các thiết bị đo đạc như các
bộ ADC, DAC, cảm biến và các bộ chuyển đổi (chuyển đổi đơn vị vật lý chẳng hạn) Các thiết bị này có thể là một khối riêng rẽ hoặc là một cạc trong một máy tính lớn
Trang 212.4.12: Lớp thiết bị ảnh động (Video)
Lớp các thiết bị ảnh động: Lớp các thiết bị ảnh động hỗ trợ các thiết bị ghi hình
số xách tay, webcam, và một số thiết bị có chức năng gửi, nhận hay can chỉnh ảnh động Lớp thiết bị này cũng hỗ trợ việc truyền các ảnh tĩnh từ các thiết bị ảnh động
2.4.13: Thực hiện các chức năng không tiêu chuẩn
Một vài thiết bị không có sự phù hợp rõ rệt với một lớp thiết bị được định nghĩa
Ví dụ như các thiết bị điều khiển động cơ, rơ le, hay các cơ cấu chấp hành khác Một
ví dụ khác là các thiết bị kết nối giữa hai máy vi tính (Cầu sử dụng USB) Nếu một thiết bị đầu cuối mà không phù hợp để gán vào một lớp được định nghĩa thì người thiết
kế sẽ phải viết driver cho thiết bị để cung cấp cho máy chủ các thông tin giúp nó giao tiếp được với thiết bị đó
2.5:Lớp thiết bị giao diện người sử dụng (HID-Human Interface Device)
Lớp thiết bị giao diện người sử dụng là một trong những lớp đầu tiên được hệ điều hành Windows hỗ trợ Trên những chiếc máy tính cá nhân sử dụng Windows
98 hoặc các phiên bản muộn hơn thì những ứng dụng có thể giao tiếp với các thiết
bị giao diện người sử dụng bằng cách sử dụng các bộ điều khiển (driver) được xây dựng sẵn trong hệ điều hành Cũng chính vì lý do trên mà nhiều nhà cung cấp thiết
bị đầu cuối USB sử dụng lớp thiết bị giao diện người sử dụng cho sản phẩm của họ Chương này sẽ trình bày về lớp HID với mục đích giúp người đọc nhận định xem một thiết bị nào đó có phù hợp để gán vào lớp HID hay không Chỉ ra các yêu cầu đối với vi chương trình (firmware) để định nghĩa một thiết bị thuộc lớp HID và cho phép nó trao đổi dữ liệu với máy tính chủ
2.5.1: Khái niệm về HID
Từ “giao diện người sử dụng” trong tên gọi của lớp HID để chỉ ra sự tương tác trực tiếp giữa con người với thiết bị thuộc lớp này Ví dụ một con chuột có thể phát hiện việc chúng ta di chuyển hay nhấn chuột để gửi thông tin lên máy chủ và máy chủ sử dụng thông tin này để đem lại các đáp ứng mà người sử dụng đang mong đợi trong một ứng dụng cụ thể nào đó Bên cạnh các thiết bị phổ biến của lớp HID như bàn phím, con chuột, cần điều khiển (joystick) thì lớp HID còn bao gồm một số
Trang 22thiết bị khác như các núm điều chỉnh, các chuyển mạch, nút nhấn, thanh trượt, điều khiển từ xa, bàn phím điện thoại, các thiết bị điều khiển dùng cho game như bao tay, bánh lái
Tuy nhiên một thiết bị thuộc lớp HID không nhất thiết phải có một giao diện người
sử dụng Một thiết bị có thể gán vào lớp HID khi các chức năng của nó nằm gọn trong các giới hạn của đặc tả lớp HID Dưới đây là các giới hạn và khả năng chủ của các thiết bị thuộc lớp HID
Tất cả dữ liệu được trao đổi dưới cùng một dạng cấu trúc được gọi là báo cáo (report) Máy chủ gửi và nhận dữ liệu bằng cách gửi các báo cáo và yêu cầu các báo cáo trong các phương thức truyền điều khiển hoặc truyền ngắt Định dạng báo cáo là khá linh hoạt và nó có thể áp dụng cho rất nhiều dạng của dữ liệu song đối với mỗi một báo cáo đã được định nghĩa thì kích cỡ của nó là xác định
Một giao diện HID phải có một điểm cuối ngắt vào (interrupt IN enpoint) để gửi
dữ liệu lên máy chủ
Một giao diện HID có thể có tối đa một điểm cuối ngắt vào và một điểm cuối ngắt ra (interrupt OUT enpoint) Nếu ta cần nhiều điểm cuối ngắt hơn nữa thì ta có thể tạo một thiết bị đa chức năng gồm nhiều thiết bị HID ở trong nó Một ứng dụng phải đảm bảo sự điều khiển riêng biệt tới từng HID trong thiết bị đa chức năng
Điểm cuối ngắt vào cho phép HID gửi thông tin lên máy chủ ở những thời điểm
mà không hề biết trước Ví dụ không thể có cách nào giúp máy tính biết trước khi nào người sử dụng ấn một phím nào đó trên bàn phím do đó bộ điều khiển máy chủ sử dụng giao tác ngắt để thăm dò có định kỳ nhằm thu lượm dữ liệu mới
Tốc độ trao đổi dữ liệu là hạn chế, đặc biệt là khi truyền ở tốc độ thấp hoặc toàn tốc Điểm cuối ngắt tốc độ thấp không thể vượt quá 800 bytes/sec, với các điểm cuối toàn tốc thì tốc độ tối đa là 64 KB/s còn điểm cuối ngắt tốc độ cao thì tốc độ tối đa vào khoảng 24 MB/s
Với bản Windows 98 Gold thì nó chỉ hỗ trợ USB 1.0 tức là không hỗ trợ điểm cuối ngắt ra do đó tất cả dữ liệu truyền từ máy chủ xuống thiết bị phải sử dụng truyền điều khiển
Lưu ý là giao diện HID có thể chỉ là một trong nhiều kiểu giao diện được hỗ trợ bởi một thiết bị Ví dụ một loa USB có thể sử dụng phương thức truyền đẳng thời cho
Trang 23âm thanh đồng thời cũng có thể có một giao diện HID cho việc điều khiển độ to nhỏ, cân bằng, treble và bass – có nghĩa là với cùng một giao tiếp USB trên một thiết bị nhưng ta có thể sử dụng hai lớp giao tiếp khác nhau
2.5.2: Các yêu cầu về phần cứng
Các điểm cuối
Tất cả các kiểu truyền của HID sử dụng hoặc điểm cuối điều khiển hoặc điểm cuối ngắt Tất cả các HID phải có một điểm cuối ngắt vào để gửi dữ liệu tới máy chủ Một điểm cuối ngắt ra là tuỳ chọn
Các loại báo cáo (Report)
Yêu cầu đối với một điểm cuối ngắt vào cho thấy mọi HID phải có tối thiểu là một report đầu vào được định nghĩa trong bộ mô tả report của HID Các report đầu ra
và report đặc biệt là tuỳ chọn
Các yêu cầu có thể gửi từ Host tới thiết bị trong kiểu truyền điều khiển
Đặc tả HID định nghĩa 6 yêu cầu cụ thể mà Host có thể gửi tới thiết bị Hai trong số đó là Set_Report và Get_Report, đem lại cách để Host và thiết bị trao đổi report thông qua kiểu truyền điều khiển Host sử dụng Set_Report để gửi report và Get_Report để nhận thông báo Bốn yêu cầu còn lại liên quan tới việc cấu hình thiết
bị Các yêu cầu Set_Idle và Get_Idle dùng để thiết lập và đọc tốc độ rỗi, cái cho biết
có hay không việc một thiết bị gửi lại dữ liệu không hề thay đổi kể từ lần thăm dò cuối
Các yêu cầu Set_Protocol và Get_Protocol thiết lập và đọc giá trị giao thức Giá trị giao thức sẽ cho biết một thiết bị có thể được sử dụng hay không ngay cả khi bộ điều khiển đầy đủ của nó chưa được tải trên Host (ví dụ con chuột và bàn phím có thể thực hiện chức năng của nó ngay trong giai đoạn khởi động - khi mà bộ điều khiển chính thức của nó chưa được tải ở trên Host) Các loại yêu cầu vừa nêu sẽ được trình bày chi tiết hơn ở đoạn sau
Trang 24
Kiểu truyền ngắt
Các điểm cuối ngắt đem lại sự luân phiên trong việc trao đổi dữ liệu, đặc biệt khi phía thu phải có được dữ liệu một cách nhanh chóng hoặc định kỳ Truyền điều khiển có thể bị trễ nếu bus quá bận trong khi băng thông cho truyền ngắt lại được đảm bảo
Khả năng thực hiện truyền ngắt ra (OUT) được bổ sung ở phiên bản 1.1 của chuẩn USB Windows 98 SE là phiên bản Windowsđầu tiên hỗ trợ USB 1.1 và HID 1.1
2.5.3: Các yêu cầu về vi chương trình (Firmware)
Vi chương trình phải phù hợp với các yêu cầu của lớp thiết bị Các bộ mô tả của thiết bị phải bao gồm một bộ mô tả giao diện để định nghĩa thiết bị thuộc lớp HID, một bộ mô tả HID và một bộ mô tả điểm cuối ngắt vào (IN) Bộ mô tả điểm cuối ngắt ra (OUT) là tuỳ chọn Vi chương trình cũng phải chứa một bộ mô tả report Một HID có thể hỗ trợ một hay nhiều report Bộ mô tả report chỉ ra kích thước
và nội dung của dữ liệu chứa trong report cũng như cách mà phía thu sẽ sử dụng dữ liệu nhận được Các giá trị trong bộ mô tả sẽ chỉ ra mỗi report là một report đầu vào, đầu ra hay là một report đặc biệt Máy chủ nhận dữ liệu chứa trong report đầu vào và gửi dữ liệu chứa trong report đầu ra Một report đặc biệt có thể được truyền theo cả hai hướng Mọi thiết bị phải hỗ trợ tối thiểu một report đầu vào để máy chủ
có thể thu nhận dữ liệu thông qua truyền ngắt hoặc truyền điều khiển Các report đầu ra là tuỳ chọn Để tương thích với Windows 98 Gold thì các thiết bị sử dụng các report đầu ra nên hỗ trợ việc gửi report thông qua truyền điều khiển Sử dụng truyền ngắt cho các thông báo đầu ra là tuỳ chọn Còn các thông báo đặc biệt cũng là tuỳ chọn và nếu được sử dụng thì nó luôn được truyền thông qua truyền điều khiển
2.5.4: Cách thức để chỉ ra một thiết bị thuộc lớp HID
Với bất kỳ thiết bị USB nào thuộc lớp HID thì các bộ mô tả của nó chỉ cho máy chủ thông tin máy chủ cần biết để giao tiếp với thiết bị Máy chủ tìm hiểu về giao diện HID trong suốt quá trình thiết lập bằng cách gửi một yêu cầu Get_Descriptor Các bộ mô tả của một thiết bị thuộc lớp HID bao gồm: Bộ mô tả thiết bị (Device Descriptor), bộ mô tả cấu hình (Configuration Descriptor), bộ mô tả giao diện
Trang 25(Interface Descriptor), bộ mô tả HID (HID Descriptor), bộ mô tả điểm cuối ngắt vào (IN interrupt Enpoint Descriptor), bộ mô tả điểm cuối ngắt ra (OUT Interrupt Endpoint Descriptor) và bộ mô tả điểm cuối ngắt đặc biệt (Feature Interrupt Endpoint Descriptor) Hai bộ mô tả sau cùng là tuỳ chọn (tức có thể có hoặc không) Ngoài các bộ mô tả vừa liệt kê ở trên thiết bị thuộc lớp HID còn phải có một bộ mô tả nữa đó là bộ mô tả Report (bộ mô tả Report sẽ được nói cụ thể sau)
2.5.5: Bộ mô tả báo cáo (Report Descriptor)
Một bộ mô tả thông báo định nghĩa khuôn dạng và công dụng của dữ liệu chứa trong các report Ví dụ nếu thiết bị là một con chuột thì dữ liệu trong report sẽ thông báo cho máy chủ biết sự di chuyển của con chuột và các sự kiện click chuột, nếu thiết bị là một bộ điều khiển rơle thì dữ liệu trong báo cáo sẽ cho biết rơle nào mở
và rơle nào đóng
Bộ mô tả report cần phải đủ linh hoạt để điều khiển thiết bị với các mục đích khác nhau Dữ liệu lưu trong report cần được tối ưu hoá về kích thước để tránh lãng phí không gian lưu trữ và rút ngắn thời gian khi truyền trên bus
2.5.6: Các yêu cầu mà host có thể gửi tới một thiết bị thuộc lớp HID
Như đã trình bày ở trên, đặc tả HID định nghĩa 6 yêu cầu mà Host có thể gửi tới một thiết bị thuộc lớp HID Tất cả các HID phải hỗ trợ Get_Report, còn đối với các thiết bị hỗ trợ giao thức khởi động thì phải đáp ứng được các yêu cầu Get_Protocol và Set_Protocol Các yêu cầu còn lại gồm Set_Report, Get_Idle và Set_Idle là tuỳ chọn, trừ trường hợp đối với một keyboard sử dụng giao thức khởi động phải hỗ trợ Set_Idle Nếu một HID không có một điểm cuối ngắt ra (OUT) hoặc nếu HID đang giao tiếp với một máy chủ chỉ hỗ trợ USB 1.0 như Windows 98 Gold chẳng hạn thì HID đó nếu muốn nhận report từ host nó phải hỗ trợ Set_Report Các yêu cầu ở trên sẽ được Host gửi tới thiết bị trong giai đoạn setup của truyền điều khiển Giai đoạn setup của truyền điều khiển diễn ra như sau: ban đầu host phát ra gói thông báo setup, theo sau đó là gói dữ liệu dành cho giao tác setup có kích thước của phần dữ liệu là 8 byte, cuối cùng host chờ gói bắt tay ACK
để biết rằng giao tác setup có thành công hay không Các yêu cầu của host được
Trang 26chứa trong 8 byte dữ liệu của gói dữ liệu theo sau gói thông báo setup, nó có khuôn dạng như sau:
Hình 2.2: Khuôn dạng dữ liệu của giai đoạn setup trong kiểu truyền Control
Có một số Bit trong gói trên có giá trị giống nhau đối với cả 6 yêu cầu đó là:
5 Bit Destination type =00000B để chỉ ra đích đến của yêu cầu là một thiết bị (00001B: đích là một giao diện cụ thể, 00010B: đích là một điểm cuối trên thiết bị, 00011B: đích là một trong các thành phần khác trong thiết bị)
2 Bit Request Type =01 để chỉ ra loại yêu cầu này là để dành cho một lớp thiết bị
cụ thể (00: tức request là một trong các request chuẩn (có 11 loại request chuẩn), 10: request được định nghĩa bởi nhà cung cấp thiết bị)
bRequest = 01h cho biết yêu cầu mà host gửi tới thiết bị là Get_Report
wValue: Byte cao chứa thông tin cho biết host muốn nhận loại report nào từ thiết
bị (1=Input, 3=Feature), byte thấp chứa report ID
wIndex: chứa số lượng giao diện mà yêu cầu được hướng tới
wlength: chứa chiều dài tối đa cho phép của report trong giai đoạn dữ liệu tính theo byte
Lưu ý: tất cả các HID nên hỗ trợ yêu cầu Get_Report
Get_Idle
Trang 27Host gửi yêu cầu này để đọc tốc độ rỗi từ thiết bị
Bit Direction = 1
bRequest = 02h
wValue: Byte cao = 00h, byte thấp chỉ ra report ID của report mà yêu cầu tác động tới Nếu byte = 00h thì có nghĩa là yêu cầu sẽ tác động tới tất cả các Input report của HID
wIndex chứa số lượng giao diện hỗ trợ yêu cầu này
wlength = 1 1 byte trường dữ liệu của gói dữ liệu trong giai đoạn dữ liệu sẽ chứa tốc độ rỗi tính theo số nguyên lần của 4 ms
Các HID không buộc phải hỗ trợ yêu cầu Get_Idle
wIndex chứa số lượng giao diện hỗ trợ yêu cầu này
wLength = 1 Nếu 1 byte trường dữ liệu của gói dữ liệu = 0 tức có hỗ trợ giao thức khởi động còn nếu ≠ 0 tức là không hỗ trợ giao thức khởi động Các thiết bị có
hỗ trợ giao thức khởi động thì phải đáp ứng yêu cầu này
Trang 28 wIndex chứa số lượng giao diện mà yêu cầu này được hướng tới
wLength: cho biết chính xác kích thước của report tính theo byte sẽ được gửi trong giai đoạn dữ liệu
Các HID có thể hỗ trợ hoặc không hỗ trợ yêu cầu Set_Report Nếu một HID không có điểm cuối ngắt ra (OUT) hoặc HID đang làm việc với một máy chủ chỉ hỗ trợ phiên bản USB 1.0 mà lại muốn nhận dữ liệu từ Host thì việc đáp ứng lại yêu cầu Set_Report là cách duy nhất để có thể nhận dữ liệu từ host
Set_Idle
Host gửi yêu cầu này là để tiết kiệm băng thông thông qua việc giới hạn tần số gửi báo cáo của một điểm cuối ngắt vào (IN) khi dữ liệu chứa trong báo cáo không
có sự thay đổi so với báo cáo gần nhất
Bit Direction = 0 để chỉ ra hướng của dữ liệu trong giai đoạn dữ liệu nếu có thì sẽ
là từ host tới thiết bị
bRequest = 0Ah
wValue: Byte cao thiết lập khoảng thời gian tối thiểu phải trôi qua giữa hai Input report có dữ liệu giống nhau mà lại được gửi kế tiếp nhau, byte thấp chứa report ID của report mà yêu cầu này tác động tới Nếu byte thấp là 00h thì có nghĩa là yêu cầu này tác động tới tất cả các Input report của HID
wIndex chứa số lượng giao diện hỗ trợ yêu cầu này
wLength 0000h: Cho thấy không có giai đoạn dữ liệu theo sau giai đoạn setup Chú thích: Khoảng thời gian giữa hai Input report là một số nguyên lần của 4 ms, như vậy với 1 byte cao của wValue thì khoảng thời gian này sẽ nằm trong phạm vi
từ 4 tới 1020 ms Nếu byte cao của wValue = 00h thì có nghĩa là HID chỉ được gửi Input report khi dữ liệu của report đã có thay đổi so với lần gửi ngay trước đó Nếu
dữ liệu của report có thay đổi so với lần gửi ngay trước đó thì nó có thể được gửi ngay khi có một thông báo IN bất kể giá trị byte cao của wValue là bao nhiêu Trong trường hợp dữ liệu của report không hề có thay đổi gì so với lần gửi ngay trước đó mặt khác khoảng thời gian được gán trong byte cao của wValue chưa trôi qua kể từ lần gửi report ngay trước mà lại có một thông báo IN từ host thì HID sẽ gửi gói bắt tay NAK Còn nếu khoảng thời gian được gán trong byte cao của
Trang 29wValue đã trôi qua kể từ lần gửi report ngay trước thì HID sẽ gửi tới host report mặc dù dữ liệu của report không hề có thay đổi so với lần gửi ngay trước Nếu HID trả lời yêu cầu Set_Idle của host bằng gói bắt tay STALL thì nó có thể gửi report bất
cứ khi nào có thông báo IN từ host kể cả khi dữ liệu của report không hề có sự thay đổi Các HID không bị bắt buộc phải hỗ trợ yêu cầu Set_Idle của host ngoại trừ keyboard có sử dụng giao thức khởi động
Set_Protocol
Host gửi yêu cầu này để chỉ định HID có nên sử dụng giao thức khởi động hay không
Bit Direction = 0 để chỉ ra hướng của dữ liệu trong giai đoạn dữ liệu nếu có thì sẽ
là từ Host tới thiết bị
bRequest = 0Bh
wValue = 0000h: nên sử dụng giao thức khởi động; wValue ≠ 0000h: không nên
sử dụng giao thức khởi động
wIndex chứa số lượng giao diện hỗ trợ yêu cầu này
wLength 0000h: Cho thấy không có giai đoạn dữ liệu theo sau giai đoạn setup Thiết bị muốn thực hiện chức năng trong quá trình khởi động phải hỗ trợ yêu cầu Set_Protocol
2.6: Sự hỗ trợ của Hệ điều hành với lớp HID
Các hệ điều hành của Microsoft từ Windows 2000 trở đi đều hỗ trợ sẵn các driver
Vì vậy người thiết kế không cần phải xây dựng driver riêng, chỉ cần theo đúng các chuẩn của nhà cung cấp hệ điều hành đã tạp ra trước đó
Trong đề tài này, các sản phẩm và mô hình đều được thiết kế theo chuẩn của Windows, tuy nhiên các sản phẩm và mô hình này cũng có thể chạy tốt trên các hệ
điều hành khác như Linux
Trang 30
2.7: Chọn chip
Dưới đây là danh sách các chip có hỗ trợ giao thức USB, đồng thời cũng rất quen thuộc với sinh viên:
AT43USB35x, AT67C713 của hãng Atmel
PIC 18F2550/4550 của hãng Microchip
EZ-USB của hãng Cypress Semiconductor
TUSB3210/3410 của hãng Texas Instrument
Ngoài ra còn có một số chip khác, mời xem thêm phụ lục 4
Trang 31CHƯƠNG III: TỔNG QUAN VỀ MẠNG TRUYỀN THÔNG 1 DÂY
3.1:Định nghĩa mạng truyền thông 1 dây
Mạng 1 dây là mạng sử dụng 1 dây để làm đường Bus truyền và nhận dữ liệu
Hình 2.1: Sơ đồ mạng 1 dây
3.2: Tổng quan về Bus 1 dây
Giao thức 1 dây sử dụng cổng logic CMOS/TTL và hoạt động ở điện áp từ 2.8V đến 6V
Chủ và tớ đều có thể là thiết bị nhận hoặc là thiết bị truyền, tuy nhiên việc truyền dữ liệu tại 1 thời điểm chỉ được theo 1 hướng Chủ thiết lập và điều khiển mọi hoạt động của giao thức 1 dây
Việc đọc và viết dữ liệu được thực hiện theo từng Bit 1, Bit có trọng số nhỏ nhất (LSB) được truyền trước, và việc đọc viết dữ liệu được thực hiện theo từng khoảng thời gian
Mỗi thiết bị không cần xung clock của hệ thống vì nó đã có clock riêng trong mỗi thiết bị và được đồng bộ bởi cạnh xuống của xung của chủ
Trang 323.3: Các yêu cầu
Những yêu cầu cho bất kì bus 1 dây: Hệ thống phải có khả năng tạo ra một khoảng thời gian delay chính xác và liên tục trong 1us để đạt được tốc độ chuẩn hay là 0.25us cho tốc độ tối đa
Cổng giao tiếp phải là song cổng (có thể nhập và xuất dữ liệu) Cổng xuất của nó phải là cực máng hở Không được ngắt việc giao tiếp trong khi đang quá trình trao đổi
dữ liệu đang diễn ra (Chú ý: Hầu hết các dòng vi điều khiển PIC cho phép người dùng điều chỉnh bất kì chân I/O nào thành cực máng hở như yêu cầu.Để biết thêm các khuyến cáo về giá trị điện trở kéo lên Xem trong datasheet kèm theo từng loại thiết bị tớ.)
3.4:Hoạt động của bus 1 dây
Bốn thao tác cơ bản của Bus 1 dây là RESET, viết Bit 0, viết Bit 1 và đọc Bit
Sử dụng các thao tác Bit này, 1 thiết bị phải biết được 1 byte hoặc 1 khung các bytes
Hình 3.2: Cấu trúc Timing trên Bus
Trang 33Bus chủ thiết lập và điều khiển tất cả việc giao tiếp 1 dây Hình 2.2 mô tả biểu đồ thời gian của giao tiếp 1 dây Nó giống với Điều xung bởi vì dữ liệu được truyền đi bằng 1 xung rộng(logic = 0) và xung hẹp(logic 1) trong suốt khoảng thời gian truyền
Bit dữ liệu hay là 1 ngăn thời gian
Một chuỗi giao tiếp bắt đầu khi bus chủ xuất ra 1 xung “Reset” đã được định sẵn độ dài, cái mà đồng bộ cả bus Mỗi tớ trả lời xung “Reset” bằng 1 xung “Presence” có mức logic thấp
Để viết dữ liệu, chủ trước tiên thiết lập 1 ngăn thời gian bằng cách kéo đường 1 dây xuống mức thấp, sau đó, hoặc là giữ nguyên đường line ở mức thấp (xung rộng) để truyền mức logic 0, hoặc là “thả” đường line (xung hẹp) để cho bus về lại mức logic 1
Để đọc dữ liệu, chủ lại thiệt lập 1 ngăn thời gian bằng việc kép đương line xuống thấp với 1 xung hẹp Tớ có thể hoặc là trả về logic 0 bằng cách mở đường xuất của nó với cực máng hở và giữ cho đường line ở mức thấp để mở rộng xung, hoặc trả về mức logic 1 bằng việc đóng đường xuất của nó với cực máng hở để cho đường line về lại mức cao
Hầu hết các thiết bị 1 dây hỗ trợ 2 mức tốc độ dữ liệu:
Tốc độc chuẩn khoảng 15kbps và tốc độ tối đa và khoảng 111kbps
3.4: Mạng một dây và Vi điều khiển PIC
Vi điều khiển PIC có nhiều chân ra vào với mục đích chung (GPIO), và có thể dễ dàng hiệu chỉnh để thực hiện giao thức 1 dây của Maxim/Dallas Semiconductor(M/DS)
Giao thức 1 dây (1-Wire) cho phép giao tiếp với nhiều thiết bị khác của M/DS, bao gồm pin, các thiết bị quản lí nhiệt, bộ nhớ, iButtons, và vân vân…
Các thiết bị 1 dây cung cấp các giải pháp vềbộ nhớ, timer, đo lường và điều khiển Giao tiếp dữ liệu của mạng 1 dây được giảm thiểu đến mức tối đa (1 đường dữ liệu cùng với 1 đường nối mass ) Vì vậy hầu hết các thiết bị 1-dây cung cấp tương đối nhỏ khối lượng dữ liệu, tỉ lệ dữ liệu thông thường đạt 16kbps đủ cho các công việc mong muốn Sử dụng một chân GPIO của 1 vi điều khiển 8 Bit hoặc 16 Bit để thực hiện như
Trang 341 bus chủ thường rất thuận tiện các thiết bị 1 dây giao tiếp bằng cách sử dụng 1 đường dữ liệu đơn và đã xác định rõ ràng
Chú ý:
Trạng thái nghỉ cho bus 1 dây là ở mức cao Nếu việc truyền dữ liệu cần được kết thúc, dù bất kì 1 lí do gì, bus phải được đưa về trạng thái nghỉ Nếu không được đưa về trạng thái nghỉ, và bus được đưa về mức thấp lâu hơn 120us, 1 hoặc nhiều thiếc bị trên bus sẽ bị reset
Trang 35CHƯƠNG IV: TỔNG QUAN VỀ PIC 18F2550/4550
4.1: Giới thiệu PIC 18F2550/4550
PIC 18F2550/4550 là dòng PIC 8 Bit của Microchip có hỗ trợ chức năng USB với hai cấp tốc độ: full-speed và high-speed với các chuẩn truyền khác nhau gồm kiểu điều khiển, ngắt, không đồng bộ và bulk Hỗ trợ hơn 32 endpoints Giành riêng 1Kbyte RAM cho chức năng USB Có bộ truyền nhận và bộ nắn điện áp trên chip Hỗ trợ giao thức USB cho bộ truyền nhận ngoài
Bên cạnh chức năng quan trọng trên, dòng Vi điều khiển này còn hỗ trợ rất nhiều các chức năng khác như: 3 ngắt ngoài, 4 timers, 2 bộ CCP/PWM, 1 bộ UART, I2C và SPI, 13 kênh ADC 10 Bit Tần số hoạt động lên tới 48MHz
Nguồn cung cấp từ 2.0V tới 5.5V cùng với các chế độ tiết kiệm năng lượng
Bảng 4.1: Bảng tóm tắt chức năng của PIC 182550/4550
Hình 4.1: Sơ đồ chân của PIC 18F2550/4550
Trang 364.2: Khái quát chức năng USB trong PIC
Hình 4.2: Cấu trúc của chức năng USB bên trong chip
4.2.1:Trạng thái và điều khiển USB
Hoạt động của mô-đun USB được định dạng và quản lí thông qua 3 thanh ghi điều khiển Ngoài ra còn có tổng cộng 19 thanh ghi được dùng vào việc quản lí việc giao dịch của USB
4.2.2: Thanh ghi điểu khiển (UCON)
Thanh ghi này bao gồm những Bit cần thiết cho việc điều khiển hoạt động của mô-đun trong suốt quá trình trao đổi dữ liệu Thanh ghi này bao gồm các Bit thiết cấu hình để điều khiển các vấn đề sau:
+ Kích hoạt chức năng chính của thiết bị ngoại vi USB
+ Reset con trỏ bộ đệm ping-pong
+ Điều khiển chế độ tiết kiệm năng lượng
+ Vô hiệu hóa quá trình truyền
Trang 37Bit 7 và Bit 0: Không dùng, đọc giá trị 0
Bit 6: PPBRST – Bit reset cho bộ đệm ping-pong
1 = reset tất cả các con trỏ của bộ đệm ping-pong
0 = các giá trị của bộ đệm ping-pong không bị reset
Bit 5: SE0 – Bit cờ cho biết sự có mặt của thiết bị trên bus
1 = Cho biết giao thức USB được hình thành
0 = Giao thức USB chưa được hình thành
Bit 4: PKTDIS – Bit vô hiệu hóa quá trình truyền packet
1 = Quá trình truyền packet bị vô hiệu hóa
0 = Quá trình truyền packet được thiết lập
Bit 3: USBEN – Bit kích hoạt mô-đun USB
1 = Mô-đun USB được kích hoạt
0 = Mô-đun USB bị vô hiệu hóa
Bit 2: RESUME – Bit kích hoạt phục hồi tín hiệu
1 = Quá trình phục hồi tín hiệu được kich hoạt
0 = Quá trình phục hồi bị vô hiệu hóa
Bit 1: SUSPND – Bit trì hoãn quá trình
1 = Chế độ tiết kiệm năng lượng được thiết lập
Trang 384.2.3: Thanh ghi cấu hình USB (UCFG)
Thanh ghi UCFG bao gồm hầu hết các Bit điều khiển mức độ hoạt động của hệ thống trong mô-đun USB
+ Tốc độ trên bus
+ Kích hoạt điện trở kéo bên trong chip
+ Kích hoạt bộ truyền nhận bên trong chip
+ Sử dụng bộ đệm ping-pong
Trên thanh ghi này cũng bao gồm 2 Bit giúp đỡ cho việc kiểm tra mô-đun, debug
Bit 7: UTEYE – Bit kích hoạt chức năng “Eye Pattern Test” (EPT)
1 = Kích hoạt chức năng EPT
0 = Vô hiệu hóa chức năng EPT
Bit 6: UOEMON- Bit kích hoạt giám sát USB OE (Output Enable)
1 = Bật tín hiệu OE, Bit này cho biết khoảng thời gian dữ liệu chạy trên bus
0 = Tắt tín hiệu OE
Bit 5: Không dùng
Bit 4: UPUEN – Bit kích hoạt điện trở kéo trong chip
1 = Điện trở kéo được kích hoạt
0 = Điện trở kéo không được kích hoạt
Trang 39Bit 3: UTRDIS – Bit kích hoạt mô-đun truyền nhận trên chip
1 = Mô-đun truyền nhận trên chip bị tắt, giao thức truyền nhận mô-đun số được kích hoạt
0 = Mô-đun truyền nhận trên chip được kích hoạt
Bit 2: FSEN –Bít kích hoạt Full-Speed
1 = Full Speed
0 = Low Speed
Bit 1-0: PPB1:PPB0 – Các Bit thiết lập cấu hình của bộ đệm ping-pong
11 = Dự trữ
10 = Bộ đệm được dùng cho tất cả các endpoint
01 = Bộ đệm được dùng cho OUT endpoint 0
00 = Bộ đệm bị tắt
4.2.4: Thanh ghi trạng thái USB
Thanh ghi trạng thái này cho chúng ta biết trạng thái của sự gia dịch trong suốt quá trình truyền nhận
Trang 40Bit 2: DIR - Bit chỉ thị hướng của BD cuối cùng
1 = Hoạt động truyền dữ liệu cuối cùng là 1 IN token
0 = Hoạt động truyền dữ liệu cuối cùng là 1 OUT hoặc SETUP token
Bit 1: PPBI - Bit con trỏ chỉ thị Ping-Pong BD
1 = Hoạt động truyền dữ liệu cuối cùng là bank BD lẻ
0 = Hoạt động truyền dữ liệu cuối cùng là bank BD chẳn
Bit 0: Chưa tích hợp
4.2.5: Thanh ghi điều khiền USB ENDPOINT( UEPn)
Mỗi enpoint trong tổng số 16 endpoint có thanh ghi điều khiển riêng, chữ n là số thứ tự của endpoint Tất cả các thanh ghi đều giống nhau về mặt bố trí và chức năng của Bit điều khiển
Bit 7-5: Chưa thích hợp
Bit 4: EPHSHK - Bit khởi động bắt tay Endpoint (Endpoint handshake)
1 = Kích hoạt Endpoint handshake
0 = Không kích hoạt Endpoint handshake
Bit 3: EPCONDIS - Bit điều khiển Endpoint
( nếu EPOUTEN = 1 và EPINEN = 1)
1 = Tắt Endpoint n control transfers; chỉ có IN và OUT transfers được cho phép
0 = Bật Endpoint n control transfers; IN và OUT transfers cũng được cho phép Bit 2: EPOUTEN - Bit kích hoạt Endpoint Output
1 = Bật Endpoint n output
0 = Tắt Endpoint n output