【问题标题】:CDC Demo COM Port Code on AT90USB162 (Minimus AVR)AT90USB162 (Minimus AVR) 上的 CDC 演示 COM 端口代码
【发布时间】:2011-12-18 06:37:32
【问题描述】:

我打算使用我的 AT90USB162(集成为 Minumus AVR USB 板)作为带有 COMPORT 的通信设备类。在Minimus AVR home site 中,它提供了在AVR-USB-162-CDC.zip 中为我的芯片构建COMPORT hex 的代码(此项目使用WinAVR 4,但您也可以使用WinAVR 5 构建它,请参阅Build AVR Studio 4 project in AVR Studio 5)。在构建代码时,我将 hex 文件加载到芯片中并进行重置。问题是我的 Windows 7-64 无法识别新 COMPORT 的添加,因此我无法从设备管理器访问它(因此也无法从超级终端访问),实际上当我将内置芯片插入 USB 端口时,它什么也没发生。

所以,我需要让我的 Windows 将我的芯片识别为我的 AT90USB162 的 USB COMPORT。我该怎么做?我没有做什么?

我还尝试了来自AVR-CDC site 的 .hex 文件和驱动程序,但实际上我的芯片的驱动程序不可用(我仍然尝试使用那里提供的其他驱动程序)。但没有回应。

更新

我在AVR-CDC Windows Driver Section 中发现了一条注释:

(*) Vista/7 x64 不接受未经授权的内核模式驱动程序。您必须在系统启动期间关闭“驱动程序 > 签名强制”。有一个工具可以签署驱动程序。 Driver Signature Enforcement Overrider 请参阅 /vista64/Readme64.txt 中的说明。

因此,当我下载驱动程序签名强制覆盖程序时,我按照 /vista64/Readme64.txt 上的说明进行操作。简而言之,它应该使 Windows 能够接收 AVR-CDC 驱动程序附带的 CDC 驱动程序 lowcdc.sys 和 lowcdc.inf。

但还是没有反应。

更新

我测试了在 Windows XP SP3 机器上加载微芯片。所以这不是 Windows 7/64 的驱动程序签名强制问题。

更新

我找到了这个:Engbedded AVR Fuse Calculator,但不知道如何使用它。

更新

我从用户 clawson 的 avrfreaks 论坛得到以下答案:

“尝试下载 usbdeview.exe 以查看枚举期间发生的情况。可能是显示的 VID/PID 需要 .inf 文件来选择正确的驱动程序。

您可以做的一件事是下载 LUFA 并在其中构建一个 CDC 示例 - 它几乎可以正常工作。”

但是还是不行。我下载了usbdeview并尝试观看芯片。但是当我将它插入USB端口时,如果.hex烧录的文件是CDC,它仍然没有任何反应。

我还下载了 LUFA 并尝试构建 CDC 示例。也没有成功。在 makefile 中,我设置了 MCU = at90usb162,F_CPU = 16000000,FLASH_SIZE_KB = 16,BOOT_SECTION_SIZE_KB = 4,其他参数我保持不变。我还将 AVR Studio 项目定义更改为设置为 at90usb162。生成的十六进制文件没有错误。但是当我尝试烧录芯片时,Flip 应用程序返回错误消息“Address us out of range.”。最后我意识到新的 .hex 文件与之前的文件相同(无需更改 makefile 和 AVR Studio 项目文件)。

那么,也许有人有更多的想法?

更新

可能是驱动问题? (而不是 .hex 的问题?)任何解决方案?

更新

我在Atmel Application Notes site for this chip 中找到了应用笔记AVR296: AVRUSBRF01 USB RF Dongle user's guide,其中描述了一种将此芯片用作CDC 的方法,并提供.a90 文件来烧录芯片和.inf 文件以用作Windows 驱动程序。我用提供的AVRUSBRF01-AT90USB162-usbdevice_cdc_rf-2_0_1.a90 文件烧毁了我的芯片,并在我的Windows 上安装了at90usbxxx_cdc.inf 驱动程序。并且Windows成功识别COMPORT,所以问题不在芯片上,可能是CDC演示代码本身。

那么,有人能找出代码中的错误/错误在哪里吗?

【问题讨论】:

    标签: gcc windows-7 arduino avr atmel


    【解决方案1】:

    尝试使用LUFA 肯定是一个非常好的主意,对于初学者来说,您可能需要忽略无线子系统 - 看看您是否可以让一些基本的 USB 设备示例正常工作。

    如果可行,请查看如何为收音机集成驱动程序。您可能还想看看 TinyOS 和/或 Contiki。您可能无法使用 6loWPAN,如果我没记错的话,Nordic 没有 IEEE 802.15.4 芯片。但是您仍然可以在 Contiki 中使用 Rudolph 或在 TinyOS 中使用 ActiveMessage

    如果您想让 Atmel 代码正常工作,最好通过他们提供的支持设施与 Atmel 联系。 AVR Freaks 上的某个人更有可能使用过这个特定的电路板,我怀疑您是否可以在这里找到答案,这将是您正在查看的参考设计的特定答案。

    【讨论】:

    • 我现在必须使用 LUFA。感谢您的建议。
    【解决方案2】:

    当我将内置芯片插入 USB 端口时,什么也没有发生。

    只有当您忘记了其中一根 USB 数据线上的 1.5 kOhm 上拉电阻时才会发生这种情况。没有它就没有 USB 通信。在某些情况下,此电阻器是片上的,而其他情况下则需要外部电阻器。

    【讨论】:

    • 我不认为是这样。当使用 CDC hex 烧录芯片时,它什么也不会发生。例如,在 DFU 模式下,我的 PC 可以识别芯片(以便我可以刻录 .hex 文件)。无论如何,Minumus AVR 是一个“现成的”板,所以它应该配备所有需要的电阻器。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    相关资源
    最近更新 更多