整理:MilerShao 最近因为平衡车市场的突然火爆加上某些商业特色,使得STM32F103RC芯片需求量骤然增加,导致缺货严重。因为缺货,可谓有人欢喜有人愁。这些”人”包括相关产品的芯片原始供应商;各级中级代理及贸易商,当然包括那些冲锋陷阵在前的业务员;还有就是各级终端用户,开发商和生产商。 因为该芯片的紧张和价格飙升,不论平衡车客户还是非平衡车客户,有部分客户想到或被人推荐使用STM32F103RC的兼容型号来应付。这个过程中还是可能会遇到些问题,趁机一起交流下ST MCU兼容性话题。 所谓电子芯片的兼容,没法说出精准的概念,毕竟兼容一词意义本身蕴含模糊。大致意思就是功能接近、性能大体一致,不同型号或款式间具备较好的替换性。 整体上讲ST MCU各系列间的兼容性是非常好的,在业界算是做得很不错了。具体体现硬件和软件两方面。硬件主要在管脚的兼容性、存储器的安排、内部硬件结构等。软件方面体现在各系列都有参考固件库,各寄存器的定义具有很高的一致性,与芯片基本特征有关的定义或声明往往只需做些宏定义的调整或开关选择,基本的外设相关操作都封装成C函数,用户多数时候只需直接调用。不同型号间的软件移植时只需要做差异性的小范围调整,有些子系列间的型号变更移植时可能不需要任何调整,同一电路和代码随意替换。 
以STM32为例,它目前有9各系列,不但各系列内部不同型号有很强的兼容性,而且夸系列间也有很强的兼容性,比方STM32F1系列与STM32F3系列,STM32F2系列与STM32F4系列。对于同一系列,往往可能会分出几个子序列,子系列间整体上管脚的兼容方面一般是没什么问题,但内部资源除了存储容量大小差别外,可能还有些细微差异,在兼容替换时可能需要做些小调整。这里以STM32F103RC的相关替换实例作为开始,用几个具体案例来分享交流下,旨在做些提醒。 1、一日某生产平衡车的客户电话我,说目前STM32F103RC缺货,有业务建议他使用STM32F105替换。业务跟他说是兼容的,可以互换。 
可当客户把之前STM32F103RC的机器码写入STM32F105RC时,设备根本不工作。说实话,在103RC供货紧张且价格飙升时考虑用105替换是个好建议。 二者管脚上没有啥问题,完全兼容。不过,二者虽然属同一F1系列,但属于不同子系列,内部资源略有差异,二者在RCC及中断矢量表这些地方是有差异的,不排除这些差异导致产品功能的差异。软件上可能需要做些调整。把基于103rc的工程项目改为基于32f105的工程项目做些调试确认。 遗憾的是,这个客户说他根本没有源代码,只有机器码。这也算最近平衡车市场的一特色。既然这样,建议他还是找103RC。 2、一日某非平衡车客户,跟我交流。本来一直用32F103RC做产品应用,最近103RC突然缺货且价格高,为了应付生产,无赖之下也是被人建议使用32F105RC来做替换。但当他把103的工程修改为105的工程编译后生成的执行文件烧进32F105芯片后,发现别的功能都好,USB功能不行了。 他问我STM32F105是不是支持USB功能不好。幸好这个客户跟上面客户不一样,软硬件都是自己开发的。我说不是105的USB功能支持得不好,而是相比103RC,105RC的USB功能更全了,它内置USB OTG模块。103RC只能单纯做USB DEVICE,而105RC内置USB OTG模块,可以扮演HOST或DEVICE双角色,具体到这里,得把相关软件代码做些调整让其工作DEVICE模式。否则直接搬过来就用不了。 3、继续举个跟103/105有关的案例,不过这次就不扯到平衡车了。 记得有个客户开发产品,开始是用STM32F105RC,还编写了IAP程序。产品量产出货一段时间后因产品功能调整取消了CAN通信,其它功能基本不变,于是想到同系列兼容型号103C8。客户稍作修改调整后,发现一个奇怪的问题。把之前基于105的代码移植到103C8后,做IAP升级时,基本上每颗芯片的第一次IAP升级没问题,以后就总是失败。升级成功后芯片功能倒也正常。 结果发现问题就是出在IAP相关擦写FLASH的函数,最根本的原因是103C8与105RC内部FLASH 页大小有差异,那相关擦除函数参数会有差异。具体细节这里不延伸了。 4、还记得曾有个远方客户,在使用STM32F4系列新品开发产品,在做不同脚位的芯片移植时,好像是100脚与144脚间芯片移植,由于忽视了某个接地脚的正确处理,导致连烧近20快板后才发现真正原因。刚开始一直想当然的锁定在供货物料上的问题。
5、上面说的都是跟STM32有关的案例。再说个STM8芯片移植的案例来结尾。 某深圳客户用8S103开发某电子产品。突然有一天,他跟我说有人建议他使用8S003,听人说是一模一样而且价格更便宜。我了解他的产品,产品要用到8S103的UID作为其无线编码应用。我跟他强调了8S003与103的差别,003是不保证带UID的。建议它不要投机取巧。自己的产品稳定、一致才是硬道理。 总之,兼容只是可以无限接近相同或一致,但往往并不能打等号。上面的具体案例只是些友情提醒。所以在做具体的兼容型号移植时最好多了解下差异,另外必须做样品或小批量的验证测试。在结合技术手册的基础上,以验证测试为准,满足你产品要求的就是合适的。 |