打印
[Atmel]

每天跟我读点资料:SAM D21数据手册(240)

[复制链接]
643|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
31.6.2.4 USB复位
      USB总线复位通过连接的主机初始化并且硬件管理:
      在USB复位期间下列寄存器被清除:
      。设备端点配置寄存器(EPCFG)-除了端点0
      。设备帧数寄存器(FNUM)
      。设备地址寄存器(DADD)
      。设备端点中断使能清除/设置寄存器(EPINTENCLR/SET)
      。设备端点中断标志寄存器(EPINTFLAG)
      。端点状态寄存器传输拖延0比特位(EPSTATUS.STALLRQ0)
      。端点状态寄存器传输拖延1比特位(EPSTATUS.STALLRQ1)
      。端点中断摘要寄存器(EPINTSMRY)
      。控制B寄存器中的向上恢复比特(CTRLB.UPRSM)
      在复位过程的结尾,中断标志寄存器中的复位结尾比特位置1(INTFLAG.EORST)
     
31.6.2.6 帧开始
      当一个帧开始(SOF)令牌被检测到,从令牌得到的帧数存于设备帧数寄存器的帧数字段,并且开始帧中断比特在设备中断标志寄存器(INTFLAG.SOF)被设置。如果这里有一个CRC或比特满错误,帧数量错误状态标志(FNUM.FNCERR)在FNUM寄存器被设置。
31.6.2.6 SETUP传输的管理
      当一个SETUP令牌被检测到并且令牌的设备的地址不同DADD.DADD匹配,这个包将丢弃并且USB模块转到空闲等待下一个令牌包。
      当地址匹配,USB模块检查端点在EPCFG中是否使能,如果地址的端点没有使能,包将丢弃并且USB模块转到空闲状态并且等待下一个令牌包。
      当端点使能,USB模块检查EPCFG的地址端点。如果EPCFG.EPTYPE0没有设置控制,USB模块返回空闲状态并且等待下一个包。
      当EPCFG.EPTYPE0匹配,USB模块返回数据缓冲地址(ADDR)从地址端点的描述符并且等等DATA0数据包。如果一个PID错误或者其它PID比DATA0先检到,USB模块返回空闲状态并且等等下一个令牌包。
      当数据PID匹配并且如果设备端点中断标志寄存器中接收设置完成中断比特是0(EPINTFLAG.RXSTP)等于0,忽略Bank 0 准备好比特在设备端点状态寄存器(EPSTATUS.BK0RDY),输入数据写到数据缓冲地址指示的数据缓冲。如果接收数据字节数量超过端点PCKSIZE.SIZE指示的最大的装载长度数据,剩余的接收数据字节丢弃。包将仍然被检测比特满和CRC错误。软件必须从来也不向主机报告端点长度大于在PCKSIZE.SIZE中配置的长度。如果在包中比特满或CRC错误被检测到,USB模块将返回空闲模式并且等等下一个令牌包。
      如果数据成功被接收,一个ACK握手信号返回主机,并且接收的数据字节,除了CRC,被写到比特记数(PCKSIZE.BYTE_COUNT)。如果接收的数据字节是在PCKSIZE.SIZE中指定的最大装载值,没有CRC数据被写入数据缓冲。如果接收的数据字节是PCKSIZE.SIZE指定的最大数据装载值差一个字节,只有第一个CRC数据被写入到数据缓冲。如果接收数据的数量是等于或小于PCKSIZE.SIZE两个字节两个CRC数据字节都写到数据缓冲。
      最后EPSTATUS被更新。数据开关输出比特(EPSTATUS.DTGLOUT),数据开关输入比特(EPSTATUS.DTGLIN),当前bank比特(EPSTATUS.CURRBK)和Bank准备好0比特(EPSTATUS.BK0RDY)被设置。Bank准备好1比特(EPSTATUS.BK1RDY)和拖延Bank 0/1比特(EPSTATUS.STALLQR0/1)在收到SETUP请求后清0。RXSTP比特被设置并且如果在端点中断使能设置/清除寄数器接收Setup中断允许比特置位(EPINTENSET/CLR.RXSTP)。

      

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6955

帖子

67

粉丝