Tải bản đầy đủ (.pdf) (53 trang)

Thiết kế và thi công mạch hẹn giờ đa năng có thể cấu hình qua cổng USB

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (735.69 KB, 53 trang )



ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH









BÁO CÁO ĐỒ ÁN TIN HỌC

Đề tài :

Thiết kế và thi công mạch hẹn giờ đa năng có thể cấu
hình qua cổng USB









GVHD : Bùi Văn Hiếu


SV : Trần Quốc Gia Phú MSSV:50404428
Trần Hạ Long MSSV:50401405


TP. HỒ CHÍ MINH, 6/2008

Phần 1: Tổng quan về vi điều khiển PIC và so sánh các trình biên dịch C cho PIC


SV:Trần Quốc Gia Phú, Trần Hạ Long - 1




Giới Thiệu.
Nội dung của đề tài trong gia đoạn thực tập dừng lại ở mức độ tìm hiểu và thi công
mạch mô phỏng. Chi tiết của các yêu cầu được đưa ra theo thứ tự lần lựoc như sau: tìm
hiểu tồng quan về vi điều khiển PIC, tìm hiểu các phần mền có thể lập trình cho vi điều
khiển PIC bằng ngôn ngữ C và lựa chọn một phần mền thích hợp nhất, tìm hiể
u giao tiếp
vi điều khiển PIC với máy tính thông qua cổng USB. Thiết kế mạch và viết chương trình
có thể truyền nhận dữ liệu với máy tính qua cổng USB. Các yêu cầu trên sẽ được giải
quyết tuần tự thông qua 4 phần, mỗi phần được phân ra làm nhiều mục nhỏ. Phần 1 sẽ
trình bày một cách tổng quan về vi điều khiển PIC. Tuy nhiên trọng tâm chính của phần
này là so sánh giữa các trình biên dịch cho dạng ngôn ngữ dùng cho vi đ
iều khiển PIC.
Dựa trên sự so sánh trên chúng ta sẽ quyết định sử dụng loại trình biên dịch nào được sử
dụng cho viết thiết kế mạch demo sử dụng giao tiếp USB sẽ được trình bày trong phần 4.
Trong phần 2 sẽ trình bày khái quát về chuẩn giao tiếp USB. Đây cũng chính là phần cốt
lõi của toàn bộ bản báo cáo. Phần 2 được chia làm tám mục nhỏ được đánh số thứ tự theo

hệ thống số
la mã. Mục đầu tiên trình bày ngắn gọn về lịch sử hình thành và phát triển
của chuẩn giao tiếp USB. Mục số 2 sẽ đề cập đến các thành phần cấu thành chuẩn giao
tiếp, phần này giúp ta làm quen với một số thuật ngữ thường dùng.Sau khi được làm quen
với các thuật ngữ,chúng ta sẽ chuyển sang mục 3 với các thông tin về các thành phần
chính tham gia trực tiếp quá trình vận chuyển. Sang mục số 4 sẽ đem đến cho chúng ta
nhữ
ng chi tiết về các loại kiểu truyền nhận. Trong mỗi kiểu truyền sẽ nhắc đến các đặc
tính của từng kiểu truyền như là tính sẵn sàng của thiết bị, cấu trúc kiểu truyền, kích
thước lớn nhất của từng gói dữ liệu cũng như tốc độ của mỗi kiểu truyền. Mỗi thông tin
về một kiểu truyền sẽ được nhắc lạ
i nhiều trong ở phía sau. Tiếp theo chúng ta sẽ được
tìm hiểu thêm về cơ chế hoạt động của giao tiếp thông qua sự điểm danh, đây là hoạt
động cơ bản và quan trọng nhất trong quá trình truyền nhận dữ liệu giữa thiết bị và máy
tính .Trong mục 5 này sẽ trình bày từng bước của quá trình điểm danh. Các mục còn lại
trình bày một phần của quá trình giao tiếp diễn ra trên host, các mục này bao gồm giao
tiếp trên host và host lựa ch
ọn driver. Riêng mục 7 sẽ đề cập đến driver thiết bị. Phần 3
của báo cáo mô tả việc thi công mạch demo giao tiếp USB, các bản mô tả mạch luận lý
của mạch được thể hiện qua các hình trong Orcad capture cis, phần này cũng bao gồm
luôn đoạn code firmware cho vi điều khiển. Phần cuối cùng của bản báo cáo sẽ giới thiệu
một số hàm cơ bản trong viết ứng dụng giao tiếp với thiết bị
.
Phần 1: Tổng quan về vi điều khiển PIC và so sánh các trình biên dịch C cho PIC


SV:Trần Quốc Gia Phú, Trần Hạ Long - 2





MỤC LỤC
Phần 1: Tổng quan về PIC và các trình biên dịch C cho PIC ............................................. 5
I) TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC .................................................................. 5
II) Phần đánh giá trên forum của CCS:............................................................................ 8
III) Phần đánh giá trên forum của microchip: ................................................................. 13
IV) Quyết định loại trình biên dịch: ................................................................................ 13
Phần 2:Giao tiếp USB....................................................................................................... 15
I) Sự ra đời của chuẩn USB:......................................................................................... 15
II) Các cấu thành giao tiếp USB: ................................................................................... 15
III) Các thành phần tham gia vận chuyển: ...................................................................... 17
IV) Các kiểu truyền(tranfer):........................................................................................... 18
V) Sự điểm danh: ........................................................................................................... 28
VI) Giao tiếp từ Host:...................................................................................................... 33
VII) Giao tiếp trên host:.................................................................................................... 34
VIII) Host lựa chọn driver ................................................................................................ 35
Phần 3:Thiết kế m
ạch giao tiếp USB thuộc lớp HID........................................................ 37
I) Mục tiêu: ................................................................................................................... 37
II) Thi công mạch: ......................................................................................................... 37
III) Viết firmware:........................................................................................................... 39
Phần 4:Viết ứng dụng giao tiếp chuẩn USB trên host ...................................................... 48
I) Giới thiệu chung về lập trình ứng dụng trên host : ................................................... 48
II) Các quy trình để nhận biết một thiết bị usb : ............................................................ 48
III) Các hàm Read và Write : .......................................................................................... 51

Phần 1: Tổng quan về vi điều khiển PIC và so sánh các trình biên dịch C cho PIC


SV:Trần Quốc Gia Phú, Trần Hạ Long - 3





Mục lục hình
Hình 1:Sơ đồ chân. ............................................................................................................. 8
Hình 2:Kiến trúc hình sao phân tầng USB........................................................................ 17
Hình 3:Các giao dịch trong truyền điều khiển read. ......................................................... 21
Hình 4: Các giao dịch trong truyền điều khiển write........................................................ 22
Hình 5: Giao dịch IN và OUT của hai kiểu truyền bulk và ngắt. ..................................... 24
Hình 6: Giao dịch đồng bộ IN và OUT............................................................................. 27
Hình 7 :Module kết nối USB và điều khiển trong Orcard capture cis............................. 38
Hình 8: Module hiển thị.................................................................................................... 39
Hình 9: sơ đồ giao tiếp từ chương trình ứng dên driver. ................................................. 48
Phần 1: Tổng quan về vi điều khiển PIC và so sánh các trình biên dịch C cho PIC


