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

MỤC LỤC

Giao tiếp USB

Sự ra đời của chuẩn USB

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.

Các cấu thành giao tiếp USB

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. -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.

Các thành phần tham gia vận chuyển

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. -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. 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.

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 kiểu truyền(tranfer)

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. -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ỏ.

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.

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

Sự điểm danh

-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. 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-. Do host chỉ điểm danh thiết bị tại một thời điểm, nen củng chỉ có 1 thiết bị đáp ứng định địa chỉ 00h cho thiết bị, ngay cả khi lúc đp1 trên hub có nhiều thiết bị cùng đấu vào hub cùng một lúc.

Để thực hiện công việc này thiết bị thực hiện gửi nhiều descriptor cấu hình, mỗi descriptor cấu hình theo được theo sau bằng một descriptor giao tiếp(interface descriptor), theo sau mỗi descriptor giao tiếp là một descriptor điểm cuối (endpoint descriptor). Nếu tổng chiều dài của các descriptror này vượt quá 256 byte, host sẽ hòan tất việc truy xuất toàn bộ các descriptor ở lần yêu cầu thứ 3. Trong mỗi descriptor, bắt đầu là byte biểu thị chiều dài và kiểu, cho phép host dựa vào đó phân tách các dữ liệu theo sau trong quá trình giải mã dữ liệu nhận về. 11)Host gán và nạp driver thiết bị.

Giao tiếp từ Host

Host biết được việc thực thi tháo dỡ sau khi sử dụng poll đến hub, biết được sư việc xảy ra, và gửi một yêu cầu Get_port_status để điều tra nguyên nhân. - Một số driver thuộc loại monolithic xử lý mọi thứ từ giao tiếp với ứng dụng để đọc và ghi đến cổng hoặc các địa chỉ nhớ nối đến phần cứng thiết bị. Các loại driver khác, gồm driver cho thiết bị USB, sử dụng mô hình driver phân lớp cho mỗi driver trong một loạt các thể hiện từng bước của việc liên lạc.

Nên có thể nói rằng các driver xử lý liên lạc với hệ thống phần cứng USB đươc tích hợp vào Windows, vì vậy người viết driver không cần phải cung cấp chúng.

Giao tiếp trên host

Mặc dù mô hình driver phân lớp rất phức tạp,nhưng lại đơn giản cho việc viết driver vì các thiết bị có thể chia sẽ code cho các task giống nhau. Code đặc tả thiết bị xử lý các giao thức cần thiết để truy xuất các mạch ngoại vi, gồm việc phát hiện các trạng thái của các tính hiệu status và các tín hiệu điều khiển toggle tại các thời điểm thích hợp. Mặc dù API là các hàm đơn giản cho việc xử lý liên lạc với phần cứng, nhưng nó đòi hỏi phải có đặc tả và các yêu cầu khắt khe cho các giá trị chúng mang di và trả về.

Mặc dù mô hình driver phân lớp rất phức tạp,nhưng lại đơn giản cho việc viết driver vì các thiết bị có thể chia sẽ code cho các task giống nhau.

Host lựa chọn driver

Trong windows có tích hợp một số hàm API(giao tiếp của các ứng dụng người viết) cho phép các ứng dụng giao tiếp với các driver thiết bị. -Khi windows điểm danh một thiết bị USB mới, Device manager so sánh dữ liệu trong tất cả các hệ thống file INF với thông tin trong descriptor truy xuất từ thiết bị trong quá trình điểm danh. -Drvidx.bin liệt kê tên mỗi Vendor ID và Product ID trong các file INF, đi kèm theo là tên các nhà sản xuất, tên nhà cung cấp, và sự mô tả.

Sau khi truy xuất xong Vendor ID và PID từ thiết bị, Device manager sử dụng thông tin trong 2 file này để tìm nhà sản xuất với thông tin về sản phẩm đặc tả.

Thiết kế và thi công mạch giao tiếp USB thuộc lớp HID

Thi công mạch

Dữ liệu hiển thị trong module này bao gồm các byte trong buffer mới nhận về từ host.

Hình 7 :Module kết nối USB và  điều khiển trong Orcard capture cis.
Hình 7 :Module kết nối USB và điều khiển trong Orcard capture cis.

Viết firmware

Công việc này tiêu tốn rất nhiều thời gian cho các đặc tả descriptor, xử lý việc truyền và nhận dữ liệu, viết hàm xử lý các thường trình phục vụ ngắt. Đây là các công việc cơ bản và có phần trùng lắp,tương tự cho nhiều lớp thiết bi, do đó cần có những phần đạc tả chung, giống nhau. Cũng do nguyên nhân này ,hiện nay hầu hết các nhà sãn xuất vi điều khiển tích hợp ngoại vi theo chuẩn USB và các nhà chuyên sãn xuất các trình biên dịch code đã hỗ trợ rất nhiều trong việc định nghĩa các chức năng trên.

Công việc của người phát triển lúc này chỉ còn định nghĩa thiết bị theo một yêu cầu nào đó tùy theo kiểu truyền,tốc độ, các giao tiếp, điểm cuối dựa theo các đặc tính chung của từng lớp thiết bị, người dùng đôi khi cũng có thể định nghĩa lại một số file do nhà sãn xuất hỗ trợ cho các sản phẩm đặc biệt nào đó.

Viết ứng dụng giao tiếp chuẩn USB trên host

Các quy trình để nhận biết một thiết bị usb

Khi sử dụng hàm này ta cần phải đưa nó vào một vòng lặp , mỗi vòng lặp nó sẽ chỉ ra một giao thức nhất định, các vòng lặp sẽ được phân biệt với nhau bởi chỉ số index. Ta sẽ dùng hàm CreatFile để thiết lập kết nối , một khi công việc kết nối thành công thì hàm sẽ trả về handle ,và các hàm khác sẽ dùnng trong việc truyền nhận dữ liệu. Khai báo của hàm là : HANDLE CreateFile(. LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode,. LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition,. DWORD dwFlagsAndAttributes, HANDLE hTemplateFile );.

Đọc ID của nhà sản xuất và thiết bị : khi đã nhận được thiết bị ta chưa thể xác định được đó là thiết bị ta mong muốn và một cách để kiểm tra điều đó là xác nhận ID của nhà sản xuất và thiết bị.