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.

[参考译文] TM4C1294NCPDT:TinyUSB

Guru**** 2609895 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1183688/tm4c1294ncpdt-tinyusb

器件型号:TM4C1294NCPDT
主题中讨论的其他器件:TM4C123

有人让 TM4C1294或129E 与 TinyUSB 一起工作?
我获得请求类型= 255的断言。
https://github.com/hathach/tinyusb/discussions/1813

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

    您好、Sergio、

    我们尚未尝试在 TM4C 器件上实施 TinyUSB、我不熟悉 TinyUSB。 查看该主题、我可以做几个注释:

    1) 1)获取 USB 数据表的 NDA 过程只是一个 Web 表、请访问器件数据表上的链接并查看文档、我想您不会对协议要求的内容有任何顾虑、然后您就可以获得完全访问权限。

    2) 2)就时钟而言、器件系列之间存在差异。 您可以查看用于 TM4C123和 TM4C129的 USB 的 TivaWare 示例、并查看是否需要更新 TinyUSB 使用的任何 API。

    此致、

    Ralph Jacobi

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

    大家好,我已经在库中完成了几层函数调用,掌握了一些信息,您能不能建议示例尽可能接近裸机?
    我当前的控制器初始化代码如下:

      // Configure B0 B1 L6 L7 as "analog": gpio->DIR bit input, ->AFSEL bit reset, ->AMSEL bit set
      SYSCTL->SRUSB |= BIT(0);               // Reset peripheral
      SYSCTL->SRUSB &= ~BIT(0);
      SYSCTL->RCGCUSB |= BIT(0);              // Enable USB clock
      volatile uint32_t *SYSCTL_RCC2 = ((volatile uint32_t *)SYSCTL) + (0x70/sizeof(uint32_t));
      *SYSCTL_RCC2 &= ~BIT(14);     // Enable nonexistent USB PLL / undocumented PHY clock
      USB0->CC = 0x207;               // Enable clock and configure divisor for 60MHz clock 
      USB0->GPCS = 3; // (41C) = 3
      USB0->LPMCNTRL &= ~BIT(0);  //(362) : reset bit0
      USB0->LPMCNTRL = 0; // (362) = 0
      if (USB0->EPCISC & BIT(0)) USB0->EPCISC |= BIT(0); // read EPCISC, check PF (power fault) flag, (40C) lsrs #1, and clear PF interrupt if so (write 1 to this bit)
      volatile uint32_t *USB0_IDVISC = ((volatile uint32_t *)USB0) + (0x44C/sizeof(uint32_t));
      if (*USB0_IDVISC & BIT(0)) *USB0_IDVISC |= BIT(0); // read nonexistent IDVISC, check IDVRIS_ID flag, (44C) lsrs #1, and clear condition if so (write 1)

    处理器初始化为120MHz

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

    您好、Sergio、

    我们不支持您为 TM4C 器件发布的直接寄存器编程模型。

    如果您想深入了解详细信息、可以查看处理配置的 TivaWare 函数的'guts'、以查看寄存器是如何操作的。

    此致、

    Ralph Jacobi

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

    我已经这么做了、因此我为什么要在这里问...

    有趣的是、硬件制造商不支持对其硬件进行寄存器级访问。 无论如何、感谢您的回答。

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

    您好、Sergio、

    为了 简化和简化 TM4C 器件的使用、我们花费了大量资源来开发 TivaWare 驱动程序库和 USB 库。  除了 极少数出于性能目的而需要硬件级访问以最大限度地减少开销的情况外、我们的长期指导原则是使用久经验证稳定可靠的 TivaWare API。 不支持寄存器级访问的立场是、我们将会投入资源  来有效地支持重新设计现有 API、而不是从头开始。

    此致、

    Ralph Jacobi