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

imx6 usb增强信号强度

USB信号

参考:官方文档

USB信号完整性取决于许多因素,如电路设计、PCB布局、堆叠和阻抗。每个产品可能彼此不同,因此客户需要微调参数,以获得最佳的信号质量。

测试板已经路由出两个USB端口:一个OTG1,一个主机。每个端口都有几个寄存器来调整信号电压水平和转换速率。请参见文档“配置USB on i.m mx 6 Series (AN4589)”中对寄存器的详细描述。

USBPHYx_TXn

USB PHY发射机控制寄存器处理传输控制。位字段TXCAL45DP和TXCAL45DM, D_CAL调节输出电压幅值。

ps:该软件不支持OTG的全部功能,该端口通常用作设备或嵌入式主机,由USB_ID选择。

Command samples:
/unit_tests/memtool 0x20c9010 1 // OTG Port Read register data
/unit_tests/memtool 0x20cA010 1 // Host Port Read register data
/unit_tests/memtool 0x20c9010=0x1c060607 //write OTG_PHY_TX1
/unit_tests/memtool 0x20cA010=0x1c060607 //write HOST_PHY_TX

TXCAL45DP、TXCAL45DM:

位域TXCAL45DP和TXCAL45DM可以改变高速终端的电阻。增加终端电阻器的值将增加DM/DP信号电平。
解码选择45欧姆电阻到USB_DP输出引脚。
最大阻力= 0000。

D_CAL

有了这个字段,高速驱动器的当前参考可以修整。
降低电阻将增加驱动器电流,因此传输信号的幅度将增加。
电阻微调代码:
0000 = 0.16%
0111 = NORMAL
1111 = +25%

在这里插入图片描述
ps:请记住在调整寄存器之前将DUT连接到相应的主机/设备,否则操作可能无效或可能导致系统崩溃。

修改应用

imx6qdl.dtsi+&usbphy1 {
+    tx-d-cal = <5>;
+    tx-txcal45dn = <4>;
+    tx-txcal45dp = <4>;
+};
phy-mxs-usb.c+#define HW_USBPHY_TX_TXCAL45DN_MASK     0xf00
+#define HW_USBPHY_TX_TXCAL45DP_MASK     0xf0000#define BM_USBPHY_CTRL_SFTRST                  BIT(31)#define BM_USBPHY_CTRL_CLKGATE                 BIT(30)
@@ -191,6 +193,8 @@ struct mxs_phy {struct regulator *phy_3p0;bool hardware_control_phy2_clk;u32 tx_d_cal;
+       u32 tx_txcal45dn;
+       u32 tx_txcal45dp;};static inline bool is_imx6q_phy(struct mxs_phy *mxs_phy)
@@ -264,6 +268,20 @@ static int mxs_phy_hw_init(struct mxs_phy *mxs_phy)writel(val | mxs_phy->tx_d_cal, base + HW_USBPHY_TX);}+       /* Change TXCAL45DN if necessary */
+       if (mxs_phy->tx_txcal45dn) {
+               val = readl(base + HW_USBPHY_TX);
+               val &= ~HW_USBPHY_TX_TXCAL45DN_MASK;
+               writel(val | (mxs_phy->tx_txcal45dn << 8), base + HW_USBPHY_TX);
+    }
+
+       /* Change TXCAL45DP if necessary */
+       if (mxs_phy->tx_txcal45dp) {
+               val = readl(base + HW_USBPHY_TX);
+               val &= ~HW_USBPHY_TX_TXCAL45DP_MASK;
+               writel(val | (mxs_phy->tx_txcal45dp << 16), base + HW_USBPHY_TX);
+    }
+return 0;}@@ -637,6 +655,26 @@ static int mxs_phy_probe(struct platform_device *pdev)}}+       if (of_find_property(np, "tx-txcal45dn", NULL)) {
+               ret = of_property_read_u32(np, "tx-txcal45dn",
+                       &mxs_phy->tx_txcal45dn);
+               if (ret) {
+                       dev_err(&pdev->dev,
+                               "failed to get txcal45dn value\n");
+                       return ret;
+               }
+       }
+
+       if (of_find_property(np, "tx-txcal45dp", NULL)) {
+               ret = of_property_read_u32(np, "tx-txcal45dp",
+                       &mxs_phy->tx_txcal45dp);
+               if (ret) {
+                       dev_err(&pdev->dev,
+                               "failed to get txcal45dp value\n");
+                       return ret;
+               }
+       }
+platform_set_drvdata(pdev, mxs_phy);

PMU_REG_3P0

