视频课程 计算机硬件

从零写出真正能用的通用串行总线设备 (英文课程中文字幕)

¥5.00 已售 0
✓ 自动发货 ✓ 永久有效 ✓ 售后保障

资源介绍

视频数量:23个 总时长:4小时25分 课程介绍: 从零写出真正能用的通用串行总线设备 你桌上那些线,键盘、鼠标、摄像头、移动硬盘,插上电脑就能用。可一旦自己拿STM32做USB设备,事情常常没那么顺:代码烧进去,电脑要么没反应,要么弹出一个未知设备,抓包软件里一堆令牌包、握手包,看得人发懵。问题往往不在C语言,而在USB这套机制没真正弄明白。这门课一共23个视频,四小时二十五分,篇幅不算长,但安排得很紧:先把USB从线缆电平到协议握手拆开,再在真实STM32开发板上做出两个能被电脑正常识别的设备,一个USB鼠标,一个USB大容量存储盘。 一、先建立一张USB地图: 开头几讲没有急着写代码,而是把USB为什么能统一桌面外设讲清楚。课程会对比USB版本、速度和连接器,解释A型、B型、C型、微型和迷你接口这些外形背后的差别,也会讲主机控制一切的主从模型。这个模型很关键,因为USB设备不能想发就发,所有传输都由主机发起。很多人写固件时总想着设备主动上报,结果程序结构怎么都不对,根子就在这里。课程还会教你怎么翻USB规范,不是从头读到尾,而是遇到描述符、端点、传输类型时知道去查哪一章。规范很厚,但有了索引思路,它就不再是拦路虎。 二、看懂物理层和电气层: 这一部分讲的是线缆里真正发生的事。USB只用DP和DM两根数据线传比特,课程会解释一位数据怎样变成两根线上的电平变化,NRZI编码、位填充和同步场分别解决什么问题。还有那个很巧的上拉电阻设计:设备只要在数据线上接一个电阻,主机就能发现它来了,并判断它想跑全速还是低速。J状态、K状态、SE0、复位和包结束这些名字,看起来像暗号,其实是读逻辑分析仪和USB抓包时必须认识的状态。课程还会讲VBUS供电和电流限制,区分自供电设备和总线供电设备,以及USB时钟精度为什么不能马虎。晶振偏一点,通信可能时好时坏,很多人排查半天软件,最后发现是时钟源选错。学完这部分,电脑不识别、枚举失败、供电不足这类问题,你会有明确的排查方向,而不是只会在代码里乱改。 三、把协议概念落到抓包里: 协议部分从USB拓扑讲起,主机、根集线器、层级星形连接、上下行端口,还有最多127个地址的限制。课程会带你在自己的电脑上查看设备树和集线器结构,把书上的拓扑和眼前的设备对应起来。接着讲四种传输类型:控制传输用来枚举和配置,中断传输适合鼠标键盘这类小数据定时上报,批量传输适合U盘这种大量且可重传的数据,等时传输适合音频视频。课程还会理清包、事务、传输、帧之间的包含关系,讲令牌包、数据包、握手包各自做什么。更实用的是,课程用Wireshark配合USBPcap抓取真实USB流量,让你亲眼看到主机怎样发令牌、设备怎样握手。端点与管道这部分会说明设备内部为什么要有多个通道,描述符又为什么像设备的身份证。鼠标项目会用到中断端点,存储项目会用到批量端点,这些配置不再是库里默认生成的黑盒。 四、盯住枚举和描述符: 最后一章聚焦上电后的最初100毫秒。主机怎样复位设备,怎样读取设备描述符,怎样分配地址,怎样读取配置描述符并选择配置,驱动又怎样根据厂商号和产品号匹配。课程会用Wireshark对照枚举过程,一包一包看握手。描述符里每个字段为什么这样填,端点最大包长、轮询间隔、接口类、子类、协议码,都会影响电脑是否认你。很多未知设备或设备描述符请求失败,就是这些细节没对上。两个实战项目也在这里串起来:做USB鼠标时,你写固件让开发板正确表示自己是一个鼠标,并上报位移,电脑自带驱动就能让光标移动;做USB大容量存储时,同一块板子换一个USB类,让电脑把它认成盘。两个项目用不同类、不同端点思路,正好把前面学的协议、描述符和枚举连成一条线。 这门课适合已经写过STM32基础程序的人,比如会配置GPIO、中断、时钟,能用C语言看懂结构体和指针,用过STM32CubeMX或者直接改寄存器。它更适合想搞清楚USB底层的人:做自定义HID设备、键盘鼠标、数据采集盒、虚拟串口或存储设备的嵌入式工程师,被现成USB库绕晕、想补上描述符和枚举这一课的人,以及喜欢用逻辑分析仪和抓包工具找问题的电子爱好者。如果完全没碰过单片机和C语言,直接学这门课会比较吃力。 学完之后,你得到的不是几个抄来抄去的初始化函数,而是一套能自己往下走的USB能力:看到抓包能认出事务和握手,拿到描述符知道每个字段在说什么,设备不识别时能从供电、时钟、上拉、枚举几个层面查,也能在STM32上独立改出一个新的USB设备。两个项目做完,USB对你来说就不再是插上能用、坏了就换的玄学接口,而是一套可以拆开、可以调试、可以自己动手实现的通信机制。