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.

[参考译文] CCS/TM4C123GH6PM:无法枚举充当 USB 主机的 Tiva C launchpad。

Guru**** 2460850 points
Other Parts Discussed in Thread: AFE4490, TM4C123GH6PM

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/648715/ccs-tm4c123gh6pm-tiva-c-launchpad-working-as-usb-host-cannot-enumerate

器件型号:TM4C123GH6PM
主题中讨论的其他器件:AFE4490DK-TM4C123GTM4C123

工具/软件:Code Composer Studio

尊敬的 TI 专家:

我已经阅读了该论坛中的所有文章、这些文章为我将 Launchpad 配置为 USB 主机提供了大量帮助。

但我遇到了一个问题、找不到答案。 谢谢你。

在我的案例中、Launchpad 用作 USB 主机、AFE4490 SPO2 EVM 板用作 USB 从设备。 但无法建立枚举。  

我在 launchpad 上的代码:

 

//启用 USB 外设
SysCtlPeripheralEnable (SYSCTL_Periph_USB0);
//Initialize the USB stack for host mode (针对主机模式初始化 USB 堆栈
USBStackModeSet (0、eUSBModeHost、0);
//启用 USB 引脚使用的 GPIO 外设
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
针对 USB 的//使能 GPIO 引脚:PB0和 PB1作为 VBUS 和 ID 引脚
GPIOPinTypeUSBAnalog (GPIO_PORTB_BASE、GPIO_PIN_0 | GPIO_PIN_1);

//将 D+/D-启用为 USB 引脚
ROM_GPIOPinTypeUSBDigital (GPIO_PORTC_BASE、GPIO_PIN_6 | GPIO_PIN_7);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
ROM_GPIOPinTypeUSBAnalog (GPIO_PORTD_BASE、GPIO_PIN_4 | GPIO_PIN_5);


//注册主机类驱动程序
USBHCDRegisterDrivers (0、g_ppsUSBHostClassDrivers、g_ui32NumHostClassDrivers);//将关闭 LED 端口 F 引脚2

//初始化电源配置。 将电源使能信号设置为高电平有效、不启用电源故障。
USBHCDPowerConfigInit (0、USBHCD_VBUS_AUTO_HIGH | USBHCD_VBUS_FILTER);


//在此处调用任何打开的例程,以使应用程序准备好使用新的大容量存储设备
tUSBHMSCInstance *g_psMSCInstance= USBHMSCDriveOpen (0、MSCCallBack);//打开海量存储类驱动程序的实例

USBHCDInit (0、g_pui8HCPool、HCD_MEMORY_SIZE);//初始化主机控制器


//应用程序的主循环
while (1)
{
开关(iMSDState)
{
//this state is entered when the pen drive is first detected.(首次检测到画笔驱动器时进入此状态。)
案例 MSD_INIT:
{
//关闭 LED
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、0);

//初始化新连接的画笔驱动
器//等待驱动器准备就绪-等待该值变为0,然后主机控制器尝试从器件读取或写入。
while (USBHMSCDriveReady (g_psMSCInstance)
){

SysCtlDelay (100000 / 100); //为设备准备就绪提供延迟
}
//将其移至已连接状态
iMSDState= MSD_Connected;
break;
}

案例 MSD_Connected:
{
//如果检测到画笔驱动器,则点亮 LED。
GPIO_PORTF_DATA_R |= 0x08;
对于(ui32Loop = 0;ui32Loop < 200000;ui32Loop +);
GPIO_PORTF_DATA_R &=~Ω(0x08);
for (ui32Loop = 0;ui32Loop < 200000;ui32Loop ++);
break;
}

case MSD_NOT_Connected:
{

}

默认值:
{
break;
}
//交换机的末尾

USBHCDMain ();//主机控制器驱动程序的定期调用

}//end of while

非常感谢!

最好

