自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(489)
  • 收藏
  • 关注

原创 U盘实现——BOT 常用命令

中介绍了 BOT 三种状态的转换过程,本节主要介绍下常用的几个 BOT 命令及数据抓包。

2025-04-03 21:33:53 258

原创 PHY——LAN8720A 代码解析 (三)

LAN8720 的接口其实就是调用 PHY 的一系列接口来控制 LAN8720,或者获取 LAN8720 的状态。这个函数其实就是从 0 遍历 PHY 的地址,找到一个可用的 PHY 地址。函数用于初始化 PHY 接口。这个函数用于禁用 PHY 的 Power Down 模式。这个函数用于启用 PHY 的 Power Down 模式。函数用于向 PHY 写入寄存器。函数用于从 PHY 读取寄存器。函数用于反初始化 PHY 接口。函数用于注册 PHY 接口。这里 PHY 的操作是通过函数指针实现的。

2025-04-01 20:49:55 782

原创 USB——删除注册表信息

注测表中已记录这个设备的信息,但现在设备描述符又指定为了 WinUSB 设备,所以当设备再次插入的时候,不会发送 0xEE 命令,造成了枚举失败。HID 就进入 HID 目录,如果是其他设备就进入对应类的目录,删除相应的 PID/VID。此时再插入该 Device,即被当做全新设备插入,装载驱动。工具下载之后解压放在。

2025-03-31 21:38:12 56

原创 USB 虚拟串口改名——更新驱动程序篇

为例,其他操作系统版本类似。

2025-03-31 19:33:36 39

原创 USB 虚拟串口改名——禁用 Windows 驱动签名篇

USB 虚拟串口 Windows 枚举之后使用的是默认的名称,例如USB 串行设备(COM52),如下图所示但是我们使用其他厂商的虚拟串口的时候,会显示厂商信息,例如CH340USB 转串口工具显示的就是那我们自己做的虚拟串口如何显示自定义名称呢?这里就涉及到 Windows 驱动签名,本文只讨论如何修改设备名称,至于 Windows 如何过驱动签名,不在本文讨论范围。

2025-03-31 12:47:03 118

原创 PHY——LAN8720A 寄存器读写 (二)

这里以野火电子的 F429 开发板为例,配置以太网外设这里有一点需要注意,如下图但是当 CubeMx 使能 ETH 外设的 RMII 时候,默认使用的引脚是 PB12 和 PB13这里需要手动修改这样 RMII 的引脚和以太网相关时钟就配置好了,这里我们只借助 CubeMx 配置这两个,PHY的驱动自己来实现以太网初始化代码PHY 接口实现这个文件其实主要实现了两个接口 和 ethernetif.h 文件LAN8720 接口实现这个文件主要定义 PHY 的相关寄存器以

2025-03-30 22:36:48 818

原创 CubeMx——串口与 printf 打印

解决这两个错误也 比较简单,在 .s 启动文件中将。或者直接在 CubeMx 生成的时候修改配置。

2025-03-29 20:58:18 301

原创 CubeMx ——新建工程

【代码】CubeMx 新建工程。

2025-03-29 20:46:22 209

原创 PHY——LAN8720A 介绍 (一)

一般来说,必须为使用 RMII 接口的 PHY 提供 50MHz 的时钟源输入到 REF_CLK 引脚,不过LAN8720A 内部集成 PLL,可以将 25MHz 的时钟源陪频到 50MHz 并在指定引脚输出该时钟,所以我们可以直接使其与 REF_CLK 连接达到提供 50MHz 时钟效果。REGOFF 引脚用于配置内部+1.2V 电压源, LAN8720A 内部需要+1.2V 电压,可以通过VDDCR 引脚输入+1.2V 电压提供,也可以直接利用 LAN8720A 内部+1.2V 稳压器提供。

2025-03-26 00:45:00 1348

原创 RGMII 接口

在千兆以太网中,常用的接口为 RGMII 和 GMII 接口。RGMII 接口的优势是同时适用于10M/100M/1000Mbps 通信速率,同时占用的引脚数较少。但 RGMII 接口也有其缺点,就是在 PCB 布线时需要尽可能对时钟、控制和数据线进行等长处理,且时序约束相对也更为严格。为了节省引脚,开拓者开发板板载的 PHY 芯片采用的接口为 RGMII 接口,下图是 MAC 侧与 PHY 侧接口的连接。RGMII 拓扑图。

2025-03-25 15:15:04 656

原创 GMII 接口

GMII 是千兆网的MII接口,这个也有相应的 RGMII 接口,表示简化了的 GMII 接口。GMII 采用 8 位接口数据,工作时钟125MHz,因此传输速率可达 1000Mbps。同时兼容 MII 所规定的 10/100 Mbps 工作方式。GMII 接口数据结构符合 IEEE 以太网标准。

