USB 2.0 详解(五)—— USB设备框架
USB 设备框架
一个 USB设备 可以划分为三层:
底层(Bottom Layer):
是一个总线接口,用于传输和接收数据包。
中间层(Middle Layer):
负责在总线接口和设备上不同端点(Endpoints)之间传输数据。
端点是数据的最终消费者或提供者。
它可以被看作是数据的源头(Source)或汇点(Sink)。
顶层(Top Layer):
提供USB设备的具体功能,例如鼠标或ISDN接口。
本章描述了USB设备中间层的常见属性和操作。中间层的这些属性和操作被设备功能特...
USB 2.0 详解(四)—— 协议层(下)
8.6 数据切换同步和重试
USB 提供了一种机制,确保在多次传输中的数据发送方和接收方之间的数据序列同步。该机制可以确保数据传输的握手阶段被发送方和接收方正确地解释。同步是通过使用 DATA0 和 DATA1 的包标识符 (PID) 以及数据发送方和接收方的独立数据切换序列位来实现的。接收方的序列位仅在接收方能够接收数据并且接收了无错误的、带有正确数据 PID 的数据包时切换。发送方的序列位仅在数据发送方接收到有效的 ACK 握手时切换。数据发送方和接收方必须在事务开始时同步它们的序列位。同步机制根据事务...
USB 2.0 详解(四)—— 协议层(中)
USB 协议层
8.5 事务的包序列(Packet Sequences of Transaction)
8.5.2 Bulk事务
Bulk事务类型的特点是能够通过错误检测和重试机制保证主机与设备之间的数据可靠传输。Bulk事务采用三相事务,包括Token包、数据包和握手包,如图8-30所示。在某些流控制和停止条件下,数据阶段可能被握手替代,从而形成一个两相事务,此时不会传输数据。PING和NYET包只能在高速设备中使用。
当主机准备接收bulk数据时,它发送一个IN Token包。设备端点响应返回数据包,...
USB 2.0 详解(四)—— 协议层(上)
USB 协议层
这一章从底层视角介绍 USB 协议,首先讲解字段和数据包的定义。接下来,描述不同事务类型的数据包的事务格式。然后介绍链路层的流控制和事务级别的故障恢复。最后讨论重试同步、数据总线混乱、总线活动丢失的恢复以及高速PING协议。本章作为USB软件开发的重要一章会对重要内容详细注解,其余内容提供说明详解请参阅手册。
8.1 USB 的字节/位顺序
数据位在总线上按照从最低位(LSb)开始依次发送,接着是下一个LSb,直到最高位(MSb)最后发送。在后面的图示中,数据包的显示方式使得每个独立的位和字...
USB 2.0 详解(三)—— 电气特性
电气特性
这里我们略过USB的机械特性 (mechanical properties) 部分,有兴趣的朋友可以参阅 USB 2.0 Specification 中的第六章 Chapter 6 Mechanical 的内容。
本篇介绍 USB 2.0 的电气特性,不打算对 USB 2.0 Specification 中的第七章 Chapter 7 Electrical 进行详细的电气特性解读,会参考 USB 中文网 进行笼统地概念描述。有兴趣的朋友可以自行参阅第七章中的内容。
推荐学习由百问网提供的全场景工业...
USB 2.0 详解(二)—— 数据流模型(下)
数据流模型
5.4 传输类型
USB在主机的客户端软件(USB设备的驱动程序)与USB设备的端点之间通过管道传输数据。由消息管道传输的数据以USB定义的结构进行传输,但USB也允许设备特定的结构化数据在USB定义的消息数据载荷中进行传输。USB还定义了所有管道(无论是流式传输管道还是消息传输管道)传输的数据都必须以数据包的形式传输,但最终数据载荷的格式和解释由使用该管道的客户端软件和功能来负责。
然而,USB提供了不同的传输类型,这些类型优化了与客户端软件和功能的服务需求匹配的特性。一个IRP(I/O请求包...
USB 2.0 详解(二)—— 数据流模型(上)
USB 数据流模型
本章介绍如何通过 USB 传输数据的信息。本章中的内容影响所有实现者。所呈现的内容处于系统的信令和协议定义之上的级别。
有关 USB 系统各自部分的更多详细信息,请参阅第 7 章和第 8 章。本章提供了第 9 章至第 11 章中进一步扩展的框架信息。
所有实现者都应阅读本章,以便了解 USB 的关键概念。
5.1 实现者视角
USB 提供主机与连接的 USB 设备之间的通信服务。然而,终端用户看到的将一个或多个 USB 设备连接到主机的简单操作(如图 5-1 所示)实际上比图中显示的实现...
NUTTX移植到STM32
STM32移植NUTTX
官方开发文档:安装 — NuttX latest 文档
参考文档:Nuttx学习笔记(一)-CSDN博客
1. Ubuntu下搭建开发环境
1.1 先决条件
环境: ubuntu 20.04 ,首先进行基础环境安装;
执行以下命令安装软件包:
sudo apt install \
bison flex gettext texinfo libncurses5-dev libncursesw5-dev xxd \
git gperf automake libtool pkg-confi...
Zephy移植到STM32
Zephy如何移植到单片机
官方开发文档:入门指南 — Zephyr Project Documentation
1. Window下搭建开发环境
1.1 安装Choncolatey
在 powershell 管理员下执行如下命令:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::Se...
USB 2.0 详解(一)——体系结构概述
体系结构概述
本章旨在概述 通用串行总线(USB)的体系结构和关键概念。
USB 是一种通过电缆连接的总线,支持主机计算机与一系列同时可访问的外设之间的数据交换。
连接的外设通过主机调度的基于令牌的协议共享 USB 带宽。
该总线允许在主机和其他外设正常运行的情况下,外设可以被连接、配置、使用和移除。
在后续章节中将更详细地描述 USB 的各个组成部分。
4.1 USB 系统描述
USB 系统由以下三个定义区域组成:
USB 互连 (USB interconnect)
USB 设备通过何种方式连接到主机...
RS-485标准详解
RS-485
本篇解读德州仪器提供的《RS-485 设计指南》讲述 RS-485 通信协议的相关概念
1 引言
1983 年,电子工业协会 (EIA) 批准了一个新的平衡传输标准,称之为 RS-485。调查发现,RS-485 备受赞誉并被广泛应用到工业、医疗和消费类产品,成为了工业接口的主力规范。
本篇对应用报告进行解读,为那些对 RS-485 标准不熟的工程师提供设计指南,帮助他们在最短的时间内完成稳健而可靠的数据传输设计。
2 标准和特性
RS-485 标准的本质
电气标准:RS-485 是一个仅定义...
RS-232 标准详解
RS-232
本篇解读德州仪器提供的《RS-232 术语表和选择指南》讲述 RS-232 通信协议的相关概念
1 引言
RS-232 是各种外设通用的点对点通信接口,可实现主机与外设之间的通信。RS-232 符合TIA-232 和 EIA-232 标准。为了说明如何为系统选择正确的 RS-232 器件,以下各节将简要介绍 RS-232 标准以及收发器的主要规格。
2 标准概述
RS-232 标准涵盖三个相关领域:电气、功能和机械。电气规格包括物理电气层标准定义。
2.1 电气概述
RS-232 标准定义了多...
DHT11驱动
DHT11驱动
介绍
参考《HAL快速入门与项目实战(基于DshanMCU-F407)_V1.0》
参考《dht11_datasheet.pdf》
DHT11 驱动涉及引脚的读取操作,具体操作在驱动程序注释中已经说明
驱动程序
driver_dht11.h
#ifndef __DRIVER_DHT11_H__
#define __DRIVER_DHT11_H__
#include "main.h"
#ifdef __cplusplus
extern "C"{
#endif
/**
* @brief ...
移植U8G2单色图形库
移植U8G2指南
U8G2库简介
U8G2是嵌入式设备的单色图形库,主要应用于嵌入式设备,包括我们常见的单片机。
移植
打开项目链接 看到项目的 README 介绍如下:
U8g2是一个用于嵌入式设备的单色图形库。
U8g2支持单色OLED和LCD,其中包括以下控制器:SSD1305、SSD1306、SSD1309、SSD1312、SSD1316、SSD1318、SSD1320、SSD1322、SSD1325、SSD1327、SSD1329、SSD1606、SSD1607、SH1106、SH1107、SH1...
SSD1306 OLED驱动
SSD1306 OLED驱动
参考《HAL快速入门与项目实战(基于DshanMCU-F407)_V1.0》
参考《ssd1306_datasheet.pdf》
参考 SSD1306 OLED驱动原理
参考 libDriver
介绍
SSD1306 是一款带控制器的单芯片 CMOS OLED/PLED 驱动器,适用于有机/聚合物发光二极管点阵图形显示系统。它由 128 个列和 64 个行像素点组成。该IC专为共阴极型OLED面板而设计。
SSD1306内嵌对比度控制、显示RAM和振荡器,减少了外部元件的数量和...
28BYJ-48步进电机驱动
28BYJ-48步进电机驱动
介绍
参考《HAL快速入门与项目实战(基于DshanMCU-F407)_V1.0》
参考 步进电机
参考 步进电机原理
步进电机控制特点:
它是通过输入脉冲信号来进行控制的。
电机的总转动角度由输入脉冲数决定。
电机的转速由脉冲信号频率决定。
步进电机结构
步进电机控制的基本概念
步进电机驱动拍数设置
步进电机驱动参数设置
ULN2003驱动电路
ULN2003驱动拍数设定
步进电机驱动程序
假设读者已有STM32定时器和PWM的相关概念
driver_28BY...
远程红外模块驱动
远程红外收发器驱动
介绍
参考《HAL快速入门与项目实战(基于DshanMCU-F407)_V1.0》
参考《ir_remote_datasheet》
参考 红外遥控的工作原理
这里使用 NEC 协议
NEC 红外传输协议
NEC IR 传输协议使用逻辑位的脉冲宽度调制进行编码。每个脉冲突发(标记 - RC 发射器打开)的长度为 562.5μs,载波频率为 38kHz (26.3μs)。逻辑位传输如下:
逻辑 "0"——562.5μs 脉冲突发,后跟 562.5μs 间隔,总传输时间为 1.125ms
逻...
全场景工业控制第三期-MPU MODBUS TCP MQTT 开发!
全场景工业控制第三期-MPU MODBUS TCP MQTT 开发!
全场景工业控制第二期-MCU MODBUS TCP MQTT 开发!
产品框架
硬件框架
软件框架
配套硬件
开发板购买链接:工业控制专题课程购买链接
资料获取
百度网盘:https://pan.baidu.com/s/1lTeo67Ee64hQTEhL2kul3g?pwd=root 密码:root
资料汇总
章节目录
第1章 搭建开发环境
1.1 资料下载
1.2 安装keil MDK
1.2.1 软件下载
1.2.2 软件安装
1.2.3 PACK安装
1.3 安装STM32CubeMX
1.4 安装STM32Programmer
1.5 安装ST-Lin...