天嵌科技 ARM开发社区

 找回密码
 注册
查看: 483|回复: 0

TQ335X工控板如何将OTG改为USB host功能

[复制链接]
非也 发表于 2019-5-31 10:41:47 | 显示全部楼层 |阅读模式


  我们经常使用USB接口 连接U盘或移动硬盘等。但是,知道USB HOST和USB OTG的却不多,现在分享一下这方面的知识,便于以后用到这些设备时知道它们的区别和使用方法。USB设备分为HOST(主设备)和SLAVE(从设备),只有当一台HOST与一台SLAVE连接时才能实现数据的传输。USB HOST是指主机,USB OTG设备既能做主机,又能做设备。OTG技术就是实现在没有Host的情况下,实现从设备间的数据传送。

  当OTG插到电脑上时,OTG的角色就是连接电脑的device(读卡器),也就是SLAVE(从设备);当USB/SD device插到OTG上,OTG的角色就是HOST(主机)。有些手机也经常用到OTG功能。

  当设备上的USB HOST接口不够用的时候,能把USB OTG接口当HOST用吗?答案是可以的,但需要修改软件,这里拿TQ335X_coreBv1开发板为例,将OTG接口修改为host接口功能。

  1.修改源码板级信息文件:arch/arm/mach-omap2/board-tq335x_coreb_v1.c

  2.搜索335x初始化函数:跟踪am335x_evm_init()函数

  3.在函数内找到USB初始化:usb_musb_init(&musb_board_data);

  4.再搜索追踪“musb_board_data”:

  1. static struct omap_musb_board_data musb_board_data = {
  2. .interface_type = MUSB_INTERFACE_ULPI,
  3. /*
  4. * mode[0:3] = USB0PORT's mode
  5. * mode[4:7] = USB1PORT's mode
  6. * AM335X beta EVM has USB0 in OTG mode and USB1 in host mode.
  7. */
  8. .mode = (MUSB_HOST << 4) | MUSB_OTG,
  9. .power = 500,
  10. .instances = 1,
  11. };
复制代码

  成员mode内,低4位代表USB0的模式,高4位代表USB1的模式,这里代表默认USB0做OTG模式,USB1做HOST模式;如果需要将USB0修改成HOST模式则修改mode成员即可:.mode = (MUSB_HOST << 4) |MUSB_HOST


您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|天嵌科技 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2020-8-12 23:30 , Processed in 1.062500 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表