STM32F103之USB(一)

初识USB

由于项目需求,需要USB这块,花了几天时间了解了下USB方面的知识,的确挺难的!USB是个挺难啃的家伙,当时看了一遍看的一头雾水,不过几天下来还是有所收获的。顺便记录下自己学习的过程,一遍以后查看。

一、USB介绍

USB(Univetsal Serial Bus)的缩写,即通用串行总线。是现在通讯设备中不可或缺的一部分,可以这么说,电子工程师不懂USB那就太OUT了。

二、USB的发展史

?1994年     Philips公司  Access.Bus规范(USB的前身)

?1996年     Compaq、Intel、Microsoft、NEC   USB1.0规范

?1997年     USB1.1规范

?2000年     USB2.0规范

?2002年     USB OTG规范

三、USB的特点

1)优点:

?可以热插拔:告别“并口和串口先关机,将电缆接上再开机”的动作。

?系统总线供电:可提供5V/500mA电源。

?支持设备众多:例如鼠标,键盘,打印机,显示器等。

?扩展容易,通过Hub可以连接多个设备只PC机

?高速数据传输:USB1.1是12Mb/s,USB2.0高达480Mb/S(ps210Mb/s/并口8Mb/s、R-                    23220Kb/s)

?方便的设备互连:USBOTG支持点对点通信,例如数码相机和打印机直接互连,无                      需PC断开连接。

2)缺点:

?供电能力差:高功率设备必须外接电源,例如:打印机

?传输距离短:USB总线的连线长度最大为5m,即便是用HUB来扩展最远也不超过                     30m,距离越远数据传输误差越大!

不过对于这次做空中鼠标来说,还是挺好的。这些影响基本没有。

四、USB的工作原理

1)USB识别过程

以前的确很好奇,往电脑插个鼠标,它就能识别出鼠标来,插个键盘就能识别很出是键盘,插个U盘就能识别出U盘,太神奇了,心中充满了好奇,一直想找个机会了解下,这回,终于懂了,USB是如何识别的,呵呵!

在USB的原理图设计时,必须给D+和D-端接上连个电阻:

D+和D-是两个差分信号线。 D+ 减 D-进行区分,可以看到区分度还是挺大的。

在设备链接主机时,会检测设备电平,如果检测到在D+上有上拉电阻说明是全速设备,如果检测到在D-上有上拉电阻说明是低速设备。

识别过程是一个枚举过程。

首先设备上电---USB设备会自动复位(将自己的地址初始化为0(包括设备地址和端口地址))---主机检测到复位了(检测到地址为0 的设备)---主机要求USB提供设备址,此时USB设备会将自己的一些描述符发送给主机(电脑),在这些描述符中包括,生产厂商、名字、干什么的、属于什么类别(比如U盘、鼠标……)……,接着主机会查找自己的当前没有占用的地址分配给设备,包括端口地址、设备地址-----想刚分配的地址发送索取信息--包括描述符(比如是U盘的话,索取U盘的大小、什么牌子等等),然后就可进行其他通讯了。想象还是挺神奇的,USB枚举居然做了这么多的事情。

在枚举完成后,主机会给设备安装驱动程序,这也是我们经常可以看到的,刚买的鼠标、键盘或U盘插入电脑后会提示正在安装驱动,当驱动程序安装完成后就可以记性相关的操作了。

2)描述符类型

在USB枚举过程中,主机要求设备提供描述符,描述符主要有一下几个:

标准的(通用的)描述符主要有:

设备描述符:属于什么设备

配置描述符:

接口描述符:

端点描述符:有多少个端口

字符串描述符:告诉USB英文的一个表述:比如U盘的名字,KingSton(金士顿)

以上描述符的详细信息会在后面讲解。

技术在于分享、交流……

Email: [email protected]

QQ:936563422

时间: 2024-08-09 06:34:35

STM32F103之USB(一)的相关文章

简单实现stm32f103芯片usb模拟U盘进行IAP更新用户程序

更新单片机内的用户程序,方式一般都是仿真器,串口,网络口,usb DFU,另类一点CAN也行,但是这些方式都有一个共同点,必须要有相应的上位机配合操作,还要教会别人使用,那么能不能有更简单傻瓜化的升级方式呢? 今天二逼程序猿就来说说另类一点的USB模拟U盘进行IAP更新升级用户程序的方法!USB模拟U盘,顾名思义就是用STM32的usb device接口,根据usb massstorage大容量存储协议连接电脑,由于现在的电脑都自带massstorage的驱动程序,因此可以在任意一台电脑使用而不

