为什么在 Arduino 中使用 AVR?

电器工程 手臂 avr 飞思卡尔 Arduino
2022-01-19 05:11:36

为什么 Arduino 使用 AVR?我知道它们是官方处理器,但除了成本之外,没有理由不能将代码移植到 ARM 或飞思卡尔架构,对吧?只要有板载内存,我认为可以轻松迁移到这些部分。

我在行业中看到了很多 ARM(似乎每个供应商都在将其推入他们的设计中),并且想知道为什么 Arduino 开发人员世界没有更多的采用。

4个回答

有没有人关心你正在开发什么?

是和不是。我一直在为特定项目开发 AVR32,与例如 PIC32 相比,开发环境(特别是编译/程序/调试周期)是可怕的。

客户不关心,除了成本和维护,对于类似 arduino 的系统,程序员不会关心,因为 arduino 环境和开发周期比当前的 AVR32 设置好得多。

我只是想知道,因为 Arduino 家族中有如此强大的 AVR 队伍。我知道它们是官方处理器,但除了成本之外,没有理由不能将代码移植到 ARM 或飞思卡尔架构,对吧?只要有板载内存,我认为可以轻松迁移到这些部分。

没有理由不能使用其他处理器,但他们选择低端 8 位设备而不是 ARM、MIPS、PowerPC 等设备有一个很好的理由:易于使用。

如果您查看过低端武器的设置,它比 8 位处理器复杂一个数量级(内存映射、缓存等)。但更重要的是 - 当时没有 DIP 臂处理器,这些处理器是供艺术家和黑客使用和构建的,不一定是对 48 针 TQFP 感到满意的电子技术人员和工程师。

选择 AVR 而不是 PIC 的原因是 PIC 并没有真正具有广泛使用的、开源的、免费的 C 编译器等(SDCC 端口不成熟)。

我在行业中看到了很多 ARM(似乎每个供应商都在将其推向他们的设计),并且想知道为什么 Arduino 开发人员世界没有更多的采用。想法?

主要是因为易于使用 - 复杂性、易于焊接、成本以及不需要太多的事实。开发人员喜欢拥有强大功能的想法,但归根结底,当您需要做的只是移动一些伺服系统并使用低端 FFT 闪烁一些灯时,8 位处理器就可以了。

即使是 28 引脚封装的低端皮质 ARMS 仍然是 SOIC,而不是 DIP。

所以 AVR 具有所有正确的功能:

  • 易于焊接
  • 通过世界各地的邮购很容易获得
  • 免费的 GCC C 编译器
  • 易于理解处理器和外围设备的设置和使用
  • 便宜的
  • 无处不在 - AVR 家族周围有很多人和经验

在很大程度上这仍然是正确的——我不知道 ARM 采用 dip 格式,而且适配器使它比 AVR 贵得多。在大多数情况下,制造商并不认为 DIP 封装的 32 位处理器会非常有利可图。

由于您似乎在投票征求意见,这是我的 0.02 美元。无论我是在使用 ARM 还是 AVR 确实很重要(因此,我很在意),主要取决于我正在尝试做的事情。在某些用例中,AVR 是有意义的,而在 ARM 中也有。一般来说,在 AVR 和 PIC 之间也需要权衡取舍。

首先,虽然我可能会因为这样说而惹上麻烦,但“Arduino 家族中的强大队伍”是少数人。我遇到的大多数 arduino 人(用户)都愿意像对待他们的硬件一样对待他们的硬件,他们会编写一个 python 脚本来做一些有趣的事情,通常对所涉及的复杂性的理解程度低于他们当他们做 "from numpy import foo" 时会有。虽然 Arduino 的做事方式有一些优点,但也有很多批评的余地。

我认为除了 Arduino 生态系统之外,看看 AVR 是值得的。Arduino 团队也从使 AVR 成为业余爱好者的事实上的标准的原因中受益匪浅 - 甚至在 arduino 出现之前,它就已经越来越多地从 PIC 手中接手。AVR 的直接竞争对手将是 PIC,并且在一定程度上是 MSP430,这主要是由于 TI 的大力营销推动以及其补贴工具。

生态系统

正如其他答案中提到的那样,AVR 是一个使用免费工具从零到 hello world 的干净、标准化方式的家庭。avr-gcc 端口,构成 winavr 工具链的部分,大量具有不同复杂性和功能但仍受 avrdude 支持的权威约束的程序员原理图,使得它比处理工具链更容易。

