STM32 USB模块

基于STM32 Datasheet (RM0008)上USB部分的Block Diagram谈谈个人的理解


Block Diagram常见于MCU厂商官方提供的Datasheet中,用功能模块的方式描述外设的大致实现方式,以此让固件开发者了解外设硬件层的结构和到固件软件层的编程接口,简单地来说就是读写各个外设寄存器所能实现的功能。


USB模块的实现需要遵循USB协会制定的USB协议(USB2.0/3.0等),协议从USB接口的机械结构到USB的设备驱动均有定义,而固件开发主要关心内容有以下几个方面(由下到上),

    1. MCU上USB模块的寄存器接口、内存映射。

    2. 将数据包分发到对应的Endpoint或从对应的Endpoint接受数据包。

    3. 将收发过程封装成函数供固件中的上层应用使用。






























接下来先让我们来看看USB部分的Block Diagram(上面的大方框中)中各个模块的功能:


Analog transceiver

    模拟信号收发器,接受数据包时将线路中的差分模拟信号转为数字信号供SIE使用,发送时反之。


SIE

    Serial Interface Engine,使用USB2.0 Full-speed所需的48MHz时钟,需要与Packet Buffer Interface指定的专用数据包缓冲区交互。主要负责以下几方面的事务,

        1. SYNC包识别、位填充、CRC生成/检查、PID确认/生成以及HANDSHAKE包评估。

        2. 生成有关USB外设事件的信号(用于生成中断),比如SOF、USB_Reset和数据错误等。

        3. 生成有关Endpoint事件的信号(用于生成中断),比如包发送/接受成功等。


Packet Buffer Interface

    管理用于实现一系列收发buffer的local memory,

        1. 根据SIE发来的请求选择正确的buffer并把数据放到Endpoint寄存器指向的地址。

        2. 每收发一个word(16-bit),指向的地址加2。

        3. 计数收发的字节数,防止超出buffer的最大容量。


Endpoint Registers

    Endpoint的类型和当前的收发状态。对于单向/单buffer的Endpoint,单个寄存器能实现两个不同的Endpoint。

    总共8个寄存器,所以最多能实现16个单向/单buffer或者7个双buffer的Endpoint(由于EP0只能为单buffer)。


Control Registers

    USB外设的整体状态,比如重启和下电等。


Interrupt Registers

    各种中断位。



接下来是与USB部分交互的APB1 Interface的Block Diagram(下面的大方框中)中各模块的功能:


Packet Buffer Memory

    大小为512 byte,以256个16-bit word的形式组织,能够被应用程序访问。


Arbiter

    仲裁器,同时接受来自USB外设和APB1总线的local memory访问请求,将时钟的前半个周期给APB1总线,后半个周期给USB外设。


Register Mapper

    寄存器映射,收集USB外设中各种byte宽和bit宽的寄存器,用16-bit宽的word形式组织起来,来给APB1寻址。


APB1 Wrapper

    为APB1访问内存和寄存器的接口,也将USB外设映射到APB1的地址空间。


Interrupt Mapper

    收集USB外设发出的signal,将它们映射到NVIC的3种不同的中断线上,

        1. USB低优先级中断(Channel 20),比如包发送/接受成功、USB_Reset等。

        2. USB高优先级中断(Channel 19),只适用于同步传输和双buffer块传输模式中的发送/接受成功。

        3. USB唤醒中断(Channel 42),USB挂起模式的wakeup事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值