TUSB422 MCU 软件用户指南
文章目录
TUSB422 MCU 软件用户指南
摘要
本文档是 TUSB422 微控制器基于 Type-C 端口控制(TCPC)和电源传输(PD)软件的用户指南。本指南旨在帮助用户进行软件的配置、调试和移植。
目录
- 介绍 … 3
- 配置 … 4
- 2.1 通用配置 … 4
- 2.2 USB-PD 3.0 支持 … 5
- 2.3 VDM 支持 … 6
- 代码 ROM/RAM 大小优化 … 7
- 通过 UART 调试 … 7
- 3.1 UART 命令 … 9
- 移植到其他微控制器 … 10
表格
表 1: UART 命令列表 … 9
表 2: 软件移植的文件和函数 … 10
表 3: 基于应用的并发定时器计数 … 10
图表
图 1: TUSB422 PD 软件架构 … 3
图 2: Windows 设备管理器中的 UART COM 端口 … 8
1. 介绍
TUSB422 基于 MCU 的软件原生支持 TI 的 MSP-EXP432P401R 和 MSP-EXP430FR5969 MCU LaunchPad 评估模块(EVM),并与 TUSB422 EVM 配合使用。该软件通过 I²C 控制 TUSB422,并通过 GPIO 控制 VBUS 的独立电源模块。有关如何将 EVM 与 LaunchPad 设置的详细信息,请参阅 TUSB422 EVM 用户指南。
该软件符合以下规范:
软件架构如图 1 所示。源代码文件名与图中所示的模块对应,可以在“PDlib”和“hal”文件夹中找到。IAR Embedded Workbench 和 Code Composer Studio 的项目文件位于“/app/DRP”目录中。
2. 配置
2.1 通用配置
USB Type-C 和 USB PD 的配置可以在“/app/DRP/main.c”文件中设置。文件顶部提供了一个示例配置。
有关配置结构和有效值的信息,请参阅“PDlib/tusb422_common.h”。以下是可配置参数的描述。
USB Type-C 配置:
USB PD 配置:
USB PD 源 PDO 配置:
USB PD 接收器 PDO 配置:
USB PD 配置(布尔标志):
2.2 USB-PD 3.0 支持
可以通过在“usb_pd_policy_engine.h”中取消注释以下宏来启用 USB-PD 3.0 支持:
#define ENABLE_USB_PD_REV3_SUPPORT
如果启用了 USB-PD 3.0,可以通过取消注释以下宏来启用扩展消息支持:
#define ENABLE_EXTENDED_MSG_SUPPORT
启用 USB-PD 3.0 支持会增加固件映像的大小,除非应用程序需要 USB-PD 3.0 功能,否则不建议启用。
2.3 VDM 支持
USB-PD 供应商定义消息(VDM)支持可以通过在“PDlib/usb_pd_policy_engine.h”中取消注释或注释以下定义来控制:
#define ENABLE_VDM_SUPPORT
如果启用了 VDM 支持,可以使用以下定义启用可选的替代模式支持:
#define ENABLE_DP_ALT_MODE_SUPPORT
#define ENABLE_HDMI_ALT_MODE_SUPPORT
如果启用了 VDM 支持,请确保在“/app/DRP/main.c”文件中为您的应用程序设置适当的 VDM 配置参数。
目前,支持的 SVID 数量限制为三个,并且每个 SVID 仅支持单一模式。
USB PD VDM 配置:
当启用 VDM 支持时,端口将尝试对电缆插头进行 Discover Identity。如果端口支持模式操作(由 ID 头 VDO 指示),端口还将在显式合同协商后尝试对端口伙伴进行 Discover Identity。端口将响应 Discover Identity 请求。
支持 DisplayPort 和 HDMI 替代模式所需的 VDM 消息代码已包含在内。可以修改“PDlib/usb_pd_policy_engine.c”文件以添加对其他模式或供应商定义的 SVID 的支持。在源代码中搜索“[VDM]”以查看可以添加其他 SVID 和模式支持的位置。
目前,支持的 SVID 数量限制为三个,并且每个 SVID 仅支持单一模式。
要完成 DP 替代模式的平台集成,必须执行以下操作:修改 tusb422_common.c 中的 tcpm_mux_control() 以控制替代模式多路复用器。对于 DP 接收器,必须在 HPD-IN 更改时调用 usb_pd_policy_engine.c 中的 usb_pd_pe_hpd_in_event() 函数。并且应修改 timeout_alt_mode_entry() 以在 USB 接口上显示 billboard。对于 DP 源,应修改 tusb422_common.c 中的 tcpm_hpd_out_control() 函数以控制 DP 源的 HPD-OUT。
3. 代码 ROM/RAM 大小优化
使用默认项目设置时,TUSB422 软件启用了通过 MCU 的 UART 进行调试输出,并使用 RAM 中的大型循环缓冲区。为了最小化 ROM 和 RAM 使用,可以将编译器预处理器定义的符号更改为零(最低级别)以禁用所有 UART 调试:
DEBUG_LEVEL=0
项目的代码优化级别也可以从“高/平衡”更改为“高/大小”以进一步减小代码大小。
4. 通过 UART 调试
TUSB422 软件可以通过 MCU 的 UART 提供调试接口。UART 代码使用 RAM 缓冲区来帮助缓解代码执行速度的减慢,但过多的调试输出仍可能导致 USB-PD 时序违规。如果 USB-PD 合同协商或合规性测试失败,请尝试减少或禁用调试输出。
LaunchPad MCU EVM 通过其 micro-USB 连接支持 UART。要确定正确的 COM 端口号,请连接 LaunchPad EVM,打开设备管理器,并查找“XDS110 Class Application/User UART”。
4. 移植到其他微控制器
图 1 中的 TCPM HAL 块必须移植到其他微控制器上才能使用该软件。通常,必须实现以下功能:
表 2 提供了文件和函数列表,作为移植过程的起点,但可能并不完全包含所有内容。
文件名 | 函数 |
---|---|
PDlib/tcpci.c | _tcpc_write() _tcpc_read() tcpc_write_block() tcpc_read_block() |
hal/MSPxxx/tcpm_hal.c | tcpm_hal_vbus_enable() tcpm_hal_vbus_disable() |
hal/MSPxxx/timer.c | timer_start() timer_cancel() msleep() |
hal/MSPxxx/uart_hal.c | HAL_UART_TxByte() |
表 2: 软件移植的文件和函数
timer_start() 函数应能够根据应用程序处理并发定时器。大多数应用程序只需要一个软件定时器,但 HDMI 和 DisplayPort 的替代模式适配器需要额外的定时器。如果指定了相同的定时器指针,timer_start() 函数应在重新启动之前取消任何现有的定时器。msleep() 函数不应取消任何正在运行的定时器。
应用程序 | 可能的并发定时器数量 |
---|---|
DisplayPort 替代模式适配器 | 2 |
HDMI 替代模式适配器 | 3 |
其他 | 1(仅单个定时器) |
表 3: 基于应用的并发定时器计数
PD 软件实现了 SMBus 库,以提供未来控制其他电源 IC 的灵活性,这些 IC 可能需要 SMBus 协议,但这并不是严格要求的,因为 TUSB422 仅使用 I²C。开发人员可以选择使用 I²C 或 SMBUS 来移植“PDlib/tcpci.c”文件。如果使用 I²C 而不是 SMBUS,则必须使用“PDlib/tcpm.c”中的替代 tcpm_read_message() 函数,并且还必须修改 tcpm_transmit() 函数。源代码中有注释以帮助进行此修改。
TUSB422 MCU 软件用户指南
作者:GUET_一路向前