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
Trang 1ĐẠ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
Trang 2Phầ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
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ị
Trang 3Phầ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
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
Trang 4Phầ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
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
Trang 5Phầ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
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
Trang 6Phầ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
-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ã nă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 )
Trang 7Phầ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
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 :
Trang 8Phầ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
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
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
44-pin QFN 44-pin TQFP
báng1:Những đặc tính thiết bị
Trang 9Phầ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
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ỉ:
Trang 10Phầ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
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 bit
24-PIC16/17 pic
14 bit PIC18 pic 16 bit
dsPIC pic 24 bit
Hệ điều hành Windows ,Linux Windows Windows ,Linux
$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
Trang 11Phầ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
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
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
Trang 12Phầ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
Trang 13Phầ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
tra lỗi văn bản
Có Không Không Không
ROM: 3036 RAM: 293
ROM: 3879 RAM: 30
ROM: 7838 RAM: 148
Time: 42.5 usROM: 416 RAM: 286
Time: 83.4 us ROM: 428 RAM: 22
Time: 27.6 us ROM: 454 RAM: 33
Trang 14Phầ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
ROM: 2083 RAM: 295
ROM: 1705 RAM: 37
ROM: 5042 RAM: 190
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
Trang 15Phầ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
-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
Trang 16Phần 2: Giao tiếp USB
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ả
2 D- Trắng Dữ liệu -
3 D+ Xanh lá cây Dữ liệu +
Bảng3: mô tả các dây trong cáp truyền
2.Điều khiển host:
Trang 17Phần 2: Giao tiếp USB
-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ợ
Trang 18Phần 2: Giao tiếp USB
-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
Trang 19Phần 2: Giao tiếp USB
-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ị có 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):
Trang 20Phần 2: Giao tiếp USB
1.Truyền điều khiển(control tranfers):
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 độ:
Trang 21Phần 2: Giao tiếp USB
Đ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
Trang 22Phần 2: Giao tiếp USB
idle
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
Gói Token Host > thiết bị
Gói data Host > Thiết bị Gói handshakeHost > Thiết bịTruyền điều khiển read, giao dịch SETUP
Host gửi một gói
idle
data error
Gói Token Host > thiết bị
Gói data Host > Thiết bị Gói handshakeHost > Thiết bị
ACK DATA
OUT
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
Trang 23Phần 2: Giao tiếp USB
Hình 4: Các giao dịch trong truyền điều khiển write
Trang 24Phần 2: Giao tiếp USB
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
Trang 25Phần 2: Giao tiếp USB
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
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ị IN IN
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
Trang 26Phần 2: Giao tiếp USB
-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):