LPC11U35 USB学习

本文详细介绍了USB通信的基础概念,包括数据包结构、包类型、USB通信过程及硬件层实现等,并探讨了USB库文件的功能及其在实际开发中的应用。

几个概念

数据包——USB传输的基本单元,由5部分组成:同步字段、包标识符、数据字段、CRC和包结尾字段

                  包类型(由PID区分):

                  令牌包:OUT   IN  SOF  SETUP

                  数据包:DATA0  DATA1

                  握手包:ACK  NAK  STALL

                  特殊包:PRE

事物——每个事物由不同的包组成,有:输入事物、输出事物、设置事物、帧开始和帧结束、

传输——每个来回传输由不同的事物组成,类型有:控制传输、中断传输、批量传输和等时传输

 

主机全速模式时每1ms(每帧)产生一个SOF包,高速模式时每125us(每微帧)产生一个SOF包,每个帧包含多个事物。

 

USB通信过程:

  主机发送令牌包(IN/OUT)->USB设备响应,准备好发送/接收数据->主机发送DATA0或者DATA1数据包

  USB器件回根据PID的类型来判断是哪种类型的令牌 ,根据ADDR的值来判断是否是和自己通讯,根据ENDP的值来判断是和哪个端点进行通讯,根据校验来判断,数据传送是否无误。

 

硬件层

USB(通用串行总线),支持主机和一或多个外设之间进行通信,主机通过令牌协议分配USB带宽到设备上,所有传送都由主机发起。

USB设备控制器的组成:

1、USB ATX——发送和接收USB总线上的双向USB_DP和USB_DM 信号

2、SIE——采用硬连线实施协议层,处理USB RAM的端点缓冲区和USB总线之间的数据传输

                   具体实现CRC生成/检查、PID生成/验证、同步模式识别、位填充、地址识别、握手评估等

USB_SoftConnect

      允许软件在决定建立与USB的连接之前完成USB的初始化序列,初始化USB总线连接

      使用时需要将CONNECT信号连接到USB_DP和VDD之间的电阻的外部开关,通过DEVCMDSTAT寄存器的DCON位控制

 

USB_FTOGGLE(帧翻转输出)

     该引脚反映源自USB主机发送的输入帧起始令牌的1KZH时钟

 

USB_DP ——正差分数据       USB_DM——负差分数据

 

关于端点(EndPoint)的理解:

     端点是当一个主机需要同时访问不同内存位置时所配置的类似于地址的东西,例如USB HUB(将一个USB接口扩展为多个接口),一个HUB上挂接几个设备,要保证几个设备都能被同时(时分复用)访问,则每个都需要一个端点。一般而言,一个端点就对应一个FIFO,同一类型的设备端点个数也可能不同。

 

端点的单、双缓冲机制:单缓冲就是主机处理和USB写的是同一块缓冲区,而双缓冲则是开辟两个缓冲区,当设备写其中一块时,主机可以处理另一块里面的数据。

LPC11Uxx系列共有5个逻辑端点,10个物理端点,每个逻辑端点分为IN和OUT端点。

USB提供两种中断:IRQ和FIQ(快速中断)

 

USB库文件介绍:

usbcore.c——USB的内核文件,主要用于处理USB2.0协议

usbuser.c——实现各种事件和端点的实现代码,根据自己的应用添加代码实现USB通信。

usb.h——对USB需要使用的报告和描述符进行全面的定义

usbcfg.c——对USB中应用到的电源、端点、接口、缓冲等进行配置说明,完全可以根据自己的需要来配置USB。

usbdesc.c——为USB各种描述符的实现代码,开发不同的HID设备时,需要在此文件中更改相应描述。

usbhw.c——实现与USB相关的硬件配置等

mscuser.c——海量存储类自定义用户模块

 

USB描述符:

设备描述符、配置描述符、接口描述符、端点描述符

一个设备只有一个设备描述符,一个设备描述符可以包含多个配置描述符,一个配置描述符可以有多个接口描述符,一个接口使用了几个端点就有几个端点描述符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值