找回密码
 立即注册
查看: 132|回复: 9

Ai8051U-32Bit 串口打印数据用CDC/HID-串口助手不能正常显示

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-09-30 10:23:38
已绑定手机

12

主题

41

回帖

162

积分

注册会员

积分
162
发表于 2025-9-22 16:09:28 | 显示全部楼层 |阅读模式
Ai8051U-32Bit 串口打印数据,不能正常显示,请问是什么原因?


设置打印语句
printf("ir_pwm_init ok! \r\n");

在CDC/HID-串口助手中可以正常显示
[15:40:25.768]接收←ir_pwm_init ok!


设置打印数据
printf("KeyCode = %u\r\n", KeyCode);


printf("KeyCode = %bu\r\n", KeyCode);

printf("KeyCode = %d\r\n", KeyCode);


在CDC/HID-串口助手中不能正常显示
[15:40:26.834]接收←............................................


但在sscom5.13.1中可以正常显示
[16:02:58.901]收←◆KeyCode = 15





printf_display_abnormal.png
printf_display_normal.png

printf_display_abnormal.txt

4.18 KB, 下载次数: 0

printf_display_normal.TXT

202 Bytes, 下载次数: 0

回复

使用道具 举报 送花

3

主题

1928

回帖

704

积分

等待验证会员

积分
704
发表于 2025-9-22 16:12:00 | 显示全部楼层
您好,关于您在使用 Ai8051U-32Bit 芯片时,通过 printf 函数进行串口打印时出现的数据在 CDC/HID-串口助手 中无法正常显示的问题,结合您提供的现象,我们可以从以下几个方面进行专业分析和排查:

一、问题现象回顾

1. 正常情况:
打印语句 printf("irpwminit ok! \r\n"); 在 CDC/HID 串口助手中可以正常显示。
输出示例:[15:40:25768]接收←irpwminit ok!

2. 异常情况:
打印语句 printf("KeyCode = %u\r\n", KeyCode); 在 CDC/HID 助手中无法显示完整内容。
输出示例:[15:40:26834]接收←
但在 sscom5131 串口助手中可以正常显示:
输出示例:[16:02:58901]收←◆KeyCode = 15

二、可能原因分析

1. 串口通信配置不一致

尽管 CDC/HID 和 sscom5131 都是串口工具,但它们在底层串口配置(如波特率、数据位、停止位、校验位)上可能存在细微差异。建议您确认以下几点:
波特率设置是否一致(如 9600、115200)
数据位是否为 8 位
停止位是否为 1
校验位是否为无校验
建议操作: 在两个串口工具中均手动设置串口参数,确保与芯片的串口初始化配置完全一致。

2. 缓冲区处理机制不同

CDC/HID 工具与 sscom5131 的缓冲区处理方式可能不同,尤其是在处理格式化输出(如 %u)时,可能存在如下问题:
CDC/HID 对非 ASCII 字符或控制字符(如 \r\n)处理不兼容;
缓冲区未及时刷新,导致数据未完整接收;
接收窗口未及时刷新或存在缓存延迟。
建议操作: 在每次 printf 后调用 fflush(stdout);,确保输出缓冲区的内容立即发送。

3. printf 函数的实现方式不同

嵌入式系统中 printf 函数通常为简化版本,可能不支持某些格式化参数,或对缓冲区大小有限制。若 KeyCode 值较大,可能导致字符串转换失败或缓冲区溢出。
建议操作:
检查 printf 是否支持 %u;
替换为 printf("KeyCode = %d\r\n", (int)KeyCode); 测试;
或使用 sprintf 配合自定义串口发送函数进行调试输出。

4. 串口驱动或 CDC/HID 工具本身兼容性问题

某些串口工具在处理特定设备(如基于 CDC 的虚拟串口)时存在兼容性问题,尤其在处理高速或连续输出时表现不佳。
建议操作:
尝试使用其他串口工具(如 XCOM、Tera Term、RealTerm)进行测试;
更新 CDC 虚拟串口驱动至最新版本。

5. 数据传输过程中出现乱码或丢失

在使用 printf 打印变量时,若变量值变化较快或串口波特率设置过高,可能导致数据丢失或乱码,进而被 CDC/HID 工具过滤或丢弃。
建议操作:
降低串口波特率(如从 115200 改为 9600)进行测试;
增加打印间隔时间(如添加延时);
检查芯片串口发送是否启用中断或DMA,是否影响数据完整性。

三、推荐调试步骤

1. 确认串口配置一致性
检查芯片串口初始化代码;
确保 CDC/HID 工具中串口参数与代码中一致。

2. 验证 printf 支持格式
尝试替换 %u 为 %d 或其他格式符;
若使用自定义 printf 实现,检查其支持的格式列表。

3. 强制刷新缓冲区
  
  1. c
  2.    printf("KeyCode = %u\r\n", KeyCode);
  3.    fflush(stdout); // 强制刷新输出缓冲区
复制代码

4. 使用 sprintf + 自定义串口发送函数
  
  1. c
  2.    char buffer[64];
  3.    sprintf(buffer, "KeyCode = %u\r\n", KeyCode);
  4.    UARTSendString(buffer); // 假设 UARTSendString 为自定义串口发送函数
复制代码

5. 更换串口调试工具
推荐尝试:
Tera Term(支持日志记录和高级设置)
RealTerm(适合调试二进制/高速串口)
XCOM(国产工具,界面简洁)

6. 检查波特率与硬件限制
若波特率设置过高(如 921600),可能导致芯片或主机端无法及时处理;
建议优先使用 115200 进行调试。

