USB编程

USB编程,usb,microcontroller,drivers,avr,Usb,Microcontroller,Drivers,Avr,我想编程一个微控制器(AVR),通过USB控制一些LED。这只是出于对如何构建和编程USB设备的兴趣。 有一些AVR微控制器支持USB协议,或者我可以自己在另一个微控制器中实现USB协议,但我想知道如何在计算机上编写自己的驱动程序 我的系统编程水平:总noob(这就是问题所在) 那么,为了更好地了解USB技术以及如何编写自己的驱动程序,你们会建议哪些文献 附言:我知道: C(这里可能需要) Java(这里可能不需要它) Python(希望可以在这里使用) 汇编程序(希望这里不需要它XD)

我想编程一个微控制器(AVR),通过USB控制一些LED。这只是出于对如何构建和编程USB设备的兴趣。 有一些AVR微控制器支持USB协议,或者我可以自己在另一个微控制器中实现USB协议,但我想知道如何在计算机上编写自己的驱动程序

我的系统编程水平:总noob(这就是问题所在)

那么,为了更好地了解USB技术以及如何编写自己的驱动程序,你们会建议哪些文献

附言:我知道:

  • C(这里可能需要)

  • Java(这里可能不需要它)

  • Python(希望可以在这里使用)

  • 汇编程序(希望这里不需要它XD)


p.p.S:不同操作系统的驱动程序开发不同。我使用Linux和Windows,因此欢迎与其中一个或两个系统相关的任何材料。

WDK(Windows开发工具包)的Microsoft文档区域最近在MSDN上提供。有一个关于USB的章节,不过你最好先阅读前面的章节,特别是“入门”部分。他们假设您将使用C作为驱动程序开发的编程语言


对于Linux,该网站应该能够为您指明正确的方向。特别是您需要的。

一个好方法就是开发一个HID设备,因为驱动程序内置于大多数高级操作系统中,对于您所说的简单IO来说非常灵活。另一个好的选择是只使用USB RS232设备或软件。我使用的图片上有很多漂亮的USB设备

虽然你可以开发和编写自己的USB驱动程序,但USB的美妙之处在于你不需要编写自己的驱动程序。已为所有标准设备类别定义了类别规范。如果您可以使您的设备适合标准设备类,那么驱动程序已经为您编写好了


如果你真的想熟悉USB开发,你应该先看一下。

如果你喜欢使用硬件USB的AVR微控制器框架,那么就看一看,如果你喜欢使用软件USB的AVR,那么就看一看。它们都实现了许多USB类,因此您不必自己动手,只需使用它们即可。

这听起来是一个很棒的项目!我建议从简单一点的事情开始,因为正如你所说,你是一个“总n00b”。我不确定你现在有什么硬件(或者有什么想法),但是我建议初学者使用的是。它是一个在Linux和Windows中都得到很好支持的开发板,将为您提供最大的灵活性。它为你的项目内置了LED和开关,但你需要一个微控制器。为此,我推荐,这是一款很棒的多用途IC,它也得到了很好的支持,并且在web上有很多文档

一旦你得到了这些,我建议你在Linux上使用avr gcc进行开发(确保同时安装avr libc)。如果您使用的是Ubuntu,则很容易获得所需的所有软件包:

% sudo apt-get install gcc-avr avr-libc avrdude
这些应该能让你振作起来。我建议你在谷歌上搜索帮助你编写第一个程序,但另一个很好的资源是你的在线资料

这足以让你的脚与AVR微控制器和开发工具湿。在这一点上,天空是极限,但既然你说你想进入USB,我建议使用优秀的框架,让你的ATMega32作为USB设备。之后,正如他们所说,翻转LED的步骤是小菜一碟:)

我不知道用什么来写你自己的 计算机上的驱动程序

  • libusb(,和)

  • 对于libusb变体信息,请阅读

    ,您可以使用libusb。它功能强大,跨平台

    但是你要做的是一个相当简单的控制界面。我认为,通过使用HIDAPI,您可以避开大部分复杂性

    HID设备通常使用封装到操作系统中的通用驱动程序。这样,您实际上就不必编写任何驱动程序,您只需使您的设备与通用驱动程序兼容,并为其定制客户端软件

    我认为这是电子爱好者通常做的事情,这也是你在这里感兴趣的


    在libusb常见问题解答中,HIDAPI甚至被推荐用于与HID设备的简单通信,因为使用libusb跨平台进行通信有点复杂。

    我基于ARDUINO UNO构建了自己的测试平台,我使用的是类型为usbasp的ionlabs程序员,它工作得非常好,但不允许转换TTL回到Rs-232,因此我无法使用诸如serial.print()之类的功能,我必须安装ftdi电缆,这使我能够做到这一点。 驱动程序是libusb1.xx,工作正常

    如果您想对AVR进行编程,可以使用ARDUINO软件包或stino上传程序。
    你需要了解c语言(仅限于基础知识)。

    我去年为我的capstone创建了一个USB键盘适配器。我没有做主机编程,但使用了你可以在网上找到的现有代码。但是我做了设备端的编程,为此我从这个网站上得到了很多帮助,查看他们的“代码库”,其中有键盘、鼠标和其他代码。另外,USB协议手册总是很有用的,当你使用USB时,你应该经常查阅它。

    我想知道你的AVB是作为主机还是设备。我猜你的主板是usb设备,你需要点亮主板上的LED。因此,这可能是一种将主板初始化为HID设备的好方法。为了实现这个目标,你需要一个在你的主板上运行的HID小工具软件栈。参考资料如下:

  • uboot中的gadget框架
  • HID规格
  • 调试工具