找回密码
 立即注册
查看: 31|回复: 6

今天开始学习STC-USB-CDC

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-10-27 08:37:58
已绑定手机

6

主题

459

回帖

814

积分

高级会员

积分
814
发表于 前天 22:00 | 显示全部楼层 |阅读模式
【USB原理及实战,16课时】,大学标准课程


我跟着STC的视频学32位机有一段时间了,对STC的USB-CDC始终是很困惑,想彻底的学下,从今天开始

努力一把,看看结果如何?


回复

使用道具 举报 送花

3

主题

1849

回帖

546

积分

等待验证会员

积分
546
发表于 前天 22:03 | 显示全部楼层
你好,很高兴看到你决定系统地学习 STC-USB-CDC 这门课程。作为一名专注于嵌入式与人工智能领域的开发者,我非常理解你在学习 USB 协议及其实现过程中所遇到的困惑。STC-USB-CDC 是 STC 公司推出的一套基于 32 位单片机的 USB 通信开发课程,内容涵盖 USB 协议基础、CDC 类设备实现、驱动开发与应用实战,是深入理解嵌入式 USB 通信非常有价值的一门课程。

以下是一些建议和学习思路,供你在学习过程中参考:

一、课程定位与目标

STC-USB-CDC 作为一门大学标准课程,具有系统性强、理论结合实践的特点。课程共16课时,建议你以每周3~4课时的节奏推进,同时配合实验与项目练习。课程目标主要包括:
理解 USB 协议的基本结构与通信机制;
掌握 CDC(Communication Device Class)类设备的工作原理;
实现基于 STC32 系列单片机的 USB 虚拟串口通信;
能够独立开发与调试 USB-CDC 设备驱动与应用层程序。

二、学习路线建议

1. 基础知识准备

在正式进入课程之前,建议你先巩固以下基础知识:
数字电路与嵌入式系统基础:包括GPIO、中断、DMA、定时器等;
C语言编程能力:嵌入式开发以 C 为主,熟练掌握结构体、指针、内存操作等;
STC32 开发环境搭建:熟悉 Keil MDK、STC-ISP、串口调试工具等;
USB 协议入门知识:了解 USB 的枚举过程、端点(Endpoint)、描述符(Descriptor)等基本概念。

2. 课程内容分解

课程大致可分为以下几个模块:

| 模块 | 内容概要 | 学习重点 |
|------|----------|----------|
| 第一阶段:USB协议基础 | USB 枚举过程、数据传输类型、描述符结构 | 理解 USB 主从结构、枚举流程 |
| 第二阶段:CDC类设备原理 | CDC类定义、ACM模型、数据通道配置 | 掌握 CDC 描述符结构与通信模型 |
| 第三阶段:STC32 USB实现 | STC32 USB控制器配置、中断处理、端点管理 | 熟悉寄存器配置、端点数据收发 |
| 第四阶段:应用开发与调试 | 虚拟串口通信、上位机交互、调试技巧 | 实现 USB 虚拟串口、数据收发测试 |

三、学习方法与技巧

1. 边学边练,动手为主  
   嵌入式开发最忌“只看不动手”。每节课后应尽量完成对应的实验或小项目,如配置端点、发送数据、实现回环测试等。

2. 注重调试与日志分析  
   使用串口调试助手、逻辑分析仪等工具可以帮助你更快定位问题。建议你在代码中加入调试信息输出,便于观察 USB 枚举状态和数据交互过程。

3. 善用官方文档与社区资源  
   STC 官网提供了丰富的技术文档、例程和论坛支持。遇到问题时,建议先查阅官方手册(如《STC32 USB编程指南》),再在论坛或 GitHub 上搜索类似问题。

4. 构建知识体系  
   建议你建立一个 USB 学习笔记,记录每个知识点、实验结果与问题分析,形成系统化的知识图谱。

四、常见问题与解决思路

1. USB 枚举失败
可能原因:
描述符配置错误;
端点未正确初始化;
时钟配置不准确;
供电或硬件连接问题。
解决方法:
使用 USB 抓包工具(如 Wireshark 或 USBlyzer)分析枚举过程;
检查描述符长度、类型是否匹配;
确保主频配置与 USB 时钟匹配(通常为 48MHz)。

