PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp USB, CAN, I2C, SPI, USART...

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 26-06-2006, 08:46 PM   #13
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Trích:
Nguyên văn bởi doianhve
Xin chào các sư huynh !Đệ tham gia diễn đàn khá lâu nhưng hôm nay mới có thể viết bài lên để gop vui chung với các huynh được.Thấy mọi người nói nhiều về USB đệ xin mạo muội có một vài ý kiến sau:
VB thừa sức viết được để nhận code từ USB thậm trí cả VC++.VC#,boland...Nhưng mà mã code của nó dài kinh khủng.
Khi viết cho USB nhận thấy hay tràn bộ nhớ ảo.(Chẳng hiểu vì sao chắc tại đệ kém quá).Nhưng bảo đảm vẫn chạy tốt.
À mà các huynh làm gì phải lo lắng tìm phần cứng mới viết phần mềm.cứ viết nhận dữ liệu qua đường USB thông qua con USB Mouse (60k) đỡ mất thời gian mà nó chắc chắn chạy đúng.
he he, xin lỗi trước nhé, tui muốn hỏi mấy câu, vì ngứa miệng í mà.

dùng VB để nhận từ USB, nhưng cụ thể bạn nhân cái gì? Vì giao thức USB chỉ là nền tảng, các thiết bị được xây dựng dựa trên cái nền ấy, mỗi thiết bị có một chức năng riêng dẫn tới cái gọi là giao thức thiết bị riêng. Thế mới sinh ra hàng đống class thiết bị + thêm cái vendor specified class, chắc mọi người hiểu các cụm từ này, tui ko dịch được.

Nhận hay truyền dữ liệu đều phải qua các driver, cái driver của bạn làm trung gian = 1 số các hàm mà nó hỗ trợ. Thí dụ driver của thằng microchip sau khi cài vào nó coi cái USB full-speed demo board là 1 file, tiếp đó microchip nó còn tốt bụng cung cấp thêm file MPUSBAPI.dll để giao tiếp với cái file này. Vậy vấn đề của user chỉ đơn giản là chơi với cái dll này = vài API vô cùng đơn giản. Vậy tui xài bất kỳ ngôn ngữ nào có hỗ trợ gọi API đều có thể giao tiếp được với hardware của tui một cách đúng nghĩa.

Ngoài ra còn có 1 cái driver open source + free đáng tiền khác là thằng USB lib. Cái lib này cũng cung cấp 1 dll để giao tiếp với driver của nó. Nhưng các API mà nó cung cấp thì gần với giao thức phần cứng, tức là đa dụng hơn, tui chưa thử nhưng tui nghĩ nó có thể giao tiếp với bất kỳ thiết bị USB nào. Vấn đề là phải nắm rõ cấu trúc của cái thiết bị cần giao tiếp + nắm giao thức.

Tiện tay đang có hứng viết luôn. Làm sao PC biết được thiết bị USB nào ứng với cái driver nào?
Khi bạn cắm thiết bị vào PC, 1 quá trình phức tạp diễn ra gọi là enumeration, mục đích là nhận dạng thiết bị. Sau quá trình này host có được vendor ID và product ID cùng với class ID của thiết bị. Hai giá trị VID và PID xác định duy nhất 1 dòng thiết bị vì vendor ID là duy nhất ứng với mỗi nhà sản xuất (muốn có phải đăng ký với USB.org + 1 ít money), product ID do nhà sản xuất gán. Nếu PC lục trong registry ko thấy cái VID + PID của thiết bị, nó sẽ load cái driver chung cho cái class của thiết bị, nếu class này được hỗ trợ, còn không nó bung cái popup hỏi driver đâu?

Mỗi driver sẽ được đính kèm 1 file .inf. Bên trong file này có 1 số thông tin về thiết bị, nhưng quan trọng nhất vẫn là thằng VID + PID. Nếu bạn sửa 2 cái này đúng với cái VID + PID của hardware, windows sẽ OK ngay lập tức, nhưng nó có chạy hay ko thì không biết.
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam