找回密码
 立即注册
查看: 383|回复: 7

请教STC32G12K128,可以用USB口输出日志吗?

[复制链接]

14

主题

16

回帖

118

积分

注册会员

积分
118
发表于 2026-7-22 10:58:42 | 显示全部楼层 |阅读模式
请教STC32G12K128,可以用USB口输出日志吗?不占用串口资源。如果可以的话,具体怎么操作呢?有没有例子程序。
回复

使用道具 举报 送花

已绑定手机

74

主题

1019

回帖

3775

积分

论坛元老

初出茅庐&无甚本事

积分
3775
发表于 2026-7-22 11:06:54 | 显示全部楼层
输出日志通常用串口
使用USB接口也行
也能够模拟串口
偶尔看看玩玩
回复

使用道具 举报 送花

已绑定手机

74

主题

1019

回帖

3775

积分

论坛元老

初出茅庐&无甚本事

积分
3775
发表于 2026-7-22 11:11:43 | 显示全部楼层
偶尔看看玩玩
回复

使用道具 举报 送花

14

主题

16

回帖

118

积分

注册会员

积分
118
 楼主| 发表于 2026-7-22 11:23:58 | 显示全部楼层
好的,多谢,我研究一下
回复

使用道具 举报 送花

已绑定手机

74

主题

1019

回帖

3775

积分

论坛元老

初出茅庐&无甚本事

积分
3775
发表于 2026-7-22 11:26:43 | 显示全部楼层
cau*** 发表于 2026-7-22 11:23
好的,多谢,我研究一下

但是串口更常用
部分应用可以复用资源
偶尔看看玩玩
回复

使用道具 举报 送花

已绑定手机

52

主题

2901

回帖

3033

积分

荣誉版主

积分
3033
发表于 2026-7-22 12:09:19 | 显示全部楼层
STC32G12K128 USB日志输出方案对比分析一、方案概述STC32G12K128 内置全速 USB 2.0-FS 控制器,官方提供了完善的 USB 库函数,支持 CDC、HID、MSC(Mass Storage Class) 等多种协议。两种日志方案的技术基础均已具备。

二、方案一:USB-CDC / USB-HID + 上位机软件技术实现
  • CDC(通信设备类):在 PC 端呈现为一个虚拟串口(COM 口),使用 printf_usb() 或 USB_SendData() 即可将日志数据发送到 PC。Win10 1903 以上免驱,低版本需安装驱动。
  • HID(人机交互设备):免驱,即插即用,但数据带宽较低(理论 64KB/s,每毫秒一包,每包最大 64 字节)。
  • 上位机可使用 C#(MSCOMM 控件)、Python(pyserial)、LabVIEW 等任何支持串口编程的语言开发。
关键数据(摘自手册)指标CDCHID
理论带宽12Mbps(1.5MB/s)64KB/s
实测有效速率~800KB/s~64KB/s
驱动要求Win10 1903+ 免驱,低版本需安装全版本免驱
数据包大小不固定固定 64 字节
上位机开发与普通串口完全一致需使用 HID API 或 STC 的 HID 助手优点
  • 实时性极好:日志数据可以实时、连续地输出,适合调试、监控、波形查看等场景。
  • 开发门槛低:CDC 方案上位机编程与普通串口完全一致,printf_usb() 一行代码即可输出日志。
  • 双向通信:上位机可以随时下发命令控制单片机,适合交互式调试。
  • 无需额外存储空间:日志直接通过 USB 发送,不占用 Flash/EEPROM。
  • 数据量无上限:只要 USB 连接不断,可以持续输出海量日志。
缺点
  • 必须开发上位机软件:需要编写一个专用的日志接收/显示程序,增加了开发工作量。
  • 依赖 PC 在线:单片机必须一直连接电脑才能记录日志,离线运行时的日志无法追溯。
  • 日志不易归档:日志在内存中流动,如需保存为文件,上位机还需额外实现文件写入功能。
  • 驱动兼容性:CDC 在老旧 Windows 系统上需要安装驱动,部署时可能遇到驱动问题。

三、方案二:USB MSC(Mass Storage Class)+ FAT 文件系统技术实现
  • 单片机模拟一个 U 盘设备,接入电脑后弹出盘符。
  • 日志数据以 文本文件(.txt/.log) 的形式存储在单片机的存储介质中。
  • 存储介质可以是:
    • 内部 EEPROM(在 ISP 下载时设置 EEPROM 大小为 64K,即可实现 64KB 容量的 U 盘)
    • 外部 SPI Flash(如实验箱上的 512KB 串行 Flash,容量更大)
  • 官方提供了完整的 MSC 范例("74-MSC(Mass Storage Class)协议范例"),在 config.h 中修改 MEMTYPE_INT 即可切换为内部 EEPROM。
