
当想到一家技术初创公司时,您根本不必成为电子领域的王牌,拥有一支精通营销基础知识的狭窄专家更可能有一个好主意,但是即使命令某人进行开发,您也需要浏览现代基础知识的功能并提出解决方案的价格。 否则,您可以要求不可能的事情,或者在过时的基础上购买价格高昂的设备。
在削减计划下,试图向远离它们的人们简要和简单地介绍现代微控制器的功能。 对于那些谁想要一个新的电子设备,但不知道什么是微控制器的人。 那些想要从使用Arduino平台进行娱乐实验到设计自己的设备的第一步的人,也可以在其中找到简单但有用的技巧。 我尝试过,而不是
停留在技术细节上,
为此目的,书中仅陈述本质并给出一些简单但有用的电路技巧以防止初学者犯基本错误
是不够的 。
文章摘要:
微控制器如何征服世界ARM体系结构-当今微控制器市场领导者与弟弟竞争关于铺设沥青,睡眠的好处及其种类简短介绍制造技术以及微控制器系列的外观最简单的ARM微控制器的外围设备只需半美元获得额外功能的最便宜方法除了价格上涨几倍之外,什么会增加向Cortex-M4的过渡?Cortex-M7-当您需要更多...代码保护,可升级性和多样性帮助微控制器征服了世界
任何智能设备都需要控制。 在大多数情况下,微控制器今天正在这样做-结合了微处理器核心,存储器和外围模块的芯片,负责与设备的其他组件和外界通信。

微控制器是各行各业的杰作。 如果微处理器起计算器的作用,那么一个微控制器能够替换数十种专用微电路,这些微电路是执行所需功能所必需的。
微控制器无可争辩的优势之一是,运行它的程序隐藏在其外壳内(在“程序存储器”部分),并且如果微代码开发人员通过激活内置机制来照顾好这一点,就可以很好地防止黑客入侵。保护。 因此,今天您将获得尽可能多的知识产权保护。

不能被黑客入侵的内容可以被复制。 如果找到可以再次编写该代码的专业人员更容易,更便宜,为什么还要尝试使用昂贵的,精巧的设备读取嵌入在程序微控制器中的代码? 也许结果会更好,并且功能比原型更丰富。 是的,它要花钱,但是当今微控制器的FLASH存储器的内容受到了很好的保护,以至于粗鲁地试图“骇客”都将花费更多。 此外,知识产权问题正在得到解决,您以及该程序的源代码将有机会开发和改进您的设备。
在现代通用微控制器中,程序存储器是可重写的,并且重写过程可以重复一万多次。 乞求使用此事实来更新软件,以消除软件中发现的错误或扩展已经工作的设备的功能。 这实现起来非常简单-在程序中添加一个称为“ bootloader”的特殊代码段,您将有机会以各种方式更新设备的软件:在服务点(如果设备在外壳内隐藏有特殊的连接器),将其连接到通过USB,网络甚至无线接口连接计算机。 最主要的是为此提供必要的外围设备。 提供更新软件的能力时,您应该始终考虑安全性,如果此过程没有得到足够的保护,攻击者不仅可以窃取您的代码,而且他们可以修改代码并将其用于自己的目的
,这是很隐蔽的 。 例如,借助您在家中安装的WEB摄像头,控制“智能家居”的事物或监视间谍活动。
ARM体系结构-当今微控制器市场领导者
自豌豆王时代以来,微控制器通常根据其进行操作的数据容量进行划分。 在大多数情况下,今天,在新的开发中,值得选择具有ARM内核的32位微控制器。 进行了大量修改,您始终可以选择最适合解决问题的实例。 取决于功能和性能的集合,芯片的价格范围从几十美分到数十美元。
根据计算核心的体系结构,微控制器(MCU)通常分为大家族。 如今,为了开发中小型复杂性的设备,使用了从Cortex-M0到Cortex-M7内核的最受欢迎的微控制器。 数字越大,计算(不仅是)功能,价格和最大功耗就越大。 体系结构的继承在ARM的普及中起着重要作用。 开发人员可以以最小的成本修改其先前开发的程序代码,从一个制造商的微控制器转移到另一制造商的芯片,然后在性能不同的内核之间迁移。
与弟弟竞争
但是,ARM没有控制。 我记得很久以前8位微控制器是绝对的市场领导者,从占据的位置开始,16位同事试图不成功地推他们,但是,具有讽刺意味的是,只有32位老兄设法做到这一点。 碰巧的是,随着芯片制造技术的出现,它们大大降低了将大量FLASH存储器集成到其中的成本。 借此机会,程序员开始从汇编语言转换为高级语言-C,C的结构完全基于32位体系结构。 结果,32位微控制器的计算速度比其8位和16位同事要快得多,但是存在一个问题-它们具有更高的电流消耗。
因此,首先,它们用于需要更高计算性能的情况。
众所周知,微控制器的计算核心的平均电流消耗随着其时钟频率的增加而显着增加。 首先,微控制器的8位模型在相似的频率下具有明显较低的功耗,此外,还能够在高达32 kHz的低时钟频率下工作。
微控制器的功耗在很大程度上取决于内核和外围设备的时钟频率,为了对其进行调节,他们开始使用广泛用于无线电发射设备的基于PLL的时钟频率生成单元。 这样就可以在不改变主石英谐振器的情况下大幅改变时钟频率。 外围模块不必具有与计算核心相同的时钟频率。 为了降低功耗,频率开始通过具有程序控制分频比的分频器馈入。 引入了禁用未使用模块的功能。 这些措施大大降低了功耗,但仍然比8位功耗要高得多。
在短时间内,开发了奇偶校验-32位MCU抓住了高端应用程序的利基市场,而8位MCU则在低功耗至关重要的设备中稳固地占据了位置。 一直持续到32位MCU完全掌握了“脉冲”操作模式。
到那时,8位技术人员还学会了如何执行此操作,但是由于性能不佳,他们不得不保持清醒状态,结果开始浪费能量,尤其是在需要计算的任务中,如下图所示。