SV:Trần Quốc Gia Phú, Trần Hạ Long - 4




Mục lục bảng
báng1:Những đặc tính thiết bị............................................................................................. 7
Bảng2:Bảng so sánh các trình soạn thảo code cho vi điều khiển PIC. ............................. 13
Bảng3: mô tả các dây trong cáp truyền............................................................................. 15
Bảng4:so sánh tốc độ các kiểu truyền............................................................................... 20

Phần 1: Tổng quan về vi điều khiển PIC và so sánh các trình biên dịch C cho PIC



SV:Trần Quốc Gia Phú, Trần Hạ Long - 5




Phần 1: Tổng quan về PIC và các trình
biên dịch C cho PIC
I)Tổng quan về vi điều khiển PIC:
1.Những tính năng lõi mới:
a)Công nghệ nanowatt :
- Tất cả các thiết bị chip trong họ PIC18F2455/2550/4455/4550 đều có đặc trưng
chung là giảm bớt năng lượng tiêu thụ đáng kể trong suốt quá trình hoạt động của chip.
Gồm có các chế độ sau :
-Alternate run Modes ( Chế độ chạy luân phiên ) : xung clock được điều khiển từ bộ
tạo xung Timer1 hoặc từ khối tạo dao động nội, trong suốt quá trình thực thi đoạn mã

ng lượng tiêu hao có thể chỉ bằng 90% so với những chip khác .
-Multiple Idle Modes (Chế độ chạy đa nhàn rỗi) : Mạch điều khiển có thế chạy với
việc nhân của CPU bị vô hiệu hóa .Nhưng các thiết bị ngoại vi vẫn còn hoạt động.Trong
trang thái này , mức tiêu thụ năng lượng có thể được giảm không nhiều , ít hơn 4% so với
nhu cầu của sự hoạt động thông thường.
-On-the-fly Mode Switching : Chế độ quả
n lý năng lượng này được điều khiển bởi mã
của user trong suốt quá trình hoạt động .Ở chế độ này cho phép user thể hiện ý tưởng tổ
chức tiết kiệm năng lượng trong thiết kế phần mềm .
-Low consumption in Key : Nhu cầu năng lượng cho cả Timer1 và Watchdog Timer
đã được giảm đến mức tối thiểu .
b)Universal Serial Bus (USB) :
- Thiết bị trong họ PIC18F2455/2550/4455/4550 tích hợp một module giao tiếp USB

tương ứng với USB Specification Revision 2.0 .
- Module này hỗ trợ cả hai sự kết nối low-speed(1.5 Mb/s) và full-speed ( 12 Mb/s)
cho tất cả các kiểu chuyển đổi dữ liệu được hỗ trợ.
- PIC18F4550 cũng tích hợp transceiver(máy thu) và regulator(máy điều chỉnh) 3.3V
riêng , đồng thời hỗ trợ việc sử dụng những transceiver bên ngoài và regulator điện áp
khác.
c)Multiple Oscillator Options And Features (Đa tuỳ chọn bộ tạo dao động và
những tính năng ) :
Tất cả các thiết bị trong họ PIC18F2455/2550/4455/4550 cung cấp 12 sự chọ
n lựa
khác nhau bộ phận tạo dao động.Cho phép user có phạm vi lựa chọn lớn hơn trong việc
phát triển ứng dụng phần cứng.Bao gồm :
a. Bốn chế độ Crystal : dùng thạch anh hay bộ tạo dao động bằng gốm
b. Bốn chế độ xung clock ngọai : cho phép tuỳ chọn sử dụng 2 chân ( chân nhận dao
động ngoại vào và chân đưa ra xung clock đã được chia 4 ra) hoặc sử dụng 1 chân (chân
nhận dao động ngoại vào , chân còn lại đượ
c dùng như cổng I/O chung )
Phần 1: Tổng quan về vi điều khiển PIC và so sánh các trình biên dịch C cho PIC


SV:Trần Quốc Gia Phú, Trần Hạ Long - 6




c. Khối thiết bị tạo dao động nội :cung cấp clock 8 MHz (độ sai lệch 2%) , một nguồn
INTRC(xấp xỉ 31kHz,ổn định qua nhiệt độ và nguồn VDD) , một dải 6 sự lựa chọn tần số
clock từ 125kHz đến 4MHz, vậy là có tổng cộng 8 tần số dao động để người dùng lựa
chọn .
Tuỳ chọn này còn cho phép giải phóng 1 chân bộ tạ

o dao động để sử dụng như
cổng I/O chung.
d. Chế độ đa tần số của bộ tạo xung clock PLL : sẵn có cho cả chế độ high_speed
crystal và chế độ tạo dao đông ngoại , cho phép một dải ộ xung clock từ 4MHz đến
48MHz.
e. Hoạt động xung clock bất đồng bộ : cho phép module USB chạy với xung clock tạo
ra bởi bộ dao động tần số cao trong khi phần còn lại của thiết bị vi đi
ều khiển hoạt dộng
với xung clock tạo ra bởi bộ tạo dao động low-power nội .
f. Bên cạnh tính sẵn sàng như một nguồn tạo dao động , khối tạo dao động nội còn
cung cấp một nguồn tham khảo ổn định tạo ra những tính năng bổ sung cho chip ,giúp
thao tác được linh hoạt:
- Fail-safe Clock Monitor : liên tục theo dõi nguồn tạo dao động chính , dự phòng một
tín hiệu tần số do bộ tạo dao động nội cung cấ
p . Nếu xuất hiện clock hoạt động không
như mong muốn , bộ điều khiển được chuyển tới khối tạo dao động bên trong hay một
chế độ kết thúc an toàn.
-Two-Speed Start-up : cho phép dùng bộ tạo dao động nội như nguồn tạo clock trong
Power-on Reset , hay wake-up from sleep , cho đến khi nguồn tạo clock chính sẵn sàng.
2.Những tính năng đặc biệt khác:
a)Memory Endurance(Sự kéo dài bộ nhớ):
Sự gia tăng flash cell cho cả bộ nhớ chương trình và bộ nhớ
dữ liệu EEPROM ước
tính có thể thực hiện việc xoá/ghi lên đến 100 ngàn lần cho bộ nhớ chương trình , 1 triệu
lần cho EEPROM . Dữ liệu có thể được đảm bảo lưu trữ trong hơn 40 năm .
b)Sefl-Programmability :
Khả năng tự lập trình , bằng cách sử dụng bootloader routine (được xác định trong
khối protected Boot ở đầu bộ nhớ chương trình)
c)Extened Instruction Set (Mở rộng tập lệnh) :
Thêm vào 8 lệnh mới và mode đánh đị

a chỉ Offset bằng kí tự đánh chỉ số
d)Enhanced CCP Module (Tăng cường module CCP):
-Trong mode PWM module này cung cấp 1,2 hay 4 chân output (được điều chế) để
điều khiển việc chạy half-bridge và full-bridge .
-Những tính năng khác : tự động shutdown để vô hiệu hoá PWM output trong ngắt
hay trường hợp có lựa chọn điều kiện ; tự động restart để kích hoạt lại output khi điều
kiện đã bị xoá .
e)Enhanced Addressable USART :
Phần 1: Tổng quan về vi điều khiển PIC và so sánh các trình biên dịch C cho PIC


