logo资料库

USB培训_Part2_USB_IP及其库的使用(2STM32 USB 学习资料).pdf

第1页 / 共97页
第2页 / 共97页
第3页 / 共97页
第4页 / 共97页
第5页 / 共97页
第6页 / 共97页
第7页 / 共97页
第8页 / 共97页
资料共97页,剩余部分请下载后查看
IP role class USB-USBD-MSC/HID Lilian YAO
STM32 MCU有两种带USB功能的IP 2 • USB IP • 可作为全速或低速的USB设备 • 存在于STM32F102、STM32F103 • FS OTG IP • 可作为全速和低速USB主机 • 可作为全速USB设备 • 存在于STM32F105、STM32F107、STM32F2、STM32F4 本PPT讲解USB IP • HS OTG IP • 可作为高速、全速和低速USB主机 • 可作为高速和全速USB设备 • 存在于STM32F2、STSM32F4 STM32F102/103 STM32F105/107 STM32F2/F4 OTG FS HS USB FS Y Y Y Y Presentation Title 20/06/2013
模块特点和注意事项 3 • 符合USB2.0中的全速规范 • 可用资源:8个双向端点 • 支持四种传输类型 • 对于bulk和同步传输,还支持double buffer模式;使得一个buffer用于USB硬件和PC 交换数据的同时,另外一个buffer可被MCU使用 • 支持USB设备的挂起和唤醒操作(写控制寄存器) • 从而停止设备时钟,以进入低功耗模式 • 可产生SOF脉冲 • 注意事项: • F102/103中的USB和CAN共享512字节的专用SRAM来进行数据收发操作,因此两个 IP不能同时使用 • F105/107不受此限制 Presentation Title 20/06/2013
USB模块的功能框图 4 PC和MCU的数据交换是通过专门的 packet buffer memory实现的 SIE使用固定的48MHz精确时钟 为使USB正常工作,APB1时钟不能 低于8MHz ! Presentation Title 20/06/2013
• SIE • 硬件识别同步信号、进行比特填充、产生以及校验CRC、产生以及验证PID、握手 • 根据外设事件来产生SOF、复位信号等。。。 5 • 时钟 • 产生和帧信号同步的时钟脉冲 • 检测挂起信号(即3ms内USB总线上没有信号) • Packet Buffer接口 • 通过一组收、发buffer来管理512字节的local memory • 硬件根据来自SIE的请求来选择合适的buffer • 寄存器 • EP相关的寄存器:该EP的传输类型、地址、当前状态 • 【USB_EPnR n=0~7】 • 控制寄存器:控制USB模块事件(比如唤醒和休眠)和反应USB模块当前状态 • 【USB_CNTR.功耗方面的控制】、【USB_DAADR.模块使能/设备地址】、 【USB_BTABLE】、【USB_FNR.】、【USB_ADDR/CNT_TX/RX】 • 中断寄存器:中断掩码,记录事件 • 【USB_CNTR.中断掩码控制】、【USB_ISTR】 Presentation Title 20/06/2013
• USB模块和APB1总线的接口部分包含以下子模块 • Packet buffer memory • 实际包含packet buffer的地方 • 最大容量=512字节=256个半字*16比特 • 仲裁 • 接收来自APB1总线和来自USB接口的memory request,前者优先级更高 • 寄存器 mapper • 把USB外设的字节宽度和位宽度的寄存器,组合成能被APB1访问的16位宽度字 6 • APB1 wrapper • 为packet buffer memory和寄存器提供了APB1接口 • 把所有USB外设映射到APB1的地址空间 • 中断 mapper • NVIC.向量20:所有USB事件(正确传输结束、USB复位等)都可触发 • NVIC.向量19:只能被同步和double buffer bulk传输的正确传输结束事件触发 • NVIC.向量42:只能被(唤醒USB挂起模式)的事件触发 @EXTI_18 • 从page100可以看到,只有host唤醒device,才会触发device的这个中断 Presentation Title 20/06/2013
1. 复位 7 • 系统复位和上电复位 • 提供USB外设模块时钟 • De-assert该模块的复位信号,使得软件能够访问该模块的寄存器组 • 打开和USB收发器相连的模拟部分(打开内部参考电压给端口收发器供电) • 复位PDWN@CNTR; • 等待内部参考电压稳定时间tSTARTUP • 移除施加在该USB模块上的复位条件:软件清零FRES@CNTR • 清除ISTR寄存器,以移除spurious pending interrupt,然后再使能其他单元 • USB复位信号及其对应中断 • 该事件发生时,USB外设的状态和系统复位后状态一样 • 软件应该在10ms之内使能USB功能:EF@DADDR • 初始化EP0R寄存器和ep0对应的packet buffer • 如果置位了RESETM@CNTR,还会产生中断;直到RESET标志被清零之前,数据 收发都被disable的 Presentation Title 20/06/2013
2. Packet buffer的使用 8 • 每个双向EP对应两个packet buffer,分别 用于发送和接收 • 软件通过packet buffer interface来访问它们 • 这些packet buffer的位置和大小都可配置,由 buffer描述表指定 • Buffer描述表本身也在这块memory里,它自己 的地址是由USB_BTABLE寄存器指定的 • Table里每个entry由4个半字组成(分别表示双向 EP的接收packet和发送packet的位置和大小) • 因此该table的位置本身必须以8字节对齐,即 USB_BTABLE的低三位全部为0 • USB外设硬件不会把本EP的数据溢出到与其相 邻的其他packet • 如果收到的数据多于buffer的长度,则只把前 length个数据放到该EP对应的Packet buffer中 硬件缓冲区 @ USB_BTABLE Presentation Title 20/06/2013
分享到:
收藏