如何知道 8 位 MCU 是否足够或需要 16 位 MCU?

电器工程 微控制器 图片
2022-01-26 20:17:13

16 位微控制器比 8 位更强大,而 32 位则完全不同。话虽如此,虽然我们可以决定应用程序所需的外围设备并尝试找到最便宜(且易于使用,即工具链)的替代方案,但如何知道是否应将 8 位微控制器用于应用程序还是 16 位的还是 32 位的?

我确实了解它们之间的差异,因此我将以不同的方式提出问题。

假设我有一个应用程序,其中我将有一个用于显示位图图像的 LCD 显示器、一个 16 键盘、蜂鸣器、温度和湿度传感器以及鼠标输入。一个高端的 8 位微控制器可以轻松地实时完成所有这些事情。现在,如果我转向彩色 LCD 显示器,那么我可能需要一个 32 位微控制器,它可以足够快地更新彩色显示器并拥有更多内存。但是,我可能只有在项目中尝试过之后才发现我的高端 8 位微控制器很弱。

那么,在我们开始进行该项目之前,我们如何知道该项目需要什么尺寸和功能强大的微控制器?

4个回答

通常,关于微控制器的决定是以下之间的平衡:

  1. 特殊功能(例如低功耗)
  2. 开发时间。
  3. 生产中的商品成本。

如果较短的开发时间比商品成本更重要,那么选择更强大的控制器。您可以稍后将成本优化作为一个单独的阶段进行。过早的成本优化 [原文如此] 通常会破坏项目。

如果您已经处于成本优化阶段,那么您可以从工作产品开始。早期的非优化版本作为优化版本的原型。早期版本清除了需求。

相关:如何选择MCU平台?

在我们开始进行该项目之前,我们如何知道该项目需要什么尺寸和功能强大的微控制器?

你不能知道。这是一个大问题。如果您选择的微控制器太小,您可能会耗尽资源(内存/引脚/寄存器/其他功能),并且很难准确估计这些资源,直到为时已晚。但是,如果您选择的微控制器太大,您就需要为未使用的资源付费,这会增加系统成本。

有时您可以有根据地猜测您的应用程序需要多少各种资源……例如,如果您正在进行 FFT 计算,您可以计算出样本所需的确切内存量。但是,在软件编写完成之前,要可靠地确定软件需要多少目标代码空间就更难了。

避免代码内存不足的一个很好的对冲方法是选择一个可在多个不同价格/性能点上扩展的微控制器系列。这是ARMMicrochip PICAtmel AVR和其他可扩展微型计算机的一大卖点。在开发软件时,您可以从较大的开发系统转移到较小的目标系统,从而降低最终产品成本。

可扩展意味着该系列中的所有微控制器(大部分)具有相同的指令集和(大部分)相同的寄存器。因此,为一个人编写的软件将适用于同一个家庭的另一个人。(Microchip PIC 代码不会在 ARM 上运行,但如果您学习 PIC14,则很容易向下移动到 PIC12 或向上移动到 PIC16。)

如果您只构建一次性原型,而不是完整的生产产品线,那么您最好的选择是坚持使用比您认为需要的稍大但有增长空间的开发系统。

一个重要因素是最常用变量的大小。如果您主要使用 8 位变量,并且只需要访问 8 位端口,那么您可能可以使用 8 位 MCU。

但是,如果您有很多 16 位变量,甚至只有几个 32 位长变量,那么您将需要查看 16 位(甚至 32 位)MCU,因为使用 16 位变量访问一个 8 位 MCU 需要大量的代码。

如果您要使用任何浮点变量,我强烈建议您使用 16 位或 32 位 MCU。

即使您没有时间编写需要使用的大量代码,我建议您提前编写一些代码并为您可能使用的任何微控制器进行编译。大多数微控制器制造商都有免费版本的编译器,可能会受到输出文件大小或优化量的限制。

理想情况下,在设计新电路板之前,您可以使用开发板(或任何市售电路板)或以前项目中的剩余电路板进行概念验证项目。