SV:Trần Quốc Gia Phú, Trần Hạ Long - 7




Automatic Baud Rate Detection và Baud Rate Generator 16-bit để tăng dộ phân giải .
Khi vi điều khiển dùng khối tạo dao động nội , EUSART cung cấp chế độ ổn định cho
những ứng dụng giao tiếp với bên ngoài mà không cần đến nguồn crystal ngoại (hay
nguồn năng lượng hỗ trợ).
f)10-bit A/D Converter (Bộ biến đổi ADC 10-bit):
Module này hợp nhất thời gian thu nhận chương trình , khi 1 kênh truyền được chọn
lựa và một quá trình chuyển đổi xảy ra , không cần chờ thời gian làm mẫu và như vậy
giảm bớt code overhead .
g)Dedicated ICD/ICSP Port ( Dành cho ICD/ICSP Port):
Cho phép người dùng phát triển những ứng dụng dùng I/O cường độ cao mà vẫn giữ
khả năng nhập chương trình và debug trong mạch .
3.Những đặc tính thiết bị :
Tính năng


Tần số làm việc DC-48 MHz
Bộ nhớ chương trình(bytes) 32k
Bộ nhớ chương trình(lệnh) 16384
Bộ nhớ dữ liệu(bytes) 2k
Bộ nhớ dữ liệu EEPROM(bytes) 256
Những nguồn ngắt 20
I/O ports Port A,B,C,D,E
Timers 4
Capture/Compare/PWM Modules 1
Enhanced Capture/Compare/
PWM Modules
1
Truyền thông tuần tự MSSP , Enhanced USART
USB 1
Streaming Parallel Port(SPP) Có
10-bit Analog-to-Digital Modules 13 kênh Input
Comparators 2
Resets ( và Delays) POR, BOR, lệnh RESET, Stack Full,
Stack Underflow , (PWRT,OST),
Programmable Low-Voltage Detect có
Programmable Brown-out Reset Có
Lệnh Set 75 lệnh ; 83 với tập lệnh mở rộng
được cho phép
Packages 40-pin PDIP
44-pin QFN
44-pin TQFP

báng1:Những đặc tính thiết bị.

Phần 1: Tổng quan về vi điều khiển PIC và so sánh các trình biên dịch C cho PIC



SV:Trần Quốc Gia Phú, Trần Hạ Long - 8





4.Sơ đồ chân :

Hình 1:Sơ đồ chân.

II)Đánh giá các trình biên dịch:
Hiện nay trên thế giới, có rất nhiều nhà sãn trình biên dịch dựa theo ngôn ngữ C dành
cho các dòng vi điều khiển PIC. Trong số các trình biên dịch này, có một số đựơc sử
dụng rất rộng rãi và phồ biến trên toàn thế giới như :CCS –C, Microchip C18,C30; Hi-
tech PICC , IAR embedded Workbench. Các trình biên dịch này chiếm hầu hết thị phần
trong lĩnh vực trình biên dịch cho PIC. Do có nhiều trình biên dịch nên viêc lựa chọn ra
một trong số đó sẽ không dễ dàng cho lắm. Viêc lựa chọn này cũng phả
i dựa trên nhiều
tiêu chí để phù hợp với điều kiện và mục đich sử dụng. Tiêu chí để đánh giá đựơc một
chưong trình cũng có rất nhiều. Thông thường khi đánh giá người ta chỉ đánh giá dựa
theo một số tiêu chí chủ yếu như là: giá cả, đặc điểm ngôn ngữ, thư viện hỗ trợ, IDE và
benchmark. Trong phần này sẽ trình bày việc so sánh các trình biên dịch thông qua các
tiêu chí đã đề cập ở
trên. Phần so sánh này được thực hiện bởi những người có kinh
nghiệm về lập trình PIC trên diễn đàn khá nổi tiếng về vi điều khiển PIC. Các diễn đàn
thường do các công ty sãn xuất trình biên dịch lập ra hoặc do những người phát triển các
ứng dụng vi điều khiển lập ra.
1.Phần đánh giá trên forum của CCS:


-Phần đánh giá được trình bày theo dạng bảng so sánh. Bảng được lấy từ Forum tại đị
a
chỉ:
Phần 1: Tổng quan về vi điều khiển PIC và so sánh các trình biên dịch C cho PIC


SV:Trần Quốc Gia Phú, Trần Hạ Long - 9




/>.


CCS – C v.4 Microchip
C18 v3.0/
C30 v2.05
Hi-Tech PICC
V 9.5
IAR embedded
Workbench
v2.21
Phần 1 Sản phẩm / giá
PIC hỗ trợ pic 12 , 14 ,16
và 24 bit
C18 pic 16
bit
C30 pic 24
bit

PICC pic 12 bit
và 14 bit
PICC18 pic 16-
bit
dsPICC pic 24-
bit
PIC16/17 pic
14 bit
PIC18 pic 16
bit
dsPIC pic 24
bit
Hệ điều hành Windows ,Linux Windows Windows ,Linux
Mac OS ,Sun
Windows
Giá
cả
License:
12-bit = $50
14-bit = $150
16-bit = $200
24-bit = $250
12-bit, 14-bit +
IDE = $350
12-bit, 14-bit,
16-bit + IDE =
$500
24-bit + IDE =
$350
12-bit, 14-bit,

16-bit, 24-bit +
IDE = $600




License:
16-bit + IDE
= $495
24-bit + IDE
= $895

License:
12-bit, 14-bit +
IDE = $950
16-bit + IDE =
$950
24-bit + IDE =
$1,150
16-bit, 24-bit +
IDE = $2,400

Support:
12-bit, 14-bit +
IDE = $250
16-bit + IDE =
$250
24-bit + IDE =
$250
16-bit, 24-bit +

IDE = $250
License:
14-bit + IDE =
$2,695
16-bit + IDE =
$2,695
24-bit + IDE =
$2,695



Includes:
1-year
Warranty

Phần 1: Tổng quan về vi điều khiển PIC và so sánh các trình biên dịch C cho PIC


SV:Trần Quốc Gia Phú, Trần Hạ Long - 10






Maintenance:
(30-60 days
included)
12-bit =
$40/year

14-bit =
$100/year
16-bit =
$125/year
24-bit =
$150/year
12-bit, 14-bit +
IDE =
$200/year
12-bit, 14-bit,
16-bit + IDE =
$250/year
24-bit + IDE =
$175/year
12-bit, 14-bit,
16-bit, 24-bit +
IDE = 275/year



Bộ kit hỗ trợ
phát triển
Có Có Có Có
Tương thích
với Mplab
Có Có Có Có
Phần 2 Đặc điểm ngôn ngữ
Tự động cấp
phát bộ nhớ
RAM

Có Không Không Không
Kiểu dữ liệu
Integers:
int1
int8
int16
int32

Float:
32-bit
Integers:
int8
int16
int32


