Lựa chọn và thiết kế khối mạch truyền thông USB

Một phần của tài liệu Thiết kế hệ thống đo thông số môi trường có tích hợp bản đồ số (Trang 51 - 57)

5. Giới thiệu về các chương mục của luận văn

3.5Lựa chọn và thiết kế khối mạch truyền thông USB

Trường đại học Nông nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦẦ.. 43

Thiết bị sử dụng truyền thông USB lớp HID (USB Human Interface Device class) ựể giao tiếp và ựồng bộ dữ liệu với máy tắnh PC. Một số ưu nhược ựiểm khi sử dụng USB:

Ưu ựiểm:

Ớ Thiết kế mạch ựo sử dụng USB HID ựể truyền thông thiết kế mạch ựơn giản.

Ớ Cổng USB cũng phổ dụng trong các máy tắnh hiện nay.

Ớ Khả năng truyền thông USB có ựộ tin cậy cao hơn so với cổng COM hay USB Ờ COM.

Ớ USB HighSpeed có tốc ựộ truyền dữ liệu lên ựến 480Mbit/s. Hiện tại thiết bị ựang sử dụng.

Ớ USB lớp HID có tốc ựộ thấp hơn nhưng khi mở rộng thiết bị ựo với nhiều tắnh năng và khả năng lưu trữ lớn cần ựộ tin cậy dữ liệu cao thì USB là một sự lựa chọn tốt.

Nhược ựiểm:

Ớ Các loại chip vi ựiều khiển có hỗ trợ giao tiếp USB thường ựắt hơn so với chip hỗ trợ giao tiếp UART. Tuy nhiên hiện tại rất nhiều các dòng ARM phát triển với giá rẻ ựều có hỗ trợ USB như STM32 hay StellarisẦ

Ớ Lập trình ứng dụng và Firmware cho giao tiếp USB phức tạp hơn so với giao tiếp UART. Nhưng hiện tại các hãng và các trình biên dịch ựều hỗ trợ thư viện cho giao tiếp USB.

USB human interface device class ("USB HID class") là lớp các thiết bị USB giao tiếp giữa người và máy như bàn phắm, con chuột, bộ ựiều khiển trò chơi và thiết bị số. HID USB ựược ựịnh nghĩa trong một số tài liệu của nhóm sản xuất thiết bị USB Implementers Forum.

Trường đại học Nông nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦẦ.. 44

Ưu ựiểm của USB HID class là sự phong phú của các trình ựiều khiển ựược cài ựặt sẵn trong các hệ ựiều hành. USB HID class ựược ựịnh nghĩa trước nhiều chức năng do ựó nhà sản xuất phần cứng có thể sản xuất các thiết bị USB HID tương thắch tốt với các máy tắnh hiện tại. Vì vậy thiết bị sử dụng USB HID class rất dễ dàng vận hành, lắp ựặt và khai thác nhanh ứng dụng của thiết bị.

a. đặc ựiểm chức năng

USB HID class thường dùng ựể mô tả cả thiết bị và lớp giao tiếp. Lớp giao tiếp ựược dùng khi thiết bị USB sử dụng nhiều tắnh năng như USB telephone có cả USB keypad và USB audio speaker. Mỗi thiết bị USB giao tiếp với máy tắnh bằng cách sử dụng một Control Pipe hay một Interrupt Pipe. Các thiết bị giao tiếp này ựược ựịnh nghĩa trong lớp Descriptors. Lớp này ựịnh nghĩa các thiết bị có khả năng khởi ựộng, chứa các giao thức cơ bản mà BIOS của máy tắnh có khả năng nhận ra.

Không thể dự ựoán chắnh xác ựược tất cả các thiết bị sử dụng USB HID class trong tương lai, do ựó các thiết bị sử dụng USB HID class ựược yêu cầu ựịnh nghĩa các giao tiếp với máy chủ. Các thiết bị sẽ gửi Report lên máy chủ cấu trúc giao tiếp ựể các thiết bị có thể hoạt ựộng theo ựúng thiết kế. Các máy chủ sẽ ựịnh kỳ kiểm tra sự hoạt ựộng của các thiết bị USB HID. Khi có một thiết bị USB HID mới, thiết bị sẽ tự ựộng gửi Report lên máy chủ và máy chủ sẽ tự ựộng cài ựặt Driver cho thiết bị này. Do ựó việc sử dụng thiết bị HID class rất linh hoạt.

b. Các hàm USB HID API

