2版嵌入式硬件的技术

当涉及嵌入式系统版本控制时,我经常 立即开始考虑该软件。软件经常更改,并且 仔细管理这些更改至关重要,但是版本控制也是如此 硬件。少量的硬件更改可能会使每个版本的软件过时 硬件的变化。在今天的帖子中,我们将研究两个 对硬件进行版本控制的技术,这些技术也是软件可读的,因此 软件可以确保将其与兼容的硬件版本配对。

技术#1 –使用GPIO对PCB版本进行硬编码

我们要讨论的第一种技术是 使用微控制器上的GPIO线提供可读的PCB版本号。 我见过的几乎所有PCB都在PCB上放了硬件版本号 丝网印刷,但是系统软件无法像人类一样读取丝网印刷( 至少还没有)。硬件在版本之间可能会发生很大变化,并且可以 确保特定软件版本在特定硬件上运行至关重要。 为此,软件需要能够读取硬件版本 直接从PCB上编号以确保其兼容运行 hardware.

对硬件进行版本控制的常用方法是使用一些备用 GPIO线作为专用的硬件版本号。每条GPIO线可以是 拉到VCC(代表1)或接地(代表0)。如果是二进制 使用表示形式,两个GPIO最多可提供四个版本,而三个 GPIO将提供八个版本,如下所示:

GPIO 0 GPIO 1 GPIO 2
版本1 0 0 0
版本2 0 0 1
版本3 0 1 0
版本4 0 1 1
版本5 1 0 0
版本6 1 0 1
版本7 1 1 0
版本8 1 1 1

软件启动时,可以初始化GPIO线 然后读取PCB版本号并确定软件是否支持 硬件。如果一切正常,则该软件将运行该应用程序。

尽管有一些使用GPIO线的陷阱。第一, 微控制器上必须有免费的GPIO线。如果设计密集 或使用低引脚数微控制器,可能没有两个或三个GPIO 用于版本控制的行。其次,我们需要确保电阻 用于将GPIO线拉高或拉低的引脚的大小应近似,以便 我们最终不会产生大的泄漏电流。第三,当董事会是 制造后,我们需要验证版本号是否已正确更新,以便 由于制造原因,我们最终不会使用版本号错误的电路板 error.

技术2 –使用模数转换器来 Hard Code 版s

并非所有系统都会有两到三条空闲的GPIO线 可用。对PCB进行版本控制的另一种方法是利用免费版 模数(ADC)通道。 ADC通道的范围通常为0 到3.3伏(尽管有些可能为0 – 1.7或0 – 5.0),我们可以将其击穿 不同的电压范围代表不同的电路板版本。对于 例如,标准的12位ADC通道的范围是0 – 4095 可以分为八个不同的版本,如下所示:

ADC低 ADC高
版本1 0 512
版本2 513 1024
版本3 1025 1536
版本4 1537 2048
版本5 2049 2560
版本6 2561 3072
版本7 3073 3584
版本8 3584 4095

目的是创建一个电阻梯形电路,其中 梯形图的中点连接到ADC引脚。的值 电阻的选择应使其位于我们的中点范围内 范围。例如,版本1应该选择产生电压的电阻 〜0.206,相当于〜256个计数。当开发板的版本2是 准备就绪后,梯形电阻器将更新以产生约0.618的电压, 对应于〜768个计数。系统启动时,软件将读取 模拟电压,然后确定PCB的版本,以及是否 该软件与该硬件版本兼容。

现在使用ADC时需要考虑几点 版本控制方案。首先,您可以轻松地将该系统扩展到八个以上 只需调整范围即可获得版本。这比必须添加要好 其他GPIO引脚以达到更高的版本号。第二,就像 在GPIO技术中,电阻值需要为了适当地选择 使泄漏电流最小。最小化此电流的一种方法是使用GPIO 为VCC供电,以便版本电路可以在关闭时关闭 并不需要。虽然确实需要使用一个额外的引脚,但是对于 低功耗系统可以节省宝贵的泄漏电流。第三,你需要 选择价值高,精度为1%或更高且不会降额的组件 在整个产品生命周期中的损失太大。这将阻止版本1的硬件 在5或10的过程中突然变成了版本2或版本3 years.

结论

正如我们在今天的帖子中看到的,有几种不同的 开发人员对其硬件进行版本控制的方式,以便软件可以 验证它们是否在已知的硬件版本上运行。这样可以防止硬件 /软件不匹配,并确保系统本身可以验证 配置正确。我们已经看到至少有两种技术可以 使我们的PCB版本号可读。您选择的技术取决于 您的最终目标和目标应用程序。

6 thoughts 上 “2版嵌入式硬件的技术”

  1. You could use 1,0,hiZ as three possibilities instead of 2 per pin, then 2 pins would get you more combinations than 3 pins with 只要 1 and 0. The Z is detected by driving the line low, then input, then drive high, and finally input. Pin &板电容将最后一个驱动电平保持一会儿,并且当两个输入级看到不同的值时,将检测到hiZ条件。

  2. 如果CPU没有,另一个有用的技术’没有足够的可用GPIO,但有SPI总线正在使用74HC165串行发送转速信息。这对于选件模块也很有用,因为有足够的位来编码模块ID和硬件版本。

  3. 谢谢!请记住,选项2需要谨慎进行正确的BOM更改(以及确保安装了正确的电阻值)。同样,只要电压被记录下来,版本电压就不必是线性的(如果有人想使用通用或可用的电阻值)。

  4. 我们已经使用技术#2多年了,并且在官方文档中指定了用于每个版本级别的电阻。
    Because you 只要 need to check this 上 ce at power up, we usually then switch the A/D channel to some other analogue device like a thermistor.

  5. 我们在这里使用一种稍微不同的方案来进行硬件版本控制。控制器为ATxmega,可通过芯片制造过程中编程的一些独特信息对硬件进行指纹识别。然后,您必须‘only’保留一个数据库,该数据库将指纹与硬件版本相关联。由于我们确保跟踪所有组装的组件,因此我们无需付出额外的努力。指纹的读取是在组装板测试期间完成的。我们在整个QM系统中都使用指纹而不是序列号。
    市场上还有其他具有类似功能的控制器。
    您可以使用这些单线硬件ID芯片之一进行相同的操作。

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.