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.

[参考译文] MSP432E401Y:ULPI 示例?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/977176/msp432e401y-ulpi-example

器件型号:MSP432E401Y
主题中讨论的其他器件: TUSB1210TM4C129ENCPDT

我正在尝试使用 MSP432E401Y Launchpad 获取高速 ULPI 接口。

我的应用使用内部全速 PHY 时工作良好。  我购买了 TI TUSB1210评估板、并尝试将其集成以实现高速工作。  在经历一些断续之后(评估板手册的"EVM 安装"部分未记录您需要提供外部1.8V 电源-您会认为评估板将包括该电源)、 评估板似乎已启动并正在运行-它在 CLOCKOUT 上发出60MHz 1.8V 时钟。

我相信我已经将所有12个 ULPI 信号连接到432、而且我已经连接了

  • 为每个引脚调用 GPIOPinConfigure 以选择其 USB 功能
  • 每个引脚都被称为 GPIOPinTypeUSBDigital
  • 输出的10个引脚的 GPIOPadConfigSet、用于将其驱动强度设置为12mA
  • 使用 ui32ULPI = USBLIB_FEATE_ULPI_HS 调用 USBDCDFeatureSet (0、USBLIB_FEATURE_USBULPI、&ui32ULPI)
  • 调用 ui32PllRate  = 0的 USBDCDFeatureSet (0、USBLIB_FEATE_USBPLL、&ui32PllRate)来选择外部时钟(这没有记录、但我通过浏览 DriverLib 代码可以将其消除)。

我可以看到60 MHz 时钟进入432。

但是在 USBDCompositeInit()期间启动失败、它调用 USBDCDInit()、它调用 ULPIConfigSet()、它调用 USBULPIRegRead()。  RegRead 挂起、等待 USB_ULPIREGCTL_REGCMPLT 标志变为 true。

当我使用示波器进行调查时、我发现来自432的 USB0STP 信号的行为不符合我的预期

  • 它不会变为低电平以发出 ULPI 事务的信号
  • 它在3.3V 时为高电平引脚、而我希望它是1.8V 电平信号、以匹配 ULPI PHY。

我至少花了两个小时搜索示例。  我找到的最接近 TM4C29x、但我没有找到实际代码。  我确实从论坛上的一位同事那里找到了一个问题、他在为 TM4C29x 处理类似问题时遇到困难。  我把他的所有东西都推在地上,找不到他所做的任何事情,而我没有做。  尽管我也没有找到他取得成功的地方。

但在搜索 ULPI 和 MSP432E4时、我没有发现任何嗅探。  有指针吗?  最好有一个工作示例。

谢谢、

