USB详解,配置及难点

一、USB发展历史

USB协议版本有:USB1.0、USB1.1、USB2.0、USB3.0。
USB1.0和USB1.1只有低速模式(Low-SpeedMode)和全速模式(Full-Speed Mode),理论上最大传输速率分别为1.5Mbps和12Mbps。
USB2.0除了拥有USB1.1中规定的1.5Mbps和12Mbps两个传输模式以外,还增加了480Mbps高速数据传输模式(注:第二版USB2.0的传输速率将达800Mbps,最高理想值1600Mbps)。虽然USB2.0的传输速度大大提升了,但其工作原理和模式是完全与USB1.1一样的,而提高到480 Mbps的传输速度的最关键技术就是提高单位传输速率:
USB3.0最大传输速率理论值高达5Gbps。USB3.0 引入全双工数据传输。5根线路中2根用来发送数据,另2根用来接收数据,还有1根是地线。也就是说,USB3.0可以同步全速地进行读写操作。以前的USB版本并不支持全双工数据传输。

USB3.0与USB2.0的外观区别包括:

颜色:USB3.0接口通常是蓝色,而USB2.0是黑色或白色。(具体还是要看厂家定义)
插口引脚:USB3.0有9针脚,而USB2.0只有4针脚。
标识:USB3.0插口旁边通常有“SS”标志,代表“SuperSpeed”

 USB2.0接线

USB3.0接线

4根用于数据传输,2根用于电源供应,剩下的3根则用于地线和屏蔽

二、USB简介

2.1 USB概念

        USB有USB1.0/1.1/2.0/3.0多个版本,标准USB由4根线组成,VCC,GND,D+,D-,其中D+和D-是数据线,采用差分传输。在USB主机上,D-和D+都是接了15K的电阻到地,所以在没有设备接入的时候,D+、D-均是低电平。而在USB设备中,如果是高速设备,则会在D+上接一个1.5K的电阻到VCC,而如果是低速设备,则会在D-上接一个1.5K的电阻到VCC,当设备接入主机时,主机就可以判断是否有设备接入,并能判断设备是高速设备还是低速设备。有些芯片内部有两个USB控制器,名称分别为USB_OTG_FS和USB_OTG_HS。其中HS代表实现高速480Mbps速度模式通信。FS意为全速,速度为12Mbps。HS高速模式必须外接PHY芯片才能实现,例如USB3300等。

2.2 USB速度

USB2.0 支持三种速度:

  • 低速 (LS):支持 1.5 Mb/s 的传输速率。此速度主要专用于交互式设备(例如鼠标、键盘)
  • 全速 (FS):支持 12 Mb/s 的传输速率。此速度主要专用于电话和音频设备(如麦克风、扬声器)
  • 高速 (HS):支持 480 Mb/s 的传输速率。此速度主要专用于视频和存储设备(如打印机、相机)

在协议级别,USB 提供了非常高的兼容性,因此用户看不到处理不同速度之间的巨大差异。

由于 USB 2.0 向后兼容以前的规范,因此高速设备还可以支持低速和全速信号。首次连接设备时,最初使用全速功能

2.3 USB模式

单片机的几种应用场景:

⭐OTG的意思是既可以做USB HOST,也可以做USB DEVICE。
⭐USB Host是单片机充当主机,单片机可以读取和转载USB中数据。
⭐USB Device是单片机充当从机,单片机作为一个USB移动设备,通过USB连接到电脑上,类似U盘。

USB在不同应用场景下可以充当的角色:

HID(Human Interface Device):人机接口设备,用于与人类交互,例如键盘、鼠标、游戏手柄等。

MSC(Mass Storage Class):大容量存储类,用于存储数据,例如闪存驱动器、移动硬盘等。

CDC(Communication Device Class):通信设备类,主要用于支持串行通信和数据传输。CDC设备允许计算机和设备之间进行数据交换,通常应用于各种通讯设备,如调制解调器、网络适配器和串行设备等。

当我们需要官方例程运行代码时,此时需要明白每一个工程的含义。 

 

2.4 设备状态

