问题现象1:当使用Hi3519V10X/Hi3559V100 USB3.0 Device UVC规格时,正常热插拔会必现不识别的问题。

问题现象2:当使用Hi3516CV300 USB2.0 Device UVC规格时,快速热插拔出现概率不识别问题,
此两种问题现象的解决方案需要设计插入/拔出状态的检测电路,具体请参考

使用两个电阻将5V0_VBUS信号分压,而后将分压信号接到Hi3519V10X/Hi3559V100/HI3516CV300的GPIO,用于检测设备的插入/拔出状态。GPIO检测到高电平时,认为设备插入;GPIO检测到低电平时,认为设备拔出。

注意:

  • 当Hi3519V10X/Hi3559V100/Hi3516CV300通过USB3.0
    、USB2.0接口用作Device设备时,单板不能为USB3.0、USB2.0接口的5V0_VBUS电源供电。
  • 上述GPIO必须为带施密特触发器的GPIO管脚,具体可参考《Hi3519V100
    _PINOUT_CN》、《Hi3519V101_PINOUT_CN》、Hi3516CV300 _PINOUT_CN》或《Hi3559V100/Hi3556V100_PINOUT_CN》中的管脚配置说明和管脚信息表中的信息来查找满足要求的GPIO管脚,建议选择GPIO1_0。
  • 选择其他GPIO,需要修改相应的软件代码,使得硬件设计和软件设计一致,修改方法请参考如下描述(以GPIO1_0描述为例)。

a) USB2.0软件添加配置


配置路径为:
Device Drivers —>
[] USB support —>
<> USB Gadget Support —>
[] Hisilicon USB2.0 Device Controller SUPPORT —>
<> Hisilicon USB2.0 Device Support GPIO CTRLb) USB3.0软件添加配置软件添加配置

b) USB3.0软件添加配置
软件添加配置


配置路径为:
Device Drivers —>
[] USB support —>
<> USB Gadget Support —>
[] Hisilicon USB3.0 Device Controller SUPPORT —>
<> Hisilicon USB3.0 Device Support GPIO

2.软件代码
a) USB2.0软件代码,以GPIO3_6为例:

只需要修改./drivers/usb/gadget/composite.c一个文件中GPIO相关寄存器的宏定义,修改方法相同,具体如下。

#define GPIO_MODE       ioremap_nocache(0x12040020, 0x100)
#define GPIO3_BASE      ioremap_nocache(0x12143100, 0x400)
#define USB_PWREN       0x44
#define GPIO3_DIR       0x300
#define GPIO3_IC        0x31c
#define GPIO3_IE        0x310
#define GPIO3_6_DIR     (1<<6)
#define GPIO3_6_IBE     (1<<6)
#define GPIO3_6_IC      (1<<6)
#define GPIO3_6_IE      (1<<6)
#define GPIO3_6_DATA        0x0
具体修改方法如下:
以下为GPIO3_6的宏定义,选择其他GPIO时,需要将宏定义修改为对应的GPIO。
#define GPIO3_6_IE  (1<<0)   /*GPIO的IE寄存器的bit [6] 如果是GPIO3_2就要改成bit[2]*/
#define GPIO3_6_IC  (1<<0)   /*GPIO的IC寄存器的bit [6] 如果是GPIO3_2就要改成bit[2]*/
#define GPIO_MODE       ioremap_nocache(0x12040020, 0x100)/*管脚复用 GPIO3_6配置成GPIO模式*/
#define GPIO3_BASE      ioremap_nocache(0x12143100, 0x400)/*设置GPIO的偏移基地址,在GPIO实际基地址加了0x100 */
#define GPIO3_DIR       0x300 /*GPIO的实际使用地址,在代码中以GPIO3_BASE  + GPIO3_DIR 方式使用*/
b)  USB3.0 软件代码
只需要修改./drivers/phy/phy-hisi-usb3.c和./drivers/usb/gadget/composite.c两个文件中GPIO相关寄存器的宏定义,修改方法相同,具体如下。
两个文件需要修改的宏定义有:
#define GPIO1_0_IE              (1<<0)
#define GPIO1_0_IC              (1<<0)
#define GPIO1_IE               __io_address(0x12141410)
#define GPIO1_0_DATA          __io_address(0x12141004)
#define GPIO1_IC               __io_address(0x1214141c)
具体修改方法如下:
以下为GPIO1_0的宏定义,选择其他GPIO时,需要将宏定义修改为对应的GPIO。
#define GPIO1_0_IE  (1<<0)   /*GPIO的IE寄存器的bit [0] 如果是GPIO3_2就要改成bit[2]*/
#define GPIO1_0_IC  (1<<0)   /*GPIO的IC寄存器的bit [0] 如果是GPIO3_2就要改成bit[2]*/
#define GPIO1_IE  __io_address(0x12141410)  /*此为GPIO的IE寄存器的基址和偏移地址,如果是GPIO3_2就要改成0x12143410*/
#define GPIO1_0_DATA  __io_address(0x12141004) /*此为GPIO的DATA寄存器的基址和偏移地址。 如果是GPIO3_2 就要改成0x12143010*/
#define GPIO1_IC __io_address(0x1214141c) /*此为GPIO的IC寄存器的基址和偏移地址。如果是GPIO3_2就要改成0x1214341c */

原文链接:https://www.ebaina.com/articles/140000003273

更多海思资料:https://www.ebaina.com/resources

