1) Truyền điều khiển
Truyền điều khiển được thực hiện qua 3 giai đoạn: Setup, Data và Status. Đối với thiết bị Low - Speed kích thước gói tin là 8byte, còn đối với Full - Speed kích thước gói có thể là 8, 16, 32 hay 64byte.
a) Giai đoạn 1(Setup): gồm 3 gói tin:
+ Gói nhận dạng: do chủ USB gửi tới thiết bị USB. Trong gói này chủ USB gửi địa chỉ và điểm cuối của thiết bị.
+ Gói nhận dạng: được gửi ngay sau khi gói Setup kết thúc và trường PID của gói luôn là kiểu Data0.
+ Gói bắt tay: gói cuối cùng do thiết bị USB trả lời: ACK nếu không có lỗi, NAK nếu có lỗi xảy ra.
Hình 3.15 Các gói tin trong giai đoạn 1 của truyền điều khiển
b) Giai đoạn 2 (Data): giai đoạn này cũng chứa 3 gói tin: nhận dạng, dữ liệu và bắt tay (hình 3.16).
Gói dữ liệu: chỉ ra dữ liệu theo chiều vào (IN) hay ra (OUT).
Gói dữ liệu: chứa dữ liệu cần truyền.
o Trường hợp dữ liệu có chiều từ thiết bị USB vào chủ USB. Nếu không có lỗi xảy ra, dữ liệu sẽđược gửi về chủ USB. Trường hợp có lỗi xảy ra tùy theo lỗi mà thiết bị USB gửi trả lời bằng “STALL” hoặc “NAK”.
o Trong trường hợp dữ liệu có chiều từ chủ USB đến thiết bị USB thì gói dữ liệu sẽđược gửi tới thiết bị.
o Gói bắt tay: khi nhận được dữ liệu chủ USB sẽ trả lời bằng gói ACK tới thiết bị. Trong trường hợp ra tùy theo dữ liệu mà thiết bị USB nhận có lỗi hay không mà nó gửi trả lời chủ USB bằng một trong các gói: ACK, NACK, STALL.
Hình 3.16 Các gói tin trong giai đoạn 2 của truyền điều khiển
c) Giai đoạn 3 (Status Stage): trả về trạng thái toàn bộ quá trình
Chiều vào: tùy theo quá trình trao đổi có lỗi xảy ra hay không mà thiết bị USB sẽ trả lời tới chủ USB một trong các tín hiệu: ACK, STALL hay NACK (hình 3.17a).
Chiều ra: chủ gửi các gói trả lời đến thiết bị USB.
Hình 3.17 Các gói trong giai đoạn 3 của truyền điều khiển.
2) Truyền ngắt
Không giống với phương thức trao đổi tin theo ngắt mà chúng ta đã xét tại chương 2, tức là tín hiệu yêu cầu trao đổi tin do thiết bị đưa ra và yêu cầu CPU phục vụ ngắt cho nó. Truyền ngắt trong USB hoàn toàn do chủ USB hỏi vòng. Nếu một thiết bị USB chủ động yêu cầu nó phải đợi đến khi chủ USB hỏi tới và đáp ứng. Quá trình truyền ngắt diễn
ra tương đối đơn giản chỉ có 3 gói trong mỗi lần truyền (hình 3.18). Truyền ngắt thường sử dụng trong các thiết bị truyền thông có tính di bộ, các thiết bị nhỏ và đơn giản.
Truyền ngắt qui định kích thước các gói tùy thuộc vào tốc độ thiết bị:
Với thiết bị Low - Speed: kích thước gói tối đa 8 byte.
Với thiết bị Full - Speed kích thước gói tối đa là 64byte.
Với thiết bị High - Speed kích thước gói tối đa có thể lên đến 1024byte.
Hình 3.18 Các giai đoạn truyền ngắt
a) Interrupt IN: chủ USB sẽ hỏi các điểm cuối ngắt theo chu kỳ. Tốc độ quét hỏi vòng cụ thểđược đặt trong gói mô tảđiểm cuối của mỗi thiết bị. Mỗi khi hỏi vòng yêu cầu chủ phải gửi một IN Token. Nếu IN Token bị hỏng, thiết bị bỏ qua gói này và tiếp tục giám sát bus cho các IN Token mới.
Nếu có yêu cầu thiết bị gửi một gói dữ liệu tới chủ USB và chờ máy chủ trả lời. Nếu không có ngắt thiết bị trả lời chủ bằng NACK hay STALL.
b) Intrrupt OUT: khi chủ muốn gửi dữ liệu tới thiết bị ngắt, nó phát ra một OUT Token và theo sau là một gói dữ liệu ngắt (Interrupt Data). Nếu OUT Token hoặc gói dữ liệu (Data Packet) bị hỏng, thiết bị USB sẽ bỏ qua gói này. Nếu bộ đệm điểm cuối ngắt của thiết bị trống nó sẽ trả về gói ACK cho chủ USB. Trong trường hợp bộ đệm điểm cuối là không trống do dữ liệu nhận trước đó, thì thiết bị USB sẽ trả về NAK. Tuy nhiên nếu một lỗi xảy ra với một điểm cuối, nó sẽ trả về STALL.
3) Truyền đồng bộ (Isochronous Transfers)
Sử dụng khi dữ liệu cần truyền lớn và tốc độ dữ liệu đã được qui định như: audio, video stream. Trong cách truyền này một giá trị tốc độ dữ liệu được duy trì và không kiểm tra lỗi. Truyền đồng bộ cũng cho hỗ trợ trên cả hai chiều: truyền đồng bộ theo chiều vào (Isochronous IN) và truyền động bộ theo chiều ra (Isochronous OUT). Kích thước lớn nhất của gói dữ liệu truyền trong kiểu này:
Thiết bị Full - Speed là 1023byte.
Hình 3.19 Truyền đồng bộ
4) Truyền khối (Bulk Transfers)
Sử dụng khi có lượng dữ liệu lớn cần truyền và cần kiểm soát lối truyền, nhưng lại không có yêu cầu thúc ép về thời gian truyền thì dữ liệu thường được truyền theo khối (Bulk transfers). Kiểu truyền này thường áp dụng cho các thiết bị như máy in, máy quét,v.v…. Truyền khối chỉ hỗ trợ cho các thiết bị Full - Speed và High - Speed. Kích thước gói dữ liệu lớn nhất mà thiết bị hỗ trợ:
Với thiết bị Full - Speed: 8, 16, 32 hay 64byte.
Với thiết bị High - Speed: 512byte.
Truyền khối cũng tương đối đơn giản, chỉ gồm 3 gói: gói nhận dạng, gói dữ liệu và bắt tay.
Hình 3.20 Các gói trong truyền khối
a) Chiều vào: khi chủ USB đã sẵn sàng nhận dữ liệu, nó phát ra một IN Token. Nếu thiết bị nhận được một IN Token với một lỗi nó sẽ bỏ qua gói. Nếu IN Token nhận được không có lỗi thì thiết bị USB trả về gói dữ liệu cần truyền. Trường hợp lỗi xảy ra thiết bị gửi về NACK hoặc STALL.
b) Chiều ra: khi chủ USB muốn gửi tới thiết bị chức năng một gói dữ liệu, nó gửi tới thiết bị USB một gói OUT Token và tiếp theo sau là gói dữ liệu cần truyền. Trường hợp gói OUT Token, dữ liệu bị hỏng hay bộ đệm thiết bị đang đầy nó sẽ gửi trả lời bằng gói NACK. Trường hợp không có lỗi xảy ra, khi nhận xong dữ liệu thiết bị USB trả lời bằng gói ACK. Trong trường hợp điểm cuối bị lỗi nó sẽ trả lời bằng STALL.