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
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
53 trang |
Chia sẻ: lethao | Lượt xem: 1752 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án 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, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
up, 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
idledata 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.
Phần 2: Giao tiếp USB
SV:Trần Quốc Gia Phú, Trần Hạ Long - 25
a)Tính sẵn sàng:
Truyền ngắt truyền được trong 3 tốc độ. Thiết bị không nhất thiết phải hỗ trợ truyền
ngắt. Một số lớp thiết bị đặc biệt như HID(thiết bị giao tiếp với người) hỗ trợ truyền ngắt.
b)Cấu trúc:
-Bao gồm một hoặc nhiều giao dịch IN hoặc OUT, cấu trúc truyền ngắt gần giống với
truyền bulk. Chỉ khác là thứ tự thực hiện các giao dịch. Truyền ngắt truyền theo một
hướng nhất định. Nếu truyền theo hai hướng thì cũng phải sử dụng đường ống chia sẽ cho
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.
-Khi truyền ngắt hoạt động trong bus tốc độ cao nhưng thiết bị chỉ hỗ trợ tốc độ thấp
hay tốc độ full thì host sẽ sử dụng phương thức slipt transaction cho tất cả giao dịch.
Khác với truyền bulk, truyền ngắt ở tốc độ cao không sử dụng giao thức Ping khi trong 1
lần truyền phải thực hiện bằng nhiều giao dịch.
c)Kích thước của một gói dữ liệu:
Truyền ở tốc độ thấp, kích thước cho phép nằm trong khoảng 1-8 byte.Truyền ở tốc độ
full kích thước gói từ 1-64 byte. Truyền ở tốc độ cao số byte tối đa cho phép là 1024. Nếu
khối dữ liệu khai báo lớn hơn kích thước tối đa thì host phải sử dụng nhiều giao dịch để
chuyển dữ liệu.
d)Tốc độ:
-Truyền ngắt bảo đảm thời gian trễ lớn nhất giữa 2 lần giao dịch kế tiếp nhau. Nói vậy
có nghĩa là truyền ngắt không bảo đảm cho tốc độ truyền, chỉ bảo đảm sẽ không có trễ
nhiều hơn thời gian trễ tối đa giữa hai lần truyền.
-Truyền ở tốc độ cao tối đa được 24.576 Megabyte/giây, ở tốc độ full truyền tối đa
được 64kilobyte/giây và ở tốc độ thấp được 800 byte/giây.
-Thời gian trễ tối đa của mỗi thiết bị được mô tả trong descriptor. Đối với điểm cuối
tốc độ thấp tốc độ thấp thời gian trễ tối từ 10-233 μs, điểm cuối tốc độ full thời gian trễ từ
1-255 μs và điểm cuối tốc độ cao thời gian trễ cho phép là 125 μs-4 s.
e)Phát hiện và xử lý lỗi:
Nếu một thiết bị không trả về bắt tay, host sẽ thử gửi lại thêm 2 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 ngắt có thể sử dụng data toggle bit để
chắc chắn dữ liệu không thất lạc trong lúc truyền nhận. Tuy nhiên nếu ứng dụng chỉ quan
tâm đến thời gian trễ không quan tâm đến dữ liệu nhận được nó không dùng data toggle
bit.
4.Truyền đồng bộ(isochronous transfers):
Phần 2: Giao tiếp USB
SV:Trần Quốc Gia Phú, Trần Hạ Long - 26
-Truyền đồng bộ như dòng chảy, một kiểu truyền thời gian thực. Kiểu truyền này thích
hợp nhất với các ứng dụng cần truyền dữ liệu với một tốc độ nhất định, hay một thời gian
đã được xác định trước, với mức độ bỏ qua lỗi có thể chấp nhận được. Ở tốc độ full
truyền đồng bộ truyền nhiều dữ liệu trên một frame hơn truyền ngắt. Nhưng bù lại kiểu
truyền này không cung cấp cơ chế truyền lại các gói dữ liệu khi xảy ra lỗi như mất gói dữ
liệu, nhận sai dữ liệu. Các ứng dụng sử dụng truyền đồng bộ như là giải mã âm thanh và
âm nhạc được vận hành ở thời gian thực.
-Thực tế là dữ liệu trong truyền đồng bô không được truyền ở một tốc độ cố định,
Truyền đồng bộ chỉ là phương thức bảo đảm cho việc truyền một khối lượng lớn dữ liệu
được truyền nhanh chóng trong lúc bus không còn nhiều băng thông, ngay cả khi kiểu
truyền này không bắt buộc phải vận chuyển ở thời gian thực. Không giống như kiểu
truyền bulk, khi một lần truyền đồng bộ được bắt đầu, host phải bảo đảm thời gian tích
cực để có thể gửi dữ liệu tại một tốc độ cố định, vì nguyên nhân này nên việc kiểm tra tốc
độ trên đường truyền xảy ra định kỳ trong những khoảng thời gian rất nhỏ.
a)Tính sẵn sàng:
Kiểu truyền này chỉ thực hiện được ở tốc độ cao hoặc tốc độ full. Giống như truyền
bulk kiểu truyền này không bắt buộc tất cả các thiết bị phải hỗ trợ. Một vài lớp thiết bị
chuyên biệt hỗ trợ kiểu truyền này theo mục đích của người sử dụng.
b)Cấu trúc:
-Do kiểu truyền có tên là đồng bộ nên nó có khả năng truyền với một tốc độ cố định,
với một số định nghĩa trước số byte được truyền trên mỗi frame hoặc microframe. Ngoài
truyền đồng bộ ra thì không có kiểu truyền nào có thể truyền số byte được định nghĩa
trước trên mỗi frame(ngoại trừ truyền ngắt có khả năng đảm bảo thời gian trễ ngắn nhất.
-Truyền đồng bộ hoạt động ở tốc độ full bao gồm một giao dịch IN hoặc OUT trên
một hoặc nhiều frame có khoảng cách bằng nhau. Khi hoạt động ở tốc độ cao thì kiểu
truyền có nhiều tính năng hơn, một yêu cầu có ba giao dịch trên một frame, và có thể nhỏ
hơn khi 1 giao dịch truyền trên 32,768 microframe. Truyền đồng bộ vận chuyển dữ liệu
theo 1 hướng nhất định. Tất cả các truyền chỉ có thể là gồm giao dịch IN hoặc là giao
dịch OUT thôi. Nếu người sử dụng có nhu cầu cấu hình kiểu truyền theo 2 hướng thì phải
chia truyền và đường ống thành 2 phần cho mỗi hướng.
-Trước khi cấu hình 1 đường ống, host phải so sánh kích thước buffer(buffer size)
được yêu cầu với vùng buffer tích cực còn lại, băng thông đang được sử dụng trong
đường bus để quyết định khi nào băng thông yêu cầu được sẵn sàng sử dụng. Một lần
truyền đồng bộ ở tốc độ full được phép tối đa 1023 byte trên frame sử dụng 69% băng
thông, nếu lúc này tồn tại một thiết bị thứ hai sử dụng truyền đồng bộ trên cùng một hệ
thống thì host sẽ từ chối cung cấp đường ống cho nó vì băng thông còn lại không đủ cho
phép thực hiện truyền. Nếu hai thiết bị này. Nếu thiết bị này này sử dụng một giao tiếp
thay thế khác với các gói dữ liệu nhỏ hơn hay một microframe chứa nhiều gói dữ liệu nhỏ
hơn thì host có thể cho phép, hoặc driver cố gắng thử lại lần vào các lần sau với hy vọng
bus được phép tích cực. Khi thiết bị đã được cấu hình, các lần truyền được bảo đảm thời
gian cần thiết.
Phần 2: Giao tiếp USB
SV:Trần Quốc Gia Phú, Trần Hạ Long - 27
Hình 6: Giao dịch đồng bộ IN và OUT.
c)Kích thước gói dữ liệu:
khi hoạt động ở tốc độ full kích thước gói tối đa là 1023 byte, ở tốc độ cao có thể lên
đến 1024 byte. Nếu một lượng dữ liệu không vừa một gói,host sẽ chia một lần truyền ra
làm nhiều giao dịch
d)Tốc độ:
-Thực hiện việc truyền ở tốc độ full có thể đạt đến 1.023 MByte/giây, tốc độ nhỏ nhất
là 1Kbyte/giây. Nó dành 31% băng thông bus cho các loại truyền khác. Giao thức có
overhead là 9 byte tren một frame cho 1 lần truyền với một gói dữ liệu, hoặc thấp hơn 1%
cho một lần giao dịch 1023 byte. Băng thông được yêu cầu tối thiểu cho truyền ở tốc độ
full là 1 byte trên frame hoặc một Kbyte/giây.
-Một giao dịch đồng bộ có thể vận chuyển được tới 1024 byte. Một điểm cuối đồng bộ
yêu cầu nhiều hơn 1024 byte trên microframe có thể yêu cầu 2 hoặc 3 giao dịch trên
microframe, cho phép tốc độ tối đa là 24.576 MByte/giây. Một điểm cuối cần đa giao
dịch trên một frame là điểm cuối có băng thông cao. Overhead giao thức có 38 byte trên
một lần truyền với 1 gói dữ liệu.
Phần 2: Giao tiếp USB
SV:Trần Quốc Gia Phú, Trần Hạ Long - 28
-Vì truyền đồng bộ ở tốc cao không được thực hiện một giao dịch trong mỗi frame
hoặc microframe, nó có thể yêu cầu năng thông ít hơn khi trong tốc độ full. Băng thông
thấp nhất là một byte cho 32,673 microframe, làm cho việc truyền 1 byte mất khoảng
4.096 giây. Tuy nhiên, các điểm cuối có thể truyền dữ liệu ít hơn số băng thông được truy
xuất tối đa bằng việc bỏ qua giao dịch tích cực hoặc truyền ít hơn số dữ liệu tối đa trên
một lần truyền.
-Giống như truyền ngắt, truyền đồng bộ có thể sử dụng nhiều hơn 80% của một
microframe. Khi truyền tổ hợp gồm một truyền và một truyền ngắt ở cùng đồng bộ tốc độ
full có thể sử dụng nhiều hơn 90% của một frame. Các bus rảnh tốc độ cao khác có thể
mang một lúc 2 truyền đồng bộ với tốc độ tối đa.
-Cái giá phải trả cho việc đảm bảo sự phân phối thời gian một khối lớn các dữ liệu
bằng viêc thực hiện truyền không có phát hiện lỗi. Do đó kiểu truyền này chỉ có thể sử
dụng được trong các ứng dụng có thể chấp nhận các lỗi nhỏ.
V)Sự điểm danh:
Trước khi ứng dụng có thể liên lạc được với thiết bị, host cấn phải nhận biết về thiết bị
và gán địa chỉ cho thiết bị. Điểm danh là sự trao đổi đầu tiên về thông tin của thiết bị để
hoàn thành việc nhận biết. Tiến trình bao gồm gán một địa chỉ cho thiết bị, đọc cấu trúc
dữ liệu từ thiết bị, cuối cùng là lựa chọn cấu hình từ các option đã được chọn thông qua
dữ liệu đã truy xuất. Thiết bị được cấu hình và sẵn sàng để vận chuyển dữ liệu thông qua
các điểm cuối đã cấu hình.
1.Tiến trình:
-Một trong những nhiệm vụ của hub là phát hiện thiết bị gắn vào hoặc tháo ra khỏi
máy tính. Mỗi hub có 1 đường ống ngắt(interrupt pipe) In dành cho việc báo các sự kiện
về host. Khi hệ thống khởi động host dùng cơ chế poll tới hub gốc(root hub) để nhận biết
các sự hiện diện của một thiết bị nào đó trên hub, các thiết bị đó có thể là một thiết bị
gắm trực tiếp vào host hoặc một thiết bị cắm vào một hub của một thiết bị đã được cắm
vào máy trước đó. Sau khi khởi động, host tiếp tục dùng cơ chế poll theo định kỳ để nhận
biết các sự kiện trên hub bao gồm việc cắm vào hoặc tháo ra khòi hub của một thiết bị .
-Trong việc nhận biết một thiết bị vừa cắm vào, host gửi một loạt các yêu cầu đến hub
nơi có hiện diện thiết bị nhằm mục tiêu cung cấp một đường liên lạc giữa host và thiết bị.
Sau đó host thử điểm danh thiết bị bằng cách gửi các truyền điều khiển chứa các yêu cầu
USB chuẩn đến điểm cuối 0. Nếu điểm danh thành công, thiết bị phải trả lời bằng cách
trả về thông tin đã yêu cầu và thực thi các hành động đã được host yêu cầu.
-Từ góc nhìn của người sử dụng, việc điểm danh là hoàn toàn tự động và gần như
không thể nhận biết được, ngoại trừ việc hệ điều hành thông báo việc phát hiện ra một
thiết bị mới bất chấp sự điểm danh có thành công hay không. Nhiều lúc người sử dụng
phải cung cấp một đĩa chứa file INF và driver cho thiết bị vừa cắm vào.
Phần 2: Giao tiếp USB
SV:Trần Quốc Gia Phú, Trần Hạ Long - 29
-Trong các thiết bị ngoại vi điển hình, code chương trình của thiết bị chứa thông tin
mà host sẽ yêu cầu, một tổ hợp phần cứng và phần dẻo có tác dụng giải mã và đáp ứng lại
các yêu cầu cho việc thông tin liên lạc. Một vài chip chuyên dụng (ASICs) quản lý sự
điểm danh hoàn toàn trong phần cứng và không cần sự hỗ trợ từ phần dẻo. Về phía host,
user không cần phải viết code xử lý quá trình điểm danh, tất cả các công việc trong quá
trình điểm danh được hệ điều hành xử lý hoàn toàn. Trong lúc điểm danh hệ điều hành sẽ
tìm kiếm một file đặc biệt gọi là file INF, loại file này dùng để định nghĩa driver dùng
cho thiết bị.
-Khi quá trình điểm danh hoàn tất, Windows sẽ cập nhật thêm thiết bị mới vào phần
Device Manager đượ thể hiện trong Control Nanel. Trong Windows ta có thể truy xuất
đến phần này thông qua đường dẫn Start menu > Setting > Control Panel > Performance
and Mainternance > System > Hardware > Device manager. Khi ngoại được tháo bỏ kết
nối với hệ thống, Windows tự động xóa tên thiết bị này ra khỏi màn hình hiển thị.
2.Các bước điểm danh:
-Trong quá trình điểm danh 1 thiết bị phải trải qua 4 trong tất cả 6 trạng thái USB đã
được định nghĩa trong của đặc tả:Powered; Default; Address và Configured(2 trạng thái
không phải trải qua trong qua trình điểm danh là Attached và Suspen). Trong mỗi trạng
thái trên ,thiết bị đã được định nghĩa hành vi và khả năng.
-Người viết phần dẻo của thiết bị không nên cho rằng các yêu cầu và sự kiện điểm
danh sẽ thực thi trong một thứ tự đặc biệt. Tuy nhiên người viết nên cho thiết bị sẵn sàng
chuẩn bị và đáp ứng các yêu cầu điều khiển tại mọi thời điểm.
a)Các bước:
1)Người dùng cắm thiết bị vào cổng USB:
Sự kiện này xảy ra tương dương với việc thiết bị đã cắm vào cổng USB trước khi máy
tính khởi động. Cổng USB này có thể được kết nối trực tiếp với hub gốc tại host hoặc
thông qua 1 hub thứ cấp đã được đấu vào hub gốc trước đó. Sau khi kết nối vào hub, hub
gốc lập tức cung cấp nguồn cho cổng, lúc này thiết bị được gán trạng thái Powered.
2)Hub phát hiện ra thiết bị:
Hub giám sát hiệu điện thế trên 2 đường tín hiệu của mỗi cổng. Lúc đó trên hub xuất
hiện điện trở kéo xuống 15KΩ trên từng đường tín hiệu của cổng(D+ và D-), trong khi đó
bên thiết bị hoạt động ở tốc độ full lại có điện trở kéo xuống 1.5KΩ trên đường tín hiệu
D+ ,nếu thiết bị hoạt động ở tốc độ thấp thì điện trở kéo xuống 1.5KΩ nằm trên đường tín
hiệu D-. Nếu là thiết bị tốc độ cao thì sẽ bị gán tốc độ full. Khi thiết bị cắm vào cổng, kéo
lên(pull-up) của thiết bị sẽ đưa đường truyền lên cao, đây chính là nguyên nhân giúp hub
phát hiện ra sự hiện diện của thiết bị mới. Sau khi phát hiện ra thiết bị, hub tiếp tục cung
cấp năng lượng nhưng chưa thể thực hiện vận chuyển trao đổi dữ liệu, bởi vì thiết bị chưa
sẵn sàng cho việc truyền nhận.
3)Host nhận dạng thiết bị mới:
Phần 2: Giao tiếp USB
SV:Trần Quốc Gia Phú, Trần Hạ Long - 30
Mỗi hub sử dụng đừơng ống ngắt(interrupt pipe) của nó để báo cáo sự các sự kiện xảy
ra trên hub. Một bản báo cáo(report) chỉ thể hiện duy nhất các sự kiện vừa mới xảy ra
trên hub hay cổng. Khi host nhận được môt sự kiện, nó liền gửi đến hub 1 yêu cầu
Get_Port_Status để tìm hiểu thêm sự kiện vừa gửi đến. Get_port_Status là một yêu cầu
nằm trong bộ các yêu cầu Hubclass chuẩn mà tất cả các hub phải hiểu được.Hub trà lời
lại bằng một thông tin báo cho host biết lúc nào thì thiết bị cắm vào.
4)hub phát hiện tốc độ của thiết bị hỗ trợ:
Trước khi hub reset thiết bị, hiểu sẽ tìm hiểu loại tốc độ mà thiết bị hỗ trợ bằng cách
thử hiệu điện thế trên hai đừơng tín hiệu. Thông qua việc xác dịnh hiệu điện thế của
đừơng nào cao hơn khi bus trống hub sẽ quyết định tốc độ cho thiết bị. Kế tiếp hub gửi
thông tin đến host trong lần đáp ứng lại yêu cầu Get_Port_Status lần sau. USB 1.x cho
phép hub lựa chọn để phát hiện tốc độ thiết bị sau reset. Ngược lại, USB 2.0 cần phải xác
định tốc độ để thực thi trước khi bị hub reset, làm như vậy nhằm xác định nó có được
kiểm tra khả năng hoạt động ở tốc độ cao trong quá trình reset, như mô tả ở bước kế tiếp.
5)Hub reset thiết bị:
Khi 1 host nhận biết một thiết bị mới, điều khiển host gửi đến hub 1 yêu cầu Set_Port_
Feature đòi hỏi hubs reset cổng. hub đặt các đường dữ liệu đến thiết bị trong trình trạng
reset trong thời gian ít nhất là 10 ms. Reset là một điều kiện đặc biệt khi mà cả D+ cùng
với D- đều ở mức luận lý thấp. Hub chỉ gửi yêu cầu reset chỉ đối với các thiết bị mới cắm
vào. Các hub và thiết bị khác nằm trên bus không bị ảnh hưởng.
6)hub nhận biết khả năng hỗ trợ tốc độ cao của thiết bị:
-Việc phát hiện này thông qua 2 trạng thái tín hiệu đặc biệt là Chirp K và Chirp J.
Trong trạng thái chirp J, chỉ có đường tín hiệu D+ được điều khiển và trạng thái chirp k,
chỉ đường tín hiệu D- được điều khiển.
-Trong quá trình reset, thiết bị tốc độ cao sẽ gửi một chirp k, hub tốc độ cao phát hiện
trạng thái chirp k ngay, lặp tức hồi báo lại bằng một dãy các chirp k và chirp j. Khi thiết
bị tốc độ cao bắt được một dãy các chirp KJKJKJ, nó liền loại bỏ kéo lên(pull-up) dành
cho tốc dộ full và chuyển sang thể hiện các chức năng của thiết bị tốc độ cao. Nếu hub
không hồi đáp lại chirp KJ, device hiểu được rẳng nó phải tiếp tục thông tin, liên lạc ở tốc
độ full. Tất cả các thiết bị tốc độ cao điều đựơc thiết kế để có khả năng đáp ứng yêu cầu ở
tốc độ full.
7)Hub thiết lập một đường tín hiệu giữa thiết bị và bus:
-Host thẩm định lại rằng thiết bị ra khỏi trạng thái reset bằng việc gửi yêu cầu
Get_Port_Status. Thiết bị phản ứng lại bằng việc trả về một gói dữ liệu, trong gói dữ liệu
có chúa một bit thể hiện việc thiết bị có cỏn nằm trong trạng thái reset hay thôi. Nếu cần
thiết , host sẽ lập lại yêu cầu Get_Port_Status cho đến khi thiết bị thoát khỏi trạng thái
reset.
-Sau khi hub tháo bỏ quá trình reset, thiết bị bây giờ đã chuyển sang trạng thái
Default. Các thanh ghi USB trong thiết bị cũng đã được chuyển sang trạng thái reset và
thiết bị sẵn sàng cho việc đáp ứng truyền nhận thông qua đường ống mặc định tại điểm
cuối 0.Thiết bị lúc này có thể giao tiếp với host, với địa chỉ mặc định được gán là 00h.
Cường độ trong thiết bị có thể đưa lên 100mA từ bus.
Phần 2: Giao tiếp USB
SV:Trần Quốc Gia Phú, Trần Hạ Long - 31
8)Host gửi yêu cầu Get_Descriptor để nhận
Các file đính kèm theo tài liệu này:
- 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.pdf