Jackie

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

    我不熟悉 AFE4490 SPO2 EVM,也不是 USB 专家。 AFE4490 SPO2EVM 板附带 GUI 工具和用于 PC 的 USB 驱动程序、用于评估 AFE4490器件。 为什么使用 TM4C LaunchPad 连接 AFE4490 SPO2 EVM? 您是否要创建自己的器件驱动程序来配置 AFE4490以及 AFE4490 SPO2 EVM 板上的其余组件? 这似乎是一项艰巨的任务。 如果您需要 USB 主机示例、那么 TivaWare 库中有一些示例。 请查看下面的 \examples\boards\dk-tm4c123g。

    如果要为器件供电、您需要在 LaunchPad 上使用0欧姆电阻器填充 R25和 R29。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Charles:

    非常感谢。 我尝试使用 Tiva c 从 EVM 获取数据。 这里的 Tiva c 也将处理其他任务。 EVM 只是 Tiva C 的从器件

    我现在有两个详细的问题。

    我已组装 R25和 R29、并为 USB 器件提供电源。 但是、当我使用调试 USB 接口为 TIvc 焊盘供电时、ARM MCU 有时变得非常热。 因此、我必须再次拔下并插入调试电缆。 那么没关系。 它发生了几次。 您对此有什么想法吗?

    AFE EVM 是 CDC (通用器件类)器件。 但我在 Tivaware 库中找不到 CDC 主机示例。 您能告诉我在哪里可以找到适用于 TIVaC Launchpad 的 CDC 主机示例吗?

    谢谢!

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

    您好、Jackie、

     您正在尝试使用 TM4C123 Launchpad 为 AFE4490电路板供电。 您需要了解 AFE 板需要多少电流。 TM4C 上的负载可能太大。 如下文所述、我建议通过 BoosterPack 为电路板供电。

    TM4C123GH6PM 目标器件还支持 USB 嵌入式主机和 On-The-Go (OTG)

    功能。 可通过将 R25和 R29组装为0 Ω 电阻器来启用 OTG 功能。 这些

    电阻器将 USB ID 和 USB VBUS 信号连接到 PB0和 PB1。 当这些电阻器被组装时、

    PB0和 PB1必须保持在各自的 USB 引脚模式配置中、以防止器件损坏。 PB0

    J1 BoosterPack 接头上也存在 PB1和 PB1。 因此、如果组装 R25或 R29、请小心

    不能将这些信号与 BoosterPack 信号相冲突。

    对于自供电的 USB 器件、可以采用相同的方式启用 USB 嵌入式主机操作。

    用作 USB 主机时提供电源需要具有电源开关功能的 BoosterPack

    连接器。 除 D+和 D-外、所有 USB 主机信号都可在 BoosterPack 接口上使用

    仅在 USB micro-A/-B 连接器和两个相邻测试点上可用。

    作为 USB 器件连接时、评估板可由 ICDI 或 USB 供电

    器件连接器。 用户可以通过移动电源选择开关(SW3)来选择电源

    到设备位置。 请参阅电源管理原理图(附在本文档之后)。

    我们没有针对 USB 主机的 CDC 类示例。 仅适用于 USB 器件。  

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

    您好、Charles、

    感谢您的回复!

    现在不会出现热问题。 不知道为什么以前发生过这种情况。

    我找到了 Tiva c USB 主机的 CDC 代码。 这只是一个有关枚举的问题。

    不同的模式(例如 CDC 或 msc)是否共享相同的枚举过程? 在哪里可以看到此过程的 c 代码?

    目前、Tiva c 无法枚举 EVM 板、因此 EVM 板进入'state_NOENUM_Suspended'。

    谢谢!

    Jackie

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

    枚举过程类似但不同。 与 HID 器件等简单器件相比、CDC 器件等复杂器件需要更多的枚举步骤。 CDC 需要查找子类信息。

    usblib/host 中的 usbhostenum.c 文件可能是您要查找的文件。