【发布时间】:2010-06-14 22:07:57
【问题描述】:
我知道这可能不是最简单的事情,但我正在尝试使用 USB 连接微控制器和 PC。我不想使用微控制器内部的 USART 或 USB 转 RS232,其项目旨在帮助我理解各种原理。
所以,从微控制器端完成通信是小菜一碟——我的意思是,当我知道他的协议时,在微控制器上实现它相对容易,因为我可以直接控制一切,甚至是精确的时间。
但这不是 PC 的情况。我对 Windows 处理连接的设备的概念不是很熟悉。在我之前的一个问题中,我询问了 Windows 如何通过驱动程序与设备一起工作。我了解,对于 Windows 的内部使用,驱动程序必须具有一些可供操作系统使用的默认功能集。我的意思是,当操作系统要访问硬盘时,它会调用硬盘驱动程序(可能是操作系统内部的),并带有特定的“问题”,这意味着必须编写硬盘驱动程序才能与 Windows 配合,才能在适当的情况下具有写入功能操作系统调用的地方。类似的东西是GPU,甚至DirectX,我的意思是DirectX必须从驱动程序中调用特定的函数,所以必须编写驱动程序才能与DX一起使用。我知道,WinAPI 中的许多函数都是独立工作的,但即使是“简单”的窗口最终也必须写入帧缓冲区,使用 MMIO 来处理驱动程序指定的地址。我说的对吗?
所以,我希望 Windows 具有内部功能,WinAPI 的一部分旨在处理某些常用的东西。调用制造商设计的驱动程序。但这似乎并不完全正确,因为 Windows 无法通过并行端口进行通信。我的意思是,WinAPI中没有使用串口的函数,但是有使用HDD、GPU等的函数。
但现在到了我非常迷茫的部分。因此,我认为 Windows 必须具有一些内置功能才能通过 USB 进行通信,例如它处理 USB 闪存。那么,是否有任何 WinAPI 函数旨在让用户通过该函数操作 USB,或者当我想自己使用 USB 时,我是否必须自己调用所需的 USB 驱动程序函数?因为您需要发送到 USB 控制器的只是设备地址和信息,对吗?我的意思是,我不必编写任何新的驱动程序,对吗?有的话直接调用WinAPI函数,或者直接调用原USB驱动。这有什么意义吗?
【问题讨论】: