Arduino、微处理器和微控制器之间有什么区别?我正在尝试确定最适合操作廉价电阻式触摸屏的方法。
Arduino vs 微处理器 vs 微控制器
微处理器:
通常在台式 PC 或笔记本电脑中找到,包含一个 CPU 和一个外部存储器接口以及各种 I/O 总线以连接到外部世界,如 SPI、I2C、UART、USB、LCD 等。微处理器还将有一个外部晶体来提供时钟。
大多数微处理器在芯片上没有只读存储器;相反,主板上有一个外部芯片,初始引导代码所在的位置。在基于 Intel 的 PC 上,这称为基本输入/输出系统(BIOS),除了初始引导代码之外,它还包含 I/O 例程。引导代码首先执行开机自检(POST),然后查看在何处加载下一阶段的引导代码——从硬盘驱动器、CD(或过去)软盘。这个二级引导然后加载操作系统。(在某些系统中甚至可能存在三个级别的引导代码。)
一些微处理器(通常是针对智能手机和平板电脑的,具有有限的启动选项)具有少量包含初始启动代码的只读存储器。
我将引导代码称为只读;实际上在某些系统上,它可以更新。然而,这是相当冒险的;如果出现问题,系统可能不再启动。
与从只读存储器执行程序的微控制器不同,在启动微处理器后,将程序加载到外部 RAM 并从那里执行。
微控制器:
另一方面是一个独立的单芯片 IC,它包含一个 CPU、用于存储程序的只读存储器、用于存储程序执行中使用的变量的 RAM,以及用于连接外部世界的各种 I/O 总线,例如如 SPI、I2C、UART 等。如果不通过 PC 的外部接口对其进行编程,它本身就无法执行任何程序。微控制器可能还需要外部晶振来提供时钟,但有些微控制器具有内部时钟。
一些微控制器(如 Microchip 的 PIC32)有两段闪存;一个用于保存初始化(引导)代码,另一个用于存储应用程序。这使得就地更新应用程序代码变得更加容易。
出于您的目的,您可能希望使用微控制器,而不是微处理器。要使用微控制器,您要么必须设计自己的板,要么购买某种开发板。
一个阿杜诺:
就是这样一个板,包含一个微控制器,典型的 8 位 AVR,如 ATmega8、ATmega168、ATmega328、ATmega1280 和 ATmega2560,加上电源、晶体和与各种外围板接口的母头。
这些外围板被称为屏蔽,设计为相互堆叠(板底部有公针连接到 Arduino 本身或另一个屏蔽,顶部有母头以接受公针一个盾牌堆在它上面)。
示例屏蔽是电机控制板、通用 I/O 板、继电器板、以太网板和 LCD,通常带有触摸屏。但是,我不知道任何仅用于检测的电阻式触摸屏(没有 LCD)。
除了上述硬件之外,Arduino 还附带了一个用 Java 编写的跨平台集成开发环境 (IDE)。它旨在向艺术家和其他初学者介绍编程,就像 50 年前的 BASIC 语言一样。Arduino 的程序称为草图。
Arduino 程序是用 C 或 C++ 编写的,但是许多细节对用户是隐藏的:只需要定义两个函数(由系统调用)来制作一个不断循环的程序(通常用于嵌入式程序)
setup(): a function run once at startup that performs initialization
loop(): a function called repeatedly until the board powers off
IDE 附带一个名为“Wiring”的软件库,可用于常见的输入/输出操作。
阿杜诺
Arduino 是包含 Atmel AVR 微控制器的 PCB,通常以标准模式提供一组连接器。微控制器通常使用“引导加载程序”程序进行预编程,该程序允许通过 TTY 串行连接(或通过 USB 连接的虚拟串行连接)将程序(称为“草图”)从 PC 加载到微控制器中。
微处理器
微处理器是仅包含中央处理单元 (CPU) 的 IC。该 IC 不包含 RAM、ROM 或其他外围设备。IC 可能包含高速缓存存储器,但它并非设计为在没有任何外部存储器的情况下可用。
微处理器不能在内部存储程序,因此通常在通电时加载软件,这通常涉及复杂的多阶段“引导”过程,其中“固件”从外部 ROM 加载,最终操作系统从其他存储介质(例如硬盘)加载)。
它通常存在于个人计算机中。
微控制器
微控制器是包含 CPU 以及一定数量或 RAM、ROM 和其他外围设备的 IC。微控制器可以在没有外部存储器或存储的情况下运行。
通常,微控制器要么在焊接到 PCB 之前进行编程,要么通过连接到个人计算机的特殊“编程器”设备使用系统内编程(ISP 或 ICSP)连接器进行编程。
典型的微控制器比典型的微处理器更简单、更慢,但我相信区别主要在于规模和应用。
例如,它存在于简单的电器中,例如基本洗衣机。
“Arduino”是一个软件开发环境,是软件环境可以为其开发程序的几个微控制器板中的任何一个。大多数电路板使用 Atmel AVR 微控制器。
Arduino 是一个基于微控制器的平台(用于 UNO 的 ATMEGA 328)。一般来说,微控制器比微处理器更适合任何需要感测输入的东西。这是因为像 ATMEGA 328 这样的微控制器具有模数转换器 (ADC) 来检测电压,并且还具有 PWM 输出和数字 I/O。
使用 Arduino,您还拥有 Arduino Dev 系统,该系统更容易为新手编程,并且拥有良好的支持和库社区。
电阻式触摸屏的行为类似于电位器;一个用于 x,一个用于 y。因此,您可以将它们放入 Arduino 模拟输入中。详情请看这里。
另一种选择是使用类似的东西转换为 SPI 或 I2C ,并使用 Arduino 读取。
无论哪种方式,我认为 Arduino 都是一个不错的选择。