什么是微控制器?外文翻译资料

 2022-11-14 16:43:13

英语原文共 221 页,剩余内容已隐藏,支付完成后下载完整资料


第一章

什么是微控制器?

随着时间的推移,越来越多的消费品包含微控制器。 由于基本微控制器目前的成本低至30美分,因此它们被用作以前使用晶体管晶体管逻辑的任务的简单解决方案。 随着这些设备在业界和业余爱好电子设备中的广泛应用,编程能力对于任何可能尝试的项目都是非常有用的。

本文作为微控制器的介绍,以及通过编程微控制器和使用各种外围设备,首次打开数据表的新用户。 对于更高级的用户,本文将提供有关如何使代码更易于阅读和提出良好编码实践的建议。 虽然这将集中在单个微控制器上,但是ATmega644p提供的想法对于当今可用的大多数微控制器都是有效的。

1.1微处理器,微型计算机,微控制器

虽然微处理器,微型计算机和微控制器都具有一定的特性,这些术语通常可互换使用,但是有一些区别用于将它们分类为不同的类别。

1.1.1微处理器

这三个类别中最简单的就是微处理器。 也称为CPU(中央处理单元),这些设备通常位于诸如台式计算机之类的更大系统的核心处,并且主要用作数据处理器。 它们通常由算术逻辑单元(ALU),指令解码器,多个寄存器和数字输入/输出(DIO)线组成(见图1.1)。 一些处理器还包括诸如高速缓存或堆栈的存储器空间,其可以用于比必须访问系统存储器更快速地临时存储和检索数据。 此外,处理器必须连接到某种形式的数据总线,以访问存储器和输入/输出处理器本身外部的外设。

图1.1:微处理器的基本组件

根据存储器结构,微处理器可能只有少数寄存器,例如用于跟踪下一条指令的地址的程序计数器和用于加载和存储下一条指令的指令寄存器; 或者可能有几十个寄存器。 这些附加寄存器在使用时被称为通用寄存器和存储数据。

根据存储器结构,微处理器可能只有少数寄存器,例如用于跟踪下一条指令的地址的程序计数器和用于加载和存储下一条指令的指令寄存器; 或者可能有几十个寄存器。 这些附加寄存器在使用时被称为通用寄存器和存储数据。

1.1.2微型计算机

微型计算机包含小电路中的计算机的所有组件,尽管不在单个芯片上。 这个术语通常适用于笔记本电脑和台式电脑,但这些设备已经不再使用了。 微型计算机的组件装置包括一个CPU(如微处理器),存储器和/或其他存储设备以及IO设备(见图1.2)。 I / O设备的几个示例包括键盘,显示器,网络等; 但是可以是微机使用来收集或分发信息的任何设备。

1.1.3单片机

微处理器在某些方面是微处理器与微型计算机之间的交叉。像微处理器一样,术语微控制器是指单个设备;但是它包含了单芯片上的整个微型计算机。因此,微控制器将具有处理器,板上存储器以及各种IO设备。当使用微控制器而不是微型计算机来简化整体设计时,为了实现这一点,它牺牲了灵活性。微型计算机可配置为具有特定数量的存储器或附件。微控制器通常限于制造商规定的存储器大小和外围设备。

图1.2:微机的基本部件

图1.2中有很多选择:微机微控制器的基本组件及其功能,但在某些情况下仍然可能会受到限制。

由于微控制器更多地被设计为独立的数据采集和控制设备,而不是微型计算机经常处理的人工交互或网络任务,它们的标准IO设备不同。模数转换器(ADC),定时器和外部中断是在微控制器上发现的常见外设,而键盘,显示器和其他每天用于控制个人计算机的设备都不是。

1.2内存模式

1.2.1冯·诺依曼结构

冯·诺依曼结构以参与曼哈顿计划的科学家命名,由于该项目的计算需求,加入了EDVAC存储程序计算机的开发。在此期间,他撰写了一份关于EDVAC报告的初稿,该报告成为冯诺依曼建筑的源泉。

第一台计算机和计算设备都有固定的程序。这些程序以各种方式构建到机器中,并且改变机器通常必须重建的程序。这包括大多数早期的电脑,如ENIAC。这些重建可能需要几周的时间才能使用机器的很大比例。

冯诺依曼架构通过将程序存储在存储器(因此存储程序)中来解决这个问题。该存储器块在程序存储和数据存储之间共享,这允许数据被视为代码,反之亦然。此外,它允许使用自修改代码,这在架构的早期有用于减少内存使用或提高性能。

图1.3包含了冯·诺依曼结构的框图。这显示了控制单元,读取和解释程序的设备以及执行大多数操作的ALU连接到的单个内存块。与CPU外部的内存通信的必要性导致吞吐量限制被称为冯诺依曼瓶颈[3]。由于控制单元和ALU需要对存储器进行读写操作,因此与其他架构相比,此架构中的这个瓶颈特别严重,因此在系统中共享限制资源(存储器访问时间)。

图1.3:冯·诺依曼结构的框图。

1.2.2哈佛结构

冯bull;诺依曼结构瓶颈的一个解决方案是将程序存储器与数据存储器分开(见图1.4)。这种分离允许对冯·诺依曼结构进行一些改进。

第一个也是最明显的改进是可以同时访问程序存储器和数据存储器。在冯·诺伊曼架构中,为了通过ALU将存储单元从一个寄存器存储到存储器中,控制单元必须首先加载和解释该指令,然后ALU可以将数据传输到存储器,最后控制单元可以移动到下一条指令。这需要沿同一路径进行两次单独的读/写操作。在哈佛架构中,可以同时执行写入数据存储器并从程序存储器读取下一个操作,从而减少访问数据存储器的任何指令所需的时间。

一个稍微不太明显的改变可以大大提高操作速度是程序存储器中的字长不再需要是整数字节。这允许在单个指令中可以包含指令和存储器地址的更长的指令字,因此每次从程序存储器的读取以及处理器的每个时钟周期都可以是整个指令。在冯诺依曼架构中,指令通常是多个单词,包含操作码和所需的任何内存地址。因此,上面给出的示例将需要三个读/写操作,而不是之前提到的两个或哈佛架构的单个操作。

图1.4:哈佛架构的框图。

哈佛架构的主要缺点是它不能修改程序内存,限制了其在一般系统(如个人计算机)中的有用性。这对于诸如嵌入式系统中的专用处理器而言并不构成问题,尽管存储器带宽必须高,因为每个周期可以通过两个操作访问存储器。由Atmel和Microchip的PIC系列产生的AVR系列微控制器都是哈佛架构,尽管它们稍作修改,允许读/写操作来编程内存。这些操作主要用于引导程序。

1.2.3修改后的哈佛结构

修改后的哈佛架构是冯·诺依曼(Von Neumann)和哈佛(Harvard)的结构,试图捕捉每个人的好处。具体来说,数据

并且程序再次共享与von Neumann架构相似的存储空间,但是数据和指令不会共享CPU和内存之间的缓存或路径。这允许比冯诺依曼更少的内存访问受限,而且能够将代码和数据视为哈佛的缺陷。使用这种架构的处理器最常见的例子之一是在大多数个人电脑中找到的x86处理器。

1.3堆栈

堆栈是用于存储与过程调用相关的信息以及某些操作的数据的内存先进先出(LIFO)部分。该堆栈可以是具有固定或可变大小的通用存储器,或者具有固定大小的专用存储器块。在任一情况下,处理器将具有指向堆栈中最近寻址的位置的堆栈指针寄存器。在一些处理器中,堆栈从其内存块中的最高地址开始向下扩展,而另一些则从最低地址开始增长。

LIFO是指数据从存储位置移除的顺序。在LIFO中,添加到存储的最新数据是第一个被请求数据时删除的数据。这是堆栈名称的来源,因为当所有可用的都是顶级项目时,LIFO和创建某种形式的对象的堆栈之间的相似性。最先进先出的替代方案是先进先出或先进先出。在这个范例中,存储中的最旧的数据片段被删除,无论何时数据被请求。这通常被称为队列,因为它与结帐线或在银行等待收银员的人的线相似。

图1.5:LIFO存储(左)和FIFO(右)中请求的数据的来源。

基本堆栈只支持两个操作;推和流行。推送操作将数据添加到堆栈顶部,增加堆栈指针,而弹出式递减堆栈指针,并将数据返回到堆栈顶部。一些取决于栈的许多操作的环境偶尔会有额外的操作,例如窥视(一个弹出操作,而不改变堆栈指针),dup(一个弹出后面推动结果两次)或者交换堆叠中的前两个项目)。

除了堆栈之外,任何处理器都能够存储数个数据,而不必访问系统的存储器,尽管存储器的数量在处理器之间变化。这些存储位置被称为寄存器,而一些可能具有特定目的,大多数处理器将具有数个用于通用使用的通用寄存器(GPR)。在专用寄存器中,将有一个称为程序计数器。该寄存器保存要执行的下一条指令的存储器地址。任何时候执行指令,它都会增加,如果没有它,处理器将不知道在哪里寻找下一个指令。当发生函数调用时会发生什么?必须保留某些形式的返回地址以使程序从被调用函数的内存位置返回到程序计数器之前的位置,这就是堆栈进入的地方。每当调用一个函数时,当前的程序计数器,以及一些其他数据被推送到堆栈,并且被调用的功能存储器地址被输入到程序计数器中。在被调用函数结束时,旧的程序计数器值被恢复,并且处理器拾取它停止的位置。

有人提到,在函数调用期间,附加数据也被推送到堆栈。这些数据取决于编译器以及处理器可以执行的指令,因为并非所有处理器都具有相同的指令集。输入新功能时,必须保存先前功能的局部变量才能恢复,并创建新变量的空格。一些编译器和处理器使用的一种方法是在函数调用期间将所有GPR的当前内容推入堆栈,然后进行恢复。这在具有“推全”指令的处理器中尤其常见,例如自80186以来的x86处理器(这些是自家庭计算早期以来台式计算机通用的处理器)。

