非也 发表于 2019-5-31 10:41:47

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


  我们经常使用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”:
static struct omap_musb_board_data musb_board_data = {
.interface_type = MUSB_INTERFACE_ULPI,
/*
* mode = USB0PORT's mode
* mode = USB1PORT's mode
* AM335X beta EVM has USB0 in OTG mode and USB1 in host mode.
*/
.mode = (MUSB_HOST << 4) | MUSB_OTG,
.power = 500,
.instances = 1,
};  成员mode内,低4位代表USB0的模式,高4位代表USB1的模式,这里代表默认USB0做OTG模式,USB1做HOST模式;如果需要将USB0修改成HOST模式则修改mode成员即可:.mode = (MUSB_HOST << 4) |MUSB_HOST


页: [1]
查看完整版本: TQ335X工控板如何将OTG改为USB host功能