PCBA(Printed Circuit Board Assembly)是指将电子元器件安装在印刷电路板(PCB)上,形成一个完整的电子产品的过程。PCBA是电子行业的基础,几乎所有的电子设备都是由PCBA组成的。PCBA的质量和性能直接影响了电子产品的寿命,速度,稳定性和可靠性。
PCBA的设计和制造是一个复杂的过程,需要经过多次的修改和优化,才能达到最佳的效果。因此,对PCBA进行版本管理是非常必要的,以便于区分不同的设计阶段,追踪问题和改进,匹配软件功能和客户需求等。
PCBA的版本管理可以帮助开发者和维护者更好地控制和管理PCBA的生命周期。
PCBA的版本管理有多种方式,本文将介绍其中的六种,分别是:
GPIO上下拉电阻方式
I2C扩展GPIO方式
AD采样电压方式
Flash保存方式
EEPROM保存方式
OTP保存方式
GPIO上下拉电阻方式
这种方式是利用CPU的GPIO(General Purpose Input Output)引脚,通过连接不同的上下拉电阻,来表示不同的PCBA版本。例如,如图1所示,如果有四个GPIO引脚,那么可以表示16种不同的版本,从0000到1111,分别对应V0到V15。CPU只需要读取GPIO引脚的电平,就可以知道当前的PCBA版本。
这种方式的优点是:
1、成本低,只需要几个电阻,几分钱就可以搞定。
2、实现简单,只需要读取GPIO电平即可。
这种方式的缺点是:
1、占用了CPU的GPIO资源,如果需要同时管理PCB和BOM(Bill of Materials)的版本,那么需要更多的GPIO引脚。例如,如果要表示8种PCB版本和8种BOM版本,那么至少需要6个GPIO引脚,这对于GPIO紧张的CPU来说是一种浪费。
2、需要注意电阻的选取,避免产生过大的漏电流或者电平不稳定的问题。
I2C扩展GPIO方式
这种方式是利用一个I2C(Inter-Integrated Circuit)扩展芯片,来增加GPIO的数量,从而实现PCBA版本管理。例如,如图2所示,如果使用一个8位的I2C扩展芯片,那么可以表示256种不同的版本,从00000000到11111111,分别对应V0到V255。CPU只需要通过I2C总线读取扩展芯片的寄存器,就可以知道当前的PCBA版本。
这种方式的优点是:
1、解决了GPIO资源不足的问题,可以表示更多的PCBA版本。
2、实现也不复杂,只需要通过I2C通信即可。
这种方式的缺点是:
1、增加了硬件成本,I2C扩展芯片的价格大约在0.5到2元之间,对于低成本的产品来说是一笔不小的开支。
2、需要注意I2C总线的速度和稳定性,避免产生通信错误或者干扰。
AD采样电压方式
这种方式是利用CPU的AD(Analog to Digital)引脚,通过连接一个分压电路,来产生不同的电压值,从而表示不同的PCBA版本。例如,如图3所示,如果使用一个3.3V的电源,那么可以通过调节R1和R2的阻值,来产生不同的电压值,例如0.5V,1V,1.5V等。CPU只需要通过AD采样,就可以知道当前的PCBA版本。
这种方式的优点是:
1、只需要一个AD引脚,就可以实现PCBA版本管理,如果CPU有多余的AD引脚,那么只需要两个电阻,成本非常低。
2、可以通过调节电阻的阻值,来灵活地设置不同的电压范围,表示更多的PCBA版本。
这种方式的缺点是:
1、AD引脚不是每个CPU都有的,而且也是比较稀缺的资源,如果CPU没有AD引脚,或者AD引脚已经被其他功能占用,那么这种方式就不适用。
2、需要注意电压的精度和稳定性,避免误差和干扰。
Flash保存方式
这种方式是利用Flash(Flash Memory)中预留一段存储空间,来保存PCBA版本的信息。例如,如图4所示,可以在Flash的某个地址,写入一个字节的数据,来表示PCBA版本。CPU只需要读取Flash的数据,就可以知道当前的PCBA版本。
这种方式的优点是:
1、硬件成本几乎为零,也不占用CPU的任何资源,版本信息占用的Flash空间也可以忽略不计。
2、可以通过软件的方式,来灵活地设置和修改PCBA版本,不需要修改硬件电路。
这种方式的缺点是:
1、可靠性是最大的问题,如果Flash损坏,软件升级擦写Flash,电磁干扰等原因,导致Flash中的数据丢失,那么PCBA版本的信息也会丢失。
2、需要设置成只读,不允许写,避免误操作。
EEPROM保存方式
这种方式是利用EEPROM(Electrically Erasable Programmable Read-Only Memory)中预留一段存储空间,来保存PCBA版本的信息。例如,如图5所示,可以在EEPROM的某个地址,写入一个字节的数据,来表示PCBA版本。CPU只需要通过I2C或者SPI等总线,读取EEPROM的数据,就可以知道当前的PCBA版本。
这种方式的优点是:
1、硬件成本较低,EEPROM的价格大约在0.1到0.5元之间,也不占用CPU的太多资源,只需要一个I2C或者SPI总线即可。
2、可以通过软件的方式,来灵活地设置和修改PCBA版本,不需要修改硬件电路。
3、可靠性较高,EEPROM的数据可以多次擦写,不易丢失,也不受电磁干扰的影响。
这种方式的缺点是:
1、需要注意EEPROM的写入次数,避免超过其寿命,导致数据损坏。
2、需要注意EEPROM的速度和稳定性,避免产生通信错误或者干扰。
OTP保存方式
这种方式是利用OTP(One Time Programmable)芯片,来保存PCBA版本的信息。例如,如图6所示,可以在OTP芯片的某个地址,写入一个字节的数据,来表示PCBA版本。CPU只需要通过I2C或者SPI等总线,读取OTP芯片中的信息。
这种方式的优点是:
1、硬件成本低,OTP芯片的价格大约在0.01到0.1元之间,也不占用CPU的太多资源,只需要一个I2C或者SPI总线即可。
2、可靠性最高,OTP芯片的数据只能写入一次,不会丢失,也不受电磁干扰的影响。
这种方式的缺点是:
1、不灵活,OTP芯片的数据一旦写入,就不能修改,如果PCBA版本有变更,就需要更换OTP芯片,或者使用其他方式来表示新的版本。
2、需要注意OTP芯片的速度和稳定性,避免产生通信错误或者干扰。
总结
本文介绍了六种通过软件来识别PCBA硬件版本的方式,分别是GPIO上下拉电阻方式,I2C扩展GPIO方式,AD采样电压方式,Flash保存方式,EEPROM保存方式,和OTP保存方式。
这六种方式各有优缺点,设计者应该根据自己的产品特点和需求,选择合适的方式。一般来说,如果GPIO引脚足够,推荐使用GPIO上下拉电阻方式;如果CPU有多余的AD引脚,推荐使用AD采样电压方式;如果GPIO和AD都不够,可以考虑使用I2C扩展GPIO方式或者EEPROM保存方式;最后再考虑使用Flash保存方式或者OTP保存方式。
通过软件来识别PCBA硬件版本,可以帮助开发者和维护者更好地控制和管理PCBA的生命周期。
技巧 #1 – 使用 GPIO 对 PCB 版本进行硬编码
第一个技术是如何使用微控制器上的 GPIO 线来提供可读的 PCB 版本号。几乎每一个 PCB 都会在 PCB 丝印上标注硬件版本号,但系统软件无法像人类那样读取丝印。硬件在版本之间可能会有很大变化,确保某个软件版本在特定硬件上运行至关重要。为此,软件需要能够直接从 PCB 读取硬件版本号,以确保它在兼容的硬件上运行。
对硬件进行版本控制的常用方法是使用一些备用 GPIO 线作为专用硬件版本号。每条 GPIO 线可以拉到 VCC(代表 1)或接地(代表 0)。如果使用二进制表示,两个 GPIO 将提供最多四个版本,而三个 GPIO 将提供八个版本,如下所示:
软件启动时,可以初始化GPIO线,然后读取PCB版本号,判断软件是否支持硬件。如果一切正常,则该软件将运行该应用程序。
不过,使用 GPIO 线有一些问题。首先,微控制器上必须有空闲的 GPIO 线。如果设计密集或使用低引脚数微控制器,则可能没有两个或三个 GPIO 线可用于版本控制。其次,我们需要确保用于将 GPIO 线拉高或拉低的电阻器的尺寸大致相同,这样我们最终不会产生大的泄漏电流。第三,在制造板子时,嵌入式开发人员需要验证版本号是否已正确更新,以免由于制造错误而导致板子版本号错误。
技巧#2——使用模数转换器到硬代码版本
并非所有系统都有两个或三个可用的空闲 GPIO 线。对 PCB 进行版本控制的另一种解决方案是利用免费的模数 (ADC) 通道。ADC 通道的电压范围通常为 0 至 3.3 伏(尽管有些可能为 0 – 1.7 或 0 – 5.0),我们可以将其分解为不同的电压范围以表示不同的电路板版本。例如,一个标准的 12 位 ADC 通道的范围为 0 – 4095,我们可以将其分成八个不同的版本,如下所示:
目标是创建一个电阻梯形电路,其中梯形的中点连接到 ADC 引脚。应选择电阻器的值,使其落在我们范围的中点范围内。例如,版本一应选择产生约 0.206 电压的电阻器,对应于约 256 个计数。当电路板的第 2 版准备就绪时,梯形电阻器会更新以产生约 0.618 的电压,对应于约 768 个计数。当系统启动时,软件会读取模拟电压,然后确定 PCB 的版本以及软件是否与该硬件版本兼容。
现在在使用 ADC 版本控制方案时有几点需要考虑。首先,你可以通过简单地调整范围轻松地将这个系统扩展到八个以上的版本。这比必须添加额外的 GPIO 引脚才能达到更高的版本号要好。第二,就像GPIO技术一样,需要适当选择电阻值,以最大限度地降低漏电流。最小化此电流的一种方法是让 GPIO 线为 VCC 供电,以便在不需要时可以关闭版本电路。虽然这确实需要使用一个额外的引脚,但对于低功耗系统可以节省宝贵的泄漏电流。第三,你需要选择精度高的元件,1%或更好,并且在产品的生命周期内不会出现太大的降额。这将防止第 1 版硬件在 5 年或 10 年内突然变成第 2 版或第 3 版。
结论
正如我们在文章中看到的那样,嵌入式开发开发人员可以通过几种不同的方式对硬件进行版本控制,以便软件可以验证它们是否在已知的硬件版本上运行,这可以防止硬件/软件不匹配,并确保系统本身可以验证其配置是否正确。
标签:方式,引脚,硬件,PCBA,版本,GPIO,识别,CPU From: https://www.cnblogs.com/xiuxing2008/p/17980655