keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法

keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法

起因

为了学习 STM32CubeMx,我把 Keil5 升级到了最新版( V6 编译器编译 HAL 库速度时 V5 的十倍)。但奇怪的事情发生了,原先旧版本的 STM32C8T6 工程配置没有变过,烧录的时候却报错。 keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第1张图片

开始排查错误

1. 工程配置出错?

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

keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第2张图片
keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第3张图片
keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第4张图片

错误三连击,很明显

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

百度查找资料 STM32 Not a genuine ST Device! Abort connection 错误解决方案_,根据上面的办法试了一试,果然失败了。自己捣鼓的时候发现在下载器的 Settings ➡ Pack 界面 keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第5张图片

Enable 选项是否勾选对报错信息有影响。

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

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

2. 芯片问题?

很明显,上面的错误信息都指向了一个地方,那就是芯片。一个是目标芯片不匹配,一个是盗版的 ST-Link(可我用的是 DAP-Link)。经过资料搜寻,以及求助群友。结果终于水落石出——我淘宝买的核心板是山寨芯片!

下载器连接芯片时,会先获取芯片ID,和 PACK 包里你选择的 Target 芯片 ID 进行比对,确认两者一致才会开始烧录工作。STM32F1 系列的 IDCODE 为 0x1B10477

keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第6张图片

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

keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第7张图片

也就难怪烧录不成功了。

3. 山寨芯片的型号是什么?

为了搞清这个问题,我把去搜寻报错信息 Connection refused due to device mismatch 几乎没有答案。后面从芯片ID入手,百度根本就找不到什么资料。最后我灵光一闪,直接搜索 IDCODE:0x2BA01477,终于在CSDN上找到了一篇文章 Warn : UNEXPECTED idcode: 0x2ba01477 明确指出了芯片为国产仿制版本 CS32F103C8T6。keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第8张图片

但由于开发环境不同,文章中所指出的解决办法并不适用与 keil5。得到了芯片信号,自然是先找到数据手册。

  • 百度搜索如下

keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第9张图片

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

keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第10张图片

根据丝印显示,得知是 CKS 中科芯 公司的产品,但在其官网上却找不到任何资料。但在百度上找到了 cks32f103keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第11张图片

由此可知,这两款芯片就是同一个产品。数据手册链接,由此确认,山寨 STM32F103C8T6 的芯片就是 CKS32F103C8T6。同时在CSDN找到了 CSKF103C8T6 的 PACK 包 CKS32F103C8T6最小系统板调试记录——SWD下载,下载安装一气呵成。

4. 解决办法

最终在 采购网站,找到了此款芯片与 ST 公司的区别,由于其内核使用的不一样,导致芯片内核 ID 不同,无法下载。image-20210127163848692

安装完上述的 Keil5 PACK 包后,在Target 一栏选择芯片型号keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第12张图片

打开 Debug 工具栏,接入 Settings ➡ Flash Download,可以看见烧录算法已经改变。

keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第13张图片

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

keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第14张图片

结语

结果这次事件,让我看见了国产 ARM 芯片的百花齐放。5款国产ARM芯片(对标stm32f103c8t6)测试评估。

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

keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第15张图片

keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第16张图片
keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法_第17张图片

可以看到相比较与烧录器上的芯片,核心板上的芯片的丝印显得那么模糊,那么不明显。

如何鉴别芯片是否为山寨的?

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

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

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

你可能感兴趣的:(学习,stm32)