Đồ á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

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

pdf53 trang | Chia sẻ: lethao | Lượt xem: 1661 | Lượt tải: 1download
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:

  • pdfThiế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