2. CDC 串口无法识别
可能原因:
CDC 描述符结构错误;
COM 端口号冲突;
上位机未正确识别设备。
解决方法:
核对 CDC 类描述符格式;
使用设备管理器查看设备状态;
更新驱动或使用虚拟串口工具(如 VSPD)辅助测试。

3. 数据收发异常
可能原因:
缓冲区溢出;
中断未及时处理;
DMA 配置错误。
解决方法:
合理设置缓冲区大小;
使用双缓冲或环形缓冲区;
检查中断服务函数是否执行正常。

五、进阶方向建议

当你完成 STC-USB-CDC 课程后,可以考虑以下几个方向继续深入学习:

1. 多类 USB 设备开发  
   例如同时支持 HID(人机接口)与 CDC,实现复合设备。

2. USB Host 开发  
   学习如何让 STC32 主动作为 USB 主机控制外设。

3. USB OTG 支持  
   探索双角色设备(Dual Role)的实现方式。

4. 结合 AI 与嵌入式应用  
   例如通过 USB 接口将传感器数据上传至 PC 或 AI 模块进行处理。

六、结语

学习 STC-USB-CDC 是一个系统而富有挑战的过程,但也是通往嵌入式高手之路的重要一步。USB 协议虽复杂,但只要掌握其核心机制与实现方法,就能灵活应用于各类通信与控制场景。

希望你在学习过程中保持耐心与热情,遇到问题时多思考、多实践。如果你在学习中需要具体代码示例、调试建议或理论讲解,欢迎随时交流,我将尽我所能提供帮助。

祝你学习顺利,早日掌握 USB-CDC 通信技术!

——国芯人工智能

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-10-27 08:37:58
已绑定手机

6

主题

459

回帖

814

积分

高级会员

积分
814
发表于 前天 22:13 | 显示全部楼层
https://www.stcaimcu.com/thread-4526-1-1.html

先把网址copy下来,慢慢跟何老师学
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-10-27 08:37:58
已绑定手机

6

主题

459

回帖

814

积分

高级会员

积分
814
发表于 前天 23:04 | 显示全部楼层
第一节课先介绍基本概念:


15.1USB协议概述
15.1.1 USB 通信基础
USB通信基础主要涉及到 USB 系统组成、USB架构、USB 物理接口、USB编码方式、USB总线状态、USB速度和 USB电源。
1.USB 系统组成
USB系统分为USB主机和USB设备。
USB主机:提供USB接口和接口管理功能的硬件、软件、固件的复合体。PC机或OTG设备,系统中只能有一个主机,并且与设备进行的通信是从主机的角度进行的。例如,主机从设备接收数据为IN类型,主机发送数据给设备为OUT类型。USB主机的硬件主要包括USB主控制器和 USB 根集线器。
USB设备:1.集线器HUB:扩展主机接口,设备可以通过其接入主机 2.功能设备,如U盘,USB 摄像头,HID 键盘鼠标等。
物理连接:即USB电缆,USB使用差分信号传输数据,USB全速/高速模式电缆必须外层屏蔽铜质传输线,且差分数据线双绞。一条 USB 的传输线分别由地线、电源线、D+、D-四条线构成,其中D+、D-是差分输入线,使用的电压为3.3V,而电源线与地线可向设备提供5V电压,最大电流 500mA。
2.USB 架构
(1)USB 主控制器
USB 主控制器是USB主机上的控件,USB主控制器是具有软件驱动器层的硬件芯片组,用于执行以下任务:检测USB设备的插入和拔出、管理主机和设备间的数据流、提供并管理所连接设备的电源、监视总线上的活动。主机可以有一个或多个主控制器。通过使用外部USB集线器,每个控制器最多可以连接127个设备。具体为以下几种主控制器。
OHCI(open host controller interface)是支持USB1.1的标准,但它不仅仅是针对USB,还支持其他的一些接口,如Apple的火线(firewire,IEEE1394)接口。与UHCI相比,OHCI的硬件复杂,硬件做的事情更多,所以实现对应软件驱动的任务,相对较简单。主要用于非X86的USB,如扩展卡、嵌入式开发板的USB主控。
UHCI(universal host controller interface),是Intel主导的对USB1.0,1.1的接口标准,与OHCI 不兼容。UHCI的软件驱动的任务重,需要做得比较复杂,但可以使用较便宜、较简单的硬件 USB 控制器。Intel和VIA使用UHCI,而其余的硬件提供商使用OHCI。
EHCI(enhanced host controller interface),是Intel 主导的 USB2.0的接口标准。EHCI 仅提供 USB2.0的高速功能,而依靠 UHCI或 OHCI来提供对全速(full-speed)或低速(low-speed)
设备的支持。
xHCI(eXtensible host controller interface),USB3.0 的接口标准,它在速度、节能、虚拟化等方面都比前面3种有了较大的提高。xHCI支持所有种类速度的USB设备(USB 3.0 Super-
Speed,USB 2.0 Low-,Full-,and High-speed,USB 1.1Low-and Full-speed)。xHCI 的目的是为了替换前面 3种 USB 主控制器(UHCI/OHCI/EHCI)。
(2)USB 拓扑结构

