This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1237H6PZ:我的 Tiva 未检测到某些 USB 激光打印机

Guru**** 2350610 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/620078/tm4c1237h6pz-some-usb-laser-printers-not-getting-detected-by-my-tiva

器件型号:TM4C1237H6PZ

我的 Tiva 控制器可以完美地与 USB 点阵打印机配合使用。 现在、我正在尝试使用同一 USB 库使其适用于 USB 激光打印机。 它在某些旧激光打印机中工作正常。 然后,我有一台新的 HP 打印机,它无法正常工作。 我的其中一台 Cannon 打印机也有同样的问题。 区别在于,与一个接口描述符(即 打印机(0x07))。 这对打印机的检测及其工作是否有任何影响? 连接新打印机时,USBHCEDEVENTENTENTs()无法检测到支持的设备。 我始终返回 USB_EVENT_UNKNOWN_Connected、然后将其断开连接。 问题出在哪呢? 我认为 USB 会检查器件类别、然后加载相应的驱动程序、但无法检测到。 我使用 USB 分析仪在 Windows PC 上检查了它、在那里看起来很好、并且在查询时将类返回为"打印机"。 它在 Windows PC 上以及旧 PC 上都可以正常工作。 有人可以就此向我推荐任何解决方案吗?

此致、

那曼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Naman、

    [引用 user="Naman Kumar">区别在于,与一个接口描述符(即,)相比,新的 HP 打印机具有5个接口描述符 打印机(0x07))。 这对打印机的检测及其工作是否有任何影响?

    [/报价]

    这可能是一个可能的来源,是的。 不过、我尚未处理具有5个接口描述符的器件、因此我无法肯定。 您能否提供所有这些项目的列表? 此外、在查看 Tiva 接收的描述符内容(通过 debug+breakpoints)时、您能否看到接收到5个描述符中的哪些或多少个、按什么顺序、甚至可能跟踪哪个描述符被用来进一步处理?

    [引用 user="Naman Kumar">连接新打印机时,USBHCEDventions()无法检测到支持的设备。 我始终返回 USB_EVENT_UNKNOWN_Connected、然后将其断开连接。 问题出在哪呢?  

    [/报价]

    这取决于正确接收和传递给函数的描述符(如果有)。 如果没有正确接收到会导致此类问题的描述符(可能是由于格式或存在多个描述符)。

    [引用 user="Naman Kumar">我在 Windows PC 上使用 USB 分析器检查了它,在那里看起来很好,并在查询时将类返回为“打印机”。

    [/报价]

    是唯一返回的类,还是多个返回的类? 对于此打印机,发送的内容和查询的内容与正常工作的内容之间是否存在差异? 任何可能与您之前提到的5个描述符相关的内容(可以肯定或取消该因素的相关性)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ralph、

    下面是随附的具有5个接口描述符的新打印机的信息,此信息是我从 USB Analyzer 4.0的“设备信息”选项复制的:

    器件信息
    连接索引6.
    CurrentConfigurationValue 1
    高速(高达480Mbps)
    DeviceIsHub 0
    DeviceAddress 2
    NumberOfOpenPipes 12.
    连接状态设备连接

    器件描述符
    b 长度18.
    b 描述符类型0x1 (device_descriptor)
    BcdUSB 0x0200 (USB 2.0)
    bDeviceClass 0x7 (打印机)
    bDeviceSubClass 0x1
    b 设备协议0x2
    bMaxPacketSize0 64
    idVendor 0x3f0 (惠普)
    idProduct 0x632a
    bcdDevice 0x100
    b 数字配置1.
    制造商0x1 (HP)
    iProduct 0x2 (HP LaserJet M203-M206)
    iSerialNumber 0x3 (VNC3F12877)

    配置

    配置描述符0
    b 长度9.
    b 描述符类型0x2 (配置描述符)
    w 总长度138.
    b 数字接口5.
    b ConfigurationValue 1
    iConfiguration 0x0
    bmAttributes 0xe0 (bus_powered | self_powered | remote_wakeup)
    最大功率0x1 (2mA)

    接口描述符0
    b 长度9.
    b 描述符类型0x4 (接口描述符)
    b 接口编号0
    b AlternateSeting 0
    b 数字结束点2.
    b 接口类0x7 (打印机)
    b 接口子类0x1
    b 接口协议0x2
    iInterface 0x11 (打印机)

    端点描述符0
    b 长度7.
    b 描述符类型0x5 (端点描述符)
    b 结束地址0x1 (输出)
    bmAttributes 0x2 (批量)
    wMaxPacketSize 512
    b 间隔255

    端点描述符1
    b 长度7.
    b 描述符类型0x5 (端点描述符)
    b 结束地址0x81 (IN)
    bmAttributes 0x2 (批量)
    wMaxPacketSize 512
    b 间隔0

    接口描述符1
    b 长度9.
    b 描述符类型0x4 (接口描述符)
    b 接口1
    b AlternateSeting 0
    b 结束点3
    b 接口类0xff (供应商专用)
    b 接口子类0x4
    b 接口协议0x1
    iInterface 0x15 (HP LEDM)

    端点描述符0
    b 长度7.
    b 描述符类型0x5 (端点描述符)
    b 结束地址0x7 (输出)
    bmAttributes 0x2 (批量)
    wMaxPacketSize 512
    b 间隔255

    端点描述符1
    b 长度7.
    b 描述符类型0x5 (端点描述符)
    b 结束地址0x87 (IN)
    bmAttributes 0x2 (批量)
    wMaxPacketSize 512
    b 间隔0

    端点描述符2
    b 长度7.
    b 描述符类型0x5 (端点描述符)
    b 结束地址0x88 (IN)
    bmAttributes 0x3 (中断)
    wMaxPacketSize 8
    b 间隔16

    接口描述符2.
    b 长度9.
    b 描述符类型0x4 (接口描述符)
    b 接口编号2.
    b AlternateSeting 0
    b 结束点3
    b 接口类0xff (供应商专用)
    b 接口子类0x4
    b 接口协议0x1
    iInterface 0x15 (HP LEDM)

    端点描述符0
    b 长度7.
    b 描述符类型0x5 (端点描述符)
    b 结束地址0x9 (输出)
    bmAttributes 0x2 (批量)
    wMaxPacketSize 512
    b 间隔255

    端点描述符1
    b 长度7.
    b 描述符类型0x5 (端点描述符)
    b 结束地址0x89 (IN)
    bmAttributes 0x2 (批量)
    wMaxPacketSize 512
    b 间隔0

    端点描述符2
    b 长度7.
    b 描述符类型0x5 (端点描述符)
    b 结束地址0x8a (IN)
    bmAttributes 0x3 (中断)
    wMaxPacketSize 8
    b 间隔16

    接口描述符3.
    b 长度9.
    b 描述符类型0x4 (接口描述符)
    b 接口编号3.
    b AlternateSeting 0
    b 数字结束点2.
    b 接口类0xff (供应商专用)
    b 接口子类0x9
    b 接口协议0x1
    iInterface 0x12 (IPP 打印机)

    端点描述符0
    b 长度7.
    b 描述符类型0x5 (端点描述符)
    b 结束地址0xb (输出)
    bmAttributes 0x2 (批量)
    wMaxPacketSize 512
    b 间隔255

    端点描述符1
    b 长度7.
    b 描述符类型0x5 (端点描述符)
    b 结束地址0x8b (IN)
    bmAttributes 0x2 (批量)
    wMaxPacketSize 512
    b 间隔0

    接口描述符4.
    b 长度9.
    b 描述符类型0x4 (接口描述符)
    b 接口编号4.
    b AlternateSeting 0
    b 数字结束点2.
    b 接口类0xff (供应商专用)
    b 接口子类0x9
    b 接口协议0x1
    iInterface 0x12 (IPP 打印机)

    端点描述符0
    b 长度7.
    b 描述符类型0x5 (端点描述符)
    b 结束地址0xc (输出)
    bmAttributes 0x2 (批量)
    wMaxPacketSize 512
    b 间隔255

    端点描述符1
    b 长度7.
    b 描述符类型0x5 (端点描述符)
    b 结束地址0x8c (IN)
    bmAttributes 0x2 (批量)
    wMaxPacketSize 512
    b 间隔0

    下面是 Cannon 打印机的信息,该打印机正在被检测到,并且具有1个接口描述符:

    器件信息
    连接索引6.
    CurrentConfigurationValue 1
    高速(高达480Mbps)
    DeviceIsHub 0
    DeviceAddress 2
    NumberOfOpenPipes 2.
    连接状态设备连接

    器件描述符
    b 长度18.
    b 描述符类型0x1 (device_descriptor)
    BcdUSB 0x0200 (USB 2.0)
    bDeviceClass 0x7 (打印机)
    bDeviceSubClass 0x1
    b 设备协议0x2
    bMaxPacketSize0 64
    idVendor 0x4a9 (Canon、Inc.)
    idProduct 0x2676
    bcdDevice 0x100
    b 数字配置1.
    制造商0x1 (Canon)
    iProduct 0x2 (Canon Capt USB 设备)
    iSerialNumber 0x3 (0000A393KDnJ)

    配置

    配置描述符0
    b 长度9.
    b 描述符类型0x2 (配置描述符)
    wTotalLength 32.
    b 数字接口1
    b ConfigurationValue 1
    iConfiguration 0x0
    bmAttributes 0xc0 (bus_powered | self_powered)
    最大功率0x0 (0mA)

    接口描述符0
    b 长度9.
    b 描述符类型0x4 (接口描述符)
    b 接口编号0
    b AlternateSeting 0
    b 数字结束点2.
    b 接口类0x7 (打印机)
    b 接口子类0x1
    b 接口协议0x2
    iInterface 0x0

    端点描述符0
    b 长度7.
    b 描述符类型0x5 (端点描述符)
    b 结束地址0x1 (输出)
    bmAttributes 0x2 (批量)
    wMaxPacketSize 512
    b 间隔0

    端点描述符1
    b 长度7.
    b 描述符类型0x5 (端点描述符)
    b 结束地址0x82 (IN)
    bmAttributes 0x2 (批量)
    wMaxPacketSize 512
    b 间隔0

    我无法检查 Tiva 接收的描述符的顺序、我不确定如何检查。 我检查了 HCD 未知事件的 puiEvent->ui32实例,但其值为0。 是否有方法可以检查 USBHCEDEvents ()检测到的未知设备的设备类或接口类?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    拉尔夫

    我还在 USB 分析仪上附加 HP 和 Cannon 打印机的日志文件。 请检查您是否可以找到任何内容。 您可以在 USB Analyzer 4.0软件上打开这些文件。

    e2e.ti.com/.../Laser.tar.gz

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    过去曾建议您:"在 USB 总线事务上表现出色"-以便您可以(最好)通过 TM4C MCU 复制它们-您确实会意识到并承认您的请求、"远远没有主要的 MCU 问题"-您不知道吗?

    这种"非 MCU 聚焦"的请求非常详细(也很少见)、需要专业供应商员工投入大量时间和精力。    这降低了他们处理那些具有更多" MCU 重点"问题的能力、这些问题证明更加"主流"、因此在这里有这么多人受益。

    我过去曾建议、当您(正确)与目标打印机进行交易时、"您"会监控整个 USB 交易。   (即通过 PC -最有可能)   

    这是您取得成功的"关键"-但远非"TM4C"问题-(实际上)应该是(您的)工作-而不是强迫(善意的)已经承担了繁重任务(任务更恰当)的供应商员工...

    被认为是"限制"(即如果许多海报要求如此高的(而且很少要求、具体的、非 MCU)细节-论坛很可能会"停顿"。   然后,请求必须使许多人受益,而不是少数人受益!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [报价用户="Naman Kumar"]以下是随附的具有5个接口描述符的新打印机信息,此信息是我从 USB Analyzer 4.0的“设备信息”选项复制的:

    一些工具问题。 由于分析仪是基于 PC 的工具、您是否知道它是否正在捕获原始 USB 数据?

    HP 驱动程序是否有可能插入填充片来转换 USB 初始化程序? 不久以前有称为 winprinters 的打印机(可能还在吗?) 将大部分打印机任务卸载到 PC 上、虽然我看不到为 USB 执行类似操作的实用程序、但可能有人找到了原因。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Robert -您的"技术精湛"的广度和深度证明了最令人印象深刻-反复。

    尽管如此、海报的追求远未达到"论坛以 MCU 为中心的问题"-它与"供应商滥用"相联系(或侵犯)!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哦、我同意希望供应商甚至整个论坛能够解决这个问题、这是一个很大的问题。

    OTOH、一些调试提示或"愚蠢的问题"、如我在上面提出的问题、假设可能是可以要求的。

    Robert

    如果我对 USB 有一定的了解、那么我只会遇到愚蠢的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我怀疑海报是否已(足够)"打印机供应商的请求"-因此将论坛(错误)用作"倾倒场"。

    "调查不足"-甚至是"最肥沃的技术来源"的识别-只是"跳出..."

    海报的主题行:"一些 USB 端口。 "未检测到"应更改为:"每个/每个 USB 端口。 (已发布) -必须快速且完整地检测到-等待完整的代码列表- Allez!)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Naman、

    您需要在函数 ProcessUSBDeviceStateMachine 下查看 usbhostenum.c 文件。 这将让您检查该过程的各种情况、这也是可能设置 USB_EVENT_UNKNOWN_Connected 的地方。

    如果您使用的是 UsbLib 并使用了 usblib.lib 文件(这是很可能的)、则需要删除.lib 的使用并手动将 usblib 的包含路径添加到您的 CCS 工程中、以便能够使用断点并以这种方式调试 UsbLib 源代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ralph、

    按照 ProcessUSBDeviceStateMachine 函数中的建议,我进一步挖掘,发现 USBHCDGetConfigDescriptor()函数返回零(没有成功)。 根据注释、它无法初始化获取配置描述符的请求。 我认为这是它产生所有不同的地方,因为它能够在其他激光打印机的情况下通过此请求 USBHCDGetConfigDescriptor(),但不能用于新的激光打印机。

    这是否意味着新打印机在描述符方面存在一些问题? 因为它在 PC 上运行正常。 请告诉我。 我将进一步检查。

    此致、
    那曼
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ralph、

    USBHCDGetConfigDescriptor()函数不起作用,因为打印机描述符的长度大于 uint_8 g_pui8HCPDPool[HCD_MEMORY_SIZE]分配的长度。 分配了128个接口,但对于我的新打印机,所需的尺寸为138,因为它中有5个接口描述符。 现在它能够检测到打印机。
    非常感谢您的帮助。

    此致、
    那曼
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Naman、

    很高兴听到、也感谢您报告解决方案、将来可能会对其他人有所帮助! )