Float:
32-bit for
C18/C30
64-bit for
C30
Integers:
int1
int8
int16
int32

Float:
24-bit
32-bit

Integers:
int8
int16
int32


Float:
32-bit

Phần 1: Tổng quan về vi điều khiển PIC và so sánh các trình biên dịch C cho PIC


SV:Trần Quốc Gia Phú, Trần Hạ Long - 11




Theo chuẩn C Có Có Có Có
Phần mở rộng
trình biên dịch
24 13 15 5
Đệ quy Không Có Không Không
Hỗ trợ
Assembly
Có Có Có Có
Chuỗi bit Có Không Không Không
Bỏ các hàm
không sử dụng
Có Không Không Có
Con trỏ trỏ

đến hằng
Có Có Có Có
Ghi đè hàm Có Không Không Không
Tham số tham
khảo
Có Có Không Không
Tham số mặc
định
Có Không Không Không
Có thể xác
định dữ liệu C
trong bộ nhớ
không phải là
RAM
Có Không Không Không
Tự động đóng
gói các biến
bit
Có Không Có Không
Phần 3 Thư viện hỗ trợ
Các hàm về
char/string
Có Có Có Có
Thư viện math Có Có Có Có
Các hàm về hệ
thống file
Không Không Không Có
Các hàm về bộ
nhớ động
Có Không Không Có

Phần 1: Tổng quan về vi điều khiển PIC và so sánh các trình biên dịch C cho PIC


SV:Trần Quốc Gia Phú, Trần Hạ Long - 12




Thư viện động
RS232
Có Không Không Không
Thư viện động
SPI
Có Không Không Không
Thư viện động
I2C
Có Không Không Không
Thư viện IO Có Có Có Có
Hàm xây dựng
sẵn của
PIC
®
MCU
Có (80 hàm) Có (54 hàm) Không Không
Hàm tạo trễ Có Có Không Không
RTOS Có (chỉ đi cùnng
với IDE)
Không Có (mua ứng
dụng riêng
Không

Phần 4 IDE
IDE + debug Có Có Có Có
Hỗ trợ tạo
project
Có Có Có Có
Tự động sinh
tài liệu
Có Không Không Không
Tự động kiểm
tra lỗi văn bản
Có Không Không Không
Phần 5 Benchmark
Chương trình
đọc nhiệt độ
và hiển thị lên
màn hình LCD
ROM: 1638
RAM: 34
ROM: 3036
RAM: 293
ROM: 3879
RAM: 30
ROM: 7838
RAM: 148
Số thực dấu
chấm động ,ví
dụ :
float f = 5.0, g
= 600.0, h;
h = f*g;

Time: 27.5 us
ROM: 350
RAM: 28
Time: 42.5 us
ROM: 416
RAM: 286
Time: 83.4 us
ROM: 428
RAM: 22
Time: 27.6 us
ROM: 454
RAM: 33
Phần 1: Tổng quan về vi điều khiển PIC và so sánh các trình biên dịch C cho PIC


SV:Trần Quốc Gia Phú, Trần Hạ Long - 13




Xuất chuỗi ,ví
dụ :
int i = 25;
printf("Hello
World i =
%U", i);
ROM: 296
RAM: 12
ROM: 2083
RAM: 295

ROM: 1705
RAM: 37
ROM: 5042
RAM: 190
Hàm tính CRC
của chuỗi 50
byte trên
RAM
Time: 481 us
ROM: 544
RAM: 74
Time: 991 us
ROM: 687
RAM: 289
Time: 506 us
ROM: 858
RAM: 66
Time: 890 us
ROM: 1022
RAM: 137

Bảng2:Bảng so sánh các trình soạn thảo code cho vi điều khiển PIC.
2.Phần đánh giá trên forum của microchip:
Theo forum trên trang web microchip.com của hãng microchip thì đề cao trình biên
dịch của Hitech và C18 do chính hãng sãn xuất hơn. Một số ý kiến trên trang này cho
rằng đoạn code C được biên dịch bằng PICC Hi-tech có độ dài chỉ bằng khoảng phân
nữaso với đoạn code được biên dịch bằng CCS. Do đó giá của PICC Hi-tech cao hơn so
với CCS PIC-C.
Nhưng theo một số ý kiến khác trên đây cho rằng vi
ệc so sánh sự tối ưu trong biên

dịch này chỉ đúng đối với các phiên bản củ của CCS PIC-C, còn đối với các phiên bản
sau này thì CCS PIC-C thực sự rất tốt không hề thua kém tý nào so với Hi-Tech PICC
nếu không nói là nhỉnh hơn đôi chút.Trang này của so sánh giữa PICC Hi-tech và C18
MPLAB sẽ tốt hơn trình biên dịch của IAR C, bao gồm sự vượt trội về các khía cạnh sự
tối ưu trong quá trình biên dịch, giao diện thao tác đối với người sử dụng, mô ph
ỏng, và
môi trường phát triển. Dù rằng giá trị thực sự của IAR C cao hơn các trình biên dịch C
của Hi-tech và MPLAB. Việc đánh giá thấp IAR C có nguyên nhân theo một số đánh giá
trên forum này đưa ra là do trình biên dịch này không họ trợ các dòng PIC 12C5x và
16C5xx.Forum này cũng đề cập việc đánh giá giữa hai trình biên dịch CCS và CC5x,
trong so sánh này thì CCS có phần vượt trội không những về số lượng người sử dụng
rộng rãi mà còn tính ưu việt về tính năng các hàm, nhiệm vụ hỗ trợ như
:serial IO, delays,
EEPROM read/write, analog, etc. Còn về sự tối ưu trong biên dịch code thì cả hai được
đánh giá là xấp xỉ nhau.
-Song song với việc đánh giá các trình biên dịch thông qua các đặc điểm kể trên. Diễn
đàn cũng đưa ra một số lời khuyên trong việc chọn lựa trình biên dịch dựa theo đặc điểm
của từng dòng PIC sử dụng. Thí dụ như dòng 12X tiêu biểu là 12C509 sử dụng C18
MPLAB tốt nhất. Dòng 16X với các đại diện là 16F84 và 16F876 sử d
ụng trình biên dịch
Hi-Tech là tốt nhất. 17X được khuyên sử dụng cả trình biên dịch MPLAB lẫn Hi-tech.
Các dòng 18X thì được cho rằng là như nhau đối với các trình biên dịch.
3.Quyết định loại trình biên dịch:
-Trong nước ta cũng có rất nhiều diễn đàn dành cho lãnh vực hệ thống nhún. Trong số
này thì hai diễn đàn picvietnam và dientuvietnam là lớn nhất, quy tụ nhiều người làm
việc, học tập trong lãnh vực này.
Phần 1: Tổng quan về vi điều khiển PIC và so sánh các trình biên dịch C cho PIC


SV:Trần Quốc Gia Phú, Trần Hạ Long - 14





-Theo số mục đề cập và số đông ý kiến trên các trang này thì ở trong nước trình biên
dịch được sử dụng nhiều nhất là CCS PIC-C. Các ý kiến trên diễn đàn này cũng có khá
nhiều ý kiến tương đồng so với các diễn đàn đã nêu trên. Qua thống kê trên hai trang này
thì tỉ lệ sử dụng CCS PIC-C là rất lớn.
-Sau khi hỏi qua kinh nghiệm từ các bậc đàn anh đi trước trong trườ
ng, các ý kiến
được nêu ra trên các forum đề cập ở trên chúng tôi quyết định sử dụng trình biên dịch
CCS PIC-C. Quyết định sử dụng CCS cũng ảnh hưởng rất lớn từ các yêu cầu thực tế do
yêu cầu của đề tài thực tập. Do trong chương trình được tích hợp sẵn các chức năng, các
thường trình phục vụ quá trình giao tiếp. Ngoài các file đăc tả khai báo giao tiếp cũng
được cung cấp sẵn trong chương trình, làm giảm rất nhiề
u công sức trong việc thực thi đề
tài

Phần 2: Giao tiếp USB


SV:Trần Quốc Gia Phú, Trần Hạ Long - 15




Phần 2: Giao tiếp USB
I)Sự ra đời của chuẩn USB:
USB 1.0 được giới thiệu lần đầu tiên vào tháng 11 năm 1995. USB là kết quả của sự
phối hợp phát triển giữa Intel, Microsoft, Philipp và US robotics. Chuẩn USB nguyên

thủy được phát triển nhằm thay thế nhiều chuẩn kết nối trước đó được bố trí chủ yếu phiá
sau PC, cũng như phần mền cấu hình cho sự liên lạc đơn giản hơn. USB còn là thiết bị
giao tiếp chính trên máy tính Apple Imac nguyên thủy được giới thiệu vào ngày 6/5/1998,
bao gồ
m chuột và bàn phím kiểu mới giao tiếp máy tính thông qua cổng USB. Tháng 9
năm đó chuẩn 1.1 ra đời nhằm khắc phục những vấn đề thường xảy ra trong phiên bản
đầu.
-USB 2.0 xuất hiện tháng 4/2000 và được chuẩn hóa bởi USB_IF vào cuối năm 2001.
Các công ty như:Hewlett-Packard, Intel, Lucent, Microsoft, NEC và Philipp dẫn đầu
trong việc phát triển tốc độ truyền nhận cao trong phiên bản 2.0. Phiên bản này được phát
triển phù hợp với các phiên bản chuẩn trước và cũng làm việc được v
ới thiết bị được thiết
kế cho các phiên bản trước.
-Các máy tính hiện nay đều có trang bị giao tiếp USB, ngoài ra còn có các loại card
chuyển đổi từ các chuẩn giao tiếp khác sang chuẩn USB.
II)Các cấu thành giao tiếp USB:
1.Cấu trúc cáp truyền:
-Qua ổ cắm USB ở sau máy tính có thể lấy ra điện áp +5v với dòng tiêu thụ khoảng
100 mA, trong 1 số trường hợp có thể lấy ra dòng tiêu thụ có thể đến 500 mA.
-Hai đường dữ liệu +D và -D là các tín hiệu vi sai với mức điện áp khoảng 0/3,3
V.Điện áp nguồn nuôi bus USB có thể lên đến 5.25 V,đôi khi có thể giàm xuống còn 4.2
V .Khi bổ sung một vi mạch ổn áp có thể tạo ra 1 điện áp ổn định 3.3V.
-Toàn b
ộ hệ thống được thiết kế sao cho khi chịu dòng tải lớn điện áp nguồn cũng
không vượt quá +4.2V. Khi thiết bị ghép nối cần dòng lớn hơn 100 mA cần phải xem xet
kỹ khả năng cung cấp và chịu tải của các bộ phận trong máy tính.Đây cũng chính là 1 ưu
điểm của chuẩn USB là các thiết bị ngoại vi có thể lấy nguồn nuôi luôn từ host.
Chân Tên gọi Màu Mô tả
1 Vcc Đỏ +5Vdc
2 D- Trắng Dữ liệu -

