第一次使用SCDN分享自己的学习过程请多多指教。我会以自己的理解过成为主线,让需要的伙伴更能理解掌握,那就开始第一节,USB
USB第一节枚举
USB外设实现了USB2.0全速总线和APB1总线间的接口,支持USB挂起和恢复操作,可以实现停止设备时钟,实线低功耗
- 符合USB2.0全速设备的技术规范 支持全速12M模式
- 一个控制传输点,四个独立的通用端点用于中断传输和批量传输
- FIFO深度为64字节,控制传输、批量传输、终端传输最大可以传输64字节包
- CRC循环冗余校验。反响不归零NRZI的编码、解码和位填充
- 支持DMA传输
在数据传输结束时,USB模块将触发与端点相关的中断,通过读状态寄存器和/或者利用不同的中断处理程序,微控制器可以确定:
主机请求的传输类型
哪个端点需要得到服务
产生如正在进行的是哪种类型的传输
端点的应答
传输是否完成
首先接上USB,电脑会更具DP DM上差分信号的变化去检测是否接入设备,当检测到接入设备,电脑主机就会给USB发送信息,开始询问,USB属于什么设备,支持什么传输之类的,那我们收到主机发过来的是什么呢,我们可以接上逻辑分析仪,发现
在图片中两次间隙分别是两次复位。
在对端点0访问之前,我们可以看到会有sof包1ms一次保持
接下来主机对端点0进行访问
主机多次询问之后,从机返回数据
此时相当于,主从机之间通讯正常,主机已经获得0X40的设备描述符,主机拉低数据线,从机准备接受数据,
这个过程为控制传输为USB枚举过程
枚举成功