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增强信号强度相关推荐
- 水星UD6S网卡Linux驱动,水星UD6S无线usb网卡驱动程序下载-水星网络UD6S网卡驱动1.0 最新版-东坡下载...
UD6S专业的无线usb网卡,在目前来说是很多的家庭以及办公室都是会使用到的,你可以通过官方的水星网络UD6S网卡驱动进行全方面的管理! 官方介绍 UD6S双频无线网卡适用于台式 PC 机.笔记本等设 ...
- 三星打印机显示无法连接服务器,三星打印机不能打印,提示“无法识别的USB设备”解决办法...
打印机安装在电脑中之后出现无法识别的USB设备问题了,对于这个问题我们从几个方向来给各位排查无法识别的USB设备问题的解决办法. 如图1:无法识别的USB设备 如图2:如果您USB设备没有被电脑识别, ...
- wifi卡慢延迟高_家中无线突然很慢/卡顿怎么办?路由器增强WiFi信号的几种方法...
大家平时在家上网时,可能经常会遇到无线网络突然变慢或卡顿的情况,尤其当你正在玩游戏或看视频时,绝对是一件非常令人抓狂的事情,那么有哪些方法可以让网络重新"起飞"呢?今天笔者就为大家 ...
- 水星UD6S网卡Linux驱动,水星UD6S驱动|水星UD6S无线网卡驱动下载 v1.0 官方版 - 比克尔下载...
水星UD6S无线网卡驱动是水星UD6S无线网卡的Windows驱动程序,水星D6S双频无线网卡适用于台式电脑.笔记本等设备进行无线连接,可以提供方便.快捷的无线上网方式,但是与电脑连接后,需要安装驱动 ...
- 水星UD6S网卡Linux驱动,水星UD6S无线网卡驱动(修复水星UD6S无线网卡连接异常问题)V1.0 免费版...
水星UD6S无线网卡驱动(修复水星UD6S无线网卡连接异常问题)是一款非常实用的针对水星UD6S无线网卡的专业驱动程序.小编带来的这款水星UD6S无线网卡驱动可以很好的解决该款网卡的一系列连接故障,让 ...
- Others9_无线路由器说说2.4G和5G Wi-Fi的区别
关于iPad AIR的wifi聊聊无线路由器说说2.4G和5G Wi-Fi的区别 以及路由器的选购 2.4G和5G究竟是什么 以往我们一直使用的Wi-Fi大多数是支持 IEEE 802.11n(第四代 ...
- 美国网件NETGEAR全球第一个推出业界最快路由器: Nighthawk夜鹰X10 802.11 AD路由器...
--新一代802.11AD无线网络.Plex媒体服务器和新一代Wave 2 技术的AC+AD路由器, 让您尽享极速4K流媒体和VR游戏体验 2016年12月12日--美国网件公司(纳斯达克:NTGR) ...
- 如何提高wifi模块的抗干扰能力
随着物联网的快速发展,我们的生活变得非常的智能.方便,可以说我们的生活现在已经离不开物联网了,那么无线模块和物联网有什么关系呢? 无线模块是物联网中一个重要的核心,它是链接物联网感知层和网络层的关键环 ...
- CMOS图像传感器——SmartSens
近年来CIS发展成为增量市场,国产CIS厂商也踊跃布局,给业界带来许多惊喜.思特威(上海)电子科技股份有限公司(SmartSens)正是国产CIS中亮眼的一家厂商.数据显示,2020年思特威安防监控市 ...
最新文章
- linux:Ubuntu入门基础
- 紧急求助!配置SMTP插件出错,SMTP connect() failed
- echarts点击事件调用模态框,模态框中存在echarts
- 朋友圈加粗字体数字_数字+符码:医院数码导视系统畅想起来
- LeetCode 1430. 判断给定的序列是否是二叉树从根到叶的路径(递归)
- 沉降观测曲线图 沉降观测汇总_这些沉降观测要求,工程人必须掌握!
- 走在spring的路上。。。。
- 微软杀毒软件 Microsoft Defender 将发布 Linux 版本
- 【Tensorflow】相关面试题整理(转)
- -矩阵-创建矩阵-简单方法
- Nonebot QQ机器人插件一:实时天气获取
- 0x80004005是什么错误?0x80004005的解决方案
- 腾讯图像超分辨率算法RealSR,开源了
- 母牛2年生小牛 5年后并死去的算法
- P3975 [TJOI2015]弦论 - 后缀自动机(SAM)
- Vue 键盘事件(keyup、keydown)
- Milk Measurement
- Word中更新图表所有的域
- 服务过美国总统竞选的非传统投票UI【demo已放出】
- php广告管理,DedeCMS的广告管理功能
热门文章
- Android真机测试使用百度地图定位到非洲附近的的问题
- Heat Transfer|L2_Introduction on Heat Conduction
- copier.Copy()
- OpenSCA版本升级 | OpenSCA v1.0.4版本发布
- 区块链技术或加速企业“碳中和”战略落地
- 如何在微信公众号做广告不让人反感?
- github 公钥配置教程
- angular:带验证功能的formControlName的select下拉框数据充填
- PLC设计思考[2]
- Wappalyzer(chrome网站分析插件)