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/TM4C1294NCPDT:USB 处于手动主机模式

Guru**** 2465890 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/661500/ccs-tm4c1294ncpdt-usb-in-manual-host-mode

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

在我们的设计中、我将引脚 PB0 (USBID)和 PB1 (VBUS)用于第二条 CAN 总线。 因此、在另一个 GPIO 引脚上监控 VBUS 信号。 USB 接口仅用于大容量存储设备类(USB 记忆棒)。

如何手动配置 USB 驱动程序以控制 USBPEN 和 USBFLT 引脚?

我修改了 USB_host_msc 示例、但没有成功。

我的初始化代码:

空 Init_USB (空)

   uint32_t ui32PLLRate;

   g_Estate = State_no_device;
   G_eUIState = State_no_device;
   ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UDMA);
   ROM_uDMAEnable();
   ROM_uDMAControlBaseSet (g_sDMAControlTable);

   USBStackModeSet (0、eUSBModeHost、0);
 
   USBHCDRegisterDrivers (0、g_ppHostClassDrivers、g_ui32NumHostClassDrivers);

   G_psMSCInstance = USBHMSCDriveOpen (0、MSCCallback);    //打开大容量存储类驱动程序的实例。

   USBHCDPowerConfigInit (0、USBHCD_VBUS_MANUAL | USBHCD_FAULT_VBUS_NONE);  
   

   SysCtlVCOGet (SYSCTL_XTAL_25MHz、\ui32PLLRate);
   USBHCDFeatureSet (0、USBLIB_Feature_CPUCLK、&ui32SysClock);
   USBHCDFeatureSet (0、USBLIB_Feature_USBPLL、&ui32PLLRate);
   USBHCDInit (0、g_pHCPool、HCD_MEMORY_SIZE);      //初始化 USB 控制器以进行主机操作。
   MAP_USBHostPwrEnable (USB0_BASE);                                //应用 USB 电源
   f_mount (0、&g_sFatfs);     //初始化文件系统。
   eStateCopy = g_eUIState;

有人知道一个工作示例?

此致

亨宁

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

    我可能对你的问题不完全清楚。 您是否正在寻找一种将不同引脚用于 VBUS 和 USBID 的解决方案? 或者、您是否仅需要有关如何配置 USB0EPEN 和 USB0PFLT 引脚的帮助?

    您发布的代码对我来说也有点令人困惑。 您在 USB 初始化中调用了 SYSCTL_PERIPH_UDMA? 您是否也希望为此使用 uDMA? 我认为没有任何 UDMA 通道可以处理与 USB 相关的任何内容...

    在任何情况下、对于由 USB 控制的 GPIO、您需要对引脚所属的 SYSCTL_Periph_GPIOx 进行 SysCtlPeripheralEnable 调用(x 是端口名称、例如端口 B 将是 SYSCTL_Periph_GPIOB)。

    然后、您还需要使用 GPIOPinConfigure 来配置精确的引脚、例如 GPIOPinConfigure (GPIO_PD6_USB0EPEN);

    最后、根据引脚功能、您需要对 GPIOPinTypeUSBAnalog 或 GPIOPinTypeUSBDigital 进行 API 调用(USB0EPEN 是 TTL 缓冲器类型、因此会被配置为数字、例如、请参阅数据表的表26-4以获得有关该部分的帮助)。

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

    我附加的示例是 USB_host_msc 示例的直接副本、其中使用了 uDMA。

    我通过强制进入 USB 主机模式来解决此问题:

    USBStackModeSet (0、eUSBModeForceHost、0);

    这个模式禁用 VBUS 和 ID 引脚。

    为了启用 USB 电源、我使用了以下初始化:

    USBHCDPowerConfigInit (0、USBHCD_VBUS_AUTO_HIGH | USBHCD_VBUS_FILTER);

    之后、我有了 USB 的电源信号、并且能够将 PB0和 PB1 (VBUS 和 ID 引脚)用于第二条 CAN 总线。


    谨致问候、

    亨宁