当前位置: 首页 > news >正文

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)软件的用户指南。本指南旨在帮助用户进行软件的配置、调试和移植。


目录

  1. 介绍 … 3
  2. 配置 … 4
    • 2.1 通用配置 … 4
    • 2.2 USB-PD 3.0 支持 … 5
    • 2.3 VDM 支持 … 6
  3. 代码 ROM/RAM 大小优化 … 7
  4. 通过 UART 调试 … 7
    • 3.1 UART 命令 … 9
  5. 移植到其他微控制器 … 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.ctcpm_hal_vbus_enable() tcpm_hal_vbus_disable()
hal/MSPxxx/timer.ctimer_start() timer_cancel() msleep()
hal/MSPxxx/uart_hal.cHAL_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 端口控制(…...

BUU37 [DASCTF X GFCTF 2024|四月开启第一局]web1234100

Hint1&#xff1a;本题的 flag 不在环境变量中 Hint2&#xff1a;session_start&#xff08;&#xff09;&#xff0c;注意链子挖掘 题目&#xff1a; 扫描出来www.zip class.php <?phpclass Admin{public $Config;public function __construct($Config){//安全获取基…...

常见的排序算法:插入排序、选择排序、冒泡排序、快速排序

1、插入排序 步骤&#xff1a; 1.从第一个元素开始&#xff0c;该元素可以认为已经被排序 2.取下一个元素tem&#xff0c;从已排序的元素序列从后往前扫描 3.如果该元素大于tem&#xff0c;则将该元素移到下一位 4.重复步骤3&#xff0c;直到找到已排序元素中小于等于tem的元素…...

vue学习9

1.文章分类页面-element-plus表格 基本架子-PageContainer封装 按需引入的彩蛋&#xff0c;components里面的内容都会自动注册 用el-card组件&#xff0c;里面使用插槽或具名插槽 文章分类渲染 & loading处理 序号&#xff1a; <el-table-column type"index"…...

TDengine 性能测试工具 taosBenchmark

简介工具获取运行 无参数模式命令行模式配置文件模式 命令行参数配置文件参数 通用配置参数写入配置参数 数据库相关超级表相关标签列与数据列写入行为相关 查询配置参数 执行指定查询语句查询超级表 订阅配置参数数据类型对照表 配置文件示例 写入 JSON 示例查询 JSON 示例订阅…...

【xdoj离散数学上机】T283

递归函数易错&#xff1a; 防止出现递归死循环&#xff01; 题目 题目&#xff1a;求诱导出的等价关系的关系矩阵 问题描述 给定有限集合上二元关系的关系矩阵&#xff0c;求由其诱导出的等价关系的关系矩阵。 输入格式 第一行输入n&#xff0c;表示矩阵为n阶方阵&#xff0c…...

Javaweb中,使用Servlet编写简单的接口

案例&#xff1a;网页提交用户名和密码信息&#xff0c;后端校验密码长度需在6-12位之间 后端部分 WebServlet("/valid") public class SimpleServlet extends HttpServlet{public void service(HttpServletRequest req, HttpServletResponse resp) throws IOExcepti…...

GESP5级语法知识(十):初级数论(三)

埃氏筛法&#xff1a; #include <iostream> using namespace std; const int N1e61; int pri[N]; void prime(int n){for(int i2;i*i<n;i){if(pri[i]0){ // 如果i为素数for(int jii;j<n;ji){pri[j]1; // 将i的倍数标记为合数}}} } int main(){int n;cin>>n;…...

“PEP 8: W292 no newline at end of file“报错 IntelliJ IDEA自动添加空行问题

"PEP 8: W292 no newline at end of file"报错 IntelliJ IDEA自动添加空行问题 在使用IntelliJ IDEA的过程中&#xff0c;经常会发现不管是对于代码文件或者纯文本文件&#xff0c;在保存时中会在文件末尾加上一个空行&#xff0c;提交GIT对比检查时&#xff0c;总是…...

ComfyUI工作流 FluxRedux基础换装

文章目录 FluxRedux基础换装SD模型Node节点工作流程效果展示开发与应用FluxRedux基础换装 该工作流的目标是实现服装换装功能,利用多种深度学习模型和图像处理技术,通过用户输入的服装图像和模特图像,生成逼真的换装效果图。整个工作流涵盖了从图像加载、模型编码、条件生成…...

【机器学习】常见采样方法详解

在机器学习领域&#xff0c;数据采样&#xff08;Sampling&#xff09;是一项至关重要的技术。它不仅影响模型的训练效率&#xff0c;还直接关系到模型的性能与泛化能力。本文将从基础概念出发&#xff0c;逐步深入介绍机器学习中常见的采样方法&#xff0c;帮助读者全面理解并…...

使用瑞芯微RK3588的NPU进行模型转换和推理

使用边缘设备进行算法落地时&#xff0c;通常要考虑模型推理速度&#xff0c;NVIDA系列平台可以使用TensorRT和CUDA加速&#xff0c;瑞芯微RK3588的板子上都是Arm的手机GPU&#xff0c;虽然没有类似CUDA的加速计算方式&#xff0c;但是提供了NPU进行加速推理&#xff0c;本文说…...

Flutter项目试水

1基本介绍 本文章在构建您的第一个 Flutter 应用指导下进行实践 可作为项目实践的辅助参考资料 Flutter 是 Google 的界面工具包&#xff0c;用于通过单一代码库针对移动设备、Web 和桌面设备构建应用。在此 Codelab 中&#xff0c;您将构建以下 Flutter 应用。 该应用可以…...

【算法学习】DFS与BFS

目录 一&#xff0c;深度优先搜索 1&#xff0c;DFS 2&#xff0c;图的DFS遍历 (1)&#xff0c;递归实现&#xff08;隐士栈&#xff09; (2)&#xff0c;显示栈实现&#xff08;非递归&#xff09; 二&#xff0c;广度优先搜索 1&#xff0c;BFS 2&#xff0c;图的BF…...

100.16 AI量化面试题:监督学习技术在量化金融中的应用方案

目录 0. 承前1. 解题思路1.1 应用场景维度1.2 技术实现维度1.3 实践应用维度 2. 市场预测模型2.1 趋势预测2.2 模型训练与评估 3. 风险评估模型3.1 信用风险评估 4. 投资组合优化4.1 资产配置模型 5. 回答话术 0. 承前 本文通过通俗易懂的方式介绍监督学习在量化金融中的应用&a…...

基于deepseek api和openweather 天气API实现Function Calling技术讲解

以下是一个结合DeepSeek API和OpenWeather API的完整Function Calling示例&#xff0c;包含意图识别、API调用和结果整合&#xff1a; import requests import json import os# 配置API密钥&#xff08;从环境变量获取&#xff09; DEEPSEEK_API_KEY os.getenv("DEEPSEE…...

线性数据结构解密:数组的定义、操作与实际应用

系列文章目录 01-从零开始掌握Python数据结构&#xff1a;提升代码效率的必备技能&#xff01; 02-算法复杂度全解析&#xff1a;时间与空间复杂度优化秘籍 03-线性数据结构解密&#xff1a;数组的定义、操作与实际应用 文章目录 系列文章目录前言一、数组的定义与特点1.1 数组…...

CentOS搭建PPPOE服务器

一、安装软件包 yum -y install rp-pppoe 二、配置服务器 1.修改配置文件 打开/etc/ppp/pppoe-server-options文件 nano /etc/ppp/pppoe-server-options 编辑为以下内容&#xff1a; # PPP options for the PPPoE server # LIC: GPL require-pap require-chap login …...

【报错】解决 RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE 报错问题

解决 RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE 报错问题 写在最前面问题描述可能的原因分析解决方案该命令的作用 结论 写在最前面 在多用户使用的服务器上&#xff0c;导致的环境变量的冲突和不匹配问题&#xff0c; 代码没有问题&#xff0c;但程序运行异常。…...

【C语言】C语言 文具店商品库存管理系统(源码+数据文件)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 系列文章目录 目录 系列文章目录一、设计要求1. 项…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...