这个寄存器定义了内部LDO_USB模块的控制位和状态位,该模块由两个USB VBUS引脚中的任意一个供电。该调节器只提供低速和全速收发器USB PHYs。因此,它只影响全速和低速变速器的电压水平,而不影响高速变速器。
在这里插入图片描述
在这里插入图片描述

USBC_n_PORTSC1

端口控制通常用于状态端口复位、挂起和当前连接状态。端口控制也用于启动测试模式或强制信令,并允许软件将PHY置于低功率悬挂模式并禁用PHY时钟。

Command samples:
/unit_tests/memtool 0x2184184 1 //OTG Port Read register data
/unit_tests/memtool 0x2184184=0x18441205 //OTG Port Test packet
/unit_tests/memtool 0x2184184=0x18411205 //OTG Port J_STATE
/unit_tests/memtool 0x2184184=0x18421205 //OTG Port K_STATE
/unit_tests/memtool 0x2184184=0x18431205 //OTG Port SE0 (host) / NAK (device)
/unit_tests/memtool 0x2184184=0x18401305 //OTG Port Reset
/unit_tests/memtool 0x2184184=0x18401285 //OTG Port Suspend
/unit_tests/memtool 0x2184184=0x18401245 //OTG Port Resume
/unit_tests/memtool 0x2184384 1 //Host Port Read register data
/unit_tests/memtool 0x2184384=0x18441205 //Host Port Test packet
/unit_tests/memtool 0x2184384=0x18411205 //Host Port J_STATE
/unit_tests/memtool 0x2184384=0x18421205 //Host Port K_STATE
/unit_tests/memtool 0x2184384=0x18431205 //Host Port SE0 (host) / NAK (device)
/unit_tests/memtool 0x2184384=0x18401305 //Host Port Reset
/unit_tests/memtool 0x2184384=0x18401285 //Host Port Suspend
/unit_tests/memtool 0x2184384=0x18401245 //Host Port Resume

在这里插入图片描述
在这里插入图片描述

其他有用的命令和脚本

Command samples:
echo mem > /sys/power/state // Let the system enter suspend (standby) mode
echo enabled > /sys/class/tty/ttymxc0/power/wakeup // Set Console as the
system wakeup source
for i in $(find /sys -name wakeup | grep usb);do echo enabled > $i;echo "echo
enabled > $i";done; // USB remote wakeup (as system wakeup source) is not
enabled by default, user can enable this feature by using this script, after
plugging in the USB device.

相关文章:

imx6 usb增强信号强度

USB信号 参考&#xff1a;官方文档 USB信号完整性取决于许多因素&#xff0c;如电路设计、PCB布局、堆叠和阻抗。每个产品可能彼此不同&#xff0c;因此客户需要微调参数&#xff0c;以获得最佳的信号质量。 测试板已经路由出两个USB端口:一个OTG1&#xff0c;一个主机。每个端…...

深入理解性能压测工具原理

如果没有性能测试工具如何通过手工实现 如果没有性能测试工具&#xff0c;通过手工进行性能测试&#xff0c;这是一个值得我们思考的问题。这时候需要一个协调员发送指令&#xff0c;一个操作员进行操作&#xff0c;对系统施加压力&#xff0c;多个操作员代表着多个用户进行并…...

Java的概述和运行方式

目录 一.Java是什么&#xff1f; 1.1Java的目前状况和学习需求 1.2Java的平台分类和特点 二.Java程序的运行方式 2.1 Java的程序结构 2.2 JDK、JRE、JVM的关系 2.3 Java运行详情 总结 &#x1f63d;个人主页&#xff1a;tq02的博客_CSDN博客-领域博主 &#x1f308;理想…...

【C语言】每日刷题 —— 牛客

前言 大家好&#xff0c;今天带来一篇新的专栏 c_牛客&#xff0c;不出意外的话每天更新十道题&#xff0c;难度也是从易到难&#xff0c;自己复习的同时也希望能帮助到大家&#xff0c;题目答案会根据我所学到的知识提供最优解。 &#x1f3e1;个人主页&#xff1a;悲伤的猪大…...

JavaEE课程实践-Servlet的部署(tomcat服务器)

目录 Servlet简述 tomcat服务器的安装和运行 Servlet的部署 部署具体步骤 一、创建maven工程 二、创建Servlet类 三、导入相应jar包 四、编写Servlet代码 五、运行maven项目&#xff0c;启动tomcat服务器 六、测试访问是否成功。 Servlet简述 Servlet 是 Java EE 技术…...

Java 中的拆箱和装箱

在 Java 中&#xff0c;每个基本数据类型都对应了一个包装类型&#xff0c;比如&#xff1a;int 的包装类型是 Integer&#xff0c;double 的包装类型是 Double…那么&#xff0c;基本数据类型和包装类型有什么区别呢&#xff1f; 大概有以下几点区别&#xff1a; 成员变量的…...

