- 打卡等级:以坛为家II
- 打卡总天数:493
- 最近打卡:2025-05-01 08:31:58
荣誉版主
- 积分
- 3476
|
发表于 2023-11-15 11:55:47
|
显示全部楼层
本帖最后由 浦江一水 于 2023-11-15 14:30 编辑
@电子DIY小家 (冲哥老师)您好! 很感谢您对我学习中遇到的困惑关注和回复。此前也看了您的不少视频教程和帖子,得益菲浅,十分感谢,也很佩服您。
关于我对STC USB Link1D工具对STC32G12K128的仿真调试遇到的困惑,诚如您上图所示,这么简单方便的一个点击步骤,也会有错吗? 我也是这样想的, 但事实确实如此,使我困惑而百思不解。
但是弹出无法进入仿真的界面也是一个实际情况,有句话说“存在即合理” , 既然事实已经弹出了无法仿真的错误提示,那一定是有道理的。只是我对其中一些机理还不清楚,一时找不到解释和解决办法而已。
我也试图从各个方面质疑自己是否忽略了哪些因素,曾经怀疑自己的计算机驱动问题,或是自制的实验板硬件焊接问题,或是我所用的STC32G12K128(DIP40)芯片的版本问题...但是都找不到答案....
也一直在思考: 为什么按照数据手册和教程的步骤, 有的人说是可以顺利实现, 有的人说是不行, 有的人说第一次可以, 后来就不行了.... 诸如此类....
最近我发现, 我所用的STC32G12K128(DIP40)芯片有么一个特点: (也许人家早就发现,只是没说,至少我是在坛子里没看到这样说)
就是如果将STC32G12K128(DIP40)制作成仿真芯片后, 并且仿真调试后, 脱离仿真工具后, 再上电即可运行, 此前程序仍然存在带有仿真功能的芯片中. (我不确定STC8H8K64U是否也如此,但我感觉不是的) 而且切换不同的程序代码, 直接仿真, 不必每次都制作仿真芯片.
这一特点,,有点很像STM32F1/F4(意法ARM)芯片, STM32芯片是不需要先制作成仿真芯片的, 直接就可以用仿真工具仿真调试,并且仿真调试后,程序代码仍然留在芯片内.脱离仿真工具后,上电即可运行.
这一特点让我再次仔细思考, 反复结合手册视频和专题帖子思考. 实验验证... 终于....
我大概是弄懂了STC USB Link1D工具对STC32G12K128的仿真调试问题.
具体是怎样理解的呢, 且看慢慢道来....
首先我给自己把"仿真"问题划分为两个层次: 不要混为一谈.
无法进入仿真: KeilC251 弹出错误提示, 无法连接等等, 属于无法进入仿真状态, 这是仿真条件是否具备, 与是否正确设置程序主频, 程序是否占用串口1....没有关系...
无法准确仿真: 这是仿真是可以进入的, 但是实际效果不准确, 主要是代码算法问题....
其次我给自己一个定义: 将USB下载的概念一分为二:
USB直接下载: PC机STC-ISP软件, 与目标单片机通过USB线直接连接, 中间不经过Link1D之类的仿真工具.
USB间接下载: PC机STC-ISP软件, 中间经过Link1D之类的仿真工具,再与目标单片机连接.
这两者有一个共同的特点是: 都是通过PC机的USB口, 连接下载或调试代码 , 广义说, 都是"USB下载". 其实是有区别的....
我手头的STC-ISP软件是V6.92E, 仿真工具是Link1D, 目标单片机是屠龙刀(不是三)和自制的STC32G洞洞实验板, 芯片都是STC32G12K128 (V7.4.4版本), 只是封装不同.
在此前提下, 再来细细看看本帖子, 描述的各个步骤....
1. 到官网取下载工具软件, 没有问题....
2. 将STC的仿真相关驱动文件安装到KeilC251中去,没问题....
3. 将Link1D工具固件更新一下, 没问题.... 到这一步, PC机与Link1D工具形成 USB直接下载 关系, 注意一下: 辨识端口是STC USB Writer (HID1) , 下载的是固件代码.
此时,与需要制作仿真芯片的目标单片机没有关系....
4. 需要制作仿真芯片的目标单片机登场了, 就是PC--Link1--我们的单片机, 是吧. 注意此时端口辨识为: STC USB Link1 (LINK1), 然后.....
" 然后进行如下的设置就可以通过ISP软件正常下载程序了。(注意一下这里的IRC频率一定要和程序里设置的主时钟一样哈!!) "
这是在验证USB间接下载, 这是PC机通过中间的Link1D对目标单片机下载实验代码... (后面关于红色提示不是下载代码的必要条件,不一样也能下载,只是代码运行效果不同)
5. 这是再操作一次USB间接下载, 下载后是否直接运行, 如果在第四步已经勾上此选项了, 就没有这一步了.
注意一下, 此时"操作成功!" 的提示, 暂时记一下....
到了这一步, 验证了通信口的畅通, 程序代码可以下载了,
这是指实验代码下载到了目标单片机中, (不是固件代码下载到Link1D的工具中) ,Link1D只是一个"二传手". 成功了..... 广义说, 也是USB下载, 你能说它不是USB下载吗?
其实, 实验程序代码的下载, 未必要用中间工具的.USB直接下载 也是可以的.
6. 关键的时刻来了....
"到上面一步成功之后就可以开始设置为仿真芯片了。 "
承上启下, 自然地是指: PC机---Link1D(中间工具)---需要制作仿真的目标单片机(STC32G比如屠龙刀), 这样的连接情况下....
注意: 此时是否有一个隐含的条件在其中呢....
假如, (是假如, 可以再验证的).
假如目标板上的芯片STC32G12K128是一颗已经带有仿真功能的芯片呢?
那么, 带有仿真功能的芯片, 在上述4,5步骤中, 完全是正常通过了, 无法察觉的...
然后, 选择好仿真的几个选项, 点击"将所选目标单片机设置为仿真芯片", OK! 顺利通过,
注意一下,"操作成功!" 提示.....
这个提示, 感觉比较模糊, 是下载代码成功呢, 还是制作仿真芯片成功? 只有STC-ISP的开发者权威解释了...
对此我质疑. 我认为,可能这是USB间接下载成功, 因为带有仿真功能的芯片是不拒绝程序代码的下载的. Keil在仿真调试时首先就是下载代码....
7. 开始仿真了.... 应该关闭STC-ISP, 不是或者关闭, 因为Keil登场仿真时, 不需要SYTC-ISP在场的 (非仿真,编译后全速运行时可以在场).
设置了相关仿真的选项后, 点击Debug, 进入仿真...
8.9.10 后面一路顺风, OK! 这是很完美的过程, 许多坛友都享受了这一愉快顺利的过程.
但是偏偏有人, 比如我, 遇到困惑, 没那么顺利....
有坛友问, 如何取消仿真功能, 回答是USB下载后, 就取消了. 这个"USB下载"就比较模糊, 应该是USB直接下载, 就是端口辨识为STC USB Write (HID1)的状态下...
立即实验, 用USB线直接连接目标单片机, 将P3.2经按钮接地, 上电, 这是大家都熟悉的方法, 出现STC USB Write (HID1)后, 随便下一个如跑马灯之类程序代码, 就取消了芯片的仿真功能,
让它成为一颗不带有仿真功能的芯片后. 再按照步教程步骤试试看, 第6步就会出现不同的提示了, 就会出现硬件选项中打勾和不打勾的不同提示了,
提示"操作成功!"提示后, 以为是制作仿真芯片成功了, 到Keil启动仿真时, 就无法进入仿真了....
这就让我质疑, 第6步的作用了. 也就是让我产生"难道 强大的Link1D工具, 没有为目标板CPU制作仿真芯片的作用和能力吗?"的想法了.
在我大概是弄懂了STC USB Link1D工具对STC32G12K128的仿真调试问题的前提下, 我现在的实验就变得非常顺利和清楚了.
1. 用USB线,在端口辨识为STC USB Write (HID1)的状态下 直接给芯片制作仿真SWD方式.
制成后如果而后的实验不改变主频的情况下, 就不改变其带有仿真功能的芯片状态,不必每次都制作仿真芯片;
2. 用STC USB Link1D 工具, 进入Keil仿真调试。因为STC32G12K128(V7.4.4)目前仅支持STC USB Link1D 进行SWD仿真。
有了这个大概弄懂了,此前进不了仿真的几块实验板,现在都可以仿真调试了, 给研究算法起了很大的作用。
而且屡试不爽,百发百中.
于是乎.....
Keil 出现错误提示:Failed to connect to target device ! Please reset your taget system and try again.
应该也能解释了:
其实就是在告诉你, 找不到可以仿真的端口,连接失败,芯片就是没有仿真功能,此前仿真芯片的制作是不成功的。
为了避免偶然性,我又淘购了一片STC32G12K128 DIP40芯片,正在途中。。。
目的是想了解和验证一下, 出厂默认情况下,这个芯片是否带有仿真功能? 这次DIP40芯片是什么版本, 是不是V7.4.6U以上版本?是不是仅仅支持SWD仿真? 不久就会揭晓的。
|
|