四、结论

综上所述,CDC/HID 串口助手无法正常显示 printf("KeyCode = %u\r\n", KeyCode); 打印信息 的原因可能包括:
串口参数配置不一致;
printf 实现不支持 %u 或缓冲区处理问题;
CDC/HID 工具对接收数据的处理机制存在兼容性;
数据传输速率过高或缓冲区未及时刷新。

建议您通过上述步骤逐一排查,尤其是使用 fflush(stdout) 和更换调试工具的方式,可快速定位问题所在。

如需进一步分析,建议提供以下信息:
芯片串口初始化代码;
printf 使用的底层实现(标准库或自定义);
CDC/HID 工具的具体版本;
使用的开发环境(如 Keil、IAR、GCC 等)。

如需技术支持或进一步协助,请随时联系。祝您调试顺利!

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:205
  • 最近打卡:2025-09-30 10:42:51

16

主题

592

回帖

3301

积分

超级版主

积分
3301
发表于 2025-9-22 16:53:30 | 显示全部楼层
推荐优先看的 printf_usb()及usb不停电下载演示视频
https://www.stcaimcu.com/thread-19077-1-1.html
(出处: 国芯人工智能技术交流网站)
printf函数 的 格式参数; USB接口 使用 printf 打印数据
https://www.stcaimcu.com/thread-6864-1-1.html
(出处: 国芯人工智能技术交流网站)
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-09-30 10:23:38
已绑定手机

12

主题

41

回帖

162

积分

注册会员

积分
162
发表于 2025-9-22 17:09:18 | 显示全部楼层
AI*** 发表于 2025-9-22 16:53
推荐优先看的 printf_usb()及usb不停电下载演示视频
https://www.stcaimcu.com/thread-19077-1-1.html
(出 ...

格式都试过了,用的uart1 P3.6 P3.7,有打印,只是用CDC/HID-串口助手不能正常显示

project_mycode.rar

258.33 KB, 下载次数: 2

点评

AUXR寄存器值被定时器初始化错改了 [attachimg]116034[/attachimg] [attachimg]116033[/attachimg] [attachimg]116027[/attachimg][attachimg]116026[/attachimg] [attachimg]116028[/attachimg]  详情 回复 发表于 2025-9-25 11:23
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:315
  • 最近打卡:2025-10-02 12:32:59
已绑定手机

83

主题

3209

回帖

7092

积分

荣誉版主

无情的代码机器

积分
7092
发表于 2025-9-25 11:23:09 | 显示全部楼层
mfsl*** 发表于 2025-9-22 17:09
格式都试过了,用的uart1 P3.6 P3.7,有打印,只是用CDC/HID-串口助手不能正常显示 ...



AUXR寄存器值被定时器初始化错改了
截图202509251122337629.jpg
截图202509251122044110.jpg
截图202509251110345647.jpg 截图202509251110144271.jpg
截图202509251111023466.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-09-30 10:23:38
已绑定手机

12

主题

41

回帖

162

积分

注册会员

积分
162
发表于 2025-9-25 11:59:42 | 显示全部楼层
erci*** 发表于 2025-9-25 11:23
AUXR寄存器值被定时器初始化错改了

好的,感谢。请问有支持 矩阵按键单键短按长按,组合键最多支持3键最长5秒的Demo吗
key_matrix.png

点评

8 x 8 (或A x B?) 矩阵按键 按键处理 单击或长按? - I/O读写及点灯,外部中断 ,所有I/O都支持的普通I/O中断,按键扫描 国芯人工智能技术交流网站 - AI32位8051交流社区 这个挺常见论坛里搜索就行  详情 回复 发表于 2025-9-25 15:12
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:315
  • 最近打卡:2025-10-02 12:32:59
已绑定手机

83

主题

3209

回帖

7092

积分

荣誉版主

无情的代码机器

积分
7092
发表于 2025-9-25 15:12:29 | 显示全部楼层
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-09-30 10:23:38
已绑定手机

12

主题

41

回帖

162

积分

注册会员

积分
162
发表于 2025-9-25 15:33:56 | 显示全部楼层
erci*** 发表于 2025-9-25 15:12
8 x 8 (或A x B?) 矩阵按键 按键处理 单击或长按? - I/O读写及点灯,外部中断 ,所有I/O都支持的普通I ...

好,感谢,我去学习下
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-09-30 10:23:38
已绑定手机

12

主题

41

回帖

162

积分

注册会员

积分
162
发表于 7 天前 | 显示全部楼层
erci*** 发表于 2025-9-25 15:12
8 x 8 (或A x B?) 矩阵按键 按键处理 单击或长按? - I/O读写及点灯,外部中断 ,所有I/O都支持的普通I ...

请问可以打印这个吗,试了下没有__FUNCTION__
printf("%s %s %d\n\r", __FILE__, __FUNCTION__, __LINE__);
printf_function_error.png

点评

看keil帮助文档里只有这些: [attachimg]116166[/attachimg]  详情 回复 发表于 7 天前
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:315
  • 最近打卡:2025-10-02 12:32:59
已绑定手机

83

主题

3209

回帖

7092

积分

荣誉版主

无情的代码机器

积分
7092
发表于 7 天前 | 显示全部楼层
mfsl*** 发表于 2025-9-26 17:32
请问可以打印这个吗,试了下没有__FUNCTION__
printf("%s %s %d\n\r", __FILE__, __FUNCTION__, __LINE__) ...

看keil帮助文档里只有这些:

截图202509261945081261.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-3 10:39 , Processed in 0.172078 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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