从0开始自制解释器——实现多位整数的加减法计算器

上一篇我们实现了一个简单的加法计算器&#xff0c;并且了解了基本的词法分析、词法分析器的概念。本篇我们将要对之前实现的加法计算器进行扩展&#xff0c;我们为它添加以下几个功能 计算减法能自动识别并跳过空白字符不再局限于单个整数&#xff0c;而是能计算多位整数 提…...

(12)C#传智:File类,泛型,字典,FileStream,StreamReader,多态

内容有点多&#xff0c;重点:泛型、字典&#xff0c;流与多态。 继续深入学习内容&#xff1a;List、Dictionary、using语句、FileStream 一、File类的继续学心 File.ReadAllLines(string path,Encoding,encoding)指定编码读取返回行字串数组 File.WriteAllText(string…...

Dubbo的服务暴漏与服务发现源码详解

服务暴漏 如果配置需要刷新则根据配置优先级刷新服务配置 如果服务已经导出&#xff0c;则直接返回 是否异步导出&#xff08;全局或者服务级别配置了异步&#xff0c;则需要异步导出服务&#xff09; 服务暴漏入口DefaultModuleDeployer#exportServices private void exp…...

Python 的IDE——PyCharm

IDE介绍与安装 介绍 集成开发环境&#xff08;IDE&#xff09; 集成开发环境(IDE,integrated Development Environment) —— 集成开发软件需要的所有工具&#xff0c;一般包括以下工具&#xff1a; 图形用户界面 代码编辑器(支持代码补全、自动缩进) 编译器/解释器 调试器…...

01 C语言使用链表实现队列(Queue、FIFO)模块

01 C语言使用链表实现队列&#xff08;Queue、FIFO&#xff09;模块 作者将狼才鲸创建日期2023-03-08Gitee源码仓库地址&#xff1a;C语言使用链表实现队列&#xff08;Queue、FIFO&#xff09;模块 Linux原生的队列KFIFO一次只能操作一个队列&#xff0c;操作变长元素时&…...

2.2操作系统-进程管理:前趋图、前趋图与PV操作

2.1操作系统-进程管理&#xff1a;前趋图\前趋图与PV操作前趋图前趋图与PV操作练习前趋图与PV操作&#xff0c;一般出现了&#xff0c;分值在2~3分左右&#xff0c;技巧性很强。 前趋图 前趋图是为了描述一个程序的各部分间的依赖关系&#xff0c;或者是一个大的计算的各个子…...

凤凰游攻略

凤凰游攻略1 装备&#x1f4e6;1.1 证件1.2 日常用品1.3 药品1.4 衣物1.5 洗漱用品2 交通&#x1f697;3 住宿&#x1f3e0;4 美食&#x1f355;5 拍照&#x1f4f7;5.1 租苗族服5.1.1 单租服装5.1.2 服装化妆5.2 一条龙旅拍6 路线&#x1f5fa;️景点&#x1f3d9;️7 注意⚠️…...

Nginx 高可用方案

准备工作 10.10.4.5 10.10.4.6 VIP&#xff1a;10.10.4.10 两台虚拟机。安装好Nginx 安装Nginx 更新yum源文件&#xff1a; rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm wget -O /etc/yum.repos.d/CentOS-Ba…...

Linux基本指令

文章目录 常用Linux命令常见Linux指令 1、ls指令 语法&#xff1a;ls [选项][目录或文件] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。常用选项&#xff1a; -a 列出目录下的所有文件&#xf…...

Linux系统基础命令(二)

一、浏览和切换目录 ls命令&#xff1a;列出文件和目录&#xff0c;主要用于列出文件和目录 CentOS的终端默认是有颜色标注的。一般来说&#xff1a;蓝色--->目录&#xff1b;绿色-->可执行文件&#xff1b;红色--->压缩文件&#xff1b;浅蓝色--->链接文件&#…...

【C++】C++11——简介|列表初始|简化声明|nullptr与范围for|STL中的变化

文章目录一、C11简介二、列表初始化三、简化声明四、nullptr与范围for五、STL中一些变化一、C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff0c;使得C03这个名字已经取代了C98称为C11之前的最新C标准名称。不过由于TC1主要是对C98标准中的漏洞进行修复…...

Python -- 函数

文章目录1、一个简单的函数2、多参数函数3、返回值3.1、简单的返回3.2、返回列表和字典4、传入列表5、传入任意数量的实参5.1、以元组和字典的形式5.2、形参的排列顺序6、将函数储存在模块中1、一个简单的函数 函数用关键字def来定义&#xff0c;传参时不用指定参数类型 para&…...