第二种保存变量的方法和寄存器的当前状态是被调用函数仅将栈实际使用的寄存器的值推送到堆栈。这对于具有较小存储器的处理器是常见的,因此较小的堆栈大小,如大多数微控制器。

有两种与堆栈有关的错误类型:下溢和溢出。其中,下溢远远不太常见,最常见于软件堆栈,或者是恶意的结果。这些是由于在堆栈为空时尝试将值从栈中弹出引起的。另一方面,当尝试超过堆栈的最大大小时,会发生堆栈溢出错误。最常见的是,当有太多的函数调用嵌套在一起时,例如使用递归,这种错误就会发生。可以通过减少函数调用深度,或减少每个函数的内存要求来修复此错误。

1.4结论

本章的目的是介绍一些术语,并提供对微控制器实际是什么的非常基本的了解。从这里开始,每一章将详细介绍微控制器的一些方面,其编程及其使用。本文主要围绕由Atmel公司生产的ATmega644p微控制器,因此其他公司的微控制器的用户可能需要到其他地方了解其设备的具体情况。本文的目标之一是提供足够的背景,读者能够至少使用任何Atmel微控制器,并且还可以找出其他公司的微控制器。

如果本章涵盖的历史或其他科目令人感兴趣,有很多来源可供进一步阅读。在Google或当地图书馆进行简要搜索可能会引起众多兴趣。维基百科还是提供更多信息的良好初始来源,但是必须小心使用公开可编辑的网站。应通过大多数维基百科文章底部的链接提供更多的资源。

第二章

数据表,SFR和库

在开始深入研究微控制器之前,需要了解一些重要的主题。这些是与微控制器密切相关或直接关系的主题,这些主题应该能够更好地了解随后章节中发生的是什么,以及所提供信息的来源。本章分为三个独立部分,每个章节都有自己的小章节。

第一部分,数据表,剖析了一个示例数据表,并解释了其各个部分。特殊功能寄存器部分介绍哪些SFR是如何在微控制器上解决的。本章的最后一节提供了一个基本的了解一个库是什么,哪些是最常用于编程ATmega644p。

2.1数据表

数据表是包含制造商提供的所有重要信息的文档,这些文件应该回答关于组件的使用和操作的任何问题。对于任何可能希望包含在项目中的电气组件,数据表应直接从制造商或最常见的在线提供。这包括电阻,电容器和其他基本电气元件。

乍一看,数据表看起来似乎有些令人生畏的图形,表格和文字的页面。这是因为数据表提供了有关操作和使用的各种信息。通常,除非该组件在极端条件下使用,否则实际只需要小部分信息,尽管跟踪重要信息是读取数据表的技能进入哪里。所讨论的数据表的每个部分将附有意法半导体M74HCT08四通道输入与门[18]的示例。

同样重要的是要注意,没有像标准数据表这样的东西。以下信息是常见的,但并不总是存在。此外,可能需要多个文件来获得所需的信息。如果找到的第一个数据表没有信息,请继续查看。可能还有其他文档涵盖设备的不同方面或整个设备范围的一般方面。

2.1.1部件名称

部件名称通常可以告诉某人很多信息。除了说明什么类型的设备(电阻,H桥驱动器,传感器等),部件名称也将泄露更多的信息。在许多IC的情况下,部件名称将显示芯片上存在多少个器件。例如,包含基本逻辑门(AND,OR,NOT等)的IC定期具有每个芯片的四个或甚至八个门的拷贝。可以从零件名称中获取的其他信息可能涉及用于模拟数字转换器(ADC)或数模转换器(DAC),电压范围(运算放大器,ADC,DAC)等器件中精度的位数。 ,或最大功率(电阻)。这里的教训是总是阅读完整的部分名称,以防万一有其他重要信息。示例 - 四路2输入AND门

此设备的名称指定了一些事情。首先,他的设备包含AND逻辑门。其次,设备上有4个独立的门,最后每个AND门限于两个输入。 AND门需要至少两个,但是可以创建具有三个或更多个输入的AND门。

2.1.2说明和操作

数据表的前几页通常是文本。这些页面包含了该设备究竟是什么,通常是如何工作的,哪些可以包括各种操作的延迟持续时间,发生的内容的描述和错误的解释。对于不熟悉特定设备的人员来说,这应该是最低限度的,而那些不熟悉该类型设备的人应该阅读整个部分。示例虽然在这种情况下描述非常短,但它确实提供了有关其可以与之交互的其他设备(TTL和NMOS)的信息。这涵盖了大多数其他逻

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[137002],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

发小红书推广免费获取该资料资格。点击链接进入获取推广文案即可: Ai一键组稿 | 降AI率 | 降重复率 | 论文一键排版