2025-03-25 15:08:38 439

原创 RJ45 接口——水晶头

RJ45 接口定义以及各引脚功能在不同通信速率下的定义有区别。

2025-03-22 11:22:02 405

原创 RMII 接口

简化媒体独立接口是标准的以太网接口之一,比 MII 有更少的 I/O 传输。MII 口是用 4 根线来传输数据的,RMII 口是用 2 根线来传输数据的,GMII 是用 8 根线来传输数据的。MII/RMII 只是一种接口,对于10Mbps 线速,MII 的时钟速率是 2.5MHz 就可以了,RMII 则需要 5MHz;对于 100Mbps 线速,MII 需要的时钟速率是 25MHz,RMII 则是 50MHz。

2025-03-21 12:34:06 590

原创 MII 接口

MII(Media Independent Interface)即媒体独立接口,MII 接口是 MAC 与 PHY 连接的标准接口。它是 IEEE-802.3 定义的以太网行业标准。MII 接口提供了 MAC 与 PHY 之间、PHY 与 STA(Station Management)之间的互联技术,该接口支持 10Mb/s 与 100Mb/s 的数据传输速率,数据传输的位宽为 4 位。MII 需要 16 根通信线(RMII只需要7根通信线),不包括站管理接口媒体独立。

2025-03-21 12:17:45 591

原创 SMI 和 MDIO 接口

SMI:串行管理接口(Serial Management Interface),通常直接被称为 MDIO 接口(Management Data Input/Output Interface)。SMI/MDIO 最早在IEEE 802.3 的第 22 卷定义,后来在第45卷又定义了增强版本的 MDIO,其主要被应用于以太网的 MAC 和 PHY 层之间,用于 MAC 层器件通过读写寄存器来实现对 PHY 层器件的操作与管理。其实就是通过 SMI/MDIO 读写 PHY 的相关寄存器,来达到配置 PH

2025-03-20 12:27:14 460

原创 MAC+PHY 的硬件连接

本文主要介绍以太网的MAC(Media Access Control,即媒体访问控制子层协议)和PHY(物理层)。

2025-03-20 02:45:00 853

原创 TCP 协议

TCP与UDP一样,都是传输层的协议,但是提供的服务却大不相同,UDP为上层应用提供的是一种不可靠的,无连接的服务,而TCP则提供一种面向连接、可靠的字节流传输服务,TCP让两个主机建立连接的关系,应用数据以数据流的形式进行传输,这与UDP协议是不一样:UDP运载的数据是以报文的形式,各个报文在网络中互不相干传输,UDP每收到一个报文就递交给上层应用,因此如果对于大量数据来说,应用层的重装是非常麻烦的,因为UDP报文在网络中到达目标主机的顺序是不一样的;

2025-03-19 21:51:13 2330 1

原创 UDP 协议

UDP(User Datagram Protocol),即用户数据报协议,是一种面向无连接的传输层协议。无连接是指在传输数据时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

2025-03-19 19:30:00 1199

原创 ARP 协议

ARP(Address Resolution Protocol),即地址解析协议,是根据 IP 地址(逻辑地址)获取 MAC 地址的一种 TCP/IP 协议。在以太网通信中,数据是以“帧”的格式进行传输的,帧格式里面包含目的主机的MAC 地址。源主机的应用程序知道目的主机的 IP 地址,却不知道目的主机的 MAC 地址。而目的主机的MAC 地址直接被网卡接收和解析,当解析到目的 MAC 地址非本地 MAC 地址时,则直接丢弃该包数据,

2025-03-16 20:56:56 821

原创 ICMP 协议

ICMP(Internet Control Message Protocol)Internet 控制报文协议。它是 TCP/IP 协议簇的一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。ICMP 使用 IP 的基本支持,就像它是一个更高级别的协议。但是,ICMP 实际上是 IP 的一个组成部分,必须由每个 IP 模块实现。

2025-03-16 20:39:52 862

原创 IP 协议

IP 协议是 TCP/IP 协议簇中的核心协议,也是 TCP/IP 协议的载体,IP 协议规定了数据传输时的基本单元和格式。从前面介绍的可以看出,IP 协议位于以太网 MAC 帧格式的数据段,IP 协议内容由IP 首部和数据字段组成。所有的 TCP、UDP 及 ICMP 数据都以 IP 数据报格式传输。

2025-03-15 22:29:01 1978

原创 以太网 MAC 帧格式

