设为首页 加入收藏

TOP

微控制器实时操作系统实践4选择正确的MCU(一)
2023-07-23 13:25:35 】 浏览:87
Tags:时操作 MCU

4选择正确的MCU

本章是关于微控制器单元(MCU)选择的速成课程,主要针对那些没有深厚硬件背景的工程师。它并不试图成为一份详尽的清单,列出你在为新项目选择硬件时需要知道和考虑的一切。它确实提供了关于区分和选择MCU设备的许多因素的介绍。最后,你将了解足够多的关键考虑因素,以便有效地研究MCU并与团队中的硬件工程师讨论潜在的候选人。通过加强硬件/固件合作,并在第一时间为项目选择合适的MCU,你将避免硬件重新设计和进度延误。

我们将首先介绍为你的项目选择一个合适的MCU所要考虑的广泛因素。之后,我们将讨论不同开发硬件之间的权衡。对STM32系列进行简短的介绍,以显示供应商如何倾向于对其产品系列进行分组。在本章的最后,我们将比较几个以STM32 MCU为核心的不同开发板(dev board),以说明为什么我们要使用这样的开发板。

参考资料

MCU 考虑因素

选择微控制器本身而不是开发板时需要考虑一些因素。 假设该项目包含完全定制的电子产品,则对选择的确切 MCU 没有限制,就像您仅在开发板之间进行选择时一样。 学生和爱好者有时会人为地进一步限制自己,有时会忠于某些生态系统并且只从这些生态系统内的开发板(例如 Arduino 或 mBed)中进行选择。 虽然任何生态系统在本质上都没有错,但如果您无法考虑其他解决方案或无法理解每个硬件为特定项目带来的独特优势,您将无法成长为专业工程师。

核心考虑

  • 是否适合?
  • 能运行我所有的代码吗?
  • 成本是多少?
  • 是否容易获得?
物理尺寸

根据设计的不同,MCU的尺寸可能是一个重要的因素。如果你正在开发一个可穿戴或便携式设备,尺寸很可能是你的首要考虑因素。有时,预包装的MCU太大,设计者需要采用板载芯片(MCU的硅芯片直接粘合在印刷电路板(PCB)上,而不是放在单独的塑料包装中)。另一方面,大型的机架式设备往往有足够的空间容纳任何尺寸的MCU,以完成工作。

给那些有兴趣设计自己硬件的提示--包装类型将在PCB的复杂性以及组装的难易程度上起作用(特别是在原型设计阶段)。如果你的原型将被手工组装,任何鸥翼式封装,如四平盒(QFP),都是最容易的。在QFP之后,四平包无引线(QFN)封装仍然容易手工焊接。除非你是个焊接高手,否则一般最好不要手工组装球栅阵列(BGA)!

ROM

只读存储器(ROM Read-only memory)是同一个系列的MCU的相当大的区别因素,ROM大小与价格密切相关。根据一个产品系列中不同型号的数量,可能有多个MCU具有非常相似的外围设备。这些MCU很可能具有相同的物理尺寸,但却有明显不同的内存数量。如果你的应用对成本很敏感,但所需的ROM是未知的,可以考虑以下方法:

  • 选择一个MCU系列,在兼容的空间里提供多种闪存尺寸。
  • 从该系列中拥有最多ROM的MCU开始开发。这为增加功能提供了最大的灵活性。
  • 在知道最终的image尺寸后,可以在开始大规模生产前选择精确的MCU(具有较小的闪存尺寸)。

当采取这种方法时,你需要确保为未来的功能留下足够的空间,假设你的产品能够接受现场更新的固件。另外,一定要仔细检查不同型号的外设分配情况--针脚兼容并不总是意味着固件兼容!
所需的ROM数量差别很大,取决于有多少代码需要加载到设备上。如果你一直在使用8位MCU,那么当你转到32位架构(如ARM)时,你可能会感到非常惊讶。与8位架构相比,在32位架构上实现类似的程序将需要更多的闪存空间。好消息是,闪存的尺寸已经跟上了,所以几乎总是可以找到一个具有足够板载闪存的MCU来满足你的应用。将第三方库拉到你的代码库中,通常在闪存方面是相当昂贵的,所以如果你选择走这条路,就要注意了。

RAM

片上随机存取存储器(RAM random access memory)的数量是另一个需要考虑的因素--它通常会跟随特定设备的闪存数量。具有较大ROM的部件通常会有更多的RAM。需要大量RAM的几个例子是:需要大型数据缓冲区的数据处理、复杂的网络堆栈、用于通信的深层缓冲区、GUI(尤其是那些需要帧缓冲区的GUI),以及任何运行虚拟机的解释语言(即MicroPython和Lua)。

例如,假设你的应用程序需要一个高分辨率的显示器。如果显示器没有自己的帧缓冲器的板载控制器,你可能已经在外部RAM领域了。驱动这种类型的显示器所需的缓冲区大小可能会超过MCU上的可用RAM。另一方面,如果你正在建立简单的控制系统,只有有限的连接和用户界面能力,那么少量的RAM可能就是所需的全部。

另外,请注意FreeRTOS中的每个任务都需要它自己的堆栈(一般在Cortex-M端口上至少有512字节),所以如果需要大量的任务,将很容易快速利用几KB的RAM。

从固件工程师的角度来看,外部RAM似乎是免死金牌(谁不想把可用的RAM增加近一个数量级)--但所有这些功能都是有代价的。除非你的系统绝对需要它,否则最好避免在MCU的地址/数据总线上使用外部RAM。它需要额外的PCB空间,消耗更多的电力,并最终推高PCB和材料清单(BOM)的成本。由于长度调整的要求和所涉及的信号数量,在增加用于访问外部RAM的外部高速并行总线时,PCB布局会相当复杂。由于所有的高速信号,该设计也将更有可能发出EMI。尽管它提供了大量的空间,但外部RAM通常比板载RAM稍慢,这可能导致更复杂的链接器文件(如果某些功能有非常严格的时间限制)。其他值得考虑的因素包括正确设置RAM的时序参数和缓存一致性问题,如果你试图通过使用数据缓存来加速对外部RAM的访问(详情请参考进一步阅读部分)。

尽管有这么多的缺点,拥有外部RAM可以实现很多功能,比如在RAM中缓存整个固件镜像以便升级的能力,功能丰富的GUI框架,复杂的网络堆栈,以及复杂的信号处理技术。与其他任何要求一样,需要做出权衡。

CPU时钟

由于我们将讨论限制在具有相同底层架构的MCU上,因此具有更快的核心时钟速率的MCU将比具有较慢时钟速率的MCU更快地执行同一组纯软件功能。请注意前面声明中的关键词 "纯"--有时,有一些板载硬件外设可以对执行速度产生巨大的影响,而这与CPU时钟速率无关(例如Cortex-M4内核上的硬件浮点和DSP功能)。

另一件需要注意的事情是设备的绝对最大时钟速率与应用的实际时钟速率。例如,一些MCU的最大时钟频率与生成USB外设所需的内部48MHz时钟不兼容,因此,如果同时使用USB外设,它就不能以最大速度使用。

中断处理

在ARM Cortex-M系列中,中断处理都非常相似。所有器件都包括一个带有可重定位向量表的嵌套向量中断控制器(NVIC)和一个外部中断控制器(EXTI)。器件的具体考虑

首页 上一页 1 2 3 4 5 6 下一页 尾页 1/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇STM32F429 Discovery开发板应用:.. 下一篇CS5366电路原理图|Type-C转HDMI2...

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目