目录

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)相关推荐

  1. USB协议详解第0讲(系列博文介绍)

    目录 1.课程目标 2.简单介绍 3.课程大纲 1.课程目标 USB协议详解旨在为大家通俗理解USB通讯协议,我会带着大家一步一步理解USB通讯中的各种概念及通讯方式,并且会借助于USB Protoc ...

  2. USB协议详解第5讲(USB描述符-接口描述符)

    目录 1.USB描述符 2.接口描述符组成 3.STM32配置描述符集合代码(必须按照顺序) 4.接口描述符组成详解 1.USB描述符 USB描述符有设备描述符.标准配置描述符.接口描述符.端点描述符 ...

  3. USB协议详解第6讲(USB描述符-端点描述符)

    目录 1.USB描述符 2.端点描述符组成 3.STM32配置描述符集合代码(必须按顺序) 4.接口描述符组成详解 1.USB描述符 USB描述符有设备描述符.标准配置描述符.接口描述符.端点描述符. ...

  4. USB协议详解第3讲(USB描述符-设备描述符)

    我们第一个学习要点就是USB描述符,所谓描述符其实就是C语言里面的结构体或者数组,数组包含的信息说明当前的设备具有哪些特征.USB描述符有设备描述符.配置描述符.接口描述符.端点描述符.字符串描述符, ...

  5. USB协议详解第12讲(USB传输-初探)

    目录 1.USB传输.事务.包的关系 2.USB传输类型 2.1控制传输 2.2同步传输 2.3批量传输 2.4中断传输 3.传输总结及后期内容 1.USB传输.事务.包的关系 USB传输.事务.包是 ...

  6. STM32F1 USB外设详解第0讲(系列博文介绍)

    目录 1.课程目标 2.简单介绍 3.读者须知 1.课程目标 STM32 USB外设详解系列博文目的是让大家深入理解STM32 USB外设原理,主要对USB外设功能框图和所有寄存器深度剖析.只有知其然 ...

  7. 通俗易懂的USB协议详解(转…

    原文地址:通俗易懂的USB协议详解(转载) 作者: Branchesss 转自东海的博客http://6xudonghai.blog.163.com/blog/static/3364062920086 ...

  8. 32 usb 配置描述符_USB协议详解第4讲(USB描述符标准配置描述符)

    关注+星标公众号,不错过精彩内容 编排 | 一个早起的程序员 一个早起的程序员 1 USB描述符USB描述符有设备描述符.标准配置描述符.接口描述符.端点描述符.字符串描述符,HID设备有HID描述符 ...

  9. LIN总线协议详解2(LIN总线报文帧结构)

    目录 一.LIN总线报文帧结构 (Message Frame ) 1.报文整体机构 2.同步间隔段(Break Field) 3.同步段(Sync Byte Field) 4.受保护 ID 段(Pro ...

  10. Android USB 开发详解

    Android USB 开发详解 先附上 Android USB 官方文档 Android通过两种模式支持各种 USB 外设和 Android USB 附件(实现Android附件协议的硬件):USB ...

最新文章

  1. 如何修改git已提交记录的邮箱?
  2. Python3字符串拼接
  3. STL常用的遍历算法
  4. SQLSERVER和ORACLE批量处理表名和字段名大写
  5. SPI参数化分配寄存器
  6. 人工智能之基于face_recognition的人脸检测与识别
  7. 9206 课堂笔记 综合演练 添加数据与非空验证
  8. 面向对象三大特性总结
  9. JDK8新特性之Lambda表达式和四大函数接口
  10. iOS中真机连接电脑运行程序出现问题
  11. 【灵感】wifi通过wifi发送优惠信息
  12. CentOS 6.5设置静态IP教程 并且可以ping通
  13. 计算机软件工程常用英语词汇,软件工程常用英文词汇缩写汇总(1)
  14. 无线通信设备安装工程概预算编制_南宁市轨道交通5号线一期工程专用无线通信系统设备采购...
  15. 分享一个OFD批量打印工具
  16. 温习linux的常用命令
  17. 多智时代,大数据发展趋势预测
  18. 赛码网 Manager
  19. win10计算器_计算器也能刷Win10,国外大神又现惊人操作
  20. win10共享计算机win7,Win7系统和win10系统设置共享打印机的方法

热门文章

  1. python12306抢票_GitHub - versionzhang/python_12306: python 12306 抢票工具
  2. rx550 黑苹果_为什么黑苹果 amd显卡 特定型号免驱?
  3. android api 和版本对应表汇总
  4. 常见的几种最优化方法(梯度下降法、牛顿法、拟牛顿法、共轭梯度法等)
  5. Mapped Statements collection already contains value for xxx
  6. android系统控件大全,安卓系统控件大全
  7. 使用迅雷下载百度云盘数据
  8. 计算机学校的逻辑思维题,2013逻辑推理专项习题100道(附答案).docx
  9. 找到服务器系统日志,查看服务器系统日志
  10. html中的导航条制作