24小时联系电话:18217114652、13661815404
中文
技术专题
微控制器简介
微控制器简介
几乎每个电子产品都需要某种“大脑”来控制各种产品功能。但是什么“大脑”最适合您的特定硬件产品?
首先确定您是否需要微控制器单元 (MCU)或微处理器单元 (MPU)。几乎所有的电子产品都使用这两种处理器芯片中的一种,有些产品两者都使用。
您的产品是否复杂,需要处理大量数据?您的产品是否需要 Android 或 Linux 等操作系统?如果是这样,那么您可能需要使用微处理器。
或者您的产品是否适度简单,不需要高速处理或操作系统?然后,您很可能会使用微控制器。微控制器是集成在单个微芯片上的相当简单的计算机。
该单芯片将包含中央处理单元 (CPU)、内存和其他外围设备。与微处理器相比,将所有内容集成在单个芯片上大大简化了微控制器的设计。
您通常会看到用于描述具有高度集成度的微芯片(例如微控制器)的片上系统 (SoC)一词。
下表总结了微控制器和微处理器之间的主要区别:
微控制器 |
微处理器 |
|
设计复杂性 |
低的 |
高的 |
时钟速度 |
慢 |
快速地 |
操作系统 |
不 |
是的 |
处理速度 |
低的 |
高的 |
能量消耗 |
低的 |
高的 |
记忆 |
小/内部 |
大型/外部 |
输入/输出引脚 |
是的 |
不 |
位数 |
8-32 位 |
32-64 位 |
成本 |
低的 |
高的 |
表 1 – 微控制器与微处理器的比较
Arduino是最流行的基于微控制器的开发套件。大多数可用的 Arduino 模型都基于 8 位 Atmel AVR 微控制器。
图 1 – Arduino 开发套件
Raspberry Pi是基于微处理器的开发平台的一个示例。它是一个完整的计算机系统,运行先进的 Linux 操作系统。您可以连接键盘和显示器以像使用任何其他计算机一样使用 Raspberry Pi。
图 2 – Raspberry Pi 开发平台
设计基于定制微处理器的电路比使用微控制器设计复杂许多倍。微处理器将具有位于微处理器芯片本身外部的高速 RAM 存储器。这需要对连接这些高速信号的 PCB 进行非常仔细的布局。
微处理器以更高的时钟速度运行,这增加了很多复杂性。例如,Raspberry Pi 3 基于运行频率为 1200 MHz 的 64 位四核处理器,而大多数 Arduino 版本基于运行频率仅为 16 MHz 的 8 位处理器
由于它们的高速时钟,微处理器更有可能导致不受欢迎的射频传输问题,从而使 FCC 认证复杂化。
由于这些原因,如果您的产品需要微处理器,那么最好使用预先认证的模块解决方案。它们被称为CPU 模块或SOM(模块上的系统)。
另一方面,大多数基于微控制器的设计都足够简单,可以使用片上系统 (SoC)解决方案。
在大多数情况下,微控制器 SoC 解决方案的成本将比微处理器 SoM 解决方案低一个数量级。一个微控制器 SoC 的成本可以低至一美元,而一个超高性能微处理器 SoM(例如,Nvidia Jetson TX2)将花费数百美元。
常见的微控制器特性
在为您的产品选择微控制器之前,您应该创建一个框图,显示整个系统所需的所有各种功能。框图是我所说的产品预设计的一部分。我总是建议从预设计开始,这样您就可以在开始设计实际原理图之前看到更大的图景。
什么需要连接到微控制器?他们需要什么通信协议?需要多少个通用输入/输出 (GPIO) 引脚?需要多少个通信端口?
图 3 – 框图示例
在选择微控制器之前,您需要这些信息。有数以千计的微控制器可用。您不想选择一款性能或功能超过您的产品所需的产品。这样做只会不必要地使您的产品设计复杂化。
另一方面,您也不希望用太有限的微控制器来限制自己。您可能希望在未来添加新的产品功能,因此您需要一个微控制器,以便在必要时为您提供一点成长空间。
让我们更详细地了解微控制器上最常见的功能和外设:
内存类型
RAM 和闪存已内置于大多数微控制器中。RAM 内存用于临时数据存储。RAM 被认为是易失性存储器,因为一旦电源关闭它就会丢失其内容。
FLASH 是非易失性存储器。即使关闭电源,它仍会保留其内容。FLASH 主要用于存储程序(称为固件)。
EEPROM(电可擦除只读存储器)也是非易失性存储器,但它通常用于存储少量数据,例如配置和可变状态。EEPROM 的优点是允许按字节擦除,而闪存仅允许擦除整个字节块或页面。
数字输入/输出 (GPIO)
微控制器上的数字输入和输出称为通用输入输出或 GPIO。GPIO 引脚是用于输入或输出的逻辑电平引脚(高或低)。它们通常可以驱动高达几十毫安的负载。
请记住,通常需要某种外部驱动电路来减轻驱动要求。此外,加在一起的所有引脚必须低于允许的最大总电流。
在决定使用哪些引脚时,请务必查阅数据表,因为某些引脚上没有许多内部功能。您还必须遵守特定的映射限制。
映射是指设置哪些引脚服务于哪些功能。微控制器上的大多数引脚具有多种可能的功能,可为硬件设计人员提供最大的灵活性。
模拟输入和输出
除了数字 I/O,大多数微控制器还可以精确测量模拟电压,有些还具有输出精确模拟电压的能力。
模拟电压由微控制器使用称为模数转换器 (ADC) 的嵌入式专用电路进行测量。
从微控制器输出模拟电压有两种方法。最精确但更复杂的方法是使用数模转换器 (DAC) 电路。有许多微控制器包含用于此目的的内置 DAC,但许多微控制器没有。
大多数微控制器上可用的第二种方法是使用脉宽调制 (PWM) 发生器。PWM 是一种在高电平和低电平之间振荡的数字信号。微控制器能够控制由固件程序确定的该信号高的时间百分比。
PWM 信号然后可以通过一个低通滤波器将其转换为模拟电压。通过控制 PWM 信号高与低的时间百分比,您可以准确地控制滤波器输出侧的模拟电压电平。
通用异步接收器发送器 (UART)
今天仍在微控制器中使用的最古老的串行通信方法称为 UART。UART 自 1970 年代初就已存在。顾名思义,UART是一种异步协议,意味着没有时钟信号来同步信号时序。UART 的最简单形式仅使用两条信号线:接收 (RX) 和发送 (TX)。
同步通信支持更快的数据传输速率。异步通信必须向数据添加同步位。发送这些额外的同步位会增加开销,因此会降低有效的数据传输速率。
同步通信的缺点是它需要额外的时钟信号线。它还需要主/从配置,因为主设备必须是生成时钟信号的设备。
就个人而言,出于显而易见的原因,我不喜欢术语master和slave。令我惊讶的是,这些术语仍然普遍使用。但是,主/从确实是描述此类通信的常用工程术语。
UART 通常与其他标准(例如 RS-232 或 RS-485)结合使用,以实现更远距离的外部串行通信。一些微控制器也提供称为 USART 的同步 UART。
串行外设接口 (SPI)
SPI 是一种同步通信协议。它通常比 UART 或 I2C 接口快得多。SPI 是一种全双工通信标准,这意味着它可以同时发送和接收数据。与 UART 一样,SPI 仅用于短距离通信,这在大多数情况下意味着同一 PCB 上的芯片之间。
SPI 由 4 条线组成,或者实际上是 3 条线加上每个外围设备的一条线。SPI 信号是 MISO(主入从出)和 MOSI(主出从入)、SCLK(串行时钟)和 SS(从选择)。可以将多个外围设备连接到微控制器的 SPI 端口,但一次只能选择一个设备。
SPI 的主要优点是它的数据传输速度更快。SPI 的主要缺点是需要 4 条信号线,而 UART 和 I2C 只需要 2 条信号线。
内部集成电路 (I2C)
I2C 是一种同步串行总线协议,用于同一板上组件之间的串行通信。I2C 的主要优点是它只需要两根线,是同步的,并且与 UART 或 SPI 不同,I2C 是一种总线协议。
成为真正的总线意味着 I2C 允许多个设备连接到相同的两条线。I2C 与 SPI 的从选择信号不同,它为每个设备使用唯一的地址。这一事实极大地简化了板载信号路由。
与 SPI 一样,I2C 使用时钟信号来同步通信。但是,与 SPI 不同的是,I2C 只是半双工,因此它对数据输入和数据输出使用单个信号。I2C 不能同时在两个方向发送数据。
这种简单性的代价是 I2C 比 SPI 慢得多。因此 I2C 主要用于连接不需要高数据传输速度的两个组件。它特别适用于连接传感器(相对较慢)。
通用串行总线 (USB)
您以前显然听说过 USB,因为这种串行通信协议是如此通用。USB 是大多数微控制器上可用的最快的串行通信协议。它通常用于在外围设备之间传输大量数据。
USB 有多种速度可供选择,因此请确保您选择的微控制器具有 USB 端口,该端口具有您的应用所需的数据传输速率。
与我们讨论过的用于短距离板载通信的其他串行协议不同,USB 设计用于与外部外围设备进行长距离通信。
USB 是一种主/从协议。主机(主)可以向设备(从)传输数据,主机可以从设备读取数据。关键是主机总是发起通信,外围设备只响应。
由于主机启动和管理所有通信,因此 USB 主机比 USB 设备更复杂。提供内置 USB 通信的微控制器只能用作外围设备,而 PC 通常用作主机。这种严格定义的主/从关系要求任何 USB 电缆不对称,两端具有不同的连接器以识别主机。
称为 USB On-The-Go (OTG) 的更新标准允许主/主机和从/设备交换角色。因此,带有 USB OTG 端口的微控制器既可以用作 USB 设备,也可以用作 USB 主机。只有更高端的微控制器才会提供 USB OTG。
控制器局域网 (CAN)
CAN 是一种串行通信标准,仅用于汽车应用。
如果您的产品不适用于汽车,那么您的微控制器上将不需要 CAN 端口。只有部分微控制器包含 CAN 端口。
在电路编程 (ISP)
对微控制器进行编程有两种广泛的方法:电路内或电路外。
通过在线编程 (ISP),微控制器在插入完整电路后进行编程。这几乎总是开发过程中的理想方法,因为它允许您编程和快速测试所有内容。JTAG 和 SWD 是最常用的 ISP 协议。
另一种选择是在将微控制器芯片插入整个系统之前对其进行单独编程。这在开发过程中很少有意义,但有时对于生产来说是可取的。
无线接口
您的产品是否需要无线功能?您可以购买包括蓝牙、ZigBee、Wi-Fi 等在内的专用微控制器。蓝牙低功耗微控制器尤其常见。
在大多数情况下,最好从任何无线功能的预认证模块开始。无线设计可能很复杂,需要更昂贵的 FCC 认证。因此,模块是一种风险较低、价格更实惠的选择。
微控制器内核
让我们仔细看看一些比较知名的微控制器内核:
ARM Cortex-M
ARM Cortex-M 微控制器功能强大、广受欢迎且价格实惠。事实上,Cortex-M 微控制器在今天可能比任何其他微控制器更多地用于产品中。
ARM实际上并不制造微控制器,而是将其架构授权给其他芯片制造商。
ARM Cortex-M 是一种 32 位架构,比一般的 8 位微控制器要强大得多。事实上,Cortex-M 实现的处理速度可与某些微处理器相媲美。当您需要大量内存时,需要 32 位微控制器。
基于 ARM Cortex-M 架构的微控制器可从众多公司获得多种版本,包括 ST Microelectronics、Silicon Labs、Microchip Technology、Freescale、NXP、Cypress、Maxim Integrated、Analog Devices 和 Texas Instruments。
我最喜欢的 ARM Cortex-M 微控制器系列是ST Microelectronics的 STM32 系列。该STM32线是巨大的,可以细分为STM32F STM32L和系列。STM32F 系列优先考虑性能和/或成本,而 STM32L 系列优先考虑便携式应用的低功耗。
图 4 – 基于 STM32 微控制器的开发平台
性能最高的模型是 STM32F7,它每秒能够处理 10 亿条命令!这种处理速度接近许多微处理器的处理速度。另一方面,STM32L0 每秒仅处理 2600 万条命令,但耗电量明显低于 STM32F7。
最后,与一些公司(如高通)不同的是,意法半导体为初创公司和小公司提供了出色的技术支持。他们甚至会提供使用他们产品的任何电路设计的设计审查。
8051
英特尔在 1980 年开发了 8 位 8051 微控制器,它仍然存在,并且应用相当广泛。至少有八家不同的半导体制造商销售 8051 的现代版本。
图 5 – 8051 微控制器示例
在大多数情况下,8051 仅适用于对成本非常敏感的最简单类型的产品。
爱特梅尔 AVR
大多数版本的 Arduino 使用来自 Atmel(现在由 Microchip Technology 拥有)的 AVR 系列微控制器。这可以更轻松地从 Arduino 过渡到 Atmel AVR 微控制器。Atmel AVR微控制器有 8 位和 32 位两种版本。
图 6 – Atmel AVR 微控制器
Atmel AVR 是一款非常适合创客和爱好者的控制器系列,特别是考虑到它们为 Arduino 提供动力。
PIC
Microchip Technology生产名为 PIC 的流行微控制器系列。它们可根据您的需要提供多种选项,包括 8 位、16 位和 32 位版本。您可以从无数的引脚、封装样式和片上外设组合中进行选择。
图 7 – Microchip 的 PIC 微控制器系列有多种版本
与 Atmel AVR 系列微控制器一样,PIC 控制器非常受电子爱好者和制造商的欢迎。如果您的产品需要低成本的 8 位或 16 位,甚至 32 位控制器,那么 PIC 微控制器可能是一个不错的低成本选择。
设计电源
电源电路是硬件设计中最关键的部分之一。尝试尽早定义您的接地和电源布局。
微控制器的电流消耗由时钟频率、工作电压和 I/O 引脚上的负载决定。
为确保微控制器具有良好、干净的电源电压,您必须在其电源引脚旁边放置去耦电容器。
包含模拟输入和/或模拟输出的微控制器将具有专门用于模拟的不同电源和接地引脚。对于这些模拟电源引脚来说,彻底清除所有噪声尤为重要,因为任何噪声都会降低精度。与模拟信号相比,数字信号对噪声的容忍度更高。
包括一个与模拟电源引脚串联的电感器以创建 LC(电感器-电容器)滤波器通常是一个好主意。它将滤除电源线上的任何高频噪声。
如果您的电源电压高于微控制器的最大电源电压,那么您将需要使用降压稳压器。如果电压差很小,那么线性稳压器可能是最好的。
例如,如果您的产品使用3.7V锂电池,而微控制器最高只能工作到3V,那么低压差线性稳压器(通常称为LDO)是最佳选择。
但是,如果电源电压明显高于微控制器的最大电源电压,那么您应该使用开关稳压器(也称为降压转换器)来降低电压。
例如,如果您的产品使用 12VDC 电源,而您的微控制器只能处理高达 3V 的电压,那么您可能需要使用开关稳压器
如果线性稳压器的输入电源电压远高于输出电压,则它们的效率非常低,并且会以热量的形式耗散过多的功率。
请注意,在使用开关稳压器时,最好使用线性稳压器对开关稳压器的输出电压进行再调节。线性稳压器提供更干净的电压,没有噪声和开关瞬变。在微控制器上使用模拟 I/O 时,线性稳压器尤其重要。
时钟
任何微控制器(或微处理器)都需要精确的时钟进行计时。大多数微控制器可以使用外部或内部时钟。对于精确计时应用,外部晶振是最佳选择。
对于不需要精确时序的应用,使用内部时钟将简化电路设计。
在为晶振进行 PCB 布局时,请务必仔细遵循数据表中指定的布局指南。走线应尽可能短,晶体上的负载电容必须符合制造商的建议。