Brad

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

    嗨、Braden、

    想要办理登机手续。  如果是、请分享!  我进行了一些搜索、但从我们这边找不到任何 ULPI 示例。  听起来您发现的 TM4C 帖子可能是有关此主题的最佳资源。   

    您是否能够使其正常工作?

    谢谢、

    JD

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

    实际上、我在 Amit 上找到了这篇关于修改示例以配置具有外部 USB PHY 的 ULPI 接口的文章。   https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/652139?MSP432E401Y-Is-there-a-sample-program-that-supports-USB-high-speed-with-MSP432E4- 

    谢谢、

    JD

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

    运气差。  更具体地说、它仅工作一次、一分钟、但不可重复。

    我学到了很多,但显然还不够。  目前、我们已放弃使用 MSP432E 进行此操作、除非您有其他建议。

    • 简而言 之,就 Amit 发送的电子邮件而言,我非常确信“一旦需要更改”对应于我在原始帖子的第四个要点中提到的对 USBDCDFeatureSet()的调用。  (事实证明、如果您想使用外部时钟、则需要另外一个调用-我的第五个项目符号-这是最常见 PHY 解决方案的唯一选项。)
    • 事实证明、TI TUSB1210器件与432不兼容-用于连接1.8V 微控制器。  我曾假设1.8V 是 ULPI 标准的一部分、但它不是。  有3.3V PHY 器件。
    • 我尝试了另一个部件、Microchip USB3300。  它似乎是一个事实上的标准。  您可以在 ebay 上购买 USB3300 ULPI 模块、价格低于20美元。
    • 我了解到 USB3300的复位引脚为高电平有效。  我在那里划了一段时间的头。

    从那里、东西就会变薄。  

    • 事实上、在初始化432的 USB 之前、我必须向 USB3300发送复位脉冲、即使该模块包含 POR 电路。  我能够通过该附加功能实现 USBLib 的可靠启动。
    • 但是、Windows 从不会看到该设备。  (我的软件在 Windows 中使用内置的 FS PHY 都可以正常工作。)
      • 很明显、432和 PHY 芯片之间的"ULPI 总线"上有很多流量、但432技术参考中没有记录这些流量  我用示波器稍微点了一下、能够看到诸如 ULPI 复位指令之类的内容。   但是,由于没有提到我应该看到的内容,所以尝试进行调试几乎没有意义-技术参考只是简单地说是指 ULPI 规范。  但这只是说明 PHY 的功能、而不是432应该对其执行的操作。
      • 在早期测试中、在我解决 USB3300复位问题之前、通常会听到来自 Windows 的 USB"Boop-boop"、然后是"无法识别的设备"。
      • 有时、我会进入一个"无尽的 BOOP-BOOP"循环、在该循环中、它检测到器件、但不识别它、然后重复该循环。

    但我很确定我的代码是正确的。  它与内置的 FS PHY 配合使用。  在我的多次尝试中(令人惊讶的是、在我发现需要向 PHY 提供复位脉冲之前的阶段)、我恰好看到器件在 Windows 中完全初始化了一次。  例如、在设备管理器中、我可以看到我在代码中编程的供应商 ID 字符串。  这意味着很多东西都能正常工作。

    但我通过一条奇怪的路径到达那里、无法再现它。  我在那里得到的东西是在我重新启动432之后、但在432端尚未完全初始化  因此、它们是先前运行的"尾"、与新运行的开始相结合、某种程度上状态就足够了。  此时器件实际上无法正常工作-它只是出现在 Windows 中、一旦我的第二次运行初始化完成、就会消失。

    之后我又花了一天左右的时间来调试一个没有记录的接口,所以我放弃了。  如果 TI 有一个已知可以正常工作的硬件示例、我可以尝试一下。  我之所以选择 TI TUSB1210、是因为它是 TI 器件并附带评估模块、但由于电压原因、这是错误的选择。  (BTW,该部件的手册是*可怕的*-下载它,然后自己浏览它。  有些地方的写法太糟糕了、以至于实际上有两个同样有效的解释。)  

    如果有一个带有评估模块的3.3V TI 器件(带有20引脚 ULPI 连接器)、我们可能愿意快速尝试一下。  更好的是432的实际已知工作示例。

    谢谢、

    Brad

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

    不确定这是否有用、但有 适用于基于 ARMRegisteredCortexRegistered-M4F 的高速 TM4C129x MCU 的 USB 高速参考设计 、该设计使用连接到 TM4C129ENCPDT 的 USB3300、并提供了软件示例。

    由于 MSP432E 和 TM4C129系列使用相同的外设、因此该参考设计的软件应作为 MSP432E 设计的参考。

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

    哇,很棒的发现!

    一开始我很兴奋。  我可以比较一个原理图。  PHY 器件看起来与我的 Waveshare USB3300模块几乎完全相同。  有一个显著的差异。  在我的模块中、USB 连接器的 ID 引脚连接到 USB3300。  在本参考设计中、ID 被拉高、连接器中的 ID 未连接。  我目前对 USB 的了解不够、无法理解它的含义。

    但我看到的唯一软件是一个小的诊断应用。  我没有看到任何源代码。  电路板的用户指南细节非常精简、与 DriverLib 指南或其他文档中的内容大致相同。

    原理图是新信息、令人欣慰、但我看不到如何使用它。

    我怀疑它有与我已经有的文档"TivaWare USB 库"(SPMU297E)相同的文档。   

    您知道在哪里可以找到 ULPI 源代码示例与此电路板一起工作吗?  我一直用于432的 USBLib 副本没有任何 ULPI 示例;希望这些示例适用于此电路板。

    谢谢、

    Brad

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

    [引用 user="Braden Hines"]我没有看到任何源代码。  我下载 了 TIDM-TM4C129USBHS 软件 、并在 Windows 10 PC 上运行安装程序。

    有源代码和 CCS 项目、其中有一个 USB 2以太网示例应用:

    C:\>dir "C:\Program Files (x86)\Texas Instruments\TM4C\TM4C129USBHS-1.0\TIDM_tm4c129cusbhs2ethernet"驱动器 C 中的卷没有标签。
    卷序列号为 D6FD-9E86
    
    目录、目录为 c:\Program Files (x86)\Texas Instruments\TM4C\TM4C129USBHS-1.0\TIDM_tm4c129cusbhs2ethernet
    
    24/02/2021 22:24 。
    2021/02/2021 22:24 。
    2016年9月23日18:54 485 .ccsproject
    23/09/2016 20:37 30、882 .cproject
    24/02/2021 22:24 发布
    时间:2016年9月23日18:54 1、853 .project
    24/02/2021 22:24 .settings
    24/02/2021 22:24 调试
    19/09/2016 17:44 19、046 lwipopts.h
    2016年1月21日01:33 26 macros.ini_initial
    2016年9月21日00:19 13、483 startup_ccs.c
    26/09/2016 18:31 1、128 target_config.ccxml
    26/09/2016 18:38 872 target_config.uniflashsession
    23/09/2016 20:39 19、633 TIDM_tm4c129cusbhs2ethernet.c
    05/04/2016 14:36 2、806 TIDM_tm4c129cusbhs2ethernet.cmd
    05/04/2016 14:36 7、116 USB_bulk_structs.c
    23/09/2016 19:35 2、695 usb_bulk_structs.h
    24/02/2021 22:24 实用程序
    12个文件 100、025字节
    6 Dir (s) 990、359、031、808字节可用 

     在 TIDM_tm4c129cusbhs2ethernet.c 中、有调用使用 ULPI 实现高速。 例如:

    //
    //如果请求高速模式,则设置高速 ULPI 选项。
    //
    IF (bUSBBusMode)
    {
    ui32ULPI = USBLIB_FEATE_ULPI_HS;
    USBDCDFeatureSet (0、USBLIB_Feature_USBULPI、&ui32ULPI);
    } 

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

    啊!  超级乐于助人,谢谢!  我觉得安装程序只安装了一个小工具、没有意识到它安装了整个源树。

    我在我自己的源代码中确实有您所说的确切行、但我猜有一些关于呼叫顺序的重要内容。

    这并不一定能确保我的应用程序现在可以正常工作、但我想说您已经回答了我的硬件和软件代表示例的电话、所以我将继续并将其标记为"已解决"。

    非常感谢您的帮助!

    Brad