完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
用软件方式将USB0强制设置为HOST工作模式,代码修改如下:
static struct omap_mu***_board_data mu***_board_data = [ .interface_type = MUSB_INTERFACE_ULPI, /* * mode[0:3] = USB0PORT's mode * mode[4:7] = USB1PORT's mode * AM335X beta EVM has USB0 in OTG mode and USB1 in host mode. */ /*.mode = (MUSB_HOST << 4) | MUSB_OTG,*/ .mode = (MUSB_HOST << 4) | MUSB_HOST, .power = 500, .instances = 1, ]; 由于硬件限制,boot room启动时, 支持USB RNDIS模式升级,及USB0 OTG ID硬件必须为悬空。 现在硬件没有将USB0 的OTG ID引出到EVK板,没法通过插入U盘的方式,将OTG ID管脚连接到地。 现在需求: 1、USB0 OTG ID悬空,能实现Boot room u*** rndis升级; 2、在Linux操作系统下,USB0作为HOST,能访问U盘。 现在调试发现: 1、当将USB0 OTG ID管脚接地,可以正常访问U盘。 在没插入U盘的情况下: root@am335x-evm:~# cat /proc/driver/mu***_hdrc.0 Status: MHDRC, Mode=Host (Power=e0, DevCtl=19) #####USB0 工作在A device模式下 OTG state: a_idle; inactive Options: ?dma?, otg (peripheral+host), [eps=16] Peripheral address: 00 Root port status: 00000100 CPPI: txcr=0 txsrc=0 txena=0; rxcr=0 rxsrc=280de80 rxena=0 2、如果USB0 OTG ID管脚悬空,不识别访问U盘。 在没插入U盘的情况下: root@am335x-evm:~# cat /proc/driver/mu***_hdrc.0 Status: MHDRC, Mode=Host (Power=e0, DevCtl=99) ###USB0 工作在B Device下; OTG state: a_idle; inactive Options: ?dma?, otg (peripheral+host), [eps=16] Peripheral address: 00 Root port status: 00000100 CPPI: txcr=0 txsrc=0 txena=0; rxcr发表=0 rxsrc=280de80 rxena=0 3、如果USB0 OTG ID悬空,强行通过命令,将USB0改为A device,发现立即变回B device; 感觉USB 控制器有firmware在一直监控OTG ID。 请问有没有软件方法,设置OTG ID 接地状态,这样,我就可以不需要修改硬件,将USB0 OTG ID管脚拉到EVK底板上。 请求FAE帮忙指导一下,谢谢。 |
|
相关推荐
1个回答
|
|
根据《AM335x Sitara™ Processors Technical Reference Manual.pdf》描述,USB控制器通过设置USB0MODE寄存器实现软件控制OTG ID的电平,选择A Ddevice或B Device
The USB controller assumes the role of a host when the USBx_ID pin state is grounded or USB Mode Register[iddig=bit8] is cleared to 0 (provided that iddig_mux, which is bit7 of USBnMODE is also set to 1) by the user application prior to the controller goes into session. When the USB controller go into session, application/firmware sets the DEVCTL[SESSION] bit to 1, it will assume the role of a host. 具体修改代码如下: ti81xx_mu***_set_mode函数,增加下面代码: if (mu***_mode == MUSB_HOST) [ regval = mu***_readl(reg_base, USB_MODE_REG); regval &= ~USBMODE_USBID_HIGH; if (u***id_sw_ctrl && cpu_is_ti816x()) regval |= USBMODE_USBID_MUXSEL; if(mu***->id == 0) [ regval = 0x080; //IDDIG=0,IDDIG_MUX=1 增加代码,配置为A Device ] 通过上面配置,可以识别U盘,并可以操作。 |
|
|
|
只有小组成员才能发言,加入小组>>
479 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
343 浏览 1 评论
922 浏览 0 评论
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
2093 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3840 浏览 4 评论
CC3100BOOST使用CC3200lunchXL进行烧录
873浏览 2评论
112浏览 2评论
148浏览 2评论
123浏览 2评论
149浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-11 04:28 , Processed in 0.576121 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191