关于铺设沥青,睡眠的好处及其种类
因此,微控制器学会了如此坚强的信念,以至于他们开始非常迅速地开始工作,并且在大多数情况下,它们被迫“击败对手”,消耗精力执行空闲周期。 在自供电设备上,这会大大减少电池寿命或单次充电的电池寿命。
观看建筑工人铺设沥青。 当卡车带着新的沥青到达时,他们大大加强了工作,铺设后放慢了速度。 因此,微控制器可以增加和减少核心时钟频率。 但是,这对他们来说,对工人来说并不那么容易-整个内部外围设备的操作频率也会同时改变,因此,其敏感部件必须重新配置。
迅速完成所有工作来睡觉,会不会更容易。 通常,是的。 此外,微控制器的睡眠类型比人类的睡眠类型差异更大。

你可以小睡一下。 在这种情况下,我们的芯片始终处于就绪状态,一旦定时器警报响起或被外部中断干扰,它几乎立即唤醒。 由于小睡的人可以缓解压力,但是当您经常被拉动时却无法真正获得足够的睡眠,因此微控制器可以每10次“仅”减少此模式下的能耗,该模式称为“睡眠”。
最好的睡眠方式是脱衣服,上床睡觉,关闭窗户上的窗帘并打开警报器。 但是,经过这样的梦想,您将不会立即开始工作。 您至少必须用冷水冲洗并穿好衣服。 当微控制器限制外部刺激的数量并关闭主时钟发生器时,它也具有此模式。 这是STOP模式。 它可以减少1000倍的消耗,但是要消耗掉它会花费大量时间。
现在,想像一下,在睡前喝了一定剂量的安眠药,关闭了闹钟和电话,然后关闭了所有门窗。 这将是待机模式。 只能借助特殊结论才能将微控制器从该模式中删除,而他在实现梦想之前所做的大部分记忆将永远丢失,您将不得不重新开始工作。 但是在这种模式下,MCU的消耗又增加了一半。
后者是一种非常奇特的模式,已经提醒了没有特殊设备就无法离开的人。
但是,在这种情况下,只有一个特殊的发生器工作
,这是单独的石英表上
微控制器的一部分,该石英可以依靠自己的电源工作并具有几个字节的RAM,其目的是提醒微控制器它处于何种状态。 如果同时将微控制器的其余部分与电源断开,则功耗可能已经是活动模式的十分之一。
选择省电模式时,您需要记住应用程序的后果 :
- 梦想越深,唤醒时间越长
- 梦想越深,使微控制器脱离梦想的方法越少
- 睡眠越深,关于微控制器先前状态的信息就越少
- 为了达到最小声明值,在许多模式下,必须采取其他措施,例如-断开外围设备
- 为了最大程度地降低整个设备的功耗,必须正确设计整个设备的电路
- 为了将整个设备的功耗降至最低,您需要确保其他组件和电路在非活动模式下也具有微功耗。 为将微控制器的功耗降低到1微安以下而付出巨大的努力,同时在设备中使用具有100微安自耗电流的廉价稳定器
是很愚蠢的, 但这很常见。 - 为了成功使用深度睡眠模式,不仅要仔细考虑程序,还要仔细考虑电路,否则,除了进行保存之外,您还会遇到非常严重的问题-很少发生,但是设备由于无法解释的原因而“冻结”,或者经常唤醒,例如结果,消费量比预期高几个数量级
如果您的程序员和电路工程师第一次互相指责是曲率,并且是制造商一起在微控制器上的数据表中发布了不切实际的数字,并且您的设备将电池放入的速度比您预期的快一个数量级,则这是至少要转向独立电池的原因高素质的专家。
简短介绍制造技术以及微控制器系列的外观
像绝大多数其他微电路一样,微控制器的物理活动部分通常在单片硅片上形成(在本文中,我们称其为芯片)。 切屑占据的面积很小,但是生产大直径的板在技术上是有利可图的,因此,通常将大量的切屑(如蜂窝状)放在一块大板上并在一个工艺过程中成型。 随后,将板切成小块,接受单个切屑,然后将切屑放入盒中。