Các hàm USB HID API rất phức tạp, nhưng các nhà phát triển vẫn có thể phát triển thiết bị của mình với những lớp hàm ựơn giản, vấn ựề quan trọng là lớp hàm nào phù hợp với nhu cầu sử dụng.

Có 2 cấp ựộ API là : Cấp ựộ USB và cấp ựộ hệ ựiều hành. Ở cấp ựộ USB, thiết bị sẽ tự gửi Report chức năng của mình với hệ ựiều hành, hệ ựiều

Trường đại học Nông nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦẦ.. 45

hành sẽ căn cứ vào Report ựể phân tắch dữ liệu và chức năng phù hợp với thiết bị. Hệ ựiều hành sẽ tự ựộng cho người dùng cái nhìn tổng quát ựến thiết bị mà không cần thiết bị phải có những support cụ thể. điều này cho phép máy chủ có thể ựiều khiển bất kỳ USB HID nào kể cả các thiết bị USB HID ựời mới nhất.

c. USB HID class device

Khi thiết kế thiết bị chuẩn USB các bước cơ bản phải thực hiện ựó là: Ờ đặc tả (mô tả thiết bị mà bạn cần thiết kế, chức năng, cách hoạt ựộng

v.v...)

Ờ Viết chương trình cho chip (PIC 18F4550) sử dụng trình dịch CCS 4. Ờ Viết Application sử dụng các hàm của lớp thư viện HID ở ựây dùng

VB. Net ựể thực hiện chương trình.

d. Human Interface Devices: Firmware Basics

Lớp HID là một trong những lớp ựầu tiên ựược hỗ trợ bởi Windows. Trên các máy tắnh chạy trên hệ ựiều hành Win 98 hoặc trở về sau, các ứng dụng có thể truyền thông với các HID sử dụng các driver ựược xây dựng trong hệ ựiều hành.

e. đặc tắnh HID class:

Dữ liệu trao ựổi tập trung trong những cấu trúc gọi là các Report (báo cáo). Vì vậy chương trình (Firmware) của thiết bị phải hỗ trợ ựịnh dạng report của HID. Host gửi và nhận dữ liệu bằng việc gửi và yêu cầu các Report trong các kiểu truyền theo ựiều khiển (Control transfer) hoặc truyền theo ngắt (Interrupt Transfer). định dạng của report linh hoạt và có thể quản lý bất kỳ mọi kiểu dữ liệu nào.

Mỗi lần trao ựổi có thể truyền một lượng lớn hay nhỏ dữ liệu tùy thuộc vào thiết bị. Với một thiết bị Low-speed tối ựa là 8 byte mỗi lần, Full-speed là 64 byte, High-speed là 1024 byte. Một report dài có thể sử dụng nhiều lần trao ựổi dữ liệu.

Trường đại học Nông nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦẦ.. 46