的时间,IFG 的最小值是 96 bit time,即在媒介中发送 96 位原始数据所需要的时间,在不同媒介中 IFG 的最小值是不一样的。不管 10M/100M/1000M 的以太网,两帧之间最少要有 96bit time,IFG 的最少间隔时间。帧间隙的时间就是网络设备和组件在接收一帧之后,需要短暂的时间来恢复并为接收下一帧做准备。,它规定了以太网传输数据的帧结构,我们可以把以太网 MAC层理解成高速公路,我们必须遵循它的规则才能在上面通行,以太网 MAC 层帧格式如下图所示。以太网技术的正式标准是。

2025-03-15 21:57:37 1315

原创 特殊 IP 地址

在IP地址体系中,除了用于分配给主机和网络的常规IP地址外,还存在一些特殊用途的IP地址。这些地址具有特定的功能,不能用于普通的主机IP地址分配。本文将介绍几种常见的特殊IP地址。特殊IP地址类型示例用途路由器转发受限广播地址本地网络广播否直接广播地址子网内广播可配置多播地址224.0.0.1多播通信可配置环回地址127.0.0.1本机测试否本网络本主机0.0.0.0设备启动时DHCP请求否。

2025-03-15 21:46:18 929

原创 网关与默认网关

默认网关(Default Gateway) 是指当计算机或设备需要与不同子网或外部网络通信时,数据包默认发送的出口。在局域网(LAN)中,通常由路由器或交换机充当默认网关。允许设备访问外部网络(如互联网)。在不同子网之间转发数据包。处理未知目标IP地址的数据包。网关连接不同网络,负责数据转发和协议转换。默认网关 是数据包离开本地网络的默认出口。默认网关的正确配置对于互联网访问和跨子网通信至关重要。

2025-03-12 21:38:28 273

原创 子网掩码介绍

互联网由许多小型网络组成,每个网络上都有多个主机,形成了一个分层的结构。IP地址在设计时考虑到了这种层次性,将每个IP地址划分为网络号和主机号两部分,以便于寻址操作。在IP地址中,网络号和主机号的划分并不是直接确定的,而是需要使用子网掩码来定义。子网掩码不能单独存在,必须与IP地址结合使用,才能确定网络地址和主机地址。子网掩码在网络划分、IP地址管理和路由规划中起着至关重要的作用。合理使用子网掩码可以提高网络效率,减少广播风暴,并优化IP地址分配。

2025-03-12 21:30:08 485

原创 IP 地址

✅ IPv4 由 32 位组成,IPv6 由 128 位组成。✅ IP 地址有公有、私有、静态、动态等类型。✅ 子网掩码用于区分网络部分和主机部分。✅ IP 地址用于标识设备,路由器负责数据包的转发。📌 掌握 IP 地址的基础概念,有助于理解计算机网络的核心原理!

2025-03-12 21:19:30 826

原创 OSI 七层网络模型

TCP/IP 协议不仅仅指的是 TCP 和 IP 两个协议,而是指一个由 FTP、SMTP、TCP、UDP、IP 等协议构成的协议簇, 只是因为在 TCP/IP 协议中 TCP 协议和 IP 协议最具代表性,所以被称为 TCP/IP 协议。作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议。在网络通信的过程中,将发出数据的主机称为源主机,接收数据的主机称为目的主机。

2025-03-12 19:35:05 1000

原创 MAC地址

