usb学习笔记414(一)

usb设备
usb通过端点传输数据
端点分为两类
1、端点编号为0的控制端点,具有in和out功能
2、端点编号不为0的端点,具有in或者out功能

每个端点由三个寄存器控制
1、控制寄存器
端点使能、禁止
在当前配置下激活端点
设置usb传输类型
设置支持的数据包大小
设置in端点相关的发送fifo编号
设置希望收到的或者发送时候要使用的数据包的PID(批量传输/中断传输)
设置接收或发送事务时所对应的奇/偶帧(仅限同步传输)
可以设置 NAK 位,从而不论此时 FIFO 的状态如何,都对主机的请求回复 NAK
可以设置 STALL 位,使得主机对该端点的令牌都被硬件回复 STALL
可以将 OUT 端点设置为侦听模式,即对接收到的数据不进行 CRC 检查

2、传输配置寄存器
端点的控制寄存器使能位置1之前完成,对传输控制寄存器的传输尺寸参数进行设置,控制寄存器使能位置1之后,传输控制寄存器的传输尺寸参数被硬件更新,为只读状态,反应当前传输状态
传输尺寸参数包括:以字节为单位的传输大小;构成整个 传输的数据包个数

3、状态中断寄存器
模块提供的中断主要包括
指示完成数据传输完成
setup阶段完成(控制传输的out端点)
相关发送fifo为半空或者全空的状态(in端点)
nak应答发送到主机
发送fifo为空时候接收到in令牌(批量和中断传输的in端点)
尚未使能端点时候收到out令牌
应用程序关闭端点生效
应用程序对端点设置nak生效(仅针对同步传输in)
接收到3个以上连续的setup包(控制类型的out端点)
检测到超时状况(针对in端点)
同步传输的数据包未产生中断而丢失

usb主机
主机通过通道传输数据
每个通道通过三个寄存器进行配置
1、控制寄存器
通道使能/禁止
设置目标 USB 设备的速度:FS/LS
设置目标 USB 设备的地址
设置与该通道通信的目标 USB 设备上的端点的编号
设置该通道上的传输方向:IN/OUT
设置该通道上的 USB 传输的类型:控制/批量/中断/同步
设置与该通道通信的设备端点的最大包长
设置要进行周期传输的帧:奇帧/偶帧

2、传输配置寄存器
同usb设备端点的传输配置寄存器

3、中断状态寄存器
传输完成中断
通道因传输完成、USB 事务错误或应用程序发出禁止命令而停止
相关的发送 FIFO 为半空或全空状态(IN 端点)
接收到 ACK 响应
接收到 NAK 响应
接收到 STALL 响应
由于 CRC 校验失败、超时、位填充错误和错误的 EOP 导致 USB 事务错误
串扰错误
帧上溢
用于数据同步的翻转位出错

内置硬件调度器,对应用程序发出的usb请求事务重新排序
每一帧开始,先执行周期性的同步和中断传输,再执行非周期性的控制和批量传输
主机通过一个周期性请求队列和一个非周期请求队列,管理应用发起之后还未得到响应的事务
队列中的每一项包括该事务传输要用到的in或者out通道号及相关信息
每个帧周期开始都先处理周期性的请求队列
硬件管理请求对列,两个只读寄存器
周期性fifo和队列状态寄存器
非周期性fifo和队列状态寄存器
两个请求对列中空闲的位置数
发送fifo当前可用的空闲空间
应用程序发送事务请求之前要查询以上两个寄存器看队列是够有空位置

usb控制器的fifo

设备模式下的ram空间被分为
一个rx_fifo对应所有out端点(读取通过一个寄存器出栈读取)
rx_fifo中除了有效数据外,接收到的数据包状态(包含 OUT 端点目标编号、字节数、数据 PID 和对所接收数据的验证)也由模块进行存储。没有可用空间,对主机out事务回复nak,并在被寻址的端点触发中断。rx_fifo中有数据包可读取,就会一直触发rx_fifo非空中断,应用程序从特定寄存器读取数据包信息,根据数据包信息从rx_fifo中读出有效数据,进行处理。

多个个tx_fifo对应多个in通道(通过一个寄存器入栈写入)每激活一个in端点设置配置一个tx_fifo

主机模式下ram空间被分为
一个rx_fifo对应所有周期性事务和非周期性事务(读取通过一个寄存器出栈读取)
与设备模式下的rx_fifo类似

一个tx_fifo处理所有非周期性out事务
一个tx_fifo处理所有周期性out事务
两个tx_fifo半空和全空均会触发空中断

fifo分配
不太明白

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值