ESE模块1 微控制器基础知识
什么是微控制器?
微控制器最初是为了可以以低成本制造PC外围设备,如打印机而开发的。为了控制打印机所需的一切都被整合到一个芯片中,包括控制软件。当时这样的小型控制计算机被称为单片微型计算机。起初,这些产品只是大规模生产的产物。单片微型计算机解决方案的编程和制造非常耗费精力。但是一旦大规模生产,成本就会非常低廉。如今,微控制器解决方案的开发已经变得非常便宜,甚至值得考虑在小批量和单个应用中使用微控制器。
微控制器在单个芯片中包含所有必需的组件,以充当小型计算机:
- 算术单位
- 至少一个算术逻辑单元(ALU)
- 现在通常也是浮点块(FPU)
- 控制单元
- 程序存储器(现在主要是FLASH)
- 数据存储(通常为SRAM)
- 内部控制模块
- 计时器Timer
- 中断控制器
- 内部数据交换块
- 监控模块
- 输入模块
- 数字输入模块
- 模拟量输入模块
- 输出模块
- 数字量输出模块
- 模拟量输出模块
- 通讯模块
- 串行通信模块 (UART, SPI, …)
- 现场总线通讯模块 (CAN, I2C, …)
- 网络通讯模块(以太网)
- 有时是无线电通信模块 (Bluetooth, WiFi, NB-IoT, …)
- u.v.m.
由于微控制器具有作为小型完整计算机的能力,并且只需最少的电路成本即可立即执行复杂的控制和调节任务,因此使得微控制器成为理想的嵌入式系统。它通过传感器和执行器来执行其任务。在简单的嵌入式系统中,人机界面有时只是一个按钮和一个或几个LED,或者在物联网中是一个WiFi接口和智能手机作为用户界面。
为什么用微控制器解决任务?
为了阐明为什么选择微控制器解决方案,可以讨论以下两个对比方案。
方案1:
- 不带微控制器的离散金属探测器解决方案与带微控制器的等效解决方案相比
- 左边是PI金属探测器的离散型,右边是微控制器
- 微控制器解决方案具有相同的搜索性能
- 微控制器解决方案需要更少的组件
- 微控制器解决方案较低的材料成本
- 微控制器解决方案更小
- 微控制器解决方案更轻巧
- 微控制器解决方案提供各种搜索程序(智能)
方案2:
- 与使用微控制器扩展的单个解决方案相比,标准模块是现有PLC控制的扩展。解决方案是比较两个具有高采样率的模拟信号,并检测干扰和模式
- 左侧是用于通过两个附加模拟通道扩展PLC的标准模块,右侧是单个微控制器解决方案
- 标准模块的材料成本约为200欧元
- 单个解决方案的材料成本(3欧元的电子产品),标准的空外壳(5欧元)和生产成本(10小时),总计约208欧元
- 两个模块的软件成本大致相同(实现相同的算法)
- 标准模块,在PLC中处理大量数据,计算机负荷高,总线负荷高
- 单独的解决方案,在微控制器中处理大量数据,低计算机负载,低总线负载
- 标准模块,采样率最高5 kHz
- 单独的解决方案,最大采样率150 kHz
总结:
- 材料成本低
- 高性能
- 允许非常小的单个房间尺寸
- 合理的低系统成本,包括即使少量也可进行编程
- 最高的灵活性
- 通过独特的卖点获得更好的市场机会
- 特别适用于特殊应用,特殊情况
- 单个解决方案的合理成本,小批量的价格便宜,大批量更便宜
有哪些类型的微控制器?
第一个工业标准控制器是英特尔8051/52 8位控制器。这些控制器在市场上占据主导地位超过30年。随后出现了许多其他8位控制器系列的供应商,如Atmel的AVR和Microchip的PIC。在16位控制器的类别中,没有任何可用的架构能够成为工业标准。直到32位ARM架构出现,一个新的工业标准才形成。因此,我们可以区分以下几种微控制器类别:
- 经典的、简单的8位微控制器,采用旧的工业标准架构
- 现代的、易于编程且电气特性非常稳健的8位控制器
- 价格低廉且易于编程的16位控制器
- 来自各种制造商的多种性能等级的行业标准32位ARM微控制器
- 特殊的,通常昂贵的32位和64位高性能微控制器(例如,数字信号处理器,DSP)
目前,32位ARM微控制器已经涵盖了大多数8位和16位控制器的应用领域,价格和尺寸方面。一个小型的ARM Cortex M0+的价格不比一个8位控制器贵,而且也可以在小型的8引脚封装中使用。然而,ARM的性能可以高达10倍,计算精度更高,内部外设更多,内部存储器更大,但通常功耗更低。几乎没有理由不选择ARM微控制器。
现代微控制器能做什么?
从理论上讲,微控制器可以完成其他计算机(例如PC或平板电脑)可以完成的所有工作。有些甚至更快,更精确。但是必须考虑到由于尺寸小而存在资源差异。
现代微控制器的性能:
- 速度8 MHz至400 MHz(PC 2至5 GHz)
- 计算核心通常为1个,有时为2个核心(PC为4至16个Cores)
- 32位处理宽度(64位PC)
- RAM 8 KB至200 KB SRAM(PC 4-32 GB)
- 永久存储16 KB到4 MB闪存(PC 256 GB SSD-4 TB HDD)
- 每秒4亿次计算操作(PC超过500,000 MIPS)
- 控制任务:每秒超过1,000,000个数字输入或输出(PC约1,000)
- 信号处理:每秒超过100,000个模拟值,分辨率为8/10/12/16位(PC约100)
- 如果需要以毫秒为单位,则可以在几毫秒内完成操作(PC的启动时间从几秒到一分钟)
- …
如何编程微控制器?
要像对任何编程一样对微控制器进行编程,需要一台PC和一个开发环境,创建源代码并形成可执行程序。程序必须加载到微控制器的程序存储器中,以便可以执行。有两种方法可以做到这一点:
- 用于传输程序的特殊硬件(左侧示例ST-Link V2)
- 使用现有的通讯接口之一
- 专业的编程和调试设备主要提供JTAG。这是一个非常强大的界面,可用于故障排除,监视以及对嵌入式系统进行编程。 JTAG代表Join and Test Action Group,并在IEEE标准1149.1中规定。
- 较便宜的制造商特定的编程设备或第三方编程设备提供以下接口,例如
- ISP =在系统编程中(专有)
- SWD =串行线调试(JTAG的子集)
- DAP =调试访问端口(当前ARM标准)
第二种可能性是利用目标系统上已有的通信接口,这就需要使用一个称为引导加载程序(Bootloader)的特殊程序。引导加载程序是一种特殊的程序,它解码并执行通过通信接口传入的编程指令。作为引导加载程序的通信接口通常使用标准接口,如与PC或上级系统的接口,例如:COM、USB、Ethernet、CAN、LIN、I2C,以及蓝牙或WiFi。
本课程中引用的微控制器板使用引导加载程序。 我们使用嵌入式UML工具SiSy作为开发环境。