2010-11-22 36 views
22

Tôi muốn lập trình một vi điều khiển (AVR) để điều khiển một số đèn LED thông qua USB. Nó chỉ là quan tâm đến cách xây dựng và lập trình các thiết bị USB. Có một số vi điều khiển AVR hỗ trợ giao thức USB hoặc tôi có thể thực hiện giao thức USB trong một vi điều khiển khác, nhưng tôi tự hỏi nên sử dụng gì để viết trình điều khiển của riêng bạn trên máy tính.Lập trình USB

mức tôi trong lập trình hệ thống: Tổng Noob (vì thế câu hỏi)

Vì vậy, những gì là các tài liệu bạn mọi người sẽ tư vấn để có được kiến ​​thức tốt về công nghệ USB và làm thế nào để viết trình điều khiển của riêng bạn và hơn thế nữa?

PS: Tôi biết:

  • C (có thể sẽ cần đến nó ở đây)

  • Java (có thể sẽ không cần đến nó ở đây)

  • Python (hy vọng có thể sử dụng nó tại đây)

  • trình lắp ráp (hy vọng sẽ không cần ở đây XD).

  • ...

P.P.S: phát triển tài xế khác cho hệ điều hành khác nhau. Tôi sử dụng Linux và Windows, vì vậy bất kỳ tài liệu nào liên quan đến một hoặc cả hai hệ thống này đều được chào đón.

Trả lời

0

Khu vực tài liệu Microsoft của WDK (Bộ công cụ phát triển Windows) gần đây đã có trên MSDN. Có một phần trên USB, mặc dù bạn sẽ tốt nhất để đọc các phần trước, đặc biệt là các vùng "Bắt đầu". Họ cho rằng bạn sẽ sử dụng C làm ngôn ngữ lập trình để phát triển trình điều khiển.

Đối với Linux, trang web Linux USB sẽ có thể chỉ cho bạn đi đúng hướng. Đặc biệt bạn sẽ muốn có Programming Guide for Linux USB Device Drivers.

+0

Các lập trình hướng liên kết không hoạt động – Benubird

0

Một cách tốt để đi chỉ là phát triển thiết bị HID, vì trình điều khiển được tích hợp ở hầu hết các hệ điều hành cấp cao hơn và khá linh hoạt cho IO đơn giản như bạn đang nói đến. Một lựa chọn tốt khác là chỉ sử dụng thiết bị hoặc phần mềm USB RS232. Tôi sử dụng PIC mà có một số thiết bị tốt đẹp với USB onboard.

9

Vâng, mặc dù bạn có thể phát triển và viết trình điều khiển USB của riêng bạn, vẻ đẹp của USB là bạn không cần phải viết trình điều khiển của riêng bạn. các USB Implementers Forum đã xác định thông số kỹ thuật lớp cho tất cả các lớp thiết bị tiêu chuẩn. Nếu bạn có thể làm cho thiết bị của bạn phù hợp với một lớp thiết bị tiêu chuẩn trình điều khiển đã được viết cho bạn!

Nếu bạn thực sự muốn làm quen với phát triển USB, bạn nên bắt đầu bằng cách xem lại USB approved class specification documents.

5

Nếu bạn tham gia vào khung điều khiển vi điều khiển AVR bằng USB phần cứng, hãy xem LUFA và nếu bạn sử dụng AVR bằng phần mềm USB, hãy xem V-USB.Họ có cả hai thực hiện nhiều lớp học USB, do đó bạn không phải làm điều đó một mình - chỉ cần sử dụng chúng.

+2

Cả hai dự án này đều rất hữu ích trong không gian usb avr –

3

Điều đó nghe có vẻ giống như một dự án tuyệt vời! Tôi muốn đề nghị bắt đầu với một cái gì đó đơn giản hơn một chút kể từ khi bạn - như bạn nói - một "tổng số n00b". Tôi không chắc chắn những gì phần cứng bạn hiện đang có (hoặc có trong tâm trí) nhưng những gì tôi sẽ đề nghị cho người mới bắt đầu tổng số là STK500. Đó là một bảng phát triển được hỗ trợ rất tốt trong cả Linux và Windows và sẽ mang đến cho bạn sự linh hoạt nhất. Nó đi kèm với đèn LED và công tắc được tích hợp cho các dự án của bạn, nhưng bạn sẽ cần phải có được một vi điều khiển. Và tôi khuyên bạn nên sử dụng ATMega32, một vi mạch đa năng tuyệt vời cũng được hỗ trợ tốt và có nhiều tài liệu trên web.

