PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Giao tiếp USB, CAN, I2C, SPI, USART... (http://www.picvietnam.com/forum/forumdisplay.php?f=45)
-   -   USB có khủng khiếp như bạn nghĩ không? (http://www.picvietnam.com/forum/showthread.php?t=472)

bien_van_khat 16-06-2006 06:49 PM

USB có khủng khiếp như bạn nghĩ không?
 
1 Attachment(s)
Mục đích:
Chỉ có 1 mục đích duy nhất viết 1 firmware đơn giản nhất đến mức có thể cho 18F4550, đủ để nó enumerate + truyền nhận 1 vài gói dữ liệu nhỏ.

Bạn nên đọc:
+USB 2.0 spec ít nhất là chương 8, 9, 10
+USB complete chương 1, 2, 3, 4, 5, 6
+Nên đọc thêm USB design by example, USB in a nutshell.

Bạn cũng cần:
+Ít nhất 1 con 18F4550, 2550, 2455 hoặc 4455
+Mạch điện như sơ đồ đính kèm. Chú ý, vì USB hoạt động ở tốc độ cao, bạn nên sắp xếp để cái USB header hoặc điểm nối giữa cable USB vào board mạch của bạn càng gần con PIC càng tốt. Nếu bạn làm trên test board thì đặc biệt chú ý không để 2 dây nối vào đường D+ và D- chéo nhau.


------------------

16-4-2008: Microchip đã cho ra các dòng chip tích hợp usb embeded host + usb on-the-go, cùng với framework mới để hỗ trợ, các bạn quan tâm có thể tham khảo ở đây

http://www.microchip.com/stellent/id...param=en534494

bien_van_khat 16-06-2006 07:06 PM

1 Attachment(s)
Sau khi có phần cứng bạn có thể nạp ngay cái firmware đính kèm dưới đây để chạy thử.

Firmware bên dưới được sửa từ firmware của microchip bới Mat admin của site www.piccoder.co.uk. Tuy nhiên để chạy được cái chương trình trên máy tính bạn cần .NET framework 1.1 (source code = C#)

Bây giờ là vấn đề chính

Làm việc với USB tôi thấy có 2 điểm khó:
1. Chuẩn USB rất rất phức tạp, USB2.0 spec dài 650 trang, USB complete hơn 500 trang. Tất nhiên để thực hiện được như mục đích đề ra từ đầu bạn cần đọc ít trang hơn nhiều. Bạn hầu như không thể nhớ hết nổi thứ tự của các quá trình, do đó lúc này bạn cần 1 tài liệu tham khảo nhanh, khuyên bạn nên có cuốn "USB in a nutshell" (http://beyondlogic.org/)
2. Rất khó debug, nếu phần cứng của bạn enumerate sai hầu như không có cách gì để debug, trừ khi bạn có 1 thiết bị debug phần cứng giá tính = ngàn dollar.

bien_van_khat 16-06-2006 07:46 PM

Giao thức USB được thực hiện qua nhiều lớp, lớp thấp nhất do module USB (SIE) thực hiền, công việc của bạn là xử lý các yêu cầu dưới dạng các cờ do SIE bật mà thôi.
Để có đầy đủ các cờ bạn tham khảo datasheet. Thực tế bạn cần xử lý ít nhất 2 sự kiên sau:
+RESET (cờ URSTIF): host yêu cầu device reset, bạn bắt buộc thực hiện reset không được cãi. Reset đưa tất cả các enpoint từ 1 - 15 về trạng thái disable, riêng EP0 thiết lập thành control EP. Công việc này được thực hiện với các BUFFER DESCRIPTOR (BD) (xem datasheet).
Xóa thanh ghi UADDR về 0 (thanh ghi USB address). Xóa sạch 4 thanh ghi USB status (USTAT) (coi datasheet chỗ này).
+Transaction complete (TRNIF): Công việc nằm ở đây.
. Xác định xem EP nào vừa xong, từ đó xác định BD nào chứa dữ liệu mới nhận được
. Dựa vào BD.status xác định loại TOKEN vừa được yêu cầu: SETUP, IN, OUT?

bien_van_khat 16-06-2006 08:13 PM

+SETUP TOKEN: cụ thể xem spec
. Xác định loại REQUEST: tối thiểu phải xử lý standard_request.

+STANDARD_REQUEST: Tối thiểu phải xử lý 2 request sau:
GET_DESCRIPTOR, SET_ADDRESS

+SET_ADDRESS: cụ thể xem Spec

+GET_DESCRIPTOR: Tối thiểu bạn phải send DEVICE_DESCRIPTOR và CONFIGURATION_DESCRIPTOR.

vậy bạn send dữ liệu như thế nào khi host yêu cầu?

Ví dụ nó yêu cầu DEVICE_DESCRIPTOR (trong quá trình enumerate bằng GET_DESCRIPTOR request với descriptor type = 1), bạn đưa 8 byte đầu của DEVICE_DESCRIPTOR vào bộ đệm của EP0 (cụ thể coi datasheet phần BUFFER DESCRIPTOR), đảo bit kiểm tra DATA0 - DATA1 nếu cần, set bit UOWN (SIE own buffer descriptor). SIE tự trả lời dùm bạn. Sau khi host nhận được 8 byte nó có thể gửi tiếp 1 IN TOKEN yêu cầu "chưa đủ tui muốn nữa", và bạn phải tiếp tục đẩy dữ liệu vào, đảo bit kiểm tra DATA0 - 1, set UOWN, là dữ liệu lại đi tiếp.

Nếu host muốn gửi dữ liệu cho bạn? nó sẽ gửi 1 OUT TOKEN.

Quá trình enumerate ko sử dụng OUT TOKEN, dữ liệu bạn nhận được đều được đính kèm trong SETUP TOKEN. Vì vậy OUT TOKEN chỉ xày ra sau khi enumerate thành công, trong quá trình truyền nhận dữ liệu thông thường. Khi có 1 OUT TOKEN bạn xác định ở trên EP nào, sau đó nhận dữ liệu ở bộ đệm tương ứng, đảo bit kiểm tra DATA0 - 1, xử lý dữ liệu.

bien_van_khat 16-06-2006 08:41 PM

DATA0 và DATA1: cụ thể xem spec.

Đây là chỗ rất rắc rối, và khó hiểu, nhưng nói chung bạn chú ý điểm này

Gói dữ liệu đầu tiên đi kèm SETUP TOKEN luôn luôn là DATA0, và phase dữ liệu bạn đáp trả bắt buộc là DATA1 ko cần quan tâm tới phase dữ liệu cuối của SETUP TOKEN là DATA0 hay DATA1. Nói cách khác trên EP0 khi xảy ra SETUP TOKEN thì chu trình bị reset lại từ đầu (bạn bắt buộc phải ngừng mọi công việc để xử lý cái TOKEN này, và gói dữ liều đầu tiên mà bạn nhận hoặc sẽ phải gửi là hoàn toàn biết trước loại nào).


Vì tôi viết bài này hơi có 1 chút ... hứng nên một số điểm đưa ra không có dẫn chứng. Tuy nhiên mục tiêu nhắm tới là để mọi người cùng thảo luận để có 1 tut thật dẽ hiểu cho 1 vấn đề rất phức tạp.

Toàn bộ bài viết ko hề giải thích bất kỳ khái niệm nào về giao thức USB mà chỉ nhấn vào 1 mục đích: viết firmware cho 18F4550 phải làm những gì. Do đó để có thể thảo luận hiệu quả bạn nên đọc những e-book mà tôi giới thiệu, tránh những câu hỏi như "DATA0 là gì?" - xin lỗi nhé bạn nên tự tìm hiểu tự hơn!!!

falleaf 16-06-2006 10:22 PM

Chân thành cảm ơn các bài viết của bienvankhat.

Có lẽ từ đây chúng ta sẽ có nhiều điều hay để thảo luận về USB với PIC, vì mọi người sẽ bắt đầu thử nghiệm những gì bạn cung cấp.

Chúc vui.

ntc 17-06-2006 12:43 PM

Em có thấy anh bien_van_khat bên diễn đàn USB của Microchip. :D

Trong giai đoạn sắp tới, em sẽ có cơ hội tiếp xúc và làm việc với USB, hy vọng sẽ có nhiều vấn đề để trao đổi với anh.

Em cũng có ý định tương tự như anh sau giai đoạn này, đó là một tut cực kì đơn giản về USB, nhưng anh làm trước rồi. :D

bien_van_khat 17-06-2006 09:34 PM

hì hì, chính xác thì chưa làm xong mà. Mọi người mà ko góp tay thì chẳng bao giờ xong.

Hỏi trên microchip vừa nhanh vừa được trả lời kỹ, nhưng nếu mình hỏi "ngu" quá nó lại ko thèm trả lời. Đành chịu, nên kiếm anh em thảo luận thì vui hơn.

doianhve 18-06-2006 11:49 AM

USB muỗi !
 
Bạn muốn làm USB của 18f2455/18f24550... thì chẳng có gì khó cả.Chỉ cần có bản CCS bản quyền (Có chứa trong đĩa ICD2) là có ngay ví dụ cho firmware.Cố gắng đọc , sửa và chèn mã code là chạy ngon.Tôi làm cách này chạy ầm ĩ .Dùng hai phần mềm sau để TEST.USBio_demo hay WinDriver.(Chúng có khả năng tự sinh mã code nguồn VB hoặc VC++).Nếu bạn là sinh vien ĐHBKHN nếu cần mang USB đến chỗ tôi,tôi sẽ cho bạn các phần mềm đó.Nhưng phải gửi Mail trước.
why1884@yahoo.com
Chúc bạn thành công.

bien_van_khat 18-06-2006 01:17 PM

Vậy hay quá, sao bạn ko up lên mạng đi. Jungo WinDriver 8.01 thì tôi có rồi, có cả crack nhưng chưa giới thiệu cho anh em, vì tôi nghĩ chưa phải lúc. Còn CCS C như bạn nói thì chưa có. Nếu có thể bạn tạo file ISO cái đĩa của bạn, nén lại, rồi chia nhỏ sau đó upload lên rapidshare.com để mọi người cùng tải về, chứ rất nhiều người không ở Hà Nội cũng muốn được xài. Nếu bạn có host khác nhanh hơn thì càng tốt.

falleaf 18-06-2006 02:58 PM

Cứ là hoạt động chia sẻ, picvietnam sẽ hỗ trợ host cho các bạn làm việc. Hoàn toàn không có vấn đề gì.

Chúc vui

ntc 21-06-2006 07:10 PM

Không biết hôm nay mình đọc được cái chữ USB mắc dịch bao nhiêu lần.

:mad:

Nhức đầu quá.

Hehe, nhưng cũng có một số manh mối rồi.

Bang chủ thông cảm, em đang đóng cửa tu luyện USB, nên không có nhiều thời gian cho diễn đàn lắm.

Sẽ cố gắng viết cho PIC bang một cái TUT về USB.

Lại là cái chữ USB mắc dịch.

:mad:

ntc 21-06-2006 07:11 PM

Anh "doianhve" chia xe cho tụi em một mớ công cụ đi chớ.

Chờ anh bữa giờ.

:D

solua 19-07-2006 04:13 PM

Cám ơn bien_van_khat
đệ cũng đang lam USB. Connect vao ổ cứng(ATA) lấy dữ liệu ma làm mãi vẫn vướng.

bien_van_khat 19-07-2006 09:20 PM

Trước đây khá lâu tớ có thử giao tiếp với cái ổ cứng 2G cũ của tớ. Phần khó nhất là truy xuất file trên trên FAT16. Tính viết một tập các hàm để truy xuất file, nhưng mà phức tạp quá + với ko có thời gian đầu tư cho nó nên đành bỏ ngõ.

pham_dinh_hung83 20-07-2006 09:07 PM

cac bac cu noi hoai ve USB.VAY bac nao lam duoc cai nao hoan chinh day do cho anh em di ,en dc hoai may cai tai lieu cac bac dua thay mu qua ,co le tai em mau len nao cham,bac bien_van_khat cho y kien di chu

pham_dinh_hung83 20-07-2006 09:07 PM

cac bac cu noi hoai ve USB.VAY bac nao lam duoc cai nao hoan chinh day do cho anh em di ,en dc hoai may cai tai lieu cac bac dua thay mu qua ,co le tai em mau len nao cham,bac bien_van_khat cho y kien di chu

bien_van_khat 21-07-2006 01:13 AM

Này nhé, để bắt đầu, bạn kiếm 1 con PIC USB 2.0 như 18F2455, 2550, 4455, 4550, về lắp mạch phát triển. Xong nạp firmware có sẵn của microchip chạy thử để đảm bảo là mạch của bạn ok. Sau đó bạn có thể tự viết firmware cho riêng bạn = c18 chẳng hạn, nếu ko có thể dùng thư viện có sẵn của CCS C (cái này dùng cực kỳ dễ so với xây dựng từ con số 0) để phát triển ứng dụng.

Một cái khó gặp phải khi bạn tự viết firmware là debug, bạn hầu như ko thể biết firmware của bạn sẽ hoạt động hay ko, cho tới khi bạn đã viết 1 đống code, mà lúc này thì cực kỳ khó để dò lỗi.

Ý định của tôi chỉ là thảo luận cùng các bạn để tạo thành 1 tut chứ ko phải tôi viết tut, vì kiến thức tôi còn lỗ chỗ, nhiều thành viên khác đã làm về vấn đề này, chẳng qua tôi chỉ là người kêu gọi mà thôi, hơn nữa tôi cũng ko có nhiều thời gian dành cho diễn đàn.

Lúc ban đầu khi bắt đầu tìm hiểu, tôi cũng đã lục tung internet để kiếm tut nhưng hoàn toàn ko có (hoặc tìm ko ra). Cuối cùng tôi bắt đầu bằng cách phân tích code mẫu để giải thích những gì tôi đọc được từ usb spec, tiếp theo là hỏi, hỏi rất nhiều, ở cả nhiều nơi, nhiều câu giờ nghĩ lại tôi thấy chuối vô cùng (vì ko đọc kỹ mà). Đến giờ tôi nhận định thật ra USB phức tạp chứ ko khó, do đó nếu bạn muốn tìm hiểu nó bạn nên bắt đầu, và những thành viên ở picvietnam đã biết ít nhiều sẽ sẵn sàng giúp bạn nếu có thể.

dohoangnam 21-07-2006 11:49 AM

Tôi thấy USB này thực sự khó, các anh em nào làm rồi làm ơn chia sẻ kinh nghiệm quý báu cho mọi người nhé! Cảm ơn các anh em nhiều!!!
Thân.

dohoangnam 21-07-2006 11:53 AM

Tôi có dự định làm thử 1 con ổ USB Flash khoảng 64 MB. Không biết có quá khó khăn không nhỉ. Chip thì đương nhiên là PIC, còn Flash có thể là NAND. Anh em nào có thể giúp tôi với, hay cùng tôi làm vậy!

Ngoc Du 21-07-2006 07:44 PM

Trích:

Nguyên văn bởi dohoangnam
Tôi có dự định làm thử 1 con ổ USB Flash khoảng 64 MB. Không biết có quá khó khăn không nhỉ. Chip thì đương nhiên là PIC, còn Flash có thể là NAND. Anh em nào có thể giúp tôi với, hay cùng tôi làm vậy!

Chào bạn Nam
Bạn làm thử nghiệm về USB là điều rất quý (hiện nay cái khoản giao tiếp này có vẻ ít người theo đuổi). Nhưng mình xin góp ý thế này. Một đề tài sẽ có ý nghĩa hơn nếu sau khi ta thực hiện thì ngoài việc nắm được kiến thức cho bản thân, cái sản phẩm của đề tài nó có khả năng thương mại hóa hay ít ra là nó có thể gần với thực tiễn để có thể áp dụng vào trong một số sản phẩm khác. Nếu làm một ổ USB thì tuy cũng có thể làm phần lưu trữ cho một vài ứng dụng song nó sẽ khó có hy vọng thương mại hóa khi bạn dùng PIC bởi sản phẩm bạn làm ra chắc chắn sẽ có giá thành đắt gấp mấy lần cái USB 64M mà ta mua ngoài thì trường. Bạn nên đi theo hướng làm các thiết bị đo lường, điều khiển kết nối với PC qua cổng USB thì sẽ thực tế hơn. Hiện nay chuẩn USB đã định nghĩa lớp thiết bị đo lường vì thế nếu làm loại thiết bị này thì có khả năng (chỉ là có khả năng thôi đó) bỏ qua khâu viết driver cho thiết bị. Việc không phải viết driver cho thiết sẽ làm giảm gánh nặng với một người mới nghiên cứu về USB, mình nghĩ là như vậy.
Về tài liệu thì mình có thể gửi cho bạn bản dịch một phần của hai cuốn USB specification và USB complete do mình dịch, có thể là không đúng lắm hoặc khó hiểu song mình tin là nếu mới tìm hiểu về USB thì nó sẽ giúp bạn nắm được một vài thuật ngữ của USB. Thế nhé, nếu thấy cần thì cho mình địa chỉ email mình gửi cho.

bachelor1979 21-07-2006 08:28 PM

Trích:

Nguyên văn bởi Ngoc Du
Chào bạn Nam
Bạn làm thử nghiệm về USB là điều rất quý (hiện nay cái khoản giao tiếp này có vẻ ít người theo đuổi). Nhưng mình xin góp ý thế này. Một đề tài sẽ có ý nghĩa hơn nếu sau khi ta thực hiện thì ngoài việc nắm được kiến thức cho bản thân, cái sản phẩm của đề tài nó có khả năng thương mại hóa hay ít ra là nó có thể gần với thực tiễn để có thể áp dụng vào trong một số sản phẩm khác. Nếu làm một ổ USB thì tuy cũng có thể làm phần lưu trữ cho một vài ứng dụng song nó sẽ khó có hy vọng thương mại hóa khi bạn dùng PIC bởi sản phẩm bạn làm ra chắc chắn sẽ có giá thành đắt gấp mấy lần cái USB 64M mà ta mua ngoài thì trường. Bạn nên đi theo hướng làm các thiết bị đo lường, điều khiển kết nối với PC qua cổng USB thì sẽ thực tế hơn. Hiện nay chuẩn USB đã định nghĩa lớp thiết bị đo lường vì thế nếu làm loại thiết bị này thì có khả năng (chỉ là có khả năng thôi đó) bỏ qua khâu viết driver cho thiết bị. Việc không phải viết driver cho thiết sẽ làm giảm gánh nặng với một người mới nghiên cứu về USB, mình nghĩ là như vậy.
Về tài liệu thì mình có thể gửi cho bạn bản dịch một phần của hai cuốn USB specification và USB complete do mình dịch, có thể là không đúng lắm hoặc khó hiểu song mình tin là nếu mới tìm hiểu về USB thì nó sẽ giúp bạn nắm được một vài thuật ngữ của USB. Thế nhé, nếu thấy cần thì cho mình địa chỉ email mình gửi cho.

Bạn có thể post bản dịch lên diễn đàn được ko ? Để mọi người cùng dùng. Tôi cũng đang muốn tìm hiểu về USB, nếu có thể bạn hãy gửi bản dịch cho tôi theo địa chỉ: vivabachelor@yahoo.com , xin cảm ơn trước !

ntc 22-07-2006 11:08 PM

Oạch.

Dịch cả hai cuốn USB Complete và USB specification?

Bó tay.

:D.

Bạn có thể up lên host free của PICVIETNAM mà.

Còn về vấn đề tìm hiểu USB theo qui trình như thế nào, mình có một vài ý kiến như thế này:

Các bước tiến hành:

Bước 1: nắm môt số khái niệm cơ bản (endpoint, pipe, descriptor, qui trình kết nối, các dạng truyền... )

Bước 2: kiếm một cái firmware có sẵn, sau đó đọc cho bằng hiểu cái firmware đó được viết như thế nào.

Bước 3: vào www.comvon.com để hiểu thêm về thư viện dll và cách sử dụng thư viện "mpusbapi.dll".

Bước 4: dựa vào các hàm trong thư viện "mpussbapi.dll" để xây dựng chương trình ứng dụng trên máy tính.

Có lẽ đây là các bước tìm hiểu đơn giản nhất.

Theo mình thì lúc nào cũng phải kè kè cuốn "USB specification" mới được. Chú ý cái phần protocol, phải nắm được nó tương đối kĩ.

Ngoc Du 23-07-2006 01:58 AM

Trích:

Nguyên văn bởi ntc
Oạch.

Dịch cả hai cuốn USB Complete và USB specification?

Bó tay.

Mình đâu có thừa hơi mà đi dịch hết cả hai cuốn USB Complete và USB specification. Mình đã nói là chỉ dịch một phần thôi mà (kết hợp với một vài tài liệu khác). Cái đó nếu mình học để biết thì thường mình cũng chẳng dịch để làm gì, đọc hiểu cho nhàn thân, lí do là phải gõ phần lý thuyết về USB vào đồ án nên mình mới dịch. Mà mình nói thật với mọi người là nếu có đọc tài liệu dịch thì chỉ là đọc tham khảo thôi, đọc để lấy vài cái khái niệm khái quát, đọc để hiểu qua loa. Chứ muốn làm sản phẩm giao tiếp USB thì phải đọc nguyên gốc bản tiếng Anh của nó (đọc tiếng Việt dễ bị tam sao thất bản lắm).
Cái tình tự nghiên cứu về USB mà ntc nêu ra ở trên thì mình thấy cũng hợp lý rồi chỉ xin bổ xung với mọi người một điều thế này để mọi người có thể nhanh chóng cho ra sản phẩm USB. Mình thấy nghiên cứu về USB thì có một phần mà mình cho là rất quan trọng đó là các lớp thiết bị được định nghĩa. Phần này sẽ giúp ta hình dung ra sản phẩm của mình sẽ trao đổi dữ liệu với host bằng kiểu truyền gì? Dùng loại điểm cuối nào? Định dạng của gói dữ liệu ra sao? Có cần phải viết driver cho sản phẩm hay không? có phải viết phần mềm ứng dụng trên host hay không?...Tuy phần này quan trọng như vậy song trong USB specification lại gần như không đả động đến còn USB complete thì dành nhiều thời gian để nói về lớp có ứng dụng mạnh nhất là lớp HID (Human Interface Device). Chính vì vậy để làm sản phẩm USB thì hai trang web sau nên là địa chỉ thăm hỏi thường xuyên của mọi người: www.usb.org ; www.lvr.com . Một chút xíu nữa muốn góp ý là nếu ai định dùng chip USB có lõi vi điều khiển họ MCS51 thì nên đọc cuốn USB Design by Example còn nếu không dùng chíp họ này thì cũng không cần đọc quyển đó làm gì cho mất thời gian.
Có một điều an ủi để mọi người tự tin tìm hiểu USB là chíp USB có khá nhiều chủng loại. Có loại thì chỉ là một bộ USB transceiver và một tập các thanh ghi để cho một con vi điều khiển nào đó truy cập điều khiển nó. Vi điều khiển có thể giao tiếp với USB tranceiver bằng rất nhiều chuẩn phổ biến như I2C , parallel. Có loại thì là vi điều khiển hỗ trợ giao tiếp USB (loại này là đa dạng phong phú lắm đấy). Ngoài ra với những ai chỉ có mục đích truyền một mảng dữ liệu lên máy tính chủ (host) sau đó trên máy tính có phần mềm để nhận, gửi và xử lí dữ liệu thì lại không cần nắm rõ chuẩn USB lắm đâu, chỉ cần mua con FT232BM chẳng hạn (con này thấy bảo hàng Mai Khanh có bán với giá 85k thì phải) sau đó tập trung vào khâu viết phần mềm trên máy tính thôi còn phần từ vi điều khiển hướng lên thì thành RS232 mất rồi. Chíp USB không chỉ nhiều chủng loại như mình vừa nói mà đi kèm với mỗi con chíp đó bạn còn được chăm sóc đến tận chân răng. Nói túm lại là có rất nhiều sample code, application notes, rồi có khi là cả những Project ngon lành chỉ việc đem về mà tham khảo. Các project này nó còn hướng dẫn tỉ mỉ là nếu áp dụng vào trường hợp của mình thì có thể phải sửa phần nào và tận dụng được phần nào. Chính vì vậy anh em cứ tự tin mà làm thôi!

ntc 23-07-2006 03:43 PM

Trích:

Mình thấy nghiên cứu về USB thì có một phần mà mình cho là rất quan trọng đó là các lớp thiết bị được định nghĩa. Phần này sẽ giúp ta hình dung ra sản phẩm của mình sẽ trao đổi dữ liệu với host bằng kiểu truyền gì? Dùng loại điểm cuối nào? Định dạng của gói dữ liệu ra sao? Có cần phải viết driver cho sản phẩm hay không? có phải viết phần mềm ứng dụng trên host hay không?...Tuy phần này quan trọng như vậy song trong USB specification lại gần như không đả động đến còn USB complete thì dành nhiều thời gian để nói về lớp có ứng dụng mạnh nhất là lớp HID (Human Interface Device).
Về định nghĩa device, các vấn đề này cũng được đề cập đó chứ bạn. Nó nằm trong cái phần nói về các descriptor. Các descriptor sẽ là cơ sở để định nghĩa các lớp device. Tuy nhiên, nếu chỉ đọc trong cuốn "USB specification" thì khó mà hình dung ra được các vấn đề, thậm chí không hiểu được nó đang nói về cái gì nữa. Cái này, nếu đọc hiểu một firmware có sẵn, thì sẽ hình dung rõ ràng hơn, coi thử cái firrmware nó định nghĩa như thế nào, mình học theo để làm thì sẽ dễ dàng hơn. Mình nghĩ là như vậy.

Về định dạng của gói dữ liệu, chắc chắn tài liệu nào cũng sẽ đề cập. Ý của bạn muốn nói định dạng gói dữ liệu cho mục đích sử dụng? Cái đó sẽ tùy theo ứng dụng của mình để xây dựng cho phù hợp. Gói dữ liệu phục vụ cho mục đích ứng dụng sẽ phải có được sự thống nhất giữa chương trình trên máy tính (nếu có) và firmware.

USB Comlpete thì đưa ra các ví dụ về ứng dụng sơ sài quá, đúng là chỉ tập trung vào HID, mà mình thấy cũng chẳng đâu vào đâu. Trong khi USB specification thì tập trung nhiều vào việc mô tả USB, và phải nói là thực sự hết sức chi tiết.

Nếu chỉ dựa vào hai cuốn này thì việc xây dựng một ứng dụng USB cũng còn rất mơ hồ. Mình chọn cách tiếp cận các ứng dụng đã có sẵn, và dựa vào các tài liệu này để giải thích, và tìm hiểu tại sao ứng dụng lại được xây dựng như vầy, như vầy, firrmware tại sao lại viết như vầy, như vầy, ... từ đó các vấn đề về USB dần dần hiện lên rõ ràng hơn, và việc xây dựng các ứng dụng sẽ thuận lợi hơn.

Sau đó, nếu thích, có thể viết lại firmware, viết lại driver, ... Lúc đó các kiến thức đã được liên kết lại với nhau, và dễ tiến hành hơn.

bien_van_khat 25-07-2006 01:13 AM

He he, bất cứ tài liệu nào mà có thêm cái đuôi là specification thì chỉ đáng dùng để tra cứu, nó quá đầy đủ + cô đọng tới mức chẳng biết sử dụng thông tin trong đó làm sao.

Trích:

Nguyên văn bởi ntc
Nếu chỉ dựa vào hai cuốn này thì việc xây dựng một ứng dụng USB cũng còn rất mơ hồ. Mình chọn cách tiếp cận các ứng dụng đã có sẵn, và dựa vào các tài liệu này để giải thích, và tìm hiểu tại sao ứng dụng lại được xây dựng như vầy, như vầy, firrmware tại sao lại viết như vầy, như vầy, ... từ đó các vấn đề về USB dần dần hiện lên rõ ràng hơn, và việc xây dựng các ứng dụng sẽ thuận lợi hơn.

Giống tui :D, mất cả buổi ngồi xóa từng dòng code để rút ra được những đoạn code mấu chốt.
Trích:

Sau đó, nếu thích, có thể viết lại firmware, viết lại driver, ... Lúc đó các kiến thức đã được liên kết lại với nhau, và dễ tiến hành hơn.
Tuy nhiên tui ko hề có ý định viết driver, dù tui viết chương trình nhiều hơn thiết kế board :D. Theo ý tui, tốt nhất nên chọn HID hoặc dùng driver open source như tui giới thiệu (cẩn thận nếu xài cái này, nó theo giấy phép GNU).

Ngoc Du 01-08-2006 02:12 AM

Trích:

Nguyên văn bởi ntc
Bạn có thể up lên host free của PICVIETNAM mà.

Mình đã up lên host của Tailieuvietnam tài liệu nói sơ lược về USB. Các bạn có thể download tại: http://tailieuvietnam.net/download/u...uoc ve usb.rar

ntc 01-08-2006 02:04 PM

Bạn thử up lại xem sao. Mình không thấy tài liệu của bạn trên host.

Cũng muốn đọc tài liệu của bạn, nếu được, mình sẽ cùng nhau thảo luận về USB từ các tài liệu này, cho nó cụ thể hơn một chút.

Ngoc Du 01-08-2006 07:20 PM

Trích:

Nguyên văn bởi ntc
Bạn thử up lại xem sao. Mình không thấy tài liệu của bạn trên host.

Cũng muốn đọc tài liệu của bạn, nếu được, mình sẽ cùng nhau thảo luận về USB từ các tài liệu này, cho nó cụ thể hơn một chút.

Minh Up lên rồi nhưng vừa rồi vào xem lại thì thấy thư mục của mình bị xóa. Không rõ là vì lí do gì? Mình đã up lại rồi. Bạn có thể down về bằng link ở bài viết ngay trên của mình.

pham_dinh_hung83 20-09-2006 01:14 AM

các bác ơi AD 4550 qua HID dùng vb ngon lành,kết quả hiện thị dạng số
bây giờ vẽ nó dạng đồ thị hiện sóng trên vb6.o thế nào đây
bác biển vẫn khát chỉ giáo tiếp nhé,cảm ơn bác về lời chỉ giáo lần trước nhé

bien_van_khat 20-09-2006 10:57 AM

1 Attachment(s)
Ý bạn là dùng VB để vẽ đồ thị từ các giá trị mà bạn nhận được đúng không? Nếu đúng thế thì bạn tham khảo file này nhé.

pham_dinh_hung83 20-09-2006 09:37 PM

cám ơn bác nhiều nhe,tốt quá rồi,nhờ bác cả đó,bác ở đâu e còn hậu tạ,ko thì cho số điện thoại đi,em có 1 chút này muốn hỏi bác tiếp: em muốn đưa kết quả đo đấy vào 1 cơ sở dữ liệu dung chung cho nhiều chương trình
, ví dụ matlap để phân tích furie nó chẳng hạn thì tham khảo ở đâu hở bác

bien_van_khat 20-09-2006 10:10 PM

Hì tớ ko biết matlab, nhưng hình như là muốn làm vậy bạn chỉ cần lưu dữ liệu lấy được vào 1 file text theo 1 định dạng của matlab, sau đó load số liệu đó vào 1 biến, rồi dùng biến đó mà phân tích.

Tớ ko rõ là matlab có chơi được với MSACCESS, MSQL, hay đại loại mấy hệ quản trị CSDL thông dụng đó hay ko. Vì nếu bạn muốn lưu vào đó thì dễ ợt, cuốn sách nào về lập trình lại ko nói về kết nối CSDL.

NTVinh 21-09-2006 09:53 AM

Anh em ơi, ai có giải pháp gì cho việc cách ly cổng truyền thông USB không vậy? Vấn đề là những con cách ly kiểu 4N35... thì nó không chịu nổi với tốc độ truyền thông cao.

pham_dinh_hung83 21-09-2006 09:44 PM

có giải pháp rồi cảm ơn bác bvk nhé, bác ở hà nội à,ở đâu vậy

thanhlam171 23-11-2006 09:40 PM

Cac bac oi,em dang nghien cứu về giao tiếp giữa 2 máy tính bằng cổng USB.Các bác cho em tai liệu nói về USB voi.Em đang rất cần...rất cảm ơn các bác.

ntc 27-11-2006 11:35 AM

http://www.picvietnam.com/forum//showthread.php?t=422

:)

tranhuyky 01-12-2006 10:50 AM

mình download không duoc file này
 
Trích:

Nguyên văn bởi Ngoc Du (Post 4234)
Mình đã up lên host của PICVIETNAM tài liệu nói sơ lược về USB. Các bạn có thể download tại: http://picvietnam.com/download/uploa..._ve_USB2.0.rar

Bạn ơi, bạn có thể upload lên lại, hay gởi cho mình file này được không. tranhuyky@yahoo.com. cám ơn bạn nhiều nha.

Ngoc Du 02-12-2006 03:18 AM

Trích:

Nguyên văn bởi tranhuyky (Post 6208)
Bạn ơi, bạn có thể upload lên lại, hay gởi cho mình file này được không. tranhuyky@yahoo.com. cám ơn bạn nhiều nha.

link mới http://tailieuvietnam.net/download/u...uoc ve usb.rar

PARABOL 17-01-2007 12:45 AM

mình biết về giao tiếp usb bằng easyHID thì nhiều người làm được sao không post lên cho anh em chưa biết học tập.


Múi giờ GMT. Hiện tại là 01:38 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam