当前位置:首页 > > 嵌入式微处理器
[导读]最近,嵌入式ARM分享一篇《GD32也开始假货泛滥了》文章,嵌入式ARM的老友StrongerHuang也表示其技术交流群正在讨论芯片涨价和咸鱼上卖芯片的话题,并撰写了一文揭露了背景和识别翻新假货的方法。



最近,嵌入式ARM分享一篇GD32也开始假货泛滥了》文章,嵌入式ARM的老友StrongerHuang也表示其技术交流群正在讨论芯片涨价咸鱼上卖芯片的话题,并撰写了一文揭露了背景和识别翻新假货的方法。特此转载供大家参考。

1 芯片涨价背景
前两年的中美毛衣战,使国内一些技术型大企业受到了影响,比如华为。但是绝大部分电子相关的企业,受到的影响很小。
2020年,一场疫情,导致了一些半导体企业受到很大打击,比如工人罢工。
然后,一些原材料价格开始出现了不同程度的上涨,特别是今年初开始,很多金属、塑料等绝大部分原材料价格都上涨了,小到电阻电容,大到电视冰箱等消费电子产品,都出现了不同程度的涨价。

(图片来源网络,侵删)


芯片亦如此,我们熟知的MCU价格出现了不同程度的涨价,相信大家都知道了,特别是STM32部分型号价格甚至翻了好几倍。
在这种涨价潮的背景下,必定存在一些不良商家,然后,出现假货的概率就增加了。

2

STM32/GD32翻新或假货
STM32/GD32翻新或假货这个问题,有经验的工程师可能遇到过,包括我之前就遇到过,把GD32标志擦除,然后搞成STM32,还有从旧板子上拆下来的翻新STM32。
下面就来说说芯片翻新或假货的一些情况:
1.擦除标志
芯片擦除标志这种做法很常见,包括我们有时候开发的产品,为了防止别人山寨,也可能将芯片表面的标志擦除,以起到防止被人山寨的作用。
一些商家就会利用这种“狸猫换太子”的手段来牟利,一些兼容的芯片,比如早期我就知道很多STM32就是用GD32假冒的。
2.虚假型号
STM32内部Flash实际大小可能与型号不匹配,比如:STM32F103RF标准容量为768K,但Flash实际不止768K。

由此延伸出话题:你的STM32芯片FLASH容量真如ST官方选型手册那样吗?

1先说点其它

一般对于初学者来说,内部FLASH完全足够,跑一个简单的裸机Demo,或者一个RTOS加上两个任务的Demo,对于现在的MCU完全没有压力。
但是,一旦你接触到实际项目,你会发现很多地方都会开支FLASH,而且有些项目占用FLASH还不小。比如:某种特定算法,加载字库,甚至放两张图片在FLASH里面。
再拿一个IAP应用编程的例子来说:一般对升级这个功能做的好一点的,会有一块区域(备份区域)与应用程序差不多大小的FLASH区域。就是说:为了保证安全,你程序下载保存在一个备份区域,等下载成功再更新应用程序。 这样做的目的:就是防止在下载的时候中途掉线,导致失败
找了一个图,大致如下,将FLASH划分为3个区域(引导程序FLASH区域、应用程序FLASH区域、备份程序FLASH区域),你们琢磨一下。



2STM32芯片选型
一般我们项目提出需求之后,都会选择一款合适的MCU,首先想到的就是查看【选型手册】,除了选择外设资源之外,还有就是选择适合的FLASH容量大小。STM32产品命令规则如下:


3验证STM32内部FLASH究竟有多大

说了关于FLASH的一些话题,回来说说本文的重点:我们的STM32内部FLASH可能不止上面选型手册说的那么大一点
比如:我的MCU芯片具体型号为STM32F103RF,查看手册可以知道其容量为768K,但实际它有1M的FLASH容量。

我这里大概说两点简单验证的方法:
1.通过编程验证

简单来说就是通过擦除,写入,读取指定地址(就是超过FLASH大小的地址)。
FLASH_EraseSector
FLASH_ProgramWord
2.通过工具读取FLASH数据
这个办法是最直接,也是最简单的办法。拿STM32 ST-LINK Utility这个下载工具来举例说明:

重点其实都在图中描述出来了:超过768K地址,实际上还可以读出来数据的
(上图是我拿STM32F103RF真实MCU读出来的,应用程序起始地址就是0x080C0000,应用程序实际也运行起来了)
说了这么多,其实我想说的是:STM32芯片有许多也是类似,不止我上面举例的STM32F103RF,103RC标称的是256K,其实不止256K空间。如果你发现你FLASH空间不足了,通过上面方法可以看看是否不止那么大的空间。
3.翻新为原装正品 这种在某宝上最常见,那种看起来价格便宜,你零售买几个也发货这种十有八九都是翻新芯片。
翻新芯片,你买回来,可能写一个LED流水灯测试一下没有问题。但是,你上项目之后,特别是要求外设比较多,功能又复杂一点的项目,可能很快就原形毕露了。
运气不好,可能会出现以下几种情况:
  • 软件通宵加班数日无果,甩锅硬件;
  • 硬件飞线各种测试,换一块芯片解决问题;
  • 软件和硬件工程师干一架;