从头调试HID(新)

小孙想要总结这一年来学到的关于stm32的USB相关知识,但又不知道怎么总结,于是决定 从头开始调试固件库代码,直到实现USB功能为止! 首先准备参照正点原子<第88讲 USB虚拟串口实验-M3>,把HID相关库包含进工程中,工 程选用正点原子的USART试验.因为目前手里的开发板是"微雪电子"的stm32f103cbt6开发板, 其硬件串口为:USART1(PA9和PA10)和SART2(PA2和PA3).准备先把正点原子<实验4-串口 实验>实例代码移植到这

STM32F103 USB虚拟串口 驱动例程移植

1)驱动下载及安装.目前ST公司支持WIN7版本号为:VCP_V1.3.1_Setup.exe (在官网上搜索stsw-stm32102即是了):先安装驱动后再插入USB不然安装不成功. 2)固件下载.目前ST公司最新USB固件库为:STM32_USB-FS-Device_Lib_V4.0.0(在官网上搜索stsw-stm32121即是了). 3)ST官网:www.st.com 4)检查系统是否带了usbser.sys文件.很多GHOST版本的系统,系统驱动文件丢失导致!INF文件下载地址:ht

stm32 usb error : identifier &quot;bool&quot; is undefined

.\usb\USB\usb_pwr.h(54): error:  #20: identifier "bool" is undefinedusb\USB\usb_pwr.h(54): error:  #20: identifier "bool" is undefinedusb-driver\STM32_USB-FS-Device_DriverV3.1.1\src\usb_core.c(511): error:  #20: identifier "TRUE&q

STM32解密STM32F103芯片解密ST32F103R6单片机破解多少钱?

STM32F系列单片机芯片解密型号: STM32F100  |  STM32F101  |  STM32F102  |  STM32F103  |  STM32F105  |  STM32F107 STM32F103芯片解密型号: STM32F103C4  |  STM32F103C6  |  STM32F103C8  |  STM32F103CB  |  STM32F103R4 STM32F103R6  |  STM32F103R8  |  STM32F103RB  |  STM32F103R

USB Mass Storage学习笔记-STM32+FLASH实现U盘

一.内容概述 采用STM32内部自带USB控制器外加大页NAND FLASH K9F1G08U0A实现一个128M的U盘. 1.STM32的USB控制器 STM32F103的MCU自带USB从控制器,符合USB规范的通信连接:PC主机和微控制器之间的数据传输是通过共享一专用的数据缓冲区来完成的,该数据缓冲区能被USB外设直接访问.这块专用数据缓冲区的大小由所使用的端点数目和每个端点最大的数据分组大小所决定,每个端点最大可使用512字节缓冲区,最多可用于16个单向或8个双向端点.USB模块同PC主

STM32F103单片机解密资料

STM32F103单片机解密资料下载 一.STM32 32位ARM Cortex MCU 基于ARM? Cortex? M 处理器内核的 32位闪存微控制器STM32产品家族,为MCU用户开辟了一个全新的自由开发空间,并提供了各种易于上手的软硬件辅助工具. STM32 MCU融高性能.实时性.数字信号处理.低功耗.低电压于一身,同时保持高集成度和开发简易的特点. 业内最强大的产品阵容,基于工业标准的处理器,大量的软硬件开发工具,让STM32单片机成为各类中小项目和完整平台解决方案的理想选择. 二

通过usb连接adb

手机不同进入的方式可能不一样,我使用的是努比亚手机. 借鉴这里的:http://adbshell.com/commands/adb-connect 在Wi-Fi上使用ADB:adb connect <host> [:<port>] 1.在手机设置里面打开开发者模式:关于手机--->版本号(多次点击版本号) 2.通过USB连接电脑 3.进入电脑的cmd界面,输入:adb devices,出现device说明手机通过usb连接电脑成功 4.如果上一步没有出现,可以通过adb tc

Virtualbox使用点滴(共享USB设备,Linux下我的用户没有加到vboxuser中去)

由于网银客户端的问题,只能够在windows环境下支付,所以一直保存着一个激活的virtualbox下的windows,用来完成在线支付. 过去这个激活的windows是安装在ubuntu 10.10 32bit版本上的,通过将usb设备共享给虚拟机实现网银支付. 由于机器更新,从virtualbox导出,安装到ubuntu 11.04 64bit版本上,可是每次试图开启usb共享时都会报错,终于到了周末,有些时间来跟踪这个问题了. 首先看错误报告,错误报告说需要为virtualbox安装ext