3 D+ Xanh lá cây Dữ liệu +
4 GND Đen Đất
Bảng3: mô tả các dây trong cáp truyền





2.Điều khiển host:
Phần 2: Giao tiếp USB


SV:Trần Quốc Gia Phú, Trần Hạ Long - 16




-Một giao tiếp sẽ không thành công nếu nhà sãn xuất PC không hỗ trợ nó. ,cả nhà sãn
xuất PC và nhà sãn xuất thiết bị ngoại vi hỗ trợ USB. Một máy tính được sãn xuất từ năm
1997 đến nay hầu hết dược tích hợp điều khiển host USB và có ít nhất là 2 cổng USB.
Nếu một computer không có điều khiển host tích hợp trong mianboard,có thể gắn thêm
một card mở rộng cắ
m vào vào các khe trên bus PCI. Nhưng tiện lợi nhất vẫn là điều
khiển USB trên card PC được tích hợp sẵn.
-Điều khiển host định dạng dữ liệu cho việc truyền nhận dữ liệu trên bus và chuyển
đổi định dạng dữ liệu nhận được sang định dạng các cấu thành của hệ điều hành có thể
hiểu được. Ngoài ra diều khiển host còn thể hiện các chứ năng liên quan đến việ
c quản lý
liên lạc trên bus.
3.Hệ điều hành:

Một phần khác của hỗ trợ USB nằm trong hệ điều hành. Các sãn phẩm phát triển theo
chuẩn USB sẽ dễ dàng hơn nếu chạy trên các phiên bản sau của hệ điều hành Windows.
Các chương trình giao tiếp với thiết bi USB được windows hỗ trợ rất tốt thông qua các
thư viện hàm API, đây là các hàm giao tiếp được chuẩn hóa tốt nên sử dụng rất dễ dàng.
4.Root hub:
Root hub và điều khiển host cùng làm việc với nhau nhằm mục tiêu cho phép hệ điều
hành được liên lạc với thiết bị thông qua hub. Root hub có một hoặc nhiều connector cho
việc gắn vào hoặc gỡ bỏ thiết bị, mang theo các yêu cầu từ điều khiển host đến thiết bị,
và mang các dữ liệu di chuyển giữa thiết bị và điều khiển host.
5.Thiết bị:
Thiết bị có thể là m
ột ngoại vi hoặc các hub thứ cấp thêm vào được kết nối vào bus.
Một hub thì có một hay nhiều cổng dành cho việc kết nối thiết bị. Mỗi thiết bị phải chứa
mạch điện vật lý và code để có thể lein6 lạc được với host. Đặc tả định cable và
connector kết nối đến hub.
6.Bus topology:
-Togpology hay còn gọi là sự sắp xếp các kết nối các thiết bị tuân theo kiến trúc bus
hình sao phân tầng(tiered star). Tạ
i điểm trung tâm của mỗi sao là một hub. Mỗi điểm
trên một sao là một thiết bị kết nối với một trong các cổng của hub đó. Thiết bị ở đây có
thể là một hub thứ cấp hoặc một ngoại vi. Số điểm trên mỗi sao có thể nhiều hơn một,
một hub điển hình thường có 2,3 hoặc 7 cổng. Khi có nhiều hub trên một bus ta có thể
tưởng t
ượng chúng kết nối theo kiểu phân tầng từ trên xuống dưới như kiến trúc hình
tháp.
-Kiến trúc tầng sao chi là kết nối vật lý. Trong viết chương trình tất cả những kết nối
trên được xem như kết nối luận lý. Trong giao tiếp với thiết bị, host không thể nào biết
biết được việc liên lạc đã đi qua bao nhiêu hub. Vì hub quản lý việc này một cách tự
động.
-Tất cả các thiết bị