新芯片的工艺过程的拓扑开发和调试非常昂贵,并且板上单个芯片所占用的空间通常不大。 制造商大批量生产芯片是有利可图的,但是用户在不同情况下需要微控制器-对于某人来说,变得更小,更便宜是很重要的,相反,它需要更多的输出来管理LCD或具有并行接口的外部存储器。 对于制造商来说,覆盖所有壁ni是有利可图的,这样,如果没有找到最适合自己的模型,客户就不会被竞争对手抢走。
通常,发布一大批通用芯片并将其放置在不同的情况下比发布十几种不同的芯片更有利可图。 对于放置在引脚数量较少的情况下的芯片,某些端口(在本文中,所谓端口是指芯片表面上用于与外界通信的接触垫)完全保持未连接状态。 制造商通常走得更远-为了增加具有大量分支的微控制器的需求和价格,他们人为地切断了数量较少的微控制器的功能-禁用某些功能,限制可用内存量等。
因此,在一个芯片的基础上,它们形成了一系列微控制器,这些微控制器的存储器大小和一组外围模块差异很大,有时价格有时不同。 同时,可以从同一板上切割其中安装的切屑。 由于一个芯片所在的区域很小,因此它对最终产品成本的贡献也很小,可以牺牲。 例如,在测试阶段禁用一次附加的内存和其他功能将变得非常有益-借助一次可编程的配置位,或者通过用激光烧掉跳线。 仅对于大多数产品,才需要为此创建稍微修改的照片模板。 而且,没有必要在物理上不存在未使用的内存,再次可以通过删除模板中的跳线将其关闭。
因此,从一个标准的芯片设计就可以形成整个系列的微电路。
最简单的ARM微控制器的外围设备只需半美元
处理器的核心是大脑,但为了使其不像“真空中的球形马”,需要类似的感觉和四肢。
在微控制器中,它们的作用取决于外壳的结论,可以将芯片的端口(焊盘)连接到外壳内部。 进而,可以通过内部交换机将各种外围模块连接到同一端口。
首先,考虑一下基于Cortex-M0内核的ST最简单系列之一的外围-stm32F03。
对于该系列,我们具有以下基本功能集:实时时钟(RTC),可以由单独的输出供电,并通过单独的低频谐振器工作。如果发生电源故障,该模块消耗的能量极少,它可以在充电的电容器上工作数小时,或者在设备内置的小电池上工作数年。此外,它还可以用作闹钟,在预定时间将微控制器从最深的睡眠状态中删除。看门狗-防止微控制器永远进入睡眠状态的护卫犬,例如,陷入无尽的循环或进入一个不存在的地址。它的工作原理很简单。程序员将防冻保护计时器设置为一定时间(例如一秒钟),然后启动它。然后,他在自己选择的程序中安排了短小段代码,这些代码将计时器从零重新启动。如果没有立即重置计时器,WatchDog认为程序有问题,适合微控制器重新启动。该程序从头开始运行,可以确定是否重置了WatchDog,并且在启动时考虑了这一事实。通用数字输入输出GPIO-这是大多数微控制器引脚支持的最常见功能。它们可以配置为输入或输出。考虑作为输入。如果微控制器输入端的电压小于某个阈值(通常接近电源的一半),则将其视为逻辑零,否则为1。数字输入端通常具有很高的输入阻抗,因此,如果不连接它们,其状态可能会在电磁场的影响下从零跳到一并返回。为了防止这种情况的发生,当芯片内部的输入通过20-50 KOhm的电阻与微控制器的正电源(上拉)或负电源(上拉)连接时,有特殊的模式。如果输出配置有数字输出,则可以通过编程将它们转换为等于微控制器电源电压的高电平或低电平。还有更多棘手的模式,但我们不会赘述。给新手的提示— , , . , , , , . , , — , , , .