MAC(Media Access Control)地址是网络设备的物理地址,在全球范围内唯一标识每个网络接口。它是一个 48 比特(6 字节)长的地址,通常以十六进制表示,如。类型第一个字节最低位例子适用范围单播地址0设备间的点对点通信多播地址1组播组中的多个设备广播地址1(固定FF所有设备MAC 地址在网络通信中至关重要,它决定了设备如何在数据链路层进行通信。理解单播、多播和广播的区别,有助于优化网络流量,提高通信效率。📌关键点回顾:单播:点对点通信,最低位0。多播:一对多通信,最低位1。

2025-03-12 19:11:45 800

原创 cherry USB 键盘分析

cherry USB 键盘有两个接口,每个接口都是 HID keyboard,第一个接口有一个输入端点,第二个接口有一个输入端点和一个输出端点。接口 1 用作普通键盘数据的上报,使用输入端点 1。调节亮度没起作用不知道是操作不对还是键盘的 bug。接口 2 用作控制信息的上报,使用输入端点 2。调节电脑屏幕亮度的报告如下。打开默认浏览器的报告如下。调节电脑声音的报告如下。,的索引设置为 2。打开计算器的报告如下。

2025-01-24 19:53:05 596

原创 USB 等时传输的 PID 序列

全速模式下的同步传输数据方式只使用DATA0包,因此接收方在接收数据时只会收到DATA0数据包。同步传输方式分为全速模式和高速模式,低速模式不存在同步传输。

2025-01-03 12:21:59 58

原创 USB 批量传输的 PID 序列

从抓包可以看出,IN 和 OUT 的 PID 翻转是独立的。

2025-01-03 12:21:18 57

原创 USB 中断传输的 PID 序列

端点在初始化后,从 DATA0 开始,每成功执行一个事务,数据包序列翻转一次(从 DATA0 变为DATA1 或从 DATA1 变为 DATA0)。端点的数据翻转只有在端点重新初始化或者 CLEAR_FEATURE(Endpoint Halt)后才恢复为 DATA0。数据翻转和传输的个数没有直接关系,只由端点在初始化后处理的总数决定。

2025-01-02 20:41:42 94

原创 USB 控制传输的 PID 序列

setup, data 和 status 的 PID 序列

2025-01-02 20:39:17 337

原创 使用 wireshark 抓 USB 包

从 wireshark 抓包和硬件抓包对比结果可以明显看到差距,硬件抓包还是比较强的,wireshark 只能辅助看下。安装好之后打开 wireshark,首页会有如下选项(如果没有这个选项,在 捕获->刷新接口列表 刷新一下即可 F5)使用 wireshark 抓 USB 的包,安装的时候需要勾选这里,其他安装选项按需安装即可。2.24.0 对应的含义。这里只抓新插入的设备。

2024-12-31 08:03:23 1183

原创 USB 状态机及状态转换

在 USB 设备被复位后,且在 USB 主机给 USB 设备设置一个新的地址之前,所有的 USB 设备使用默认的 0 地址与主机通信。正常工作的 USB 设备在收到 USB 主机发出的复位信号后会进入默认状态,之前所指定的地址,所配置的接口和配置项都将无效,需要由 USB 主机重新指定设备地址,获取描述符并配置相关的配置项,才能使设备再次工作。指定了新的地址的 USB 设备在收到 USB 主机发出的复位信号后会进入默认状态,之前所指定的地址也将无效,USB 设备需要 USB 主机重新分配地址。

2024-12-27 21:55:44 227

原创 USB Ping 事务

在低速和全速模式下,USB 主机使用控制传输或者批量传输向 USB 设备发送数据时,如果 USB 设备因某些原因(如内存空间不足)无法接收数据,USB 设备会向 USB 主机返回 NAK 包。USB 主机在发送 OUT 事务之前使用 PING 事务来确定 USB 设备是否能够接收数据,如果设备不能接收数据,USB 主机会在一定时间后再次使用 PING 事务,直到 USB 设备能够接收数据为止。此时,USB 主机开始使用 Ping 事务来检查 USB 设备是否已经可以接收数据,该 Ping 事务如下。

2024-12-11 22:46:31 261

原创 UVC1.5 —— USB 摄像头

需要注意的是,如果使用接口关联描述符,这里的类,子类和协议需要固定为。所以接口关联描述符将接口1 和接口 2 关联到一起。

2024-12-11 22:11:57 129

原创 UAC2.0 speaker——带反馈端点的 USB speaker(16bit 单声道)

反馈端点介绍,这里写的还是比较详细的。对于 UAC2.0 反馈的数据格式就是 16.16,返回四个字节的数据。

2024-12-09 20:07:00 404

原创 FreeRTOS posix 实现低功耗tickless

移植 vPortSuppressTicksAndSleep 到 MCU 上时,最重要的是利用 MCU 的硬件支持来管理低功耗模式,合理配置系统的时钟源和中断源,以确保系统能在需要时唤醒并继续精确计时。从结果中可以看到,每次睡眠 1000ms,任务还是 1000ms 打印一次。为了观察睡眠时间,重定向打印函数,打印的时候将时间戳打印出来,实现如下。通过以上方法,能确保移植后的系统能在保证精度的同时有效降低功耗。新建一个 task,1000ms 打印一次。,如果睡眠时间小于改值,就不进入睡眠。

2024-11-29 12:42:31 384

原创 FreeRTOS 内存管理

FreeRTOS 提供了多种内存分配方案,使用不同的 文件来管理内存。每个 文件实现了不同的内存管理策略,旨在适应不同的应用需求。以下是常见的 文件及其区别和应用场景。 实现了一个非常简单的内存分配器。它使用一个固定大小的内存块,通过静态分配的内存池来管理内存。分配的内存块之间没有链接,因此不支持释放内存块。适用于以下场景:heap_2.c功能heap_2.c 提供了一个更复杂的内存分配器。它支持内存块的分配和释放,并且通过链表来管理空闲内存块。每次释放内存时,都会合并相邻的空闲内存块,从而减少

2024-11-27 22:25:39 1227

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除