TUSB422 MCU 软件用户指南
文章目录
- TUSB422 MCU 软件用户指南
- 目录
- 表格
- 图表
- 1. 介绍
- 2. 配置
- 2.1 通用配置
- 2.2 USB-PD 3.0 支持
- 2.3 VDM 支持
- 3. 代码 ROM/RAM 大小优化
- 4. 通过 UART 调试
- 4. 移植到其他微控制器
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 用户指南。
该软件符合以下规范:
- USB Type-C 端口控制器接口规范,Rev 1.0,Ver 1.1。
- USB Type-C 电缆和连接器规范,Rev 1.2。
- USB 电源传输规范,Rev 2.0,Ver 1.2。
- USB 电源传输规范,Rev 3.0,Ver 1.0a。
软件架构如图 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 配置:
- role: Type-C 角色:0 = SRC(源),1 = SNK(接收器),2 = DRP(双角色端口)。
- rp_val: 源电流广告:0 = 默认,1 = 1.5A,2 = 3.0A。
- flags: 选项标志:0 = 无,1 = Try.SRC,2 = Try.SNK。
USB PD 配置:
- src_settling_time_ms: 电压转换后电源供应稳定的时间(以毫秒为单位,默认 50 ms)。
- pdo_priority: 源 PDO 选择优先级:0 = 电压,1 = 电流,2 = 功率。
- fast_role_swap_support: 快速角色交换(FRS)支持:0 = 不支持(默认),1 = 默认功率,2 = 1.5A,3 = 3.0A。TUSB422 的 WCSP 封装不支持 FRS,因为它没有直接控制 VBUS 的引脚。
- num_src_pdos: 源 PDO 的数量 [0-6]。
- num_snk_pdos: 接收器 PDO 的数量 [0-6]。
- src_caps[]: 源 PDO 数组。
- snk_caps[]: 接收器 PDO 数组。
USB PD 源 PDO 配置:
- SupplyType: 电源类型:0 = 固定,1 = 电池,2 = 可变。
- Peakl: 峰值电流:0 = 默认,1 = 110% 电流持续 10ms,2 = 125% 电流持续 10ms,3 = 150% 电流持续 10ms(仅适用于固定和可变类型)。
- MinV: 最小电压(以 50 mV 为单位)。
- MaxV: 最大电压(以 50 mV 为单位,仅适用于可变和电池类型)。
- Maxl: 最大电流(以 10 mA 为单位,仅适用于固定和可变类型)。
- MaxPower: 最大功率(以 250 mW 为单位,仅适用于电池类型)。
USB PD 接收器 PDO 配置:
- SupplyType: 电源类型:0 = 固定,1 = 电池,2 = 可变。
- MinV: 最小电压(以 50 mV 为单位)。
- MaxV: 最大电压(以 50 mV 为单位,仅适用于可变和电池类型)。
- MaxOperatingCurrent: 最大工作电流(以 10 mA 为单位,仅适用于固定和可变类型)。
- MinOperatingCurrent: 最小工作电流(以 10 mA 为单位,仅适用于固定和可变类型)。
- OperationalCurrent: 工作电流(以 10 mA 为单位,仅适用于固定和可变类型)。
- MaxOperatingPower: 最大工作功率(以 250 mW 为单位,仅适用于电池类型)。
- MinOperatingPower: 最小工作功率(以 250 mW 为单位,仅适用于电池类型)。
- OperationalPower: 工作功率(以 250 mW 为单位,仅适用于电池类型)。
USB PD 配置(布尔标志):
- usb_comm_capable: 接收器和/或源能够进行 USB 数据通信。
- no_usb_suspend: 接收器请求在 USB 挂起期间继续其电源合同。
- usb_suspend_supported: 源指示接收器应遵循 USB 2.0 或 USB 3.1 的挂起和恢复。
- externally_powered: 源由外部供电。
- dual_role_data: 端口支持双角色数据并支持 DR_Swap 消息。
- higher_capability: 接收器需要超过 5V 的电压以提供完整功能。
- giveback_flag: 接收器将响应 GotoMin 消息并将其负载减少到最小工作电流。
- auto_accept_swap_to_dfp: 自动接受数据角色交换请求到主机。
- auto_accept_swap_to_ufp: 自动接受数据角色交换请求到设备。
- auto_accept_swap_to_source: 自动接受电源角色交换请求到源。
- auto_accept_swap_to_sink: 自动接受电源角色交换请求到接收器。
- auto_accept_vconn_swap: 自动接受 VCONN 交换请求,即使当前不是 VCONN 源。
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 配置:
- id_header_vdo: 32 位 ID 头 VDO,用于 Discover Identity 响应。
- cert_stat_vdo: 32 位证书状态 VDO,用于 Discover Identity 响应。
- product_vdo: 32 位产品 VDO,用于 Discover Identity 响应。
- num_product_type_vdos: 产品类型 VDO 的数量 [0-3]。
- product_type_vdos[0]: 第一个 32 位产品类型 VDO(如果适用)。
- product_type_vdos[1]: 第二个 32 位产品类型 VDO(如果适用)。
- product_type_vdos[2]: 第三个 32 位产品类型 VDO(如果适用)。
- num_svids: 支持的 SVID 数量 [0-3]。
- svids[0]: 第一个 16 位 SVID(如果适用)。
- svids[1]: 第二个 16 位 SVID(如果适用)。
- svids[2]: 第三个 16 位 SVID(如果适用)。
- modes[0]: 第一个 SVID 的 32 位模式值(如果适用)。
- modes[1]: 第二个 SVID 的 32 位模式值(如果适用)。
- modes[2]: 第三个 SVID 的 32 位模式值(如果适用)。
- multi_function_preferred: 对于支持 DisplayPort 替代模式的 UFP,布尔值表示对 USB SuperSpeed + 1 或 2 个 DisplayPort 通道的偏好。
- ufp_alt_mode_entry_timeout_enable: UFP 替代模式进入超时启用。
当启用 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 块必须移植到其他微控制器上才能使用该软件。通常,必须实现以下功能:
- I²C 主控(用于读取/写入 TUSB422 寄存器)。
- 具有毫秒分辨率的定时器和 msleep() 函数。
- 用于 VBUS 电源控制的 GPIO。
- 用于调试输出的 UART(可选)。
表 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 软件用户指南
相关文章:
TUSB422 MCU 软件用户指南
文章目录 TUSB422 MCU 软件用户指南 目录表格图表1. 介绍2. 配置2.1 通用配置2.2 USB-PD 3.0 支持2.3 VDM 支持 3. 代码 ROM/RAM 大小优化4. 通过 UART 调试4. 移植到其他微控制器 TUSB422 MCU 软件用户指南 摘要 本文档是 TUSB422 微控制器基于 Type-C 端口控制(…...
Django在终端创建项目(pycharm Windows)
1.选择目录 选择或新建一个文件夹,作为项目保存的地方 2.右键在终端打开 3.确定django-admin.exe安装位置 找到自己安装django时,django-admin.exe安装的位置,例如 4.运行命令 使用django-admin.exe的绝对路径,在刚才打开的终端…...
wordpress主题制作
工具/原料 <P><BR>使用divcss语言编写的html静态页面一个</P> <P>Macromedia Dreamweaver软件<BR></P> WordPress主题结构分析 1 1、index.php首页模板(最基本) ---- 1、header.php头部 ---- 2、sidebar.php侧边…...
echarts 3d中国地图飞行线
一、3D中国地图 1. 一定要使用 echarts 5.0及以上的版本; 2. echarts 5.0没有内置中国地图了。点击下载 china.json; 3. 一共使用了四层地图。 (1)第一层是中国地图各省细边框和展示南海诸岛; (2)第二层是…...
视频基础操作
1.1. 例子 读取mp4格式的视频,将每一帧改为灰度图,并且打上水印(“WaterMark”),并将其输出保存为out.mp4,在这个例子中可以看到视频读取,每帧数据处理,视频保存的整体流程简单示例 import cv…...
微信小程序 - 组件和样式
组件和样式介绍 在开 Web 网站的时候: 页面的结构由 HTML 进行编写,例如:经常会用到 div、p、 span、img、a 等标签 页面的样式由 CSS 进行编写,例如:经常会采用 .class 、#id 、element 等选择器 但在小程序中不能…...
在本地校验密码或弱口令 (windows)
# 0x00 背景 需求是验证服务器的弱口令,如果通过网络侧校验可能会造成账户锁定风险。在本地校验不会有锁定风险或频率限制。 # 0x01 实践 ## 1 使用 net use 命令 可以通过命令行使用 net use 命令来验证本地账户的密码。打开命令提示符(CMD࿰…...
【Elasticsearch】Elasticsearch检索方式全解析:从基础到实战(二)
接着上一篇文章;我们继续来研究es的复杂检索 文章目录 (1) bool用来做复合查询(2)Filter【结果过滤】(3)term(4)Aggregation(执行聚合) (1) bool用来做复合查询 复合语…...
游戏引擎学习第96天
讨论了优化和速度问题,以便简化调试过程 节目以一个有趣的类比开始,提到就像某些高端餐厅那样,菜单上充满了听起来陌生或不太清楚的描述,需要依靠服务员进一步解释。虽然这听起来有些奇怪,但实际上,它反映…...
(Xshell 8 + Xftp 8)下载安装miniconda至服务器指定目录+配置虚拟环境
一一一一 Xshell 8 Xftp 8均已登录,miniconda.sh安装包已经放在服务器指定目录中 二二二二 赋予脚本执行权限 chmod x Miniconda3-latest-Linux-x86_64.sh安装miniconda ./Miniconda3-latest-Linux-x86_64.sh -p /data1/huyan/zhangyifeng/miniconda3一直Enter…...
多机器人系统的大语言模型:综述
25年2月来自 Drexel 大学的论文“Large Language Models for Multi-Robot Systems: A Survey”。 大语言模型 (LLM) 的快速发展为多机器人系统 (MRS) 开辟新的可能性,从而增强通信、任务规划和人机交互。与传统的单机器人和多智体系统不同,MRS 带来独特…...
通用的将jar制作成docker镜像sh脚本
通用的将jar制作成docker镜像sh脚本 为了在将 JAR 制作成 Docker 镜像的过程中创建日志目录,可以对之前的脚本进行扩展。以下是改进后的脚本,会在镜像构建时在容器内创建日志目录,并将日志文件挂载到该目录下。 在生成的 Dockerfile 中添加…...
Python----PyQt开发(PyQt基础,环境搭建,Pycharm中PyQttools工具配置,第一个PyQt程序)
一、QT与PyQT的概念和特点 1.1、QT QT是一个1991年由The Qt Company开发的跨平台C图形用户界面应用程序开发 框架,可构建高性能的桌面、移动及Web应用程序。也可用于开发非GUI程序,比如 控制台工具和服务器。Qt是面向对象的框架,使用特殊的代…...
DeepSeek+3D视觉机器人应用场景、前景和简单设计思路
DeepSeek3D视觉机器人在多个领域具有广泛的应用场景和巨大的前景。以下是详细的分析: 应用场景 制造业 自动化装配:机器人可以精确地抓取和装配零件,提高生产效率和产品质量。 质量检测:通过3D视觉技术检测产品缺陷,确…...
MT6835 21位 磁编码器 SPI 平台无关通用驱动框架 STM32
MT6835 21位 磁编码器 SPI 平台无关通用驱动框架 STM32 1. 获取代码:2. 加入你的项目2.1 以 STM32 为例:2.2 以 ESP-IDF 为例: 3. 对接 API3.1 以 STM32 为例: 4. 更多函数说明5. 写入 EEPROM 示例 MT6835 Framework 纯C语言实现,跨平台&…...
python视频爬虫
文章目录 爬虫的基本步骤一些工具模拟浏览器并监听文件视频爬取易错点一个代码示例参考 爬虫的基本步骤 1.抓包分析,利用浏览器的开发者工具 2.发送请求 3.获取数据 4.解析数据 5.保存数据 一些工具 requests, 用于发送请求,可以通过get,p…...
嵌入式WebRTC压缩至670K,目标将so动态库压缩至500K,.a静态库还可以更小
最近把EasyRTC的效果发布出去给各大IPC厂商体验了一下,直接就用EasyRTC与各个厂商的负责人进行的通话,在通话中,用户就反馈效果确实不错! 这两天有用户要在海思hi3516cv610上使用EasyRTC,工具链是:gcc-2024…...
Rhel Centos环境开关机自动脚本
Rhel Centos环境开关机自动脚本 1. 业务需求2. 解决方法2.1 rc.local2.2 rc.d2.3 systemd2.4 systemd附着的方法2.5 tuned 3. 测试 1. 业务需求 一台较老的服务器上面业务比较简单,提供一个简单的网站,但已经没有业务的运维人员. 想达到的效果: 由于是非标准的apache或者nginx…...
phpipam1.7安装部署
0软件说明 phpipam是一个开源Web IP地址管理应用程序(IPAM) phpipam官网:https://www.phpipam.net/ 1安装环境 操作系统:Rocky Linux9.5x86_64 phpipam版本:1.7 php版本:8.0.30 数据库版本:…...
深入理解org.springframework.web.context.request.RequestContextHolder
在Spring Web应用中,RequestContextHolder是一个非常有用的工具类,用于在任何地方访问当前请求的上下文信息。它解决了非Controller层或非过滤器层需要访问请求上下文的问题,如在Service层或DAO层。以下是对 RequestContextHolder的详细解析。…...
Django中select_related 的作用
Django中这句代码Dynamic.objects.select_related(song)是什么意思? 在 Django 中,这句代码: Dynamic.objects.select_related(song) 的作用是 在查询 Dynamic 模型的同时,预加载 song 关联的外键对象,从而减少数据…...
正泰中间电磁继电器【8脚10A】DC24V 待机功率
需求:继电器能耗测试。 1.连接24V2A的电源, 2. 稳定功率为 1.4W 3. 正泰中间电磁继电器【8脚10A】直流DC24V 注:联通时电磁继电器会轻微发热 4.电磁继电器的工作原理基于电流的磁效应 电磁激励:电磁继电器主要由线圈、铁芯、衔…...
C++ 中的 Const 关键字(1)
C 中的 Const 关键字 最后更新: 2024 年 8 月 6 日 本文讨论了C中const 关键字的各种功能。只要将const 关键字附加到任何方法 ()、变量、指针变量以及类的对象上,它就会阻止特定对象/方法 ()/变量修改其数据项的值。 常量变量: 常量变量的声…...
Mac上搭建宝塔环境并部署PHP项目
安装Docker Desktop》搭建Centos版本的宝塔环境》部署PHP项目 1. 下载Docker for mac 软件:https://www.docker.com/ 或使用终端命令:brew install --cask --appdir/Applications docker 2. 使用命令安装宝塔环境的centos7系统: docker pul…...
哈希表-两个数的交集
代码随想录-刷题笔记 349. 两个数组的交集 - 力扣(LeetCode) 内容: 集合的使用 , 重复的数剔除掉,剩下的即为交集,最后加入数组即可。 class Solution {public int[] intersection(int[] nums1, int[] nums2) {Set<Integer…...
win11 终端乱码导致IDE 各种输出也乱码
因为 win11 终端乱码导致IDE 各种输出也乱码导致作者对此十分头大。所以研究了各种方法。 单独设置终端编码对 HKEY_CURRENT_USER\Console 注册表进行修改对 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processo 注册表进行修改使用命令[Console]::OutputEncoding [Syst…...
LabVIEW用户界面(UI)和用户体验(UX)设计
作为一名 LabVIEW 开发者,满足功能需求、保障使用便捷与灵活只是基础要求。在如今这个用户体验至上的时代,为 LabVIEW 应用程序设计直观且具有美学感的界面,同样是不容忽视的关键任务。一个优秀的界面设计,不仅能提升用户对程序的…...
23、深度学习-自学之路-激活函数relu、tanh、sigmoid、softmax函数的正向传播和反向梯度。
在使用这个非线性激活函数的时候,其实我们重点还是学习的是他们的正向怎么传播,以及反向怎么传递的。 如下图所示: 第一:relu函数的正向传播函数是:当输入值(隐藏层)值大于了,就输出…...
【matlab优化算法-16期】基于遗传算法的电热气及储能综合优化项目实践
电热气及储能综合优化项目实践 一、前言 随着能源转型和可持续发展的推进,综合能源系统的优化逐渐成为研究热点。本文介绍了一个电热气及储能综合优化项目,旨在通过优化算法实现多能源系统的协同运行,提高能源利用效率,降低运行…...
单例模式和单例Bean
单例模式 定义:单例模式是一种软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。 实现方式 饿汉式:在类加载时就立即创建单例实例,线程安全,调用效率高,但可能会造成…...