Pytorch中utils.data 与torchvision简介

Pytorch中utils.data 与torchvision简介1 数据处理工具概述2 utils.data简介3 torchvision简介3.1 transforms3.2 ImageFolder1 数据处理工具概述 Pytorch涉及数据处理&#xff08;数据装载、数据预处理、数据增强等&#xff09;主要工具包及相互关系如下图所示&#xff0c;主…...

学习 Python 之 Pygame 开发魂斗罗(十)

学习 Python 之 Pygame 开发魂斗罗&#xff08;十&#xff09;继续编写魂斗罗1. 解决敌人不开火的问题2. 创建爆炸效果类3. 为敌人跳入河中增加爆炸效果4. 玩家击中敌人继续编写魂斗罗 在上次的博客学习 Python 之 Pygame 开发魂斗罗&#xff08;九&#xff09;中&#xff0c;…...

使用taotoken为ubuntu系统中的openclaw工具配置聚合模型端点

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用 Taotoken 为 Ubuntu 系统中的 OpenClaw 工具配置聚合模型端点 基础教程类&#xff0c;指导习惯使用 OpenClaw 进行 AI 工作流…...

量子退火技术如何加速神经网络训练

1. 量子退火加速神经网络训练的核心原理量子退火技术之所以能够显著提升神经网络训练效率&#xff0c;关键在于其独特的量子力学特性与神经网络训练过程的深度契合。传统神经网络训练本质上是一个高维参数空间中的优化问题&#xff0c;而量子退火为解决这类问题提供了全新的物理…...

【ChatGPT商业计划书写作避坑手册】:基于216份真实BP评审数据,揭示投资人3秒淘汰BP的底层逻辑

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;ChatGPT商业计划书的核心价值定位 ChatGPT商业计划书并非通用技术方案说明书&#xff0c;而是面向特定商业场景的价值契约——它精准锚定AI能力与企业增长杠杆之间的耦合点&#xff0c;将大语言模型的泛化智能…...

3步完成API密钥配置:彻底解决Zotero-GPT插件“密钥未配置“错误

3步完成API密钥配置&#xff1a;彻底解决Zotero-GPT插件"密钥未配置"错误 【免费下载链接】zotero-gpt GPT Meet Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-gpt Zotero-GPT是一款革命性的开源插件&#xff0c;它将GPT的智能能力无缝集成到…...

抖音下载器:3分钟搞定批量下载,效率提升95%的秘密武器

抖音下载器&#xff1a;3分钟搞定批量下载&#xff0c;效率提升95%的秘密武器 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fal…...

猫抓浏览器扩展:如何高效捕获并下载网页媒体资源的终极指南

猫抓浏览器扩展&#xff1a;如何高效捕获并下载网页媒体资源的终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在当今以流媒体为主导的互联…...

机器学习处理不平衡数据:从评估指标到可解释AI的催化剂设计实战

1. 项目概述&#xff1a;当催化剂设计遇上不平衡数据在材料科学和化学工程领域&#xff0c;催化剂设计一直是一项充满挑战的工作。传统的“试错法”不仅成本高昂、周期漫长&#xff0c;而且高度依赖研究人员的经验和直觉。近年来&#xff0c;机器学习&#xff08;ML&#xff09…...

JetBrains IDE试用期重置终极指南:三步轻松恢复30天试用

JetBrains IDE试用期重置终极指南&#xff1a;三步轻松恢复30天试用 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 你是否曾因JetBrains IDE试用期到期而苦恼&#xff1f;ide-eval-resetter正是解决这一痛点的终…...

用CUDA C++手搓LeNet推理引擎:从PyTorch导出权重到GPU加速的完整避坑指南

用CUDA C手搓LeNet推理引擎&#xff1a;从PyTorch导出权重到GPU加速的完整避坑指南在深度学习模型部署的最后一公里&#xff0c;将训练好的模型高效移植到生产环境是每个开发者必须面对的挑战。本文将带您深入实践&#xff0c;从PyTorch训练好的LeNet模型出发&#xff0c;完整实…...

卡尔曼滤波调参实战:手把手教你调整Q和R,让Python小车轨迹预测更精准

卡尔曼滤波调参实战&#xff1a;手把手教你调整Q和R&#xff0c;让Python小车轨迹预测更精准在机器人定位和自动驾驶领域&#xff0c;卡尔曼滤波就像一位隐形的导航员&#xff0c;默默修正着传感器传来的嘈杂数据。但这位导航员的工作质量&#xff0c;很大程度上取决于我们为它…...