USB系统包括一台主机(一般是一台个人计算机(PC))和多个通过分层星形拓扑连接的外围设备。该拓扑也可以包括集线器,从而能够提供更多与 USB系统的连接点。主机本身包含两个组件,即主控制器和根集线器。






截图202510252303288940.jpg
截图202510252303445902.jpg
截图202510252303569096.jpg
截图202510252304097050.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-10-27 08:37:58
已绑定手机

6

主题

459

回帖

814

积分

高级会员

积分
814
发表于 前天 23:07 | 显示全部楼层
每个USB系统只允许有一个HOST(主机)。允许的最大层数为7层(包含主机);每层的电缆最大长度为5米,电缆总长度为30米;每层最大允许接5个DEVICE(设备);
(3)USB 协议分层
端点(endpoint):USB 通信的基本单元,设备端点是 USB 设备中一个独特的可寻址部分,它作为主机和设备间通信流的信息源或库。
总线接口层:提供了物理连接、电气信号和数据包连接。该层由设备硬件处理,并通过设备的外部接口完成。
接口层(interface):描述 USB 设备的具体功能,例如一个 USB 设备既有键盘的功能又有存储功能,该设备就有两个接口。


接口可以理解为应用层,端点是数据传输的层。信号层就是物理层。所以开发主要是应用层。

端点(endpoint)
USB通信的基本单元,设备端点是USB设备中一个独特的可寻址部分,它作为主机和设备间通信流的信息源或库。后面章节将会详细介绍端点的类型与功能总线接口层
提供了物理连接、电气信号和数据包连接。该层由设备硬件处理,并通过设备的外部接口完成
接口层(interface)描述USB设备的具体功能,例如一个USB设备既有键盘的功能又有存储功能,该设备就有两个接口
  如果想看数据是怎么传输的,先找端点!


截图202510252306372824.jpg
截图202510252307097392.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:220
  • 最近打卡:2025-10-27 10:04:11

791

主题

1万

回帖

2万

积分

管理员

积分
20082
发表于 昨天 08:46 | 显示全部楼层
用最新 USB库函数


推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接

上面是 小李 演示:STC32G12K128, printf_usb("Hello World !\r\n")及usb不停电下载@AiCube之图形化程序自动生成



上面是 小李 演示:STC8H8K64U, printf_usb("Hello World !\r\n")及usb不停电下载@AiCube之图形化程序自动生成


上面是 小赵 演示:STC8H8K64U, printf_usb("Hello World !\r\n")及usb不停电下载@AiCube之图形化程序自动生成


上面是 小李 演示:Ai8051U, printf_usb("Hello World !\r\n")及usb不停电下载@AiCube之图形化程序自动生成


上面是 小赵 演示:Ai8051U, printf_usb("Hello World !\r\n")及usb不停电下载@AiCube之图形化程序自动生成


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-10-27 08:37:58
已绑定手机

6

主题

459

回帖

814

积分

高级会员

积分
814
发表于 昨天 11:48 | 显示全部楼层
神*** 发表于 2025-10-26 08:46
用最新 USB库函数

感谢您的指导!
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-10-27 23:27 , Processed in 0.131762 second(s), 83 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表