USB协议详解第20讲(USB包-帧首包SOF)
目录
1.包的四种类型
2.SOF包组成
3.SOF包发送时间及USB总线包结构
1.SOF包的发送时间
2.USB总线包组成
4.SOF包其它核心概念
5.STM32 SOF包处理机制
1.包的四种类型
根据包的组成把包分为四种类型,分别是、帧首包SOF(Start of Frame)、命令包(Token)、数据包(Data)、握手包(Handshake),如下图(大家一定要把PID类型和包类型分开)。
4种PID类型和4种包类型(按照组成分类)的区别如下,大家注意区分。
2.SOF包组成
我们今天看SOF包的详细结构。SOF包由USB主机控制器以全速总线的标称速率每1.00 ms±0.0005 ms发出一次,对于高速总线则为125μs±0.0625μs。SOF数据包由PID域+帧号域+5bit CRC域,下图为SOF包各个域和抓包协议的对应图。
3.SOF包发送时间及USB总线包结构
SOF包的发送时间和USB总线的包数据结构大家可以看下图。
(1)SOF包的发送时间
(2)USB总线包组成
4.SOF包其它核心概念
所有高速和全速功能(包括集线器)都接收SOF数据包。SOF包不会引起任何功能生成应答包,因此,无法保证所有的功能都能收到SOF包。
SOF包由两个作用。第一个作用是当一个功能检测到SOF包后,就知道USB主机控制器开始启动一个帧(微帧)了。第二个作用为帧时间敏感功能,讲的通俗一点就是时标功能, 每一个设备功能可以接收SOF包,通过Frame域来判断当前的时间走到哪里了。不需要跟踪帧号(例如,全速操作集线器)的设备功能则只需要解码SOF包的PID,可以忽略帧号域及其CRC域。
5.STM32 SOF包处理机制
STM32的对SOF包的处理代码如下。ISTR_SOF中断位 指示一个新的USB帧的开始,它是在SOF数据包通过USB总线到达时设置的。中断服务例程可以监视SOF事件,使其具有到USB主机的1 ms同步事件,并安全地读取在SOF数据包接收处更新的USB_FNR(USB frame number register),当发生SOF中断时,我们可以读取USB_FNR寄存器来判断帧号并且计算出当前时间或者做其他事情。
//读出的中断标志是SOF中断标志,且SOF中断使能了
if (wIstr & ISTR_SOF & wInterrupt_Mask){//清除SOF中断标志_SetISTR((uint16_t)CLR_SOF);//统计共接收到多少SOFbIntPackSOF++; //当定义了SOF_CALLBACK,则调用SOF_Callback,//像钩子函数一样,在发生SOF中断时做点什么
#ifdef SOF_CALLBACKSOF_Callback();
#endif
}
1.本文部分素材来源网络,版权归原作者所有,如涉及作品版权问题,请与我联系删除。
2.未经原作者允许不得转载本文内容,否则将视为侵权;
3.转载或者引用本文内容请注明来源及原作者;
4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。
下面是我的个人微信公众号,关注【一个早起的程序员】精彩系列文章每天不断。
USB协议详解第20讲(USB包-帧首包SOF)相关推荐
- USB协议详解第0讲(系列博文介绍)
目录 1.课程目标 2.简单介绍 3.课程大纲 1.课程目标 USB协议详解旨在为大家通俗理解USB通讯协议,我会带着大家一步一步理解USB通讯中的各种概念及通讯方式,并且会借助于USB Protoc ...
- USB协议详解第5讲(USB描述符-接口描述符)
目录 1.USB描述符 2.接口描述符组成 3.STM32配置描述符集合代码(必须按照顺序) 4.接口描述符组成详解 1.USB描述符 USB描述符有设备描述符.标准配置描述符.接口描述符.端点描述符 ...
- USB协议详解第6讲(USB描述符-端点描述符)
目录 1.USB描述符 2.端点描述符组成 3.STM32配置描述符集合代码(必须按顺序) 4.接口描述符组成详解 1.USB描述符 USB描述符有设备描述符.标准配置描述符.接口描述符.端点描述符. ...
- USB协议详解第3讲(USB描述符-设备描述符)
我们第一个学习要点就是USB描述符,所谓描述符其实就是C语言里面的结构体或者数组,数组包含的信息说明当前的设备具有哪些特征.USB描述符有设备描述符.配置描述符.接口描述符.端点描述符.字符串描述符, ...
- USB协议详解第12讲(USB传输-初探)
目录 1.USB传输.事务.包的关系 2.USB传输类型 2.1控制传输 2.2同步传输 2.3批量传输 2.4中断传输 3.传输总结及后期内容 1.USB传输.事务.包的关系 USB传输.事务.包是 ...
- STM32F1 USB外设详解第0讲(系列博文介绍)
目录 1.课程目标 2.简单介绍 3.读者须知 1.课程目标 STM32 USB外设详解系列博文目的是让大家深入理解STM32 USB外设原理,主要对USB外设功能框图和所有寄存器深度剖析.只有知其然 ...
- 通俗易懂的USB协议详解(转…
原文地址:通俗易懂的USB协议详解(转载) 作者: Branchesss 转自东海的博客http://6xudonghai.blog.163.com/blog/static/3364062920086 ...
- 32 usb 配置描述符_USB协议详解第4讲(USB描述符标准配置描述符)
关注+星标公众号,不错过精彩内容 编排 | 一个早起的程序员 一个早起的程序员 1 USB描述符USB描述符有设备描述符.标准配置描述符.接口描述符.端点描述符.字符串描述符,HID设备有HID描述符 ...
- LIN总线协议详解2(LIN总线报文帧结构)
目录 一.LIN总线报文帧结构 (Message Frame ) 1.报文整体机构 2.同步间隔段(Break Field) 3.同步段(Sync Byte Field) 4.受保护 ID 段(Pro ...
- Android USB 开发详解
Android USB 开发详解 先附上 Android USB 官方文档 Android通过两种模式支持各种 USB 外设和 Android USB 附件(实现Android附件协议的硬件):USB ...
最新文章
- 如何修改git已提交记录的邮箱?
- Python3字符串拼接
- STL常用的遍历算法
- SQLSERVER和ORACLE批量处理表名和字段名大写
- SPI参数化分配寄存器
- 人工智能之基于face_recognition的人脸检测与识别
- 9206 课堂笔记 综合演练 添加数据与非空验证
- 面向对象三大特性总结
- JDK8新特性之Lambda表达式和四大函数接口
- iOS中真机连接电脑运行程序出现问题
- 【灵感】wifi通过wifi发送优惠信息
- CentOS 6.5设置静态IP教程 并且可以ping通
- 计算机软件工程常用英语词汇,软件工程常用英文词汇缩写汇总(1)
- 无线通信设备安装工程概预算编制_南宁市轨道交通5号线一期工程专用无线通信系统设备采购...
- 分享一个OFD批量打印工具
- 温习linux的常用命令
- 多智时代,大数据发展趋势预测
- 赛码网 Manager
- win10计算器_计算器也能刷Win10,国外大神又现惊人操作
- win10共享计算机win7,Win7系统和win10系统设置共享打印机的方法
热门文章
- python12306抢票_GitHub - versionzhang/python_12306: python 12306 抢票工具
- rx550 黑苹果_为什么黑苹果 amd显卡 特定型号免驱?
- android api 和版本对应表汇总
- 常见的几种最优化方法(梯度下降法、牛顿法、拟牛顿法、共轭梯度法等)
- Mapped Statements collection already contains value for xxx
- android系统控件大全,安卓系统控件大全
- 使用迅雷下载百度云盘数据
- 计算机学校的逻辑思维题,2013逻辑推理专项习题100道(附答案).docx
- 找到服务器系统日志,查看服务器系统日志
- html中的导航条制作