优点
  • 无需开发上位机软件:用户直接通过文件管理器拷贝 .txt 文件即可获取日志,零开发成本。
  • 离线记录:单片机可以在脱离电脑的环境下独立运行,将日志写入存储介质,事后插入电脑批量导出。
  • 日志天然归档:每次运行生成独立的日志文件,便于追溯、对比、存档。
  • 跨平台兼容:U 盘是通用协议,Windows/macOS/Linux 均可直接识别,无需任何驱动。
  • 适合现场部署:现场维护人员无需安装任何软件,插上 USB 线即可拷贝日志。
缺点
  • 存储容量有限:
    • 内部 EEPROM 最大 64KB,日志文件不能太大。
    • 外部 SPI Flash 可扩展至数 MB,但仍远小于硬盘。
  • 实时性差:日志不能实时查看,必须等设备接入电脑后才能读取文件。
  • 文件系统开销:需要在单片机侧实现 FAT 文件系统管理(创建文件、追加写入、目录管理等),代码复杂度较高。
  • 频繁写入寿命问题:EEPROM/Flash 有擦写寿命(通常 10 万次),频繁写日志会缩短寿命。建议使用环形缓冲区策略,或仅记录关键事件。
  • 写操作阻塞:写入 Flash 时需要时间(尤其是擦除操作),可能影响实时任务的响应。
  • 文件管理复杂:需要处理文件名生成、文件大小限制、旧日志覆盖等逻辑。

四、核心对比表对比维度USB-CDC/HID + 上位机USB MSC + FAT 文件系统
是否需要上位机软件✅ 是,需自行开发❌ 否,直接拷贝文件
实时查看日志✅ 实时输出,即时可见❌ 需拔插 USB 或重新枚举
离线记录能力❌ 必须连接 PC✅ 可独立运行,事后导出
存储容量限制❌ 无限制(实时发送)✅ 受 EEPROM/Flash 容量限制
数据带宽CDC: ~800KB/s;HID: ~64KB/s取决于 Flash 写入速度,通常较慢
驱动要求CDC: 低版本 Win 需装驱动;HID: 免驱✅ 全平台免驱
代码复杂度⭐⭐(调用库函数即可)⭐⭐⭐⭐(需 FAT 文件系统管理)
双向交互能力✅ 支持上位机下发命令❌ 仅单向输出日志
日志归档便利性⭐⭐(需上位机实现保存功能)⭐⭐⭐⭐⭐(直接是文件)
适用场景开发调试、实时监控、交互式测试现场部署、离线数据采集、售后分析
五、选型建议推荐 CDC/HID 方案的场景
  • 研发调试阶段:需要实时观察传感器数据、变量变化、程序运行流程。
  • 需要双向交互:上位机需要下发配置参数、控制指令。
  • 日志数据量大且持续:如音频采样、高速 ADC 数据流。
  • 开发团队有上位机开发能力:可以快速编写 C#/Python 等工具。
推荐 MSC 方案的场景
  • 现场部署产品:设备在用户现场运行,维护人员只需插 USB 拷贝日志文件,无需安装任何软件。
  • 离线数据记录仪:设备在野外/无电脑环境下运行,事后集中导出数据。
  • 日志需要长期归档:每次运行生成独立文件,便于质量追溯和故障分析。
  • 客户/非技术人员需要读取日志:直接打开 U 盘拷贝文件,零学习成本。
最佳实践:两者结合在实际项目中,两种方案并不互斥。STC32G12K128 的 USB 在同一时间只能选择一种设备类型,但可以通过以下方式兼顾:
  • 开发阶段使用 CDC:实时调试,快速定位问题。
  • 发布阶段切换为 MSC:现场部署,方便日志导出。

睁开眼睛做场梦~~~
回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
发表于 2026-7-22 15:33:05 | 显示全部楼层
截图202607221532172472.jpg
回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
发表于 2026-7-22 15:33:42 | 显示全部楼层

好的,我已经完整查看了论坛帖子内容,并结合 STC32G12K128 的手册资料,下面为您做一个全面的解答。


关于 STC32G12K128 使用 USB 口输出日志的解答

答案是:完全可以,而且有多种方案可选。

STC32G12K128 内置全速 USB 2.0-FS 控制器,支持 6 个双向端点,官方提供了完善的 USB 库函数,支持 CDC、HID、MSC 等多种协议,完全不占用串口资源。


方案一:USB-CDC 虚拟串口(最推荐,最简单)

