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功能设备
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接收和发送数组;
第二步:在“main.c”文件中对USB设备进行初始化;
第三步:从全局变量中取出接收到的数据或向全局变量中写入待发送数据;
第四步:在“isr.c”文件USB设备中断服务例程中调用接收或发送函数完成数据收发。
上述步骤的编程主要在中断和主函数中完成。在中断文件isr.c中,调用了USB设备的数据收发函数完成设备与主机的数据交互。在主程序中,完成USB的初始化及对全局变量的读写操作。
在与USB设备通信时,选用PC作为USB主机,主机方的客户软件即PC端的USB驱动以及界面程序需要自行编写。
PC方测试程序界面
PC测试程序,与USB设备进行数据交互,主要由一个窗体USBTest.cs和一个标准模型USB.cs组成。