访问电脑版页面

导航:老古开发网手机版STM32单片机的USB

STM32F107 USB作为device的插拔检测

导读: 在USB的协议里,只有主机和HUB具有设备移出检测功能,作为从设备(device)往往不具有设备断开连接的检测,需要自己设计一种检测机制,判断USB主设备是否与之断开。STM32的USB是OTG设备,既可以作为主机也可以作为
关键字:
device,stm32f107,USB,插拔检测,

在USB的协议里,只有主机和HUB具有设备移出检测功能,作为从设备(device)往往不具有设备断开连接的检测,需要自己设计一种检测机制,判断USB主设备是否与之断开。STM32的USB是OTG设备,既可以作为主机也可以作为设备,当其作为设备通过USB与PC通信时,可能会需要STM32检测是否与PC断开连接,这时候不可以向PC发数据,在PC连接上时,可以继续USB通信。

检测USB断开连接的方法有多种,USB在断开时会有SUSPEND中断,但是USB总线上没有数据时,主机也可以将其挂起,产生SUSPEND中断,所以这种方法不可靠,另外就是PC定时向USB device发送数据,当USB device没有收到数据时即可认为USB断开连接,但是这种方法要想提高实时性,就需要传输大量的握手数据,占用USB总线,不利于USB数据的高效率、高速度的传输。最好的方法是通过硬件实现,在USB的VBUS上做文章,USB主机会像device供电,STM32可以检测该电源引脚,在USB连接时产生上升沿,断开时产生下降沿,据此可以快速判断是否与USB主机断开连接。

在方案设计中遇到的问题是USB断开没问题,STM32可以检测的到,并且CPU正常工作,但是USB连接上时,STM32立马假死,即CPU仍在工作,只是USB的中断太频繁了,程序无法执行,产生这种原因不是很清楚,但是可以将中断关闭后过段时间再打开来解决


来源:互联网   作者:karen  2018/8/9 13:40:01
栏目: [ STM32单片机的USB]

相关阅读

STM32单片机USB速度慢的原因解析

基于STM32 HID例程生成不小于64字节传输的移植过程

聊聊STM32芯片的DFU编程及相关话题

STM32F4 Discovery USB HID 用到的文件图解

STM32F205双USB开发做device

STM32 keyboard USB键盘功能的实现

基于STM32的传统USB 2.0接口到Type-C的转换方案

基于STM32单片机的USB时钟配置设计

STM32F107 USB作为device的插拔检测

STM32单片机的usb上电和断电函数的定义

STM32的USB通信资料

STM32F105系列单片机对USB设备电路的设计

STM32F107 之USB通信

STM32F107系列单片机USB通信的用法解析

STM32 USB设计 单片机程序篇