PIC 的生态系统是一场噩梦,有任意数量的编译器、编程工具、汇编器等等。他们中的许多人彼此不兼容。他们中的大多数是有偿的。并非所有人都很好。更重要的是,没有一个事实上的标准。免费/开源替代品(例如,SDCC)还有很多不足之处,但更重要的是,它们未能像 avr-gcc 和公司一样获得事实上的标准地位。即使软件工具链已经解决,您至少也必须投资于某种程序员。PICkit 可能只需要 20 美元左右,但是当您必须弄清楚如何在线购买时(信用卡、国际运输、外汇麻烦),对于爱好者来说,它可能会破坏交易。没有好的,

MSP430 稍微好一点,主要是因为它较新(至少在受欢迎程度方面) - 需要应对的噪音要少得多。TI 以我在其他任何地方都没有见过的效率为您提供 IC 样品。mspgcc 状况良好,甚至还有一个不难找到或设置的开源调试软件。但是,问题在于它不像 AVR 那样对爱好者友好。您仍然有程序员的问题,它比您购买 PIC 所需的要贵。3.3v 电源操作给习惯 5v Logic 的人设置了一个可感知的障碍。而且它不能在 DIP 中扩展 - 有低端的可用,但一旦你接触到更充实的芯片,就没有了。

便于使用

我认为,DIP 与 SMD 的区别比人们通常认为的更重要。DIP IC 可用于面包板、通用板,无论您居住的地方如何称呼它们,等等。SMD IC 必然需要制造运行,或购买适配器板,这些适配器板并不总是容易获得您想要的尺寸或形状。

数据表的质量、应用说明以及它们的可读性也很重要。爱特梅尔似乎在这方面做得更好。当然,这是一个非常主观的评价。

AVR 可以使用内部 RC,而 PIC 通常不使用。他们需要水晶,再加上缺乏信心,这使得它有点冒险。

与几年前的 PIC 相比,AVR 似乎对系统内编程更友好,尽管我很容易在那里犯错。

AVR 与 ARM

不过,您的问题与 AVR 与 ARM 有关。就像我一开始说的,AVR 和 ARM 在频谱中占据不同的空间。如果您可以使用 AVR 做一些事情,那么为什么要使用 ARM 来做呢?ARM 更昂贵,需要更多的零件数量,消耗更多的能源,编写更复杂的代码,需要更昂贵的制造工艺。焊接 100 引脚 TQFP 比焊接 40 引脚 DIP/SOIC 更昂贵,具体取决于您测量成本的方式。如果您正在大批量生产并使用与之友好的生产技术,这可能不成立,但如果您这样做,那么价格差异将变得更加引人注目,与更便宜的解决方案一起使用。

作为在家中进行一般黑客攻击或您拥有什么的首选控制器,我会说 AVR 更易于使用,因为:

  • 从业余爱好者的角度来看,更加标准化,我可以从互联网上重用更多的代码,因为没有太多的编译器变化,以及家庭成员之间的寄存器名称和 API 之间的变化。(尝试将 LPC ARM 代码移植到 ATMEL ARM 硬件,你会明白我的意思)
  • 代码本质上变得更加复杂(确实如此。真的)。
  • 工具链需要额外的工作来设置。
  • 使接口稍微容易一些。ARM 通常会将您降为 3v3 或 1v8 逻辑,从而使与其他玩具的接口略有问题。
  • 更便宜
  • 在我居住的地方,在当地的硬件商店购买 ARM 芯片并不是我的选择,而是购买 AVR。

Arm 开发正在进行中 - 看看以下项目。

枫叶

XDuino

科尔蒂诺

光明会

ARM PRO 系列

现在是 DIP 封装中的 ARM。

恩智浦LPC1114FN28

基本芯片

社区对 Arduino 感兴趣的部分原因是物理标准化。尽管物理布局很复杂,但通过包含标准化的扩展选项,Arduino 开发人员允许人们提出自己的解决方案。如果你想用另一个使用不同微控制器的板替换基本的 Arduino 板,你可以。IIRC,有人已经构建了一个使用 Arduino 外形的基于 PIC 的板。PIC Ardunio 板的外形尺寸不同,但在其他方面相似。)

Arduino 成功的另一个原因在于它的开放性——大多数基于 PIC 的微控制器都是封闭的。他们使用专有硬件实现,因此如果您想重新设计电路板以更好地适应特定空间,那么您就不走运了。他们使用定制固件和专有开发工具,因此,如果您有错误或想要扩展功能,那么您就不走运了。使用 Arduino,每一块拼图都是开放的:您可以在任何地方购买零件,根据需要重新排列它们,改进或修改固件和开发工具。您可以从简单的 Arduino IDE 开始,但您仍然可以随时切换到 C 或汇编。

就我个人而言,我喜欢 Arduino,因为它有很多“恰到好处”的东西:它不太贵,它没有被锁定在专有工具中,很容易上手,它有很多功能,而且它有一个庞大的用户社区,它继续扩展并做整洁的事情。