đều chia sẻ chung một đường đến host. Chỉ có một thiết bị có thể
giao tiếp với host tại một thời điểm. Cho việc mở rộng băng thông, ta có thể thiết lập
đường dữ liệu thứ 2 đến host bằng việc gắn một card mở rộng với một điều khiển host
mới và một hub root mới. Card mở rộng hỗ trợ đa điề
u khiển host vẫn được hỗ trợ.
Phần 2: Giao tiếp USB


SV:Trần Quốc Gia Phú, Trần Hạ Long - 17




-Trong một vài trường hợp, với các thiết bị tổ hợp nơi các hub có thể ẩn bên trong các
ngoại vi, các ngoại vi này có thể xuất hiện để được sử dụng trong các dạng mắc xích bánh
răng của kết nối, nơi này các ngoại vi gắn vào điểm cuối của một xích. Nhưng topology
của USB lại đa năng và phức tạp hơn m
ắc xích bánh răng thông thường. Mỗi ngoại vi kết
nối đến hub quản lý liên lạc với host, và các ngoại vi này và các hub không giới hạn việc
kết nối với một mắc xích đơn.
-Hình 2 sẽ mô tả kiến trúc trừu tượng của tiered star topology.


Hình 2:Kiến trúc hình sao phân tầng USB.
III)Các thành phần tham gia vận chuyển:
1.Điểm cuối thiết bị(Endpoint):
-Tất cả các các đường vận chuyển đều phải xuất phải từ điểm cuối hoặc kết thúc tại
điểm cuối của thiết bị. Điểm cuối là một bộ đệm có khả năng lưu nhiều byte. Cụ thể hơn
bộ đệm này là môt khối bô nhớ dữ liệu hoăc cũng có thể là m
ột thanh ghi trong chip điều

khiển. Dữ liệu lưu trong đệm có thể là dữ liệu được nhận về hoặc dữ liệu đợi vận chuyển
đi. Host cũng có bộ đệm cho phép nhận dữ liệu về hoặc dữ liệu chuẩn bị truyền đi, nhưng
host không có điểm cuối. Thay vào đó host có điểm đầu dùng để giao tiếp với điểm cuối
c
ủa thiết bị.
-Điểm cuối là một bộ phận của thiết bị USB có khả năng xác định địa chỉ duy nhất.
Địa chỉ duy nhất cho mỗi điểm cuối bao gồm số thứ tự của điểm cuối và hướng. Số điểm
cuối nằm trong khoảng 1 tới 15. Hướng được đinh nghĩa tùy theo ngữ cảnh của host:IN là
hướng vào host;OUT là
đi ra từ host. Một điểm cuối được cấu hình thực hiện truyền điều
khiển phải vận chuyển dữ liệu được trên hai hướng: IN và OUT. Vì thế điểm cuối bao
gồm một cặp điểm cuối IN và OUT chia sẻ chung một số thứ tự điểm cuối. Mỗi thiết bị
phải điểm cuối số 0 được cấu hình cho truy
ền điều khiển. Thường hiếm khi cần thêm
điểm cuối điều khiển, nhưng cũng có một số chip hỗ trợ thêm nhiều điểm cuối điều khiển
. Các điểm cuối hỗ trợ các kiểu truyền khác chỉ theo một hướng nhất định.
Phần 2: Giao tiếp USB


SV:Trần Quốc Gia Phú, Trần Hạ Long - 18




-Mỗi giao dịch(transaction) trên bus bao gồm số của điểm cuối và mã thể hiện cho
hướng của dòng chảy dữ liệu và có hay không một giao dịch khởi tạo một truyền điều
khiển. Các mã là IN, OUT, SETUP. Trong một giao dịch SETUP dữ liệu luôn di chuyển
từ host tới ngoại vi, nhưng một giao dịch SETUP là một trường hợp đặc biệt vì nó khởi
tạ
o một truyền điều khiển. Thiết cần nhận dạng giao dịch SETUP để nó biết cách xử lý

những dữ liệu chứa trong nó. Giao dịch SETUP là loại duy nhất mà thiết bị buộc phải
luôn luôn chấp nhận. Các kiểu truyền khác có thể sử dụng giao dịch IN hoặc OUT, nhưng
chỉ có truyền điều khiển mới sử dụng giao dịch SETUP.
-Mỗi giao dịch thực chứa một
địa chỉ thiết bị và một địa chỉ điểm cuối. Khi một thiết
bị nhận một giao dich OUT hoặc SETUP chứa địa chỉ của nó, phần cứng lưu dữ liệu lại
trong một vị trí xác định cho điểm cuối đồng thời kích hoạt một ngắt. Thường trình xử lý
ngắt trong thiết bị sau đó sẽ xử lý dữ liệu nhận được và b
ất cứ những gì mà giao dịch yêu
cầu. Khi một thiết bị nhận được một giao dịch IN chứa địa chỉ của nó, nếu thiết bị sẵn
sàng gửi dữ liệu, phần cứng gửi dữ liệu từ điểm cuối được định nghĩa vào bus và kích
hoạt ngắt. Thường trình phục vũ ngắt trong thiết bị sẽ thực hiện những điều c
ần thiết để
chuẩn bị cho giao dịch IN kế tiếp.
2.Đường ống(pipe):
-Trước khi một truyền được thực thi, host và thiết bị phải thiết lập môt đường ống.
Đường ống không phải là một đối tượng vật lý, nó chỉ là mốt quan hệ giữa điểm cuối
thiết bị và phần mền điều khiển host.
-Host thiết lập đường ống nhanh chóng sau khi hệ th
ống hoạt động hoặc thiết bị kết
nối vào, trong việc yêu cầu thông tin cấu hình từ thiết bị. Nếu thiết bị được tháo gỡ khỏi
bus, hsot sẽ xóa bỏ đường ống không còn được sử dụng.
-Host còn có thể yêu cầu đường ống mới hay gỡ bỏ đường ống không cần thiết vào
thời gian khác bằng cách yêu cầu một cấu hình hoặc giao tiếp thay thế.Mỗi thiết bị

một đường ống điều khiển chuẩn sử dụng điểm cuối số 0.
-Host nhận thông tin cấu hình bao gồm mô tả(descriptor) cho muỗi điểm cuối mà thiết
bị muốn sử dụng. Mỗi mô tả điểm cuối là một khối thông tin báo cho host biết những gì
cần biết về điểm cuối trong ra lệnh giao tiếp với nó.Mô tả bao gồm địa chỉ
điểm cuối, loại