Khi bạn nhận được chúng, tôi khuyên bạn nên phát triển trên Linux bằng cách sử dụng avr-gcc (đảm bảo cũng cài đặt avr-libc). Nếu bạn đang sử dụng Ubuntu, thật dễ dàng để có được tất cả các gói bạn cần:

% sudo apt-get install gcc-avr avr-libc avrdude 

Những thứ đó sẽ giúp bạn thiết lập và hoạt động. Tôi muốn đề xuất Googling để giúp viết các chương trình đầu tiên của bạn nhưng một tài nguyên tốt khác là tài liệu trực tuyến cho this class at Cornell.

Đủ để làm cho bàn chân của bạn bị ướt với vi điều khiển AVR và các công cụ phát triển. Bầu trời là giới hạn tại thời điểm đó nhưng kể từ khi bạn nói rằng bạn muốn nhận được vào USB tôi đề nghị sử dụng các khuôn khổ V-USB tuyệt vời để có ATMega32 của bạn hoạt động như một thiết bị USB. Sau đó, như họ nói, các bước để lật đèn LED là một miếng bánh :).

+0

mẹo tốt: v-usb - cũng có sơ đồ tốt - dễ dàng để tự làm –

3

Tôi tự hỏi những gì để sử dụng để viết trình điều khiển của riêng bạn trên máy tính

  1. libusb (here, herehere)
  2. wdk
  3. WinDriver

Đối với các biến thể libusb thông tin, hãy đọc this

1

Bạn có thể cho chúng tôi libusb. Nó mạnh mẽ và đa nền tảng.

Nhưng những gì bạn đang cố gắng làm là một giao diện điều khiển khá đơn giản. Bạn có thể bỏ qua hầu hết sự phức tạp bằng cách sử dụng HIDAPI, tôi nghĩ vậy.

http://www.signal11.us/oss/hidapi/

thiết bị HID thường sử dụng trình điều khiển chung mà đến đóng gói vào hệ điều hành. Bằng cách đó bạn không thực sự phải viết bất kỳ trình điều khiển bao giờ, bạn chỉ cần làm cho thiết bị của bạn phù hợp với trình điều khiển chung và điều chỉnh phần mềm máy khách với nó.

Tôi nghĩ rằng đây là những gì thường được thực hiện trong lĩnh vực thiết bị điện tử hobbyist, đó là những gì bạn quan tâm ở đây.

HIDAPI thậm chí còn được đề xuất cho các liên lạc đơn giản với các thiết bị HID trong Câu hỏi thường gặp về libusb vì nó phức tạp hơn một chút để thực hiện trên các nền tảng sử dụng libusb.

0

Tôi đã xây dựng giường thử nghiệm của riêng mình dựa trên ARDUINO UNO và tôi đang sử dụng trình lập trình ionlabs loại usbasp và nó hoạt động hoàn hảo nhưng không cho phép chuyển đổi TTL trở lại Rs-232 và do đó tôi không thể t sử dụng các tính năng như nối tiếp.print() và tôi đã phải cài đặt cáp ftdi cho phép tôi làm điều này. Các trình điều khiển được libusb 1.xx làm việc tốt.

Nếu bạn muốn lập trình AVR, bạn có thể sử dụng gói phần mềm ARDUINO hoặc stino để tải lên các chương trình. Bạn cần biết c (chỉ cơ bản).

0

Tôi đã tạo bộ điều hợp bàn phím USB vào năm ngoái cho nội dung quảng cáo của mình. Tôi không làm chương trình máy chủ nhưng đã sử dụng mã hiện có mà bạn có thể tìm thấy trên web.Nhưng tôi đã lập trình bên thiết bị và tôi nhận được rất nhiều trợ giúp từ trang web này Teensy Xem "Thư viện mã" của họ có mã cho Bàn phím, chuột và những người khác. Ngoài ra, sổ tay giao thức USB sẽ luôn hữu ích và bạn nên luôn luôn tham khảo khi bạn đang làm công cụ với USB.

0

Tôi tự hỏi liệu AVB của bạn có hoạt động như một máy chủ hoặc thiết bị hay không. Tôi đoán bảng của bạn là một thiết bị USB và bạn cần phải thắp sáng các đèn LED trên bảng của bạn. Vì vậy, nó có thể là một cách tốt để khởi tạo hội đồng quản trị của bạn như một thiết bị HID. Để đạt được mục tiêu này, bạn cần một ngăn xếp phần mềm tiện ích HID chạy trên bảng của bạn. Tài liệu tham khảo như sau: Khung

  1. tiện ích trong uboot
  2. specefication HID usb org
  3. debug các công cụ như Analyzer USB Nghị định thư
  4. libusb chạy trên Host PC để gửi các gói tin
Các vấn đề liên quan