Tổng quan về USB
I.
1.
II.
Giao thức USB là gì?
-
USB 1.x Được phát hành vào tháng 1 năm 1996, tốc độ dữ liệu quy định
USB 1.0 là 1,5 Mbps (Băng thông thấp) và 12 Mbps (đầy đủ)
-
USB 2.x: USB phiên bản 2.0 được đưa ra vào tháng 4 năm 2000 và xem
như bản cải tiến của USB 1.1. USB 2.0 tốc độ nhanh hơn 50 lần so với
USB 1.1
-
USB 3.x: USB 3.0 có tốc độ đường truyền mới gọi là SuperSpeed
USB (SS), với tốc độ chuyển dữ liệu lên đến 5 Gbit/s (625 MB/s), gấp
khoảng mười lần so với chuẩn USB 2.0
-
USB 4: được USB-IF phát hành vào ngày 29 tháng 8 năm 2019. USB4
dựa trên đặc điểm kỹ thuật của giao thức Thunderbolt 3. hỗ trợ thơng
lượng 40 Gbit/s, tương thích với Thunderbolt 3 và tương thích ngược
với USB 3.2 và USB 2.0
Một số kiến thức cơ bản về giao thức usb.
1. Kiến trúc hệ thống USB.
Một hệ thống USB được mô tả bởi 3 định nghĩa:
•
USB Host:
•
USB Device:
•
USB Connect:
Kiến trúc bus: Về mặt vật lý, kiến trúc Bus USB là một tầng sao, với Host là
trung tâm. Mỗi tia là 1 kết nối giữa Host với Hub, Host với Device hoặc Device
với Hub. Với 7bit địa chỉ, một Host có thể quản lý 127 thiết bị trong mạng lưới của
nó.
2.
Cấu trúc điều khiển truyền nhận
Để tất cả các thiết bị trong cùng hệ thống hiểu nhau chúng phải tuân thủ theo
quy tắc điều khiển truyền nhận (Control Transfer).
Một gói Control Transfer được chia thành 3 Transaction:
•
Setup Transaction: Thiết lập
•
Data Transaction: Dữ liệu
•
Status Transaction: Trạng thái
Mỗi Transaction lại chia thành các gói tin:
•
Setup hoặc IN/OU: Gói thơng báo, cho biết rằng các data phía sau dùng
để làm gì, được xác định rõ bởi các Mã Token tương ứng với chức năng
đó
•
DATA: Gói dữ liệu xác định dữ liệu truyền của transaction
•
ACK: Gói bắt tay, thơng báo dữ liệu truyền thành cơng hay thất bại
Mỗi gói tin (Packet) lại bao gồm các trường riêng, trong đó có 3 loại trường
(fields) bắt buộc trong mỗi gói tin đó là:
•
Synch: Trường đồng bộ, thơng báo thời điểm bắt đầu gói
•
PID: Packet identifier Trường định danh gói tin. Cho biết gói tin này dùng
làm gì, hướng dữ liệu của gói.
•
EOP: End of Packet Trường kết thúc, cho biết gói tin đã kết thúc
•
Cịn lại các trường khác sẽ tùy thuộc vào kiểu gói tin truyền nhận là gì
quyết định
3. Các kiểu truyền nhận trong USB.
Chuẩn USB định nghĩa 4 kiểu transfer (cũng có thể gọi là 4 kiểu endpoints), chúng
bao gồm:
-
Control transfer
Interrupt transfer
Bulk transfer
Isochronous transfer
4. Class(lớp)
Mọi lớp định nghĩa một liên kết của:
•
Dữ liệu bao gồm các đặc điểm phải được lưu trữ trong thiết bị và được
cung cấp cho máy chủ lưu trữ khi được u cầu.
•
Trình điều khiển phần mềm được lưu trữ trong máy chủ và được tải sau
khi thương lượng với thiết bị và sau khi phát hiện ra các đặc điểm của
nó.
5. Kịch bản hoạt động
Q trình hoạt động của chuẩn USB có thể được chia làm hai giai đoạn
chính
Q trình điểm danh: là quá trình USB Host phát hiện các thiết bị cắm vào
và rút ra khỏi đường USB Bus.
Quá trình truyền dữ liệu: để hiểu quá trình truyền dữ liệu này, chúng ta
phải hiểu được hai khái niệm có thể nói là khó và quan trọng nhất trong
chuẩn USB, đó là khái niệm Interface và Endpoint
II. USB với STM32
1. Tại sao lại dùng giao tiếp USB? ( Ứng dụng)
2. STM32 hỗ trợ những gì?
. Tùy thuộc vào phần cứng, mỗi MCU STM32 bao gồm cả USB có thể hỗ trợ:
•
Chỉ thiết bị ở tốc độ FS.
•
OTG (vai trò kép: thiết bị và máy chủ) trong tốc độ FS.
•
OTG theo tốc độ HS.
2. STM32 có thể đóng vai trị gì trong hệ thống của USB
Hệ thống USB cơ bản có thể được thiết lập bởi máy chủ và thiết bị được gắn
bằng cáp USB
Đối với hệ thống USB phức tạp hơn, thiết bị có thể được gắn vào máy chủ thông
qua một hoặc nhiều trung tâm.
4. Tổng quan về thư viện USB device
Với MCU và bo mạch STM32, một môi trường phát triển đầy đủ và miễn phí được
gọi là STM32Cube được cung cấp bao gồm hai phần chính:
•
Cơng cụ phần mềm đồ họa.
•
Gói phần mềm nhúng (phần sụn STM32Cube).
Phần sụn STM32Cube bao gồm các cấp độ khác nhau bằng cách cung cấp:
•
Lớp thấp và trình điều khiển được tối ưu hóa.
•
Lớp trừu tượng phần cứng và trình điều khiển di động.
•
Thư viện phần mềm trung gian.
•
Ví dụ và ứng dụng.
5. Một số giao thức phổ biến
5.1 Giao thức USB CDC trên STM32
a. USB CDC là gì?
USB communications device class hay được hiểu là Lớp thiết bị giao tiếp thông
qua USB.
Các thiết bị thuộc lớp này cũng được triển khai trong các hệ thống nhúng như điện
thoại di động để điện thoại có thể được sử dụng làm modem, fax hoặc cổng mạng.
b. STM32 USB CDC
5.2 Giao thức USB HID trên STM32
(Giao tiếp USB HID đơn giản với STM32F103C8T6)
a. USB HID là gì?
HID (viết tắt của Human Interface Device) là một tiêu chuẩn cho các thiết bị máy
tính được vận hành bởi con người.
HID là một tiêu chuẩn được tạo ra nhằm đơn giản hóa q trình cài đặt các thiết bị
đầu vào thông qua từng giao thức cụ thể cho từng thiết bị như chuột, bàn phím,…
b. Cách giao tiếp với tất cả các thiết bị USB HID
- Human Interface Device Class hoạt động như thế nào?
•
Thiết bị HID kết nối sẽ điều khiển Pointer của máy tính
•
Có 3 nút trên thiết bị và khi nhấn tương ứng với các hàm của Pointer
•
Có 2 byte dữ liệu tọa độ sẽ thay đổi tọa độ của Pointer
- Cấu trúc của Report Descriptor
Bộ Report Descriptor được mô tả bởi chuỗi các mục, các mục này mô tả dữ liệu sẽ
truyền đi khi thiết bị USB HID device truyền hoặc nhận. Mỗi mục bắt đầu bằng
tiền tố là 1 Byte quy định vai trò của mục và độ dài dữ liệu của nó.
Mỗi mục chia làm 3 loại thẻ chính:
•
Main: Mô tả thực tế dữ liệu truyền đi và nơi dữ liệu được sử dụng. Các
thẻ Global và Local có chức năng bổ nghĩa cho Main
•
Global: Mơ tả thuộc tính của tất cả các thẻ Main phía sau nó, cho đến khi
có 1 thẻ Gobal khác xuất hiện
•
Local: Thẻ này mơ thả thuộc tính của thẻ Main phía sau nó.
Với Main item:
•
Input: Mơ tả dữ liệu truyền từ thiết bị lên host như sự kiện nhấn nút, dữ
liệu cảm biến, dữ liệu của nhà phát hành muốn gửi
•
Output: Mơ tả dữ liệu từ Host truyền về thiết bị như điều khiển led, động
cơ ….
•
Feature: Mơ tả dữ liệu được truyền đi được sử đụng để cấu hình cài đặt
thiết bị như, tăng giảm tốc độ nháy của led, tốc độ động cơ …
Collection và End Collection: Mỗi thiết bị HID phải có 1 bộ sưu tập ứng dụng
( Application Collection), để trình xử lý có thể biết được dữ liệu đang sử dụng
trong ứng dụng nào.
Với Global Item:
•
Usage Page: Mơ tả danh mục cao nhất của thiết bị như Generic Desktop
Controls ( điều khiển thiết bị để bàn), Game control, điện thoại ….
•
Logical Minimum: Giá trị số nguyên nhỏ nhất của Main Item
•
Logical Maximum: Giá trị số ngun lớn nhất của Maih Item
•
Report Size: Kích thước của Main Item (tính theo Bit)
•
Report Count: Số lượng Main Item
Với Local Item:
•
Usage: Mơ tả nhỏ hơn về lớp Usage Page: Ví dụ: như Usage Page là
Generic Desktop Controls thì Usage có thể là System Control hoặc
Application control.
Mỗi thẻ mục sẽ được phân loại tương ứng với 1 mã từ 0 – 255 ( 1 Byte).
Cấu trúc của Report Descriptor
STM32 USB HID được sử dụng rất rộng rãi khi muốn giao tiếp với máy
tính, điện thoại, game pad một cách đơn giản nhất. Về cơ bản tất cả các device sử
dụng USB HID đều làm việc giống nhau, sự khác nhau của chúng là cấu trúc gói
tin truyền và đích đến sẽ được định nghĩa hết trong Report Descriptor.
Giao
tiếp usb là giao tiếp rất tiện lợi giúp cho các thiết bị kết nối với máy tính
nhanh chóng tiện lợi. Ngồi USB CDC. các bạn có thể phát triển ứng dụng theo
hướng USB HID, điểm lợi so với USB CDC là phần mềm sẽ tự động nhận dạng và
kết nối với thiết bị ngay lập tức mà không cần phải kiểm tra thủ công qua cổng
COM, hơn nữa USB HID STM32 sẽ giúp bạn cá nhân hóa sản phẩm làm cho
project trở nên chuyên nghiệp hơn.