USB基础知识

USB时2000年以来普遍使用的连接外围设备和计算机的一种新型串行总线标准,逐步发展成计算机与外围设备的标准连接方案。

应用特点

一、支持即插即用。一方面是热插拔,在不需要重启计算机或关闭外设点条件下,便可以实现外设与就是那几点连接和断开;另方面是可以快速简易安装硬件设备而无需重新配置系统。

二、可以使用总线电源。USB总线可以向外提供一定功率的电源适合很多嵌入式系统,同时USB协议中定义了完备的电源管理方式,用户可以选择采用设备自供电或者从USB总线上获取电源。

三、硬件接插口标准化,小巧化USB协议定义了标准的接插口A型和B型,为种类繁多的USB设备提供了统一的硬件接插口。同时USB接口体积小,为外设的小型化发展提供了可能。

四、支持多种速度和操作模式。USB支持多种传输速度:低速1.5Mbps、全速12Mbps、高速480Mbps。同时USB还支持4种类型的传输模式:块传输、中断传输、同步传输和控制传输,可以满足不同外设的功能需求。

物理特性

连接USB设备的电缆由四根导线组成,分别是一对差分信号线D+和D-,电源线VBUS和地线GND。

深度学习 即插即用模块 咋开发的 什么是即插即用设备?_嵌入式

USB总线使用差分信号传输数据,有利于保证数据的完整性和消除噪声干扰。在USB协议中,USB总线有四种状态:SE0、SE1、J和K状态,用以判断采用那种速率传输数据。

USB主机

指baohanUSB主控制器并且能够控制完成与USB设备之间数据传输的设备,广义上说,USB主机包含计算机和具有USB主控芯片和设备。

USB的所有数据通信,不论是上行通信还是下行通信都是由USB主机发起,所以USB主机在数据传输过程中占据主导地位。

功能模块:客户软件、USB系统软件、USB总线接口

客户软件复杂和USB设备的功能单元进行通信,一般需要由开发人员自行开发。

客户软件包括USB设备驱动程序(负责和USB系统软件进行通信)和界面应用程序(负责和USB设备驱动程序进行通信)

USB系统软件:包括USB总线驱动程序和USB主控制器驱动程序组成,由操作系统提供,开发人员不必掌握。

USB总线接口:包括主控制器和根集线器,依赖于主控制器的实现,开发人员不必掌握。

USB设备

USB设备又称USB从机,是具有某种功能的逻辑或物理实体。

按功能分为USB集线器和USB功能设备

深度学习 即插即用模块 咋开发的 什么是即插即用设备?_全局变量_02

USB集线器主要为USB系统提供额外的连接点,他使得一个USB端口可以扩展连接多个USB设备。

USB设备分类

大容量存储设备类、人机接口设备类、音频设备类、视频设备类、集线器类、通信设备类

USB设备中断

USB通信均由主机发起,而USB设备则在中断处理过程里响应主机的通信请求,用到的最重要的中断是令牌完成中断,在令牌完成中断中进行数据的收发及其他一些操作。

USB设备编程

KL25作为USB设备时的驱动构件中主要包括:初始化函数、枚举处理函数、发送数据函数、接收数据函数

初始化函数usb_init,主要完成分配USB模块使用的内存、USB设备描述符初始化、使能USB时钟源以及使能USB中断等。初始化函数传入的参数是用户自定义的设备序列号,该设备序列号作为一个字符串描述符在USB设备枚举时会传给PC机。

枚举函数usb_enumerate,用于完成USB设备的枚举。

发送数据函数usb_send,用于USB设备向USB主机发送数据,待发送的数据缓冲区的首地址和发送的数据长度作为参数传入,函数返回发送成功的数据长度。

接收数据函数usb_recv,用于接收USB主机发送来的数据,参数包括保存接收的数据的缓冲区地址和接收数据的长度。函数返回接收成功的数据长度。

USB设备驱动构件使用方法

第一步:在“include.h”文件中声明USB接收和发送数组;

深度学习 即插即用模块 咋开发的 什么是即插即用设备?_数据_03

第二步:在“main.c”文件中对USB设备进行初始化;

深度学习 即插即用模块 咋开发的 什么是即插即用设备?_深度学习 即插即用模块 咋开发的_04

第三步:从全局变量中取出接收到的数据或向全局变量中写入待发送数据;

深度学习 即插即用模块 咋开发的 什么是即插即用设备?_初始化_05

第四步:在“isr.c”文件USB设备中断服务例程中调用接收或发送函数完成数据收发。

深度学习 即插即用模块 咋开发的 什么是即插即用设备?_深度学习 即插即用模块 咋开发的_06

上述步骤的编程主要在中断和主函数中完成。在中断文件isr.c中,调用了USB设备的数据收发函数完成设备与主机的数据交互。在主程序中,完成USB的初始化及对全局变量的读写操作。

在与USB设备通信时,选用PC作为USB主机,主机方的客户软件即PC端的USB驱动以及界面程序需要自行编写。

PC方测试程序界面

PC测试程序,与USB设备进行数据交互,主要由一个窗体USBTest.cs和一个标准模型USB.cs组成。

深度学习 即插即用模块 咋开发的 什么是即插即用设备?_嵌入式_07