USB协议简介

USB

USB 是英文 Universal Serial BUS(通用串行总线)的缩写。
USB 是在 1994 年底由英特尔、康柏、IBM、Microsoft 等多家公司联合提出的。

USB2.0 规范

标准 USB 共四根线组成,除 VCC/GND 外,另外为 D+和 D-。

  • 两根数据线采用的是差分电压的方式进行数据传输

在 USB 主机上,D-和 D+都是接了 15K 的电阻到地的

  • 所以在没有设备接入的时候,D+、D-均是低电平。

如果是高速设备,则会在 D+上接一个 1.5K 的电阻到 VCC,而如果是低速设备,则会在 D-上接一个 1.5K 的电阻到 VCC。

如此,当设备接入主机的时候,主机就可以判断是否有设备接入,并能判断设备是高速设备还是低速设备。

USB OTG

OTG ,On - The - Go,即插即用
STM32F407 系列芯片自带有 USB OTG FS(全速)和 USB OTG HS(高速)。

  • 在主机模式下,OTG FS 支持全速(FS,12Mb/s)和低速(LS,1.5 Mb/s)收发器,
  • 从机模式下则仅支持全速(FS,12 Mb/s)收发器。

在这里插入图片描述

时钟
STM32F4通过AHB总线访问(AHB频率必须大于14.2Mhz)USB OTG FS功能模块
48Mhz 的 USB 时钟,是来自时钟树图里面的 PLL48CK(和 SDIO 共用)

ST的USB库

库的链接

在这里插入图片描述
设备类(Device,即 Slave)、②主从一体类(Host_Device)和③主机类(Host),总共 10 个例程。

USB 读卡器

移植:STM32_USB-Host-Device_Lib_V2.1.0\Project\USB_Device_Examples\MSC

软件

在这里插入图片描述
要修改的就是 USB_APP 文件夹下面的代码。
其他代码(USB_OTG 和USB_DEVICE 文件夹下的代码)一般不用修改

usb_bsp.c

底层初始化函数,包括:IO 设置、中断设置、VBUS配置以及延时函数等。
USB Device(Slave)和 USB Host 共用这个.c 文件。

usbd_desc.c

USB 设备类的描述符,直接决定了 USB 设备的类型、断点、接口、字符串、制造商等重要信息。这个里面的内容,我们一般不用修改。

usbd_usr.c

应用层接口函数,即 USB 设备类的一些回调函数

  • 当 USB 状态机处理完不同事务的时候,会调用这些回调函数
  • 通过这些回调函数,就可以知道 USB 当前状态

所有 USB 事务,都是通过 USB 中断触发,并由 USB 驱动库自动处理。
USB 中断服务函数在usbd_usr.c , OTG_FS_IRQHandler

usbd_storage_msd.c

一些磁盘操作函数,包括支持的磁盘个数,以及每个磁盘的初始化和读写等函数。

  • 这里设置了 2 个磁盘:SD 卡和 SPI FLASH。

移植注意

  1. 全局宏定义里面,定义:USE_USB_OTG_FS
  2. 没有用到 VUSB 电压检测,所以要在 usb_conf.h 里面,将宏定义:#define VBUS_SENSING_ENABLED,屏蔽掉。
  3. 通过修改 usbd_conf.h 里面的 MSC_MEDIA_PACKET 定义值大小,提高USB 读写速度(越大越快),本例程我们设置 12*1024。
  4. 修改 usbd_msc_scsi.c 里面的 SCSI_blk_addr 类型为 uint64_t,才可以支持大于 4G 的卡,官方默认是 uint32_t,最大只能支持 4G 卡。
  5. usbd_msc_scsi.c 文件,是只读的,得先修改属性,去掉只读属性,才可以更改。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万码无虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值