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

请教高手:Ai8051U实验箱利用USB库实现USB通信功能程序后如何进行仿真?

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-05-01 01:40:00
已绑定手机

13

主题

73

回帖

327

积分

中级会员

积分
327
发表于 昨天 18:25 | 显示全部楼层 |阅读模式
向高手请教,先说声谢谢!

问题场景:
AI8051U实验箱上做了点灯实验。
结合不停电下载功能的实现方法添加USB库并成功实现了USB通信。
但是发现添加USB通信后,不能再做仿真了。

具体步骤:
1、按照手册中做好AI8051U的仿真芯片,重新给AI8051U实验箱上电。
2、在Keil中保持之前debug的参数不变(没实现USB通信前能正常仿真),开始debug。
3、然后程序停在下图红色框那行。
截图202504301815424978.jpg
4、再次单步执行,仿真就停止了,无法再操作任何执行跟踪的步骤了。下图红色框中可见。
截图202504301818486758.jpg

程序代码打包在此: 08-蜂鸣器.rar (22.16 KB, 下载次数: 0)

期望结果:
在AI8051U实验箱上添加USB库并成功实现了USB通信的情况下,也能做仿真。

也许我的方法不对,请高手出手相助,给出方法或指出我的错误之处,再次谢谢了!

学习MCU
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-05-01 01:40:00
已绑定手机

13

主题

73

回帖

327

积分

中级会员

积分
327
发表于 14 小时前 | 显示全部楼层
Debu*** 发表于 2025-4-30 20:39
注意IO是否冲突,USB固定使用P30、P31
串口仿真IO可切换

谢谢两位高手“erci***”(抱歉!只能看到这样的名字)和“DebugLab”提供的帮助。


AI8051U实验箱利用USB库实现USB通信功能程序后如何进行仿真的问题已经解决。
这只是多种办法中的一种解决办法。

总结一下:

思路是利用试验箱上的USB转双串口的功能模块,通过Ai8051U芯片的P3.6和P3.7进行串口仿真。
通过参考Ai8051U实验箱的原理图,发现Ai8051U芯片可做仿真的接口中只有P3.6和P3.7的串口可以连接到实验箱上的USB转双串口模块(模块由Ai8H2K12U芯片组成),然后模块连接到下图黄色框对应的USB-TypeC接口。

截图202505010100398122.jpg
图上标注的“USB转双串口 不是烧录/仿真接口”,我现在不知道该如何理解了。目前它的确不能烧录,但是仿真却做到了。
按下图中所示,加上2个跳线(小黄色的长方框)。将另外一个黄框中的双串口开关打到“断”的一方。
截图202505010111436161.jpg
双串口开关如果在“通”的一方能看到数据通信时开关旁的LED灯闪烁。为何要打到“断”的一方原因见下图。
截图202505010120119841.jpg
我用了2条USB线进行设备连接。
一条USB-TypeA转USB-TypeA的连接试验箱的USB-TypeA口到计算机。
另一条USB-TypeC转USB-TypeA的连接上面第一个图中的“USB转双串口 不是烧录/仿真接口”到计算机。
至此硬件连接完成,剩下就是编译代码、制作仿真芯片、设置仿真参数、进行仿真。
按照其它资料中的讲解跟着做就可以了。



学习MCU
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1318

回帖

2936

积分

荣誉版主

无情的代码机器

积分
2936
发表于 昨天 21:27 | 显示全部楼层
我心*** 发表于 2025-4-30 20:18
谢谢你再次回复及帮助。
正像你所说的,我也在看原理图,一点一点比对。
搞清楚了Ai8051U试验箱上集成有一 ...

P36 P37 可以连板载Ai8H2K12U。
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-05-01 01:40:00
已绑定手机

13

主题

73

回帖

327

积分

中级会员

积分
327
发表于 昨天 20:53 | 显示全部楼层
Debu*** 发表于 2025-4-30 20:39
注意IO是否冲突,USB固定使用P30、P31
串口仿真IO可切换

谢谢“DebugLab”帮我删除重复帖子,移动帖子到更合适的板块,并回复。
重复帖子是操作失误发到不该发的地方,然后找了一个自认合适一些的地方重发了一下(当然还是不算合适),没及时删除。
以后注意避免这个问题再发生。

现在想的是如何实现我最早想实现的问题。
看来从试验箱中不方便引出 截图202504302052336113.jpg ,只能用USB_Link1D才能解决了?
学习MCU
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 昨天 20:39 | 显示全部楼层
注意IO是否冲突,USB固定使用P30、P31
串口仿真IO可切换
截图202504302039545130.jpg
USB程序直接实际运行,不要仿真USB,因为上位机一般有超时机制,加断点程序停止运行,上位机就会认为USB设备停止响应
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-05-01 01:40:00
已绑定手机

13

主题

73

回帖

327

积分

中级会员

积分
327
发表于 昨天 20:18 | 显示全部楼层
erci*** 发表于 2025-4-30 19:42
参考下图,其它模块要靠自己看电路图摸索了

谢谢你再次回复及帮助。
正像你所说的,我也在看原理图,一点一点比对。
搞清楚了Ai8051U试验箱上集成有一个USB转双串口的模块(Ai8H2K12U),其可以单独用,也可连接到主控芯片Ai8051U上。
我问的那4个框中的问题都明白了。
谢谢!