海思USB2.0、USB3.0 Device UVC规格热插拔会不识别相关推荐

  1. CS5266单芯片设计Type-C转HDMI+PD3.0+USB3.0 /3.1三合一拓展坞方案|type转HDMI带PD3.0/3.1拓展坞方案介绍

    CS5266单芯片设计Type-C转HDMI+PD3.0+USB3.0三合一拓展坞方案|type转HDMI带PD3.0拓展坞方案介绍 本文为主要是讲解USB TYPE-C转H奇达DMI +PD+USB ...

  2. 海思官方SDK Hi3516EV200_SDK_V1.0.1.0的编译教程

    前言: 关于海思HI3516EV200的SDK,官方有2个版本,一个是linux,一个是liteos,这里根据之前群友提供的sdk整理总结下,以防大家下载到错误的版本 linux sdk 版本为 Hi ...

  3. USB接口测试器--USB2.0/USB3.0信号检测器

    我觉得这个小东西算是给需要频繁测试.迅速识别USB2.0与USB3.0信号质量的人群的福音,确实亲测实用又高效. 这个测试器是用于USB3.0与USB2.0接口的速率与功能识别,操作简单,应用方便,指 ...

  4. 不可不知的USB2.0/USB3.0/HDMI静电防护方案

    静电防护电路在电子产品/设备的电路板上是十分常见的应用电路,今天就让我们一探究竟. FAE电子工程师对所以的端口进行了静电防护设计,其中包括usb2.0静电防护方案.USB3.0静电防护方案以及HDM ...

  5. X86/ARM USB2.0/USB3.0转网口,支持Windows、Linux、Android、wince

    USB to LAN方案 1.方案介绍 2.准备测试资料 3.linux系统下测试 4.android系统下测试 USB转LAN方案IC有: USB 3.0千兆以太网  ( AX88179)      ...

  6. ZYNQMP_XAZU3EG_VxWorks7 添加USB2.0 USB3.0

    VSB工程需要包含USB组件和相关库驱动,直接搜,添加 VIP工程添加以下组件 INCLUDE_UHCI \     INCLUDE_UHCI_INIT \     INCLUDE_UNLOADER ...

  7. linux usb3 转hdmi,USB TYPE-C转HDMI+PD3.0+USB3.0/USB3.1多功能扩展坞设计方法和设计电路...

    多口Type-c to HDMI + PD20V Charging + USB3.1 Type-A拓展坞方案设计主要是由台湾安格AG9311MCQ这款芯片来实现的.多口多功能的TYPE-C扩展坞主要用 ...

  8. typec转hdmi+vga+pd3.0+usb3.0扩展坞四合一方案|CS5268扩展坞设计电路

    CS5268设计电路,CS5268参考电路设计 替代AG9321,替代安格AG9321,AG9321替代方案 替代EP9632, 替代EP9632方案设计,替代EP9632设计方案,TYPEC转HDM ...

  9. usb3.0传输速度测试软件,USB3.0与USB2.0的传输速度对比测试

    USB 3.0对多数电脑爱好者都已经不陌生,发布也有段时间了,多数朋友大概都还只知道USB 3.0接口传送数据能力比USB 2.0接口快很多,但到底有多快,可能就很少人知道了.下面小编就为大家介绍一下 ...

最新文章

  1. LVS_DR实现(负载均衡)及LVS_DR+keepalived实现(高可用+负载均衡)
  2. python语法基础知识总结-python语法基础知识
  3. java异常 子类_Java异常 Exception类及其子类(实例讲解)
  4. android 如何拖动控件的实现
  5. mysql异常关闭7034,SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数
  6. 050、JVM实战总结:动手实验:使用 jstat 摸清线上系统的JVM运行状况
  7. Spring Boot:关于“No converter found for return value of type: class xxx”的解决方法
  8. angular 倒计时
  9. 十天学会php之第二天
  10. STL源码剖析(侯捷)笔记——STL概述
  11. HFSS阵列天线仿真
  12. 多尺度地理加权回归(MGWR)软件官网下载
  13. 终于,连字节、腾讯都烧不起钱了
  14. 十三水牌型 图片_十三水三分天下是什么 十三水三分天下牌型详解
  15. backtrace和backtrace_symbols函数原理解析
  16. Ubuntu: 安装视频播放器
  17. matlab不是内部或外部命令_如何解决Telnet不是内部或外部命令(电脑提示telnet不是内部或外部命令...
  18. leetcode刷题250天(65)——1823. 找出游戏的获胜者(约瑟夫环问题)
  19. 利用Python实现视频号自动赚钱一条龙
  20. 站长必备的131个高权重外链库(转…

热门文章

  1. QT 制作 Excel 表格常用操作方法
  2. 以图搜图 1 Milvus 人脸搜索 图片搜索引擎 多维近似向量查找工具 向量搜索引擎
  3. VirtualBox 虚拟机上网配置-实现多台虚拟机局域网独立ip,可连接外网
  4. 使用meb工具在线热备,将单实例切换为主从
  5. Java 常用类 Math类的使用教程
  6. 【历史上的今天】4 月 25 日:诺基亚与微软完成交易;Mobilinux 发布;长距离无线电传输之父出生
  7. Android编译源码hook,Hook Android C代码(Cydia Substrate)
  8. Caché File
  9. NVMe over Fabric诞生记——RDMA篇
  10. 100m光纤测速多少正常_终于知道为什么我的百兆宽带测速只有一半了