这是可能引起高度争议的主题之一。有很多不同的观点,不同的事情对不同的人很重要。我将尝试给出一个全面的答案,但要理解的是,总会有人不同意。只是明白那些不同意我的人是错的。(开玩笑。)
快速摘要:
这个答案将是一个漫长的答案,所以让我先总结一下。对于绝大多数人来说,最新的ARM Cortex-M0 / M3 / M4芯片为您提供了最佳的解决方案和最佳的功能。将这些32位MCU与8位和16位祖先(如PIC和MSP430)进行比较时,甚至是这样。M0的购买价格低于1美元/枚,M4的购买价格低于2美元/枚,因此,除了价格非常敏感的应用以外,ARM解决方案非常出色。M0的功率非常低,对大多数人来说应该足够好了。对于那些对功率非常敏感的人,MSP430可能仍然是一个更好的选择,但是即使对于这些应用,M0也是值得考虑的。
如果您对更深入的分析感兴趣,请继续阅读,否则可以立即停止阅读。
现在,我将研究每个区域并比较不同的MCU:
执行速度
当然,32位MCU将更快。它们往往具有更快的时钟速度,但是每个时钟都需要做更多的工作。像ARM Cortex-M4这样的MCU包含DSP处理指令,甚至可以在硬件中提供浮点支持。8位和16位CPU可以在32位数字上运行,但是这样做效率不高。这样做会迅速消耗CPU寄存器,CPU时钟周期和闪存来存储程序。
易于发展
在我看来,这是使用现代32位MCU的最有价值的原因-也是最未被重视的原因。首先让我将其与8位PIC进行比较。这是最坏的比较,但也最能说明我的观点。
较小的PIC基本上要求以汇编语言进行编程。没错,甚至8位PIC都有C编译器,但是这些编译器是免费的也可以是免费的。您无法获得既好又免费的编译器。编译器的免费版本的优缺点不如“ Pro”版本好。Pro版本约为1,000美元,仅支持一个系列的PIC芯片(8、16或32位芯片)。如果您想使用多个家庭,则必须另外花1,000美元购买另一本。编译器的“标准”版本进行了中等程度的优化,每个芯片系列的成本约为500美元。按照现代标准,8位PIC速度较慢,需要进行优化。
相比之下,有许多不错的免费的ARM MCU C编译器。存在限制时,这些限制通常是所支持的闪存的最大大小。在飞思卡尔Codewarrior工具上,此限制为128 KB。对于这个论坛上的大多数人来说,这已经足够了。
使用C编译器的优点是您不必费心(尽可能多)CPU内存映射的底层细节。在PIC上分页特别痛苦,如果可能的话,最好避免分页。另一个优点是,您不必担心在8位MCU上处理16位和32位数字(或在16位MCU上处理32位数字)的麻烦。尽管用汇编语言执行此操作并不困难,但是这在后面很痛苦并且容易出错。
还有其他运行良好的非ARM C编译器。MSP430编译器似乎做得不错。赛普拉斯的PSoC工具(尤其是PSoC1)存在故障。
平面记忆模型
分页RAM /寄存器/闪存的MCU只是愚蠢的。是的,我说的是8位PIC。哑巴,哑巴,哑巴。这让我非常不喜欢PIC,以至于我什至都没有去研究他们的新产品。(免责声明:这意味着可能会改进新的PIC,而我只是不知道。)
使用8位MCU,很难(但不是不可能)访问大于256字节的数据结构。使用16位MCU可以增加到64 KB或kword。使用高达4 GB的32位MCU。
一个好的C编译器可以对程序员(又名You)隐藏很多这种东西,但是即使那样,它仍然会影响程序的大小和执行速度。
有很多MCU应用程序都不会出现问题,但是当然还有很多其他应用程序会遇到问题。这主要是在RAM或闪存中需要多少数据(数组和结构)的问题。当然,随着CPU速度的提高,使用更大的数据结构的几率也会增加!
包装尺寸
一些小型PIC和其他8位MCU的封装非常小。6和8针!目前我所知道的最小的ARM Cortex-M0在QFN-28中。虽然QFN-28对于大多数人来说足够小,但对于所有人来说还不够小。
成本
最便宜的PIC大约是最便宜的ARM Cortex-M0的价格的三分之一。但这实际上是0.32美元对0.85美元。是的,价格差异对某些人很重要。但我认为,该网站上的大多数人都不关心这么小的成本差异。
同样,当将功能更强大的MCU与ARM Cortex-M0 / M3 / M4进行比较时,ARM Cortex通常“大致均匀”或排名靠前。考虑其他因素(易于开发,编译器成本等)时,ARM非常有吸引力。
第二摘要
我想真正的问题是:为什么不使用ARM Cortex-M0 / M3 / M4?当绝对成本至关重要时。当超低功耗至关重要时。需要最小包装尺寸时。当速度不重要时。但是对于绝大多数应用程序,这些都不适用,ARM是目前最好的解决方案。
鉴于成本低,除非有充分的理由不使用ARM Cortex,否则使用它是有意义的。与大多数其他MCU相比,它将允许更快,更轻松的开发时间,更少的麻烦和更大的设计余量。
还有其他一些非ARM Cortex 32位MCU,但是我也看不到它们有任何优势。使用标准CPU架构有很多优点,包括更好的开发工具和更快的技术创新。
当然,事情可以而且确实会改变。我说的是今天有效,但可能从现在起一年甚至一个月后都无效。自己做功课。