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增强信号强度相关推荐

  1. 水星UD6S网卡Linux驱动,水星UD6S无线usb网卡驱动程序下载-水星网络UD6S网卡驱动1.0 最新版-东坡下载...

    UD6S专业的无线usb网卡,在目前来说是很多的家庭以及办公室都是会使用到的,你可以通过官方的水星网络UD6S网卡驱动进行全方面的管理! 官方介绍 UD6S双频无线网卡适用于台式 PC 机.笔记本等设 ...

  2. 三星打印机显示无法连接服务器,三星打印机不能打印,提示“无法识别的USB设备”解决办法...

    打印机安装在电脑中之后出现无法识别的USB设备问题了,对于这个问题我们从几个方向来给各位排查无法识别的USB设备问题的解决办法. 如图1:无法识别的USB设备 如图2:如果您USB设备没有被电脑识别, ...

  3. wifi卡慢延迟高_家中无线突然很慢/卡顿怎么办?路由器增强WiFi信号的几种方法...

    大家平时在家上网时,可能经常会遇到无线网络突然变慢或卡顿的情况,尤其当你正在玩游戏或看视频时,绝对是一件非常令人抓狂的事情,那么有哪些方法可以让网络重新"起飞"呢?今天笔者就为大家 ...

  4. 水星UD6S网卡Linux驱动,水星UD6S驱动|水星UD6S无线网卡驱动下载 v1.0 官方版 - 比克尔下载...

    水星UD6S无线网卡驱动是水星UD6S无线网卡的Windows驱动程序,水星D6S双频无线网卡适用于台式电脑.笔记本等设备进行无线连接,可以提供方便.快捷的无线上网方式,但是与电脑连接后,需要安装驱动 ...

  5. 水星UD6S网卡Linux驱动,水星UD6S无线网卡驱动(修复水星UD6S无线网卡连接异常问题)V1.0 免费版...

    水星UD6S无线网卡驱动(修复水星UD6S无线网卡连接异常问题)是一款非常实用的针对水星UD6S无线网卡的专业驱动程序.小编带来的这款水星UD6S无线网卡驱动可以很好的解决该款网卡的一系列连接故障,让 ...

  6. Others9_无线路由器说说2.4G和5G Wi-Fi的区别

    关于iPad AIR的wifi聊聊无线路由器说说2.4G和5G Wi-Fi的区别 以及路由器的选购 2.4G和5G究竟是什么 以往我们一直使用的Wi-Fi大多数是支持 IEEE 802.11n(第四代 ...

  7. 美国网件NETGEAR全球第一个推出业界最快路由器: Nighthawk夜鹰X10 802.11 AD路由器...

    --新一代802.11AD无线网络.Plex媒体服务器和新一代Wave 2 技术的AC+AD路由器, 让您尽享极速4K流媒体和VR游戏体验 2016年12月12日--美国网件公司(纳斯达克:NTGR) ...

  8. 如何提高wifi模块的抗干扰能力

    随着物联网的快速发展,我们的生活变得非常的智能.方便,可以说我们的生活现在已经离不开物联网了,那么无线模块和物联网有什么关系呢? 无线模块是物联网中一个重要的核心,它是链接物联网感知层和网络层的关键环 ...

  9. CMOS图像传感器——SmartSens

    近年来CIS发展成为增量市场,国产CIS厂商也踊跃布局,给业界带来许多惊喜.思特威(上海)电子科技股份有限公司(SmartSens)正是国产CIS中亮眼的一家厂商.数据显示,2020年思特威安防监控市 ...

最新文章

  1. linux:Ubuntu入门基础
  2. 紧急求助!配置SMTP插件出错,SMTP connect() failed
  3. echarts点击事件调用模态框,模态框中存在echarts
  4. 朋友圈加粗字体数字_数字+符码:医院数码导视系统畅想起来
  5. LeetCode 1430. 判断给定的序列是否是二叉树从根到叶的路径(递归)
  6. 沉降观测曲线图 沉降观测汇总_这些沉降观测要求,工程人必须掌握!
  7. 走在spring的路上。。。。
  8. 微软杀毒软件 Microsoft Defender 将发布 Linux 版本
  9. 【Tensorflow】相关面试题整理(转)
  10. -矩阵-创建矩阵-简单方法
  11. Nonebot QQ机器人插件一:实时天气获取
  12. 0x80004005是什么错误?0x80004005的解决方案
  13. 腾讯图像超分辨率算法RealSR,开源了
  14. 母牛2年生小牛 5年后并死去的算法
  15. P3975 [TJOI2015]弦论 - 后缀自动机(SAM)
  16. Vue 键盘事件(keyup、keydown)
  17. Milk Measurement
  18. Word中更新图表所有的域
  19. 服务过美国总统竞选的非传统投票UI【demo已放出】
  20. php广告管理,DedeCMS的广告管理功能

热门文章

  1. Android真机测试使用百度地图定位到非洲附近的的问题
  2. Heat Transfer|L2_Introduction on Heat Conduction
  3. copier.Copy()
  4. OpenSCA版本升级 | OpenSCA v1.0.4版本发布
  5. 区块链技术或加速企业“碳中和”战略落地
  6. 如何在微信公众号做广告不让人反感?
  7. github 公钥配置教程
  8. angular:带验证功能的formControlName的select下拉框数据充填
  9. PLC设计思考[2]
  10. Wappalyzer(chrome网站分析插件)