通用串行总线(英语:Universal Serial Bus,缩写:USB)是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范。
它只有4根线,两个电源(5V,地线),两个数据线(D+,D-)。,故信号是串行传输的,即按照传输时钟脉冲的节奏一位一位的传输。usb接口也称为串行口。
usb接口的4根线一般是下面这样分配的,需要注意的是千万不要把正负极弄反了,否则会烧掉usb设备或者电脑的南桥芯片:黑线:gnd 红线:vcc 绿线:data+(DP) 白线:data-(DM)
一、接口结构图
下图就是接口图,分别是+5V(电源)、DATA+(传输数据端+ DP)、DATA-(传输数据端- DM)、和GND(地线)。
(DM,DP是用来传输数据的,VCC,GND充电。)
二、数据传输过程
注:后文中将USB设备均举例为U盘。
2.1 首先是主机识别U盘
先说说USB主机是怎么识别一个U盘的吧,当你把一个U盘插到电脑上的时候,电脑的USB接口上会发生一些变化。U盘会把DP(D-)拉高,使DP,DM保持一个J状态(即:DP为高DM为低),电脑主板的USB主机芯片检测到这个J状态(DP(D-)拉高),知道有设备连接上了(这里提到的主机和设备是指连接在USB线两端的USB接口芯片),电脑的驱动会对连接上的这个设备进行识别,我们把它叫做列举,这个过程是为了让电脑知道连接上的这个设备是什么东西(是U盘,还是USB鼠标,还是USB键盘,或是其他的什么)。
2.2 然后开始传输数据
然后再看USB数据是怎么在DM,DP上传输的,当主机检测到有设备连接上,驱动先会对这个设备作些必备的事情,识别他的速度(这个过程又有很多协议,要了解的仔细研究协议),然后就是复位等等。之后就开始在总线(DM,DP)上发送1ms间隔的SOF包(全速)或125us间隔的SOF包(高速)。
USB数据都是以包的形式发出的,包都有固定的格式,它以一个sync(synchronous 同步)开始,以一个eop(end of packet,包结束)结束,SOF 包也是一样的。 下面是包的结构图:
其中PID(packet ID 包的ID)是说明这个包是什么包,即包的类型。
GPIO的英文全称General-Purpose Input /Output Ports,中文意思是通用I/O端口。
在嵌入式系统中,经常需要控制许多结构简单的外部设备或者电路,这些设备有的需要通过CPU控制,有的需要CPU提供输入信号。并且,许多设备或电路只要求有开/关两种状体就够了,比如LED的亮与灭。对这些设备的控制,使用传统的串口或者并口就显得比较复杂,所以,在嵌入式微处理器上通常提供了一种“通用可编程I/O端口”,也就是GPIO。
一个GPIO端口至少需要两个寄存器,一个做控制用的“通用IO端口控制寄存器”,还有一个是存放数据的“通用I/O端口数据寄存器”。数据寄存器的每一位是和GPIO的硬件引脚对应的,而数据的传递方向是通过控制寄存器设置的,通过控制寄存器可以设置每一位引脚的数据流向。
(GPIO相关的寄存器有,IOPIN、IOSET、IOCLR、IODIR四个寄存器。)
SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备。
SDIO1.0标准定义了两种类型的SDIO卡:
1.全速的SDIO卡,传输率可以超过100Mbps;
2.低速的SDIO卡,支援的时脉速率在0至400KHz之间。
SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令。由于这个,SDIO和SD卡规范间的一个重要区别是增加了低速标准,低速卡的目标应用是以最小的硬件开支来支持低速I/O能力。低速卡支持类似调制解调器,条形码扫描仪和GPS接收器等应用。高速卡支持网卡,电视卡以及组合卡等。组合卡指的是存储器+SDIO,对组合卡来操作需要全速和4BIT的传输模式,这是SDIO1.0标准规定的。