现在想的是如何实现我最早想实现的问题。
看来从试验箱中不方便引出 截图202504302021538690.jpg ,只能用USB_Link1D才能解决了?

点评

P36 P37 可以连板载Ai8H2K12U。  详情 回复 发表于 昨天 21:27
学习MCU
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1318

回帖

2936

积分

荣誉版主

无情的代码机器

积分
2936
发表于 昨天 19:42 | 显示全部楼层
我心*** 发表于 2025-4-30 19:32
谢谢你的回复与帮助!

知道自己对底层逻辑结构的欠缺。


参考下图,其它模块要靠自己看电路图摸索了
截图202504301942033782.jpg
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-05-01 01:40:00
已绑定手机

13

主题

73

回帖

327

积分

中级会员

积分
327
发表于 昨天 19:32 | 显示全部楼层
erci*** 发表于 2025-4-30 18:32
如何仿真MCU的USB功能,不占用MCU自带的USB来支援仿真通信 - 仿真/编译器/汇编器/头文件 国芯技术交流网站  ...

谢谢你的回复与帮助!

知道自己对底层逻辑结构的欠缺。
查看AI8051U实验箱的原理图,有板上双串口的电路。
如何使用呢?
在现有说明书和论坛中找了找,没发现相关信息。
如下图中黄色框中的开关、按键、跳线、接口,找不到说明。
截图202504301935069370.jpg

点评

参考下图,其它模块要靠自己看电路图摸索了 [attachimg]96870[/attachimg]  详情 回复 发表于 昨天 19:42
学习MCU
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1318

回帖

2936

积分

荣誉版主

无情的代码机器

积分
2936
发表于 昨天 18:32 | 显示全部楼层
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 昨天 18:28 | 显示全部楼层
关于AI8051U实验箱USB通信与仿真冲突问题的技术分析及解决方案

一、问题现象溯源
根据描述,在未添加USB库时仿真功能正常,但引入USB通信模块后出现仿真中断。这种现象通常由以下三类原因导致:

1. 时钟系统冲突
AI8051U的USB模块需要精确的48MHz时钟源,而默认仿真配置可能使用不同时钟模式。当USB初始化代码强制切换时钟源时,会导致仿真器时序失步。需核查:
USBInit()函数是否修改了CLKDIV寄存器
是否启用了PLL时钟倍频而未同步更新仿真参数

2. 中断向量抢占
USB通信依赖中断处理机制,实验箱默认仿真配置可能存在:
中断优先级配置冲突(特别是USB中断与调试器使用的SWD接口中断)
中断使能时序不当导致仿真器状态机异常

3. 硬件资源占用
USB模块与调试接口共享物理引脚时可能引发冲突,需确认:
P3.0/P3.1是否被USBDP/DM复用
调试接口模式是否设置为SWD而非传统JTAG

二、关键调试步骤建议
(请先备份当前工程,按顺序执行以下验证)

步骤1:时钟配置验证
在Startup.a51文件中插入时钟状态监测代码:
  1. assembly
  2. MOV CLKCON,#0
  3. CALL DELAY10MS
  4. MOV A,CLKDIV
  5. MOV P1,A ; 通过LED显示时钟分频值
复制代码

步骤2:分阶段初始化测试
修改USB初始化流程为分步执行:
  1. c
  2. void main() {
  3.     // Phase 1: 基础外设初始化
  4.     LEDInit();
  5.     UARTInit();
  6.     // Phase 2: 延迟USB初始化
  7.     #ifndef DEBUGMODE
  8.     USBInit(48000000);
  9.     #endif
  10.     while(1) {
  11.         // 测试代码
  12.     }
  13. }
复制代码
通过条件编译暂时禁用USB初始化,验证基础仿真功能是否恢复。

步骤3:调试接口配置优化
在Keil uVision中调整调试参数:
1. 进入Options for Target -> Debug
2. 修改Settings中的Max Clock项为5MHz
3. 启用"Enable Debugger Runtime Stack"选项
4. 在Trace选项卡中勾选"Periodic Window Update"

三、典型解决方案
根据历史案例库分析,推荐采用分级调试方案:

方案A:双模式编译法
1. 创建DEBUG/RELEASE编译配置
2. 在DEBUG模式下:
使用内部RC振荡器代替PLL
禁用USB中断响应
添加虚拟USB握手协议
  1. c
  2. ifdef DEBUGMODE
  3.     #define USBCONNECTED 1
  4.     void USBISRSimulate() {
  5.         static uint8t cnt = 0;
  6.         if(++cnt > 10) {
  7.             USBEP0BUF[0] = 0x55;
  8.             USBEP0BC = 1;
  9.         }
  10.     }
  11. endif
复制代码

方案B:硬件级调试优化
1. 修改硬件连接方式:
使用独立电源为调试器供电
在USBDP/DM线上串联22Ω电阻
2. 更新仿真器固件至最新版本
3. 在USB初始化前插入500ms延时:
```c
void Delay500ms() {
    uint16t i;
    for(i=0; i

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 15:42 , Processed in 0.147078 second(s), 119 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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