STM32单片机?假货or国产芯片?

1.引言

        当前,有国产单片机打着跟stm32单片机一样的丝印,竟然可以直接刷STM32单片机的程序,国产单片机用自己厂家开发的pack包编写的代码,也可以烧录到STM32单片机中。

2.研究过程

为了开发某些功能,从淘宝上购买了两块带有某些功能的单片机开发板。

        使用STM32CubeMX专用代码生成工具生成测试程序,打算做一个CAN通信功能测试,一开始根据板子的接口特点,做了个满配输出(CAN、串口、IIC、USB、输入、输出、外部晶振、FreeRtos等),但是我无意中发现,本次生成的代码运转不起来,然后我进行Debug,程序始终在下图代码位置停着不往下执行。为了排除是我生成代码过于复杂造成的影响,我选择重新生成一个代码,新生成的代码仅需要开通swd下载功能,点亮板载LED灯,可是无论使用外部晶振还是内部晶振,板子始终停留在下图中的位置。

        多次研究cube界面内容,同时结合近1年来对cube的使用经验,我并没有发现Clock或PinOut & Configuration参数配置上有任何不正常的地方。这个问题困扰了好久。

        最终在第二天我即将放弃时,曾经考虑是板子晶振还是其他什么器件因为时间久了或静电导致异常。为此,我拿其他产品中用到的板子,做了一个下载测试,竟然发现单片机能够正常运行,反过来这个开发板仍然不能够运行。从外观看,板子上没有明显的器件损坏迹象,首先考虑到让同事帮忙更换一个F103的单片机试一试,结果,更换之后刷入程序,竟然发现在这个板子上能够正常运行了。真可笑。

        更换芯片之前对芯片的IDCODE查询做了个截图保留证据,下图是不能正常运行的板子查询到的IDCODE编号:0x2BA01477

下图是更换单片机芯片后,能正常运行的板子查询到的IDCODE编号:0x1BA01477

从网络上搜集有关识别STM32真假芯片的资料,但因为证据不足,不能即可断定手中的芯片就是假的。但找到如下截图来自网络论坛对ID编号的一个讨论:

        由此可以暂时理解为,只要是STM32正品,都是以1开头的ID,以2开头的都是国产芯片。

        国产芯片的外观有的直接标的国产厂商丝印(非STM32),有的会仿造STM32的丝印(从丝印几乎看不出是国产芯片)。

        根据网络上查询到的资料,IDCODE以2开头的可能是CS32单片机(中科芯),沿着这个线索,继续在网络上找到了CS32单片机的pack包,并下载下来安装到PC上。然后,从安装后的对应目录里找到例程,拷贝出来,稍作修改,增加LED运行指示灯部分、编译、烧录,发现这个暂时保留国产芯片的单片机开发板竟然可以正常运行,同时烧录到更换正品单片机的开发板上,也能看到程序能够正常运转。

3.扩展

        由此,我们联想到之前有个项目,采购来一拼设备,上面的单片机型号是:APM32F103VET6,我们之前一直以为如果想改线这个型号单片机的程序,需要研究国产单片机的资料,重新写程序。所以都拆下来扔了,然后更换了STM32单片机。

手头还有一个库存件没有更换单片机,我拿出来查询了一下IDCODE,竟然也是0x2BA01477,然后把之前的STM32单片机程序(非CubeMX生成)烧录进去,试了一下,也能正常运转。

4.结论

由上,我联想到,这两个国产单片机厂家的芯片,都是跟STM32PIN到PIN兼容的,而且是代码兼容的(前提是非CubeMX生成)。

在网上看到别人的文章提到,作为技术人员,可以在开发的时候用原装STM32单片机进行开发,量产的时候,直接用国产芯片,这样开发生产两不误。(真是天才的想法啊)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值