imx6 usb增强信号强度
创始人
2024-05-30 14:05:54
0

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.

相关内容

热门资讯

安卓10系统省电不,安卓10系... 你有没有发现,自从升级到安卓10系统,手机续航能力好像大不如前了?别急,今天就来给你揭秘安卓10系统...
cm14安卓系统,深度定制与极... 你有没有发现,你的安卓手机最近是不是有点不一样了?是不是觉得系统运行得更加流畅,界面也更加美观了呢?...
平板安卓系统咋样升级,轻松实现... 你那平板安卓系统是不是有点儿卡,想给它来个升级大变身?别急,让我来给你详细说说平板安卓系统咋样升级,...
安卓原系统在哪下载,探索纯净体... 你有没有想过,为什么安卓手机那么受欢迎?那是因为它的系统——安卓原系统,它就像是一个充满活力的魔法师...
安卓系统procreate绘图... 你有没有发现,现在手机上画画变得越来越流行了?尤其是用安卓系统的手机,搭配上那个神奇的Procrea...
电视的安卓系统吗,探索安卓电视... 你有没有想过,家里的电视是不是也在悄悄地使用安卓系统呢?没错,就是那个我们手机上常用的安卓系统。今天...
苹果手机系统操作安卓,苹果iO... 你有没有发现,身边的朋友换手机的时候,总是对苹果和安卓两大阵营争论不休?今天,咱们就来聊聊这个话题,...
安卓系统换成苹果键盘,键盘切换... 你知道吗?最近我在想,要是把安卓系统的手机换成苹果的键盘,那会是怎样的体验呢?想象那是不是就像是在安...
小米操作系统跟安卓系统,深度解... 亲爱的读者们,你是否曾在手机上看到过“小米操作系统”和“安卓系统”这两个词,然后好奇它们之间有什么区...
miui算是安卓系统吗,深度定... 亲爱的读者,你是否曾在手机上看到过“MIUI”这个词,然后好奇地问自己:“这玩意儿是安卓系统吗?”今...
安卓系统开机启动应用,打造个性... 你有没有发现,每次打开安卓手机,那些应用就像小精灵一样,迫不及待地跳出来和你打招呼?没错,这就是安卓...
小米搭载安卓11系统,畅享智能... 你知道吗?最近小米的新机子可是火得一塌糊涂,而且听说它搭载了安卓11系统,这可真是让人眼前一亮呢!想...
安卓2.35系统软件,功能升级... 你知道吗?最近在安卓系统界,有个小家伙引起了不小的关注,它就是安卓2.35系统软件。这可不是什么新玩...
安卓系统设置来电拦截,轻松实现... 手机里总是突然响起那些不期而至的来电,有时候真是让人头疼不已。是不是你也想摆脱这种烦恼,让自己的手机...
专刷安卓手机系统,安卓手机系统... 你有没有想过,你的安卓手机系统是不是已经有点儿“老态龙钟”了呢?别急,别急,今天就来给你揭秘如何让你...
安卓系统照片储存位置,照片存储... 手机里的照片可是我们珍贵的回忆啊!但是,你知道吗?这些照片在安卓系统里藏得可深了呢!今天,就让我带你...
华为鸿蒙系统不如安卓,挑战安卓... 你有没有发现,最近手机圈里又掀起了一股热议?没错,就是华为鸿蒙系统和安卓系统的较量。很多人都在问,华...
安卓系统陌生电话群发,揭秘安卓... 你有没有遇到过这种情况?手机里突然冒出好多陌生的电话号码,而且还是一个接一个地打过来,简直让人摸不着...
ios 系统 安卓系统对比度,... 你有没有发现,手机的世界里,iOS系统和安卓系统就像是一对双胞胎,长得差不多,但细节上却各有各的特色...
安卓只恢复系统应用,重拾系统流... 你有没有遇到过这种情况?手机突然卡顿,或者某个应用突然罢工,你一气之下,直接开启了“恢复出厂设置”大...