, ( ), . X4 — . 5-7, . , , , , R24-R26, 1 . VD4-VD6 5 , , , 3,3 , 5 . R29-R31 100 .
. , . STM32Fxx 5 , , , .
, . , , , — (- ). , . .
. . «» , .
, . , — . , , .
, , ARM , 8- . , , . , , , . 温度传感器微控制器具有自己的温度传感器,尽管精度不是很高,但是在某些假设下,它仍可用于测量设备内部的温度。唯一的序列号每个微控制器在出厂时都有自己的唯一序列号。一个非常方便的功能,可用于组织产品的批量生产。数据交换接口本系列的各种微控制器可以具有几种最常见的接口,从而极大地促进了与其他芯片和外界的通信:- USART — ,
COM RS232 , - SPI — , ,
- I2C — , . ,
所有这些接口都可以使用常规GPIO轻松地以编程方式实现,但是它们的工作速度会慢得多,并且会消耗大量计算核心资源。模数转换器ADC或您必须详细介绍的ADC。一个非常有用的模块,可以测量模拟信号的电压。他以参考信号源值的分数来估计它们,在本例中为微控制器模拟模块的电源电压,该电压可以等于或略低于芯片的主电源电压。 ADC的理论精度取决于其容量。在现代微控制器中,最常用的是逐次逼近的12位ADC,很少使用10位,还有16位是奇异的。
当由3伏电压供电时,微控制器的12位ADC的分辨率为3/4096 = 0.00073伏-优于1毫伏。但是实际上,实现这一理想并不容易。初学者的细节. , ,
, , , , , .

. MEMS , . , , .
VBUT . : R5-10 , 10 0.1 , L1 L2 BLM18PG471SN1D .

. , ASIC, . — . , , . « ».
, . , , , , . 1, 16. ? , . 10 , — 10 . , . , , 1 . , 10 10 !
直接访问DAP或DMA存储器的系统是另一重要的事情。 该模块允许您将外围设备中的数据发送到内存,反之亦然。
例如,借助它的帮助,您可以分配一块内存来存储来自ADC的数据,并从中制作一个循环缓冲区。 接下来,ADC定期以数据读取模式启动。 使用DMA机制,读取的数据将在没有内核参与的情况下逐字节地独立地放置在专用缓冲区中。 当缓冲区完全充满时,内核将接收信号并开始以编程方式处理它们,而DMA系统将从头开始启动过程。 由于DMA具有多个通道,因此对于我们而言,没有人会费心实现将缓冲区中的数据自动输出到USART。 结果,我们获得了将读取的结果从ADC传输到USART的过程,而无需使用内核即可工作,而且程序员在DMA配置上所做的简单工作不会带来可观的回报。
PWM或PWM脉冲宽度调制模块 ,由于本文的局限性,我们将不对其进行详细介绍,我只注意到这是一个非常有用且用途广泛的功能,可以控制LED的亮度,发动机转速,转向机,设计智能DC -DC转换器,甚至声音合成器。
加30美分可以得到什么?
切换到Cortex-M0 +。 获得额外功能的最便宜方法
最新系列的微控制器还提供了哪些其他的包子,其内核比Cortex-M0 +更现代,就外壳和输出数量而言,其成本比上述系列的同类产品贵20-50美分?
系列之间的差异表

