本帖最后由 芯圣电子官方QQ 于 2023-7-20 10:20 编辑
USB 外设实现了USB Full-Speed 接口的所有特性,它由以下部分组成:
串行接口控制器:该模块有以下功能:帧头同步域的识别,位填充,
CRC 生成校验,PID 的验证与产生、握手分组处理等。
它与USB Host 交互,利用分组缓冲接口提供的专用SRAM 存
储数据。它也根据USB 外设当时发生的事务,例如接收SOF,
USB 复位,数据错误等,来产生中断,并做相应的处理。
定时器:产生一个与帧开始报文同步的时钟脉冲,并在3ms 内
没有数据传输的情况下,检测出Host 全局挂起的条件。
分组缓冲器接口:用于管理那些用于发送和接收的临时SRAM。
它根据串行接口控制器的要求分配缓冲区的大小,并定位到端
点寄存器所指向的存储区地址。它在每个字节传输后,地址自
动递增,数据分组传输结束才停止。它也可以记录传输的字节
数,防止缓冲区溢出。
端点相关寄存器:每个端点都有一个对应的寄存器,其作用为
描述端点类型和记录当前状态。对于单向和单缓冲端点,一个
寄存器就可以用于实现两个不同的端点。一共8 个寄存器,也
可用于实现多达16 个单向或单缓冲的端点或者多达7 个双缓
冲的端点或者若干双缓冲端点与单缓冲端点的任意组合。
控制寄存器:该寄存器包含整个USB 模块的状态信息。
中断寄存器:该寄存器包含中断屏蔽信息和中断事件的记录信
息。这些寄存器可以显示中断源和中断状态,也能清除待处理
中断的状态标志位。
注意:端点0 总是作为单缓冲模式下的控制端点。
USB 外设通过APB1 接口与APB1 总线相连,APB1 接口部件包括以下部分:
分组缓冲区:数据分组缓存位于分组缓冲区,由分组缓冲接口
创建相应存储结构并控制其状态。应用软件可以直接访问该缓
冲区。它的大小为512 字节,由256 个16 位的字构成。
仲裁器:该部件负责处理来自APB1 和USB 外设的存储器请求。
它通过向APB1 提供较高的访问优先权来解决总线的冲突问
题,并且保留一半的存储器带宽供USB 完成传输。它通过时
分复用来实现虚拟的双端口SRAM,实现在USB 传输的同时,
允许应用程序访问存储器的功能。此策略也允许任意长度的多
字节数据传输。
寄存器映射单元:该模块将USB 外设的各种字节宽度和位宽度
的寄存器映射成能被APB1 寻址的16 位宽度的内存集合。
APB1Wrapper:给缓冲区和寄存器提供了到APB1 的接口,并把
整个USB 外设映射到APB1 地址空间。
中断映射:将可能产生中断的USB 事件映射到三个不同的中断
请求上:
_ 通道20——USB 低优先级中断:可由所有USB 事件触发。固件在
处理中断前应当首先确定中断源。
_ 通道19——USB 高优先级中断:只能由同步传输和双缓冲批量传
输的CTR 事件触发,这样可以保证最大的传输速率。
_ 通道42——USB 唤醒中断:由USB 挂起模式的唤醒事件触发。
|