
作者:阿甘,排版:晓宇
微信公众号:创易栈(ID:emakerzone)
导语
今天上班,我正在全神贯注的修改着BUG,突然听到连续的高跟鞋声,声音越来越近,而且脚步声非常熟悉,我就知道,万恶的产品经理过来了,肯定没好事。
果不其然,她直接甩下一份联络函,晓宇啊,这边有个新的需求,是这样子的,我们出给不同国家的板子,不同的硬件版本,要可以分别针对性进行升级哦
我去,为什么不让软件去做啊,转念一想,还好有关注芯片之家公众号,好像有介绍过一篇硬件版本管理的办法 
工程开发中,版本管理是必不可少的部分,软件的版本管理非常方便,在代码中插入版本信息,目标文件重新再命名一下就搞定了。但是硬件的版本管理就麻烦很多了,因此很多公司(主要是小公司)基本就忽略了硬件的版本管理。这给后续的升级和维护带来了极大的不方便。
一、 硬件版本管理的优点
产品进行硬件版本管理,有以下的优点:
1. 可以方便进行质量跟踪,历史问题追溯,从而更新换代,优化升级;
2. 软件可以针对性的升级,可以通过硬件的版本区分软件功能或者是不同的客户。
二、 四种硬件版本管理的实现原理
1. 通过上下拉电阻配置实现
如下图1 所示,CPU通过读取外部的配置电阻上拉还是下拉,决定当前的硬件版本(PCB和bom的版本可以分别配置),例如四个下拉电阻全部焊接,四个上拉电阻全部不焊接,CPU四个IO引脚读取到的值为0000,当前的版本就是V0版本。
图1 :上下拉电阻模式
2. 通过I2C扩展GPIO实现
如下图2 所示,有时候设计者选用的CPU的GPIO引脚不够用,又有io扩展芯片的情况下下,可以使用以下的方法,通过I2C扩展GPIO引脚的方式,读取硬件的版本信息,实现的原理和方法1一样。
图2 :I2C扩展GPIO+上下拉电阻模式
3. 通过AD采样电压实现
如下图3 所示,有时候设计者选用的CPU的GPIO引脚不够用,但是AD引脚有多余的情形,这是就没有必要通过方法2的实现方式(扩展芯片约增加数元的成本)。通过配置R1和R2电阻的不同阻值,可以设置AD引脚不同的电压。例如可以设置0.5V为一个台阶,3.3V约可以设置6个不同的版本,举例:R1=1K,R2=2K。Vad=2.2V,对应的硬件版本为V04。
图3 :AD采样实现硬件版本管理
4. 通过烧写Flash实现
在Flash中,专门开辟一小段存储空间,在产品生产阶段,通过生产的工装设备将硬件的版本信息保存在该存储空间,这段存储空间设置成只读,不允许写,避免误操作导致硬件版本信息丢失。
图4 :Flash记录硬件版本管理
三、 四种硬件版本管理方法的优劣势
以下分别介绍四种硬件版本管理方法的优劣势,并将其进行对比。以供读者方便选择。
(1) GPIO上下拉方式
优点:
成本低廉,只需要数个电阻,成本不过几分钱。软件只需读取IO电平,实现简单。
缺点:
上下拉的 方式占用过多的GPIO引脚,如果PCB和bom同时都需要版本管理,数量将会更多,例如一个V00~V07的PCB和bom的版本管理,至少需要6个GPIO,严重浪费了的cpu的IO引脚。
(2) I2C扩展GPIO方式
优点:
解决了CPU的GPIO引脚数量不够的问题,软件实现也比较简单。
缺点:
I2C扩展芯片的成本约0.5~2元人民币,增加了整机的成本。
(3) AD电压采样的方式
优点:
最低只需要一个AD采样引脚就可以实现硬件版本的管理。如果CPU自带并且有多余的AD引脚,只需要2个电阻,成本非常低。
缺点:
AD引脚一般也是CPU的紧缺资源,部分CPU可能没有AD采样引脚,该方法通用性不高。
(4) Flash 保存的方法
优点:
Flash保存硬件版本的成本最低,硬件几乎没有成本,也不占用CPU的资源,版本信息 占用的存储空间几乎可以忽略不计。
缺点:
Flash保存可靠性是最大的问题,例如Flash损坏,软件升级擦写Flash,电磁干扰导致等原因,导致Flash中的数据丢失,则硬件版本的信息也会丢失
四、总结
通过介绍上述的四种硬件版本信息的管理方法,设计者应该从可靠性和成本方面考虑。第一优选,如果GPIO引脚够用,优先推荐通过GPIO上下拉配置的方法。第二优选,如果CPU有多余的AD引脚,则可以采用AD采用的方法。第三优选,可以通过I2C扩展GPIO的方式。最后再考虑通过Flash保存硬件版本信息的的方式。
推荐阅读
▼
电子漫画系列,更新九张图片。
【最强干货】618个3D封装免费分享
【干货第二波】一大波3D封装免费分享
贴片电容国内外品牌
DC-DC电源芯片国内外品牌大汇总
几毛钱的32768晶振,这也能写出一篇干货?
车牌识别控制板原理图+PCB+3D齐全无私分享
【视觉盛宴】你没见过的电子元器件的另一面!
完全由C编写,高度可移植,超级牛逼的菜单架构!
【视频】老外教你三极管和MOS管的通电效应,我就不信还有不懂的!