- 最大时钟频率加倍
- 2至1.7伏的最小电源电压降
- ADC的工作速度提高了两倍半
- 出现了12位数模转换器的两个通道。 这是一个非常有用的功能,借助该功能,可以在端子上以高于1 mV的精度形成给定电压的信号,例如,音频范围内的任意波形
- 比较器出现了-用于比较两个模拟信号的值的设备,当确定过电流时刻时可能有用
- 添加了USB接口,您可以通过该接口将设备连接到计算机。 特别令人感兴趣的是用于实现USB Type3-C兼容接口的电源管理选项的可用性。 我在关于哈布雷的一篇文章中谈到了他
- 出现用于256位加密/解密程序的AES加速器
- UART有机会在睡眠模式下工作,并为LIN协议(一个简单的网络,广泛用于汽车行业),IRDA(通过红外LED的数据传输协议,记住电视遥控器),SIM卡提供硬件支持。
- 扩展计时器和PWM模块
- 操作温度范围的上限升至125度
- 由于出现电源问题时重启模式的扩展,提高了可靠性
- 添加了“诚实的”硬件随机值生成器-密码学中的一项有用功能
好吧,对于许多应用程序而言,价格的微不足道的回报是物有所值的,因为您可以拒绝使用较旧型号系列的更昂贵的微控制器。
除了价格上涨几倍之外,什么会增加向Cortex-M4的过渡?

- 最大时钟频率升至80 MHz
- 出现了一个块来加快浮点计算
- 当然,最大内部内存已增加
- 100支或更多支脚的型号支持使用外部静态存储器
- USB学会了在主机模式下工作
- 出现了CAN接口控制器。 这是为高度可靠的应用程序设计的非常有前途的界面。 他开始了在汽车行业的胜利游行,并在极其保守的工业自动化行业中与长期淘汰的RS-485进行了旷日持久的战争。
- 出现了用于连接SD卡的接口。 一个非常有用的功能-为您的设备添加一个50美分的支架,并获得数十GB的可移动存储介质! 大多数卡都能在常规SPI上工作,但速度要慢得多
- 他们增加了具有多种工作模式的内置运算放大器。 由于此功能和先前的功能,对于我的无线听诊器的最后一个项目,我不得不停止在M4而不是M0 +上的选择。 结果,可以控制来自MEMS麦克风的信号放大并在SD卡上节省数十小时的心脏录音
- 加密模块学习了如何读取硬件中的HASH函数。
- 触摸应用程序的控制器得到了改进,现在不仅支持按钮,还支持滚动元素
Cortex-M7-当您需要更多...

在绝大多数项目中,上述内核提供的功能已足够,但也会发生例外情况。 就我个人而言,这仅发生过两次,并且只有一次,这是一个非常好的理由-它需要高性能才能为ASIC,以太网控制器和CAN-FD总线准备更高的交换率数据。
我认为,如果在具有Cortex 4核及更低版本的通用微控制器方面,ST现在在价格/功能方面处于领先地位,那么在高性能芯片领域,它不如ATMEL或最近被它吸收的MICROCHIP逊色。 因此,我选择了ATSAMV71系列,起价为6美元。
除了以上所述(以太网控制器和CAN-FD总线)之外,我们总体上还获得了一个内核,该内核具有可显着提高生产率的运算加速器,以高达300 MHz的时钟频率运行,用于连接视频矩阵的接口以及对动态内存的支持。
总而言之,我将问那些有与微控制器通信经验的人,我将请您选择适当的答案。