Một thiết bị có thể gửi thông tin cho máy tắnh tại những thời ựiểm bất kỳ không dự báo trước. Vắ dụ như thông tin từ bàn phắm gửi vào máy tắnh v.vẦ Tốc ựộ truyền tối ựa của các kiều truyền là có giới hạn, ựặc biệt là ở tốc ựộ full và low. Mặc dù phần lớn các thiết bị USB ựều gửi dữ liệu từ Device ựến Host, nhưng nó cũng có thể nhận dữ liệu từ Host (Chương trình thu thập dữ liệu từ thiết bị ựo của mình dùng Application ựể ựiều khiển thiết bị ựo. Hai tài liệu quan trọng ựể làm việc với các HID là Deivce class definition (định nghĩa lớp thiết bị) cho phép ựịnh nghĩa các lớp HID và HID Usage Tables (Các bảng sử dụng HID) ựịnh nghĩa các giá trị giúp cho Host hiểu và sử dụng dữ liệu HID. Hardware Requirements (Yêu cầu phần cứng).

Một giao diện HID device phải phù hợp với các yêu cầu của HID class như ựã ựịnh nghĩa trong Descriptors (Tài liệu mô tả yêu cầu của các bộ mô tả, tần số các kiểu truyền, và các kiểu truyền sẵn có).

để tuân thủ ựúng với Descriptors, các endpoint và các bộ mô tả phải ựáp ứng một vài yêu cầu như tất cả ựường truyền HID ựều sử dụng các Default Control Pipe hoặc các Interrupt Pipe. Một HID phải có một endpoint ngắt IN ựể gửi dữ liệu ựến host. Một endpoint ngắt OUT tùy theo yêu cầu của thiết bị HID.

Control Pipe của HID mang các Reqest chuẩn USB như sáu lớp yêu cầu ựặc biệt ựược ựịnh nghĩa trong Descript HID. Hai trong các yêu cầu này là Set_Report và Get_Report cung cấp thông tin cho Host và Device ựể truyền một khối của bất kỳ loại dữ liệu nào ựi tới hoặc từ Device. Host sử dụng Set_Report ựể gửi các Report (báo cáo) và Get_Report ựể nhận các Report. Bốn yêu cầu khác ựều liên quan ựến cấu hình thiết bị: Set_Idle và Get_Idle thiết lập và ựọc tốc ựộ Idle (Tốc ựộ khi ựường truyền rỗi). Set_Protocol và Get _Protocol dùng ựể thiết lập và ựọc giá trị của giao thức, nó giúp cho thiết bị vận hành với một nghi thức ựược ựơn giản hóa khi dirver HID chưa ựược load trên Host.

Trường đại học Nông nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦẦ.. 47

f. Firmware Requirements

để Host truyền thông ựược với HID thì Firmware của thiết bị phải phù hợp các yêu cầu. Các Descriptor (bộ mô tả) của thiết bị phải ựược nhận dạng như HID device, và Firmware phải hỗ trợ một ngắt ở endpoint ngoài Default Control Pipe. Firmware phải chứa một Report mô tả ựịnh dạng cho việc truyền và nhận dữ liệu. để gửi dữ liệu, yêu cầu Firmware hỗ trợ Get_Report với Control transfer và Interrupttransfer theo hướng từ thiết bị ựến Host - IN và ựể nhận ựược dữ liệu, Firmware phải hỗ trợ Set_Report với Control transfer và cũng có thể Interrupt transfer với hướng truyền dữ liệu từ Host ựến thiết bị OUT. Tất cả dữ liệu HID phải sử dụng Report cùng ựịnh dạng, trong ựó ựã xác ựịnh kắch thước và nội dung dữ liệu.

Các thiết bị có thể hỗ trợ một hoặc nhiều Report. Giá trị trong mỗi Report thường dùng ựể ựịnh nghĩa Report như một Input, Output, hoặc tắnh năng (Feature). Host nhận dữ liệu trong Report Input và gửi dữ liệu trong Report output. Report Feature có thể có trong cả hai hướng Input và Output. Các Report Feature luôn hỗ trợ kiểu Control transfer (Truyền ựiều khiển). định dạng Report có thể ựơn giản hoặc phức tạp tùy theo mỗi loại thiết bị.

g. Làm sao nhận biết thiết bị như một HID

Cũng như với bất kỳ thiết bị USB nào, Descriptor của HID Ộnói vớiỢ Host yêu cầu mà Host cần biết ựể giao tiếp với thiết bị. Host sẽ biết về HID interface khi nó gửi một yêu cầu Get_Descriptor cho cấu hình chứa HID interface. Bộ Descriptor Interface sẽ nhận biết giao diện như HID -Class. Bộ Descriptor HID-Class chỉ rõ số Report ựược Interface hỗ trợ. Trong quá trình liệt kê, HID driver sẽ lấy các thông tin về HID class và Report Descriptor.

Những bộ mô tả thiết bị (Descriptor device) và cấu hình thiết bị không có thông tin HID riêng. Bộ mô tả thiết bị có một trường dành cho mã lớp (Class-code), nhưng không phải ở ựâu thiết bị cũng ựược ựịnh nghĩa như một thiết bị HID. Thay vào ựó, bộ mô tả giao diện (Interface) ở trên Host sẽ nhận biết ựó là thiết bị, hay còn gọi là Device Interface, thuộc về lớp HID. Nếu byte class-code trong bộ mô tả Interface của thiết bị là 3, giao diện là một

Trường đại học Nông nghiệp Hà Nội Ờ Luận văn thạc sĩ khoa học kỹ thuật ẦẦẦẦẦẦẦẦẦẦ.. 48

HID. Những trường khác chứa thông tin riêng của HID trong bộ mô tả giao diện (Interface Descriptor) là các trường subclass và protocol ựó là những trường có thể chỉ một giao diện khởi ựộng (Boot interface).

Một phần của tài liệu Thiết kế hệ thống đo thông số môi trường có tích hợp bản đồ số (Trang 51 - 57)