truyền mà điểm cuối sử dụng, kích thước lớn nhất của gói dữ liệu và khi rõ ràng, khoảng
cách mong đợi giữa các lần truyền.
-Trong một số trường hợp host chỉ chấp nhận yêu cầu cấu hình khi chắc chắn rằng bus
có đủ băng thông rảnh để thực hiên truyền tại một tốc độ được yêu cầu. Điều này chỉ xả
y
ra khi cấu hình yêu cầu đường ống mang kiểu truyền đồng bộ, với sự bảo đảm tốc độ hay
kiểu truyền ngắt với sự đảm bảo về thời gian trể lớn nhất. Trong các trường hợp này, host
thử tính sẵn sàng của băng thông trước khi thiết lặp đường ống. Nếu đường ống đã sẵn
sàng, host chấp nhận cấu hình và chắc rằng việc truy
ền sẽ có thời gian truyền nhận mong
nuốn. Nếu băng thông không sẵn sàng host sẽ từ chối yêu cầu cấu hình và yêu cầu phần
mền phải thử lại lần nữa, bằng việc đợi cho đến khi băng thông sẵn sàng hay chọn một
cấu hình mới có yêu cầu ít băng thông hơn. Các đường ống mang các yêu cầu không cần
bảo thời gian, tốc độ host không cần kiểm tra băng thông. Nó chỉ hứa đặ
t việc truyền
trong thời gian sẵn sàng tốt nhất nó thể.
IV)Các kiểu truyền(tranfer):
Phần 2: Giao tiếp USB


SV:Trần Quốc Gia Phú, Trần Hạ Long - 19




1.Truyền điều khiển(control tranfers):
a)Công dụng:
-Dùng để mang yêu cầu đã được định nghĩa bởi đặc tả USB. Host sử dụng công dụng
này để nhận biết và cấu hình thiết bị.
-Chúng mang yêu cầu đã được định nghĩa bởi lớp thiết bị hoặc nhà cung cấp dùng cho

nhiều mục đích khác.
b)Tính sẵn sàng:
Mỗi thiết b
ị phải hỗ trợ truyền điều khiển trên đường ống mặc định tại điểm cuối 0.
Một thiết bị có thể có thêm đường ống được cấu hình cho truyền điều khiển, nhưng thật
sự là không cần thiết. Ngay cả khi thiết bị cần gửi nhiều yêu cầu điều khiển, host có thể
xác định băng thông dựa theo số và kích cỡ c
ủa điểm cuối yêu cầu. Hơn nữa với số
đường ống điều khiển, điểm cuối điều khiển thêm sẽ không cho phép mở rộng.
c)Cấu trúc:
-Truyền điều khiển sử dụng cấu trúc định nghĩa với 2 hay 3 giai đoạn(stage): setup,
data, status. Một giai đoạn gồm một hay nhiều giao dịch(transaction).
-Trong giai đoạn setup, host bắt đầu gửi mộ
t giao dịch setup bằng cách gửi thông tin
về yêu cầu. Gói token chứa 1 PID(định danh gói) định nghĩa kiểu truyền là truyền điều
khiển. Gói dữ liệu chứa thông tin về yêu cầu, bao gồm số yêu cầu tùy theo truyền điều
khiển có gian đoạn data hay không và nếu có thì có hướng dữ liệu di chuyển.
-Trong giai đoạn data gồm một hay nhiều giao dịch IN hoặc OUT, được gọi là giao
dịch data. Tùy theo yêu cầu, host hoặc ngoại vi sẽ
là điểm bắt đầu của giao dịch, nhưng
các gói dữ liệu trong giai đoạn data phải đi theo một hướng nhất định.
-Trong giai đoạn status bao gồm một hoặc nhiều giao dịch IN hoặc OUT, và cũng
được gọi là giao dịch status. Trong giai đoạn này thiết bị sẽ báo cáo sự thành công hay
thất bại của giai đoạn trước đó. Điểm nguồn của các gói dữ liệu trong giai đ
oạn status là
bên nhận được dữ liệu trong giai đoạn dat trước đó. Khi truyền điều khiển không có giai
đoạn data, thiết bị gửi gói dữ liệu về tình trạng của giai đoạn status.
-Hình 2 va hình 3 dưới đây sẽ minh họa rõ các giai đoạn trong trong quá trình thực
hiện một truyền điều khiển.
d)Kích thước của một gói dữ liệu:

-Kích thước tối đa gói dữ liệ
u dành cho thiết bị tốc độ thấp là 8 byte.
-Kích thước tối đa gói dữ liệu dành cho thiết bị tốc độ đầy đủ có thể là: 8, 16, 32 hoặc
64 byte.
-Kích thước tối đa gói dữ liệu của thiết bị tốc độ cao là 64 byte.
-Kích thước tối đa gói dữ liệu được mô tả trong descriptor. Với đường ống điều khiển
mặc định thì kích thước tối đa gói dữ liệ
u nằm trong descriptor thiết bị, với các đường
ống dành cho các điểm cuối khác chúng nằm trong descriptor điểm cuối.
e)Tốc độ:
Phần 2: Giao tiếp USB


SV:Trần Quốc Gia Phú, Trần Hạ Long - 20




Điều khiển host dành 1 phần băng thông cho truyền điều khiển: 10% cho thiết bị tốc
độ thấp hoặc tốc độ đầy đủ, 20% dành cho thiết bị tốc độ cao.Nếu băng thông vẫn còn
rảnh thì host sẽ dành nhiều băng thông hơn. Dưới đây là bản so sánh tốc độ của các kiểu
truyền:

Tốc dộ truyền l
ớn nhất trên mỗi điểm cuối Kiểu truyền
Low speed Full speed Hight speed
Điều khiển 24 832 15872
Ngắt 0,8 64 24576
Bulk 1216 53248
Đồng bộ 1023 24576


Bảng4:so sánh tốc độ các kiểu truyền.
f)Phát hiện và xử lý lỗi:
Nếu một thiết bị không trả lời bắt tay, host sẽ thử gửi lại. Sau ba lần thử,host sẽ chấm
dứt liên lạc với thiết bị cho dến khi vấn đê được làm sáng tỏa. Truyền điều khiển sử dụng
bit toggle data để chắn rằng dữ liệu không bị thất lac. Trong giai đoạ
n data, khi nhận một
gói dữ liệu, host trả về ACK và gửi token OUT để bắt đầu giai đoạn status. Nếu device
không nhận được ACK, thiết bị phải làm sáng tỏa trong việc nhận OUT Token thì mới
được chuyển sang giai đoạn status. Thiết bị phải chấp nhận tất cả các gói SETUP. Nếu
một gói SETUP được gửi đến trước khi truyền lần trước được hoàn thành, thiết bị sẽ bỏ
qua gói SETUP đó.

Phần 2: Giao tiếp USB


SV:Trần Quốc Gia Phú, Trần Hạ Long - 21




IN Data ACK
idleidle
NAK
Stall
idle
idle
Gói token
Host > Device
Gói Data

