求教ARM检测USB 是否连接到电脑的实例代码~谢谢啦~急用
不知道怎么写ARM检测USB是否连接到电脑~请大侠们帮帮忙啊~
[解决办法]
USB连接到PC后PC会复位设备并向设备发查询描述符的命令啊。这样的例子网上多的是啊,在网上搜一下,找一个与你的USB芯片(或带USB的ARM芯片)相同的USB设备看一下不就行了么。
[解决办法]
应该有现成的USB.c文件可以用。插入后PC的hub执行USB复位就会触发ARM的USB中断,在中断服务中散转就是程序的事了。根据你芯片的中断向量表找个中断服务程序应该比较容易吧?
[解决办法]
www.csdn.com, www.pudn.com, 找USB就可以了
[解决办法]
你一开始的思路方向反了。ARM作为外设连接到电脑的第一步不是电脑告诉ARM已经连接上了,而是要ARM主动告诉电脑。D+线上拉电阻就是做这个用的,这个可以是纯硬件的结构,即使软件干预也不过是控制一下上拉引脚罢了。电脑检测到USB插座D+线电平变高就知道有东西插入,接下来软件的交互才开始。有空可以多看看USB原理方面的书。
[解决办法]
把D+上拉,是让PC检测到有usb设备插入吧。
“问过电路的工程师了,说是只要板子上的USB 连接了,这个位就置0了。”
电路工程师都这么说了,可能你就不用判断PC发过来的复位指令了,直接检测pin引脚就行了吧。
Alex_rcpilot对USB协议肯定很了解,学习。
[解决办法]
不明白楼主为什么要用硬件检测USB设备是否插入USB主机, U+和U-(至于具体哪个上接电阻,要看你用的是USB1.0还是2.0)上的电阻是用来让计算机检测USB设备的。如果你想让你的USB设备能够通过程序控制重新“插入”USB主机。可以先将U+(或U-)上的上拉电平去掉,然后在给上拉电平。这样就完成了一次设备的虚拟拔出再插入的过程。USB检测到设备插入后,就会给设备一个复位,然后发送查询设备描述符的命令,超时后会重发,最多发3次。这样不就可以检测到USB设备插入主机了么。如果一定要用硬件的方式检测,可以直接检测USB线上的VDD啊,USB线插入PC上后,VDD引脚上就有+5V的电啊。你说的VBUS就是这个VDD啊。
[解决办法]
是啊,就是VBUS不能直接接到IO口上,VBUS与IO口之间接个10K或100K的电阻就可以了