从完全分离到被 USB Host 完全识别并确保其功能,USB 设备会经历连续的阶段:

  • Attached:这是设备物理连接到 USB 主机但尚未通电的阶段。这个阶段主要由硬件来保证。
  • 已通电:这是第二阶段,对应于连接到 USB Host 并刚刚通电的设备。这个阶段主要由硬件来保证。
  • Default:当连接的设备通电,然后由主机重置时,将进入此阶段。每次新连接设备然后通电然后重置或旧连接的设备收到重置时,此阶段由其软件分配给设备。在此阶段,USB 设备以方便的速度运行(在重置期间由硬件选择),并具有默认地址,即地址编号 0。
  • Addressed:在完成上述所有阶段后,USB 设备通过从主机接收其唯一地址(不同于 0)来达到此状态。在设备软件正确处理主机请求后,将进入此阶段。
  • Configured:设备收到主机发送的配置编号不为零的便捷请求后,到达该阶段。在设备软件正确处理主机请求后,将进入此阶段。
  • Suspended:如果在取决于速度的已知时间段内没有流量数据,则设备必须进入此阶段。事实上,主机会根据设备的速度以电气方式强制设备进入此状态。检测到此电气指示时,USB 设备软件必须将其状态更改为 suspended。

三、USB引脚图

四pinUSB

通常,主机(根集线器)为函数直接连接提供动力。一些集线器可能会为直接连接的下游功能供电。对于函数,有两种类型:

  • 总线供电功能:这些设备完全依赖于来自上游集线器的总线电源。例如USB引脚图第三张,PA15USB_PWR,这个USB供电完全依赖于总线电源。
  • 自供电功能:这些设备能够独立于总线提供自己的电源。例如USB引脚图第一张,通过给USB_RESET配置为输出,并置为高电平,USB即开始供电。

主要有两种情况,一种是单片机引脚控制USB电源,一种是USB一直接通5V电源

USB (通用串行总线)信令包括两条数据线 D+ 和 D-,差分信号发送数据,以提高抗噪能力和数据完整性。

四、STM32F407库函数配置USB

4.1 资料准备

(1)SD卡带文件系统的基本工程

(2)USB源码

链接:https://pan.baidu.com/s/1Cy1WokfpHBpDONfbqT_wgQ?pwd=8888 
提取码:8888

4.2 移植过程

4.3 修改错误

编译,报12个错误,从第一个错误解决(解决完一个问题可以尝试编译以下)

(1)添加头文件 #include "stm32f4xx.h"

(2)添加宏定义 USE_USB_OTG_FS

(3)修改usbh_usr.c和usbh_usr.h文件

#include "usbh_usr.h" 
#include "ff.h" 
#include "usart.h" 

static u8 AppState;
extern USB_OTG_CORE_HANDLE  USB_OTG_Core;

//USB OTG 中断服务函数
//处理所有USB中断
void OTG_FS_IRQHandler(void)
{
  	USBH_OTG_ISR_Handler(&USB_OTG_Core);
} 
//USB HOST 用户回调函数.
USBH_Usr_cb_TypeDef USR_Callbacks=
{
	USBH_USR_Init,
	USBH_USR_DeInit,
	USBH_USR_DeviceAttached,
	USBH_USR_ResetDevice,
	USBH_USR_DeviceDisconnected,
	USBH_USR_OverCurrentDetected,
	USBH_USR_DeviceSpeedDetected,
	USBH_USR_Device_DescAvailable,
	USBH_USR_DeviceAddressAssigned,
	USBH_USR_Configuration_DescAvailable,
	USBH_USR_Manufacturer_String,
	USBH_USR_Product_String,
	USBH_USR_SerialNum_String,
	USBH_USR_EnumerationDone,
	USBH_USR_UserInput,
	USBH_USR_MSC_Application,
	USBH_USR_DeviceNotSupported,
	USBH_USR_UnrecoveredError
};
/
//以下为各回调函数实现.

//USB HOST 初始化 
void USBH_USR_Init(void)
{
	printf("USB OTG HS MSC Host\r\n");
	printf("> USB Host library started.\r\n");
	printf("  USB Host Library v2.1.0\r\n\r\n");
	
}
//检测到U盘插入
void USBH_USR_DeviceAttached(void)//U盘插入
{
	printf("检测到USB设备插入!\r\n");
}
//检测到U盘拔出
void USBH_USR_DeviceDisconnected (void)//U盘移除
{
	printf("USB设备拔出!\r\n");
}  
//复位从机
void USBH_USR_ResetDevice(void)
{
	printf(&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值