Host > Device
Gói Setup
Host > Device
Data error
idle
Host gửi một
gói IN
Thiết bị đáp
ứng với gói
dữ liệu hoặc
status
Nếu Host nhận
được dữ liệu
không bị lỗi nó
trả về ACK
Một truyền điều khiển read,giao dịch data. Một lần truyền có thể 0 có hoặc nhiều giao dịch
IN ININ
Gói Token
Host > thiết bị
Gói data
Host > Thiết bị
Gói handshake
Host > Thiết bị
Truyền điều khiển read, giao dịch SETUP
Host gửi một gói
SETUP
Host gửi 1 yêu
cầu.Gói này luôn
có 8 byte
Thiết bị phải

trả về 1 ACK
idle
data error
Gói Token
Host > thiết bị
Gói data
Host > Thiết bị
Gói handshake
Host > Thiết bị
ACKDATAOUT
NAK
STALL
idle
idle
idle
idle
idle
Data error
Host gửi
gói Token
OUT
Host gửi gói dữ
liệu
Thiết bị trả về
status
Một truyền điều khiển read, giao dịch status
Data1
Gói dữ liệu đầu là
Data1, theo sau là
các gói Data0/1


Hình 3:Các giao dịch trong truyền điều khiển read.
Phần 2: Giao tiếp USB


SV:Trần Quốc Gia Phú, Trần Hạ Long - 22





Hình 4: Các giao dịch trong truyền điều khiển write.

Phần 2: Giao tiếp USB


SV:Trần Quốc Gia Phú, Trần Hạ Long - 23




2.Truyền Bulk(bulk transfers):
Kiểu truyền này có thể gửi một lượng lớn dữ liệu mà không cần qua tâm đến những
trở ngại do bus. Đặc điểm này có được là do truyền bulk có khả năng trì hoãn các kiểu
truyền khác và đợi đến khi thời gian tích cực. Truyền bulk được ứng dụng chủ yếu trong
các việc như gửi dữ liệu từ máy tính sang máy in, gửi dữ
liệu từ máy scan đến máy tính,
đọc hoặc ghi đĩa trong mass storage. Ngoài lúc bus trống ra, truyền bulk là kiểu truyền
nhanh nhất.
a)Tính sẵn sàng:

Truyền bulk chỉ có thể thực hiện được ở những thiết bị hỗ trợ tốc độ full hay tốc độ
cao. Thiết bị không nhất thiết phải hỗ trợ kiểu truyền này. Một số lớp thiết bị đặc biệt có
thể hỗ trợ kiể
u truyền này.
b)Cấu trúc:
-Một truyền bulk bao gồm một hoặc nhiều giao dịch(transaction) IN hoặc OUT.
Truyền bulk chỉ theo một hướng nhất định, tất cả các giao dịch từ host đến điểm cuối đều
phải theo một hướng là IN hoặc OUT. Nếu muốn truyền theo hai hướng thì cần phải có
đường ống chia sẽ dùng để truyền theo mỗi hướng.
-Truyền bulk có thể kết thúc theo hai cách: Khi dữ liệu yêu cầ
u cần được truyền đã hết
hay gói dữ liệu nhỏ hơn kích thước lớn nhất của gói đã được miêu tả trong descriptor. Để
giành thời gian thời gian bus tích cực, host sử dụng giao thức Ping trong một vài lần
truyền điều khiển ở tốc độ cao. Nếu truyền bulk tốc độ cao có nhiều hơn một gói dữ liệu
và thiết bị trả về NYET sau khi nhận một trong các gói đó, host s
ử dụng giao thức Ping
để tìm ra khi nào nó sẵn sàng để bắt đầu giao dịch data tiếp theo, nếu thiết bị là thiết bị
tốc độ full mà dữ liệu được truyền trong bus tốc độ cao thì host sử dụng phương thức plit
transaction để truyền.
-Hình 4 dưới đây sẽ minh họa tiến trình thực hiện một giao dịch IN hoặc OUT của một
lần truyền Bulk hoặc truyền ngắt.
c)Kích thước của m
ột gói dữ liệu:
Truyền ở bus tốc độ full thì được tối đa 1.216 Megabyte/giây. Truyền ở bus tốc độ cao
thì tối đa 53.248 Megabyte/giây. Điều khiển host đảm bảo một truyền bulk sẽ hoàn thành
nhưng không dành nhiều băng thông cho kiểu truyền này. Nếu bus quá bận một lần thực
hiện việc truyền sẽ kéo dài. Nhưng trong lúc bus trống thì nó là kiểu truyền nhanh nhất.
d)Phát hiện và xử lý lỗi:
truyền bulk sử
dụng phương pháp phát hiện lỗi trong lúc truyền. Trong quá trình

truyền nếu một thiết bị không trả về bắt tay như mong đợi, host sẽ thử gửi lại thêm hai
lần nữa. Nếu sau đó vẫn không nhận được bắt tay như mong đợi, host sẽ chấm dứt việc
giao tiếp với thiết bi cho đến khi lỗi trên được làm rõ. Nếu thiết bị cứ trả về NAK thì host
sẽ tiếp tục g
ửi lại cho đến khi nào nhận được ACK mới dừng. Truyền bulk sử dụng data
toggle bits để chắc chắn dữ liệu không thất lạc trong lúc truyền nhận.

Phần 2: Giao tiếp USB


SV:Trần Quốc Gia Phú, Trần Hạ Long - 24




IN Data ACK
idleidle
NAK
Stall
idle
idle
Gói token
Host > Device
Gói Data
Host > Device
Gói Setup
Host > Device
Một giao dịch IN của truyền bulk hoặc truyền ngắt
Data error
idle

Host gửi một gói
IN
Thiết bị đáp ứng
với gói dữ liệu
hoặc status
Nếu Host nhận
được dữ liệu không
bị lỗi nó trả về ACK
Một giao dịch OUT của truyền ngắt hay truyền bulk
Gói Token
Host > thiết bị
Gói data
Host > Thiết bị
Gói handshake
Host > Thiết bị
INININ
IN
IN
idle
idle
idle
idle
idle
Data error
Host gửi gói
Token OUT
Host gửi gói dữ liệu
Thiết bị trả về status

Hình 5: Giao dịch IN và OUT của hai kiểu truyền bulk và ngắt.

3.Truyền ngắt(iterrupt transfers):
Được sử dụng khi cần truyền dữ liệu trong lượng thời gian định sẵn. Điển hình như
bàn phím, chuột, joystick và báo cáo trạng thái hub. Báo cáo trạng thái hub thường xuyên
được sử dụng để kiểm tra xem có thiết bị nào gắn vào hay gỡ ra khỏi hub. Một thiết bị tốc
độ thấp thường dùng truyền ngắt cho các dữ liệu có tính chung chung. Truyền ngắt rấ
t
phổ dụng nên trong Window có chứa driver cho phép các ứng dụng thực hiện truyền ngắt
với các thiết bị phù hợp với đặc tả HID. Trong các bus tốc độ cao và tốc độ full, băng
thông dành cho truyền ngắt giới hạn, nhưng trong bus tốc độ cao thì không giới hạn do đó
tốc độ trong bus tốc độ cao hơn gấp 4 lần trong bus tốc độ full. Truyền ngắt bảo đảm cho
host gửi yêu cầu và truyền dữ
liệu với thời gian nhỏ nhất.

×