这是最常用、最便捷的方案。单片机在 PC 端呈现为一个虚拟串口(COM 口),使用 printf_usb() 或 USB_SendData() 即可将日志数据发送到 PC。

优点:

  • 实时性好,日志数据可以实时、连续地输出
  • 开发门槛低,上位机编程与普通串口完全一致
  • 双向通信,上位机可以随时下发命令
  • 实测有效速率可达 ~800KB/s

操作步骤:

  1. 下载 USB 库函数:从 STC 官网下载 STC_USB_LIBRARY.zip,解压后找到 stc_usb_cdc_32g.LIB 库文件。
  2. 新建 Keil 项目(使用 C251 编译器),将库文件添加到项目中。
  3. 编写代码,参考以下示例(查询方式):
#include "stc32g.h"
#include "ai_usb.h"

void main()
{
    EAXFR = 1;      // 允许访问扩展的特殊寄存器
    WTST = 0;       // 设置程序代码等待时间为最快
    CKCON = 0;      // 设置访问片内 xdata 速度为最快

    // 设置所有 I/O 口为准双向口
    P0M0 = 0x00; P0M1 = 0x00;
    P1M0 = 0x00; P1M1 = 0x00;
    P2M0 = 0x00; P2M1 = 0x00;
    P3M0 = 0x00; P3M1 = 0x00;
    P4M0 = 0x00; P4M1 = 0x00;
    P5M0 = 0x00; P5M1 = 0x00;
    P6M0 = 0x00; P6M1 = 0x00;
    P7M0 = 0x00; P7M1 = 0x00;

    usb_init();     // USB 初始化

    EA = 1;         // 开启总中断

    while (1)
    {
        // 使用 printf_usb 输出日志,完全不需要串口
        printf_usb("系统运行中... 计数器: %d\r\n", counter++);
      
        // 延时
        for (unsigned long i = 0; i < 500000; i++);
      
        // 查询方式处理 USB 接收(可选)
        if (bUsbOutReady)
        {
            // 处理上位机发来的数据
            usb_OUT_done();
        }
    }
}
  1. 在代码开头定义 PRINTF_USB(在 ai_usb.h 包含之前或在项目设置中定义),这样 printf 就会重定向到 USB-CDC 输出。
  2. 下载程序:使用 AiCube-ISP 软件下载,下载完成后 PC 端会识别出一个 USB-CDC 虚拟串口(COM 口),用任意串口助手即可查看日志。

方案二:USB-HID(免驱,适合小数据量)

如果需要在 Win7 等低版本系统上免驱运行,可以使用 HID 方案。

特点:

  • 全版本 Windows 免驱
  • 数据带宽较低(理论 64KB/s,每包最大 64 字节)
  • 使用方式与 CDC 类似,库函数接口相同

方案三:USB MSC(模拟 U 盘,适合离线日志)

单片机模拟一个 U 盘设备,日志数据以文本文件形式存储在内部 EEPROM 或外部 SPI Flash 中。

优点:

  • 无需开发上位机软件,直接插电脑拷贝 .txt 文件
  • 可离线记录,事后批量导出
  • 跨平台兼容

缺点:

  • 存储容量有限(内部 EEPROM 最大 64KB)
  • 不能实时查看日志

关于不停电下载

USB 库函数中已内置了不停电下载功能,默认下载命令为 "@STCISP#"。当 PC 端发送该字符串时,单片机自动软复位到系统 ISP 程序区,实现 USB 不停电下载。在 AiCube-ISP 软件的"收到用户命令后复位到 ISP 监控程序区"中设置即可。


总结

方案 实时性 开发难度 驱动要求 适用场景
USB-CDC ✅ 高 ⭐ 低 Win10 1903+ 免驱 最推荐,通用日志调试
USB-HID ⭐ 中 ⭐ 低 全版本免驱 低版本 Windows 系统
USB MSC ❌ 离线 ⭐⭐ 中 全版本免驱 离线记录、现场部署

对于绝大多数用户,强烈推荐方案一(USB-CDC 虚拟串口),只需添加库文件、调用 usb_init() 和 printf_usb() 即可,完全不占用串口资源,且实测速率可达 ~800KB/s,完全满足日志输出需求。

详细例程请参考 STC 官网上的"STC32G实验箱演示程序"包中的 "70-CDC(Communication Device Class)协议范例"。


🔍 搜索 "https://www.stcaimcu.com/thread-24982-1-1.html"

⏱️ 查找用时 8.8s | 总回答用时 21.8s

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-11-7 12:19 , Processed in 0.080263 second(s), 76 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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