单片机学习小组
直播中

h1654155275.5669

7年用户 1028经验值
私信 关注

keil5报错Connection refused due to device mismatch的原因是什么?

keil5报错Connection refused due to device mismatch的原因是什么?

回帖(1)

孟薇

2022-1-26 11:44:41
起因

为了学习 STM32CubeMx,我把 Keil5 升级到了最新版( V6 编译器编译 HAL 库速度时 V5 的十倍)。但奇怪的事情发生了,原先旧版本的 STM32C8T6 工程配置没有变过,烧录的时候却报错。
开始排查错误

1. 工程配置出错?

错误很明显,说我选择的 PACK 芯片与 核心板的芯片不匹配,明明是一样的工程,旧版本的能下载,升级后反而不认了呢?为此,我用 CubeMX 重新生成默认工程。配置好下载器。报错信息如下



错误三连击,很明显



  • ST-link 设备是盗版的,强行终止下载连接
  • 下载程序执行失败
  • 程序下载失败

百度查找资料STM32 Not a genuine ST Device! Abort connection 错误解决方案_,根据上面的办法试了一试,果然失败了。自己捣鼓的时候发现在下载器的 Settings ➡ Pack 界面
Enable 选项是否勾选对报错信息有影响。



  • 勾选Enable,为上面的三连报错
  • 不勾选Enable,错误信息为文章最开始的错误

但经过排查,在我的另一块开发板上,勾不勾选 Enable 对下载似乎没有上面影响。在这块 STM32RCT6 上下载是正常的。一模一样的工程配置,一模一样的下载器,都是CubeMX重新生成的代码,一个能下载,一个不能下载,这让我很疑惑。
2. 芯片问题?

很明显,上面的错误信息都指向了一个地方,那就是芯片。一个是目标芯片不匹配,一个是盗版的 ST-Link(可我用的是 DAP-Link)。经过资料搜寻,以及求助群友。结果终于水落石出——我淘宝买的核心板是山寨芯片!
下载器连接芯片时,会先获取芯片ID,和 PACK 包里你选择的 Target 芯片 ID 进行比对,确认两者一致才会开始烧录工作。STM32F1 系列的 IDCODE 为 0x1B10477

而我所购买的 STM32C8T6 核心板 IDCODE 为 0x2B10477

也就难怪烧录不成功了。
3. 山寨芯片的型号是什么?

为了搞清这个问题,我把去搜寻报错信息 Connection refused due to device mismatch 几乎没有答案。后面从芯片ID入手,百度根本就找不到什么资料。最后我灵光一闪,直接搜索 IDCODE:0x2BA01477,终于在CSDN上找到了一篇文章 Warn : UNEXPECTED idcode: 0x2ba01477 明确指出了芯片为国产仿制版本 CS32F103C8T6。
但由于开发环境不同,文章中所指出的解决办法并不适用与 keil5。得到了芯片信号,自然是先找到数据手册。



  • 百度搜索如下


根本查询不到芯片的有关信息,只有采购网站上有这个芯片售卖。

根据丝印显示,得知是 CKS 中科芯 公司的产品,但在其官网上却找不到任何资料。但在百度上找到了 cks32f103
由此可知,这两款芯片就是同一个产品。数据手册链接,由此确认,山寨 STM32F103C8T6 的芯片就是 CKS32F103C8T6。同时在CSDN找到了 CSKF103C8T6 的 PACK 包 CKS32F103C8T6最小系统板调试记录——SWD下载,下载安装一气呵成。
4. 解决办法

最终在 采购网站,找到了此款芯片与 ST 公司的区别,由于其内核使用的不一样,导致芯片内核 ID 不同,无法下载。
安装完上述的 Keil5 PACK 包后,在Target 一栏选择芯片型号
打开 Debug 工具栏,接入 Settings ➡ Flash Download,可以看见烧录算法已经改变。

再点击下载按钮,成功烧录完毕!,Debug 功能也正常运行。

结语

结果这次事件,让我看见了国产 ARM 芯片的百花齐放。
国产 ARM 芯片在价格上更具有性价比,也越来越多的公司用国产 ARM 芯片替代 ST 的芯片。这本是一个好事情,但不少不良商家,采购国产ARM 芯片,把丝印磨掉,换成 ST 的丝印。真的是无话可说。给广大学子求学的路上增添了不少阻碍。最后我把我购买的途径发出来,为大家踩坑了。



可以看到相比较与烧录器上的芯片,核心板上的芯片的丝印显得那么模糊,那么不明显。
如何鉴别芯片是否为山寨的?




  • 查看丝印,正版 STM32 的芯片丝印是金色的,并且十分明显。盗版的非常难看清,并且细节十分模糊
  • 查看 CODEID 连上仿真器 查看 IDCODE ,已知 STM32F1 系列的 IDCODE 为 0x1B10477,其他的没有具体查询

的芯片丝印是金色的,并且十分明显。盗版的非常难看清,并且细节十分模糊



  • 查看 CODEID 连上仿真器 查看 IDCODE ,已知 STM32F1 系列的 IDCODE 为 0x1B10477,其他的没有具体查询
举报

更多回帖

发帖
×
20
完善资料,
赚取积分