······
所以,现在市面上出现很多假货,或者有问题的芯片不足为奇,包括嵌入式ARM说的“GD32也开始假货泛滥了”,我觉得肯定存在。

3 识别翻新或假货

识别STM32/GD32翻新或假货,常规的操作就是先焊接在PCB板(或在工装夹具),上电看是否正常,如果出现发烫、电流过大、甚至冒烟等情况,要注意了。
然后读取一下芯片信息,比如Flash容量,UID信息、选项字节等。
这里分享之前的文章:关于STM32的这几个寄存器,你知道吗?
读取的具体方式如下:

1Flash容量寄存器

1.通过读寄存器
在STM32的“参考手册”中有Flash size data register这么一个寄存器(一般在手册最后),明确写了寄存器的基地址。
提示:不同芯片型号,可能这个寄存器地址不同。比如F103的基地址为:0x1FFFF7E0。


是一个16位的数值,出厂写入,程序只能读取。读取方法很简单,可以如下:
uint16_t Flash_size;
Flash_size = *(uint16_t *)0x1FFFF7E0;
2.通过STM32 ST-LINK Utility直接读取
通过ST-Link连接芯片,直接读取,可以看到容量信息:

2UID寄存器
之前有人问我,可以通过STM32的UID来加密吗? 这个肯定是可以的。
但又问了我一个问题,我不希望读取全部(96位),可以只读取部分寄存器来作为标识吗?读取的部分会不会重复?
STM32的UID唯一标识符适用于
  • 用来作为序列号。
  • 用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性。
  • 用来激活带安全机制的自举过程。
STM32的UID共有96位(32 x 3)。所有,就有朋友,我是否可以只读取其中某一部分来作为唯一识别?
这个问题,严格来说,不可以。但如果不是特别严格,还是可以。因为这个UID是通过晶元、分批等来进行编号的。如果你买同一批次,你会发现那个编号可能连续。


我之前曾读取过几块生产的板卡(购买得_MCU是同一批次),芯片的UID是连续的,感兴趣的可以试试。

所以,通过读取部分UID来作为标识,只能说不严格的情况是可以的

3 寄存器偏移地址

现在还有许多初学的朋友在学习底层的一些知识,比如前面就有朋友想自己通过寄存器来编程,但是却不知道什么是寄存器基地址,什么是寄存器偏移地址。
1.基地址
每一个片内外设都有一个对应的基地址,而且是由厂商决定我们不能修改。如下图:

在程序中,你会发现和上面对应的代码:

2.偏移地址
偏移地址就是在基地址基础上偏移(一般是以4字节增加),比如TIM定时器的偏移地址:

同样,在程序中对应的代码通过结构体实现偏移:

关于基地址和偏移地址,不管是标准外设库还是HAL库,都是上面所示那种基地址+偏移的方法实现。
还是之前多次在文章中提到的,想要了解寄存器原理,或者通过寄存器来实现的朋友,最好参考“标准外设库”例程。HAL库封装的相对复杂,不适合研究最底层寄存器。
再进一步验证,写入数据(RAM、Flash)测试、各种外设基本功能测试等。

4 建议正规渠道

买到假货或山寨货,付出的代价是很大的,前期开发阶段现了问题都还好,就怕批量生产之后才发现问题。
更可怕的是,大批量出货,产品在客户手里因为芯片假货出现问题的情况。
今天交流群里有人在讨论咸鱼上卖芯片的情况,我觉得,咸鱼买芯片来玩玩可以,做产品最好慎重。
比如淘宝搜出来十多元的STM32还是进口原装正品,你信吗?

正规渠道买的芯片,都还存在一定概率是芯片自身的问题,更别说咸鱼这种平台了。 我之前就遇到过,从正规且比较大的代理商买的STM32,出现了问题,FAE多次到公司都没找出问题,最后拿回原厂解剖芯片,发现真的是芯片自身的问题。
所以,不要因为便宜就从淘宝、咸鱼上购买芯片,建议走正规渠道。否则,可能会付出很大代价。

END

来源:StrongerHuang,作者:StrongerHuang
版权归原作者所有,如有侵权,请联系删除。





免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!


嵌入式ARM

扫描二维码,关注更多精彩内容

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