RYMCU

NO3.单片机硬件知识-NEBULA-VSCODE

devcui 3 年前
# nebula-vscode

所属作品集

1.单片机基本历史回顾

1.1 单片机发展历史

  • 1971 年 4 位微处理器 intel4004 由 Intel 研制成功,标志着芯片进入微处理器时代,同年推出了以 intel4004 为核心的微信计算机系统 MSC-4

  • 1973 年 intel 研制出第二代微处理器,即 8 位的 intel 8080

  • 1976 年 intel 公司成功研制 MCS-48 系列 8 位单片机,标志着单片机的正式诞生

  • 1981 年 intel 在 MCS-48 基础上,研制出 MCS-51 系列单片机,也就是 51 单片机,随后,intel 采取技术授权商业模式,使得 51 单片机在全球范围内迅速发展,遍地开花,一直延续至今。

    当然,现在做大型项目应是用 ESP32 挂 FreeRTOS 走工业体系标准。但是学 IOT 等硬件方面,应从基础的 51 开始为稳妥由近及远由浅入深。

1.2 单片机厂家型号

Intel:80C31、80C51、80C32、80C52、87C52

ATMEL:AT89C51、AT89C52、AT89C2051 等;

Philips:P80C54、P80C58、P87C54

华邦:W78C54、W78C58、W78E54

Siemens:C501-1R、C513A-H

STC:89C51、89C52、90C51、STC15w

2.认识电路原理和 PCB

2.1 前言

看懂电路原理图以及 PCB,是学习单片机或者嵌入式的必备技能。咋一看似乎很难,只要掌握了技巧,其实很简单。那么,什么是电路原理图?大家都知道,电路板其实是由各种各样的电子元器件组合而成的,而电路原理图就是这些电子元器件的连接关系图。例如,器件 A 到底是连接到了器件 B,还是器件 C。原理图展示的就是这些连接关系,因此,通过电路图可以知道电信号的具体走向。

那么,PCB 又是什么?我们平常能接触到的,如电脑主板、手机主板、拆开各种各样的家用电器里面的电路板,都称之为 PCB。通过 PCB 可以看到各种电子元器件的布局,例如,电容、电阻、芯片的具体位置,甚至还可以知道芯片的具体型号。虽然,通过 PCB 可以知道电子元器件的具体位置,但是无法看出他们之间的连接关系。因此,还需要配合电路原理图。

所谓硬件工程师,核心工作便是设计电路原理图以及 PCB。当硬件工程师接到任务后,例如设计一个蓝牙音箱,首先需要分析任务功能需求,然后选择相应功能的电子元器件,并设计电路原理图,再根据原理图设计 PCB。完成 PCB 生产和电子元器件焊接之后,硬件工程师开始调试,确保自己设计的 PCB 功能没问题。因此,作为一个硬件工程师,需要掌握大量的电子元器件的工作原理、性能指标,才有可能设计出满足客户要求的 PCB 产品。而这些都需要通过长时间的学习、以及大量项目的积累,所以说硬件工程师越老越值钱。

当硬件工程师完成设计、调试之后,嵌入式软件工程师该登场了。产品的许多功能是由软件定义的,软件设计好之后,下载到 PCB,才能算是一个相对完整的产品。在很多场合,只需要设计一套通用的硬件 PCB 平台,你可以设计不同的软件来实现不同的功能。有这么一句话感觉有点道理,即硬件工程师决定产品功能下限,软件工程师的能力决定产品功能上限。当然,你也可以成为软、硬皆通的人才,既能自己设计 PCB,又能写代码、编软件,独自一人完成产品设计。

好了,再回顾一下我们前面讲的内容,其实就一句话,电路图就是连接关系图,PCB 就是电子元器件布局图。

2.2 电路原理图和 PCB

51 单片机开发平台 nebula-pi 完整电路图如下图所示。我们按功能将原理图划分为各个模块,如图中的“供电开关”、“P0 上拉电阻”、“单片机 IO 口”等。

  • 1.识别电子元器件
    • 首先,我们要学会认识电子元器件,常用电子元器件原理图如下所示,包括:电容、电阻、LED 灯、三极管、按键、二极管,芯片等。根据如下图所示的外形,可识别出常用电子元器件,其中 LED 灯和二极管非常相似,只是 LED 灯多了两个表示发光的小箭头。每个元器件都有线条引出,要么是 2 个如电容、电阻,要么是 3 个如三极管,要么是多个如芯片等。这些引出线,表示元器件的实际引脚,可在电路图上通过画线,将各个元器件之间的引脚连接起来。
    • image.png
    • 在一张电路原理图上,一般都会有多个电容,电阻,或同型号的芯片,那么是怎么区分它们的呢?通过过元器件编号来区分,如上图所示的 C16,R12,D11 等等,每一个电子元器件都有一个独一无二的编号,当然这些编号是由电路原理图设计者规定的,可以根据不同喜好编写,但必须保证每一元器件的编号都是独一无二的。
    • 另外,电子元器件的编号有一些约定俗成的方法,例如电容一般以字母 C 开头,例如 C1,C2,C3 等,电阻习惯以 R 开头,例如 R1,R2,R3 等。LED 灯和二极管以 D 开头,三极管、按键分别以 Q,K 开头,芯片通常以 U 开头。请对照 nebula-pi 的原理图,每一个电子元器件都有一个独一无二的编号。
  • 2.元器件之前的连接
    • 电路图中元器件之间的连接通过两种方式,1.画线连接,2.网络标签。
    • 画线连接很好理解,在两个元器件的引脚上用线连,即表示他们在电气上是联通的,如下图中 1 所示,C16,C17 两个电容之间便是通过画线连接,大部分情况均可用画线的方式连接,这种方式非常的清晰明了,一眼便可看出谁和谁之间有连接关系
    • 但在元器件比较多的时候,都用画线连接的话,可能会出现交叉,连线过多等情况,反而不利。因此有了“网络标签”连接方式,如下图 2 所示,在元器件 M1 的第 2 个引脚上放置了一个“网络标签”,并取名为“USB-”,当在其他的器件引脚上放入一个名为“USB-”的标签时,表示他们电气上是连通的。可以查看 nebula-pi 的原理图放置许多的“网络标签”来实现连接。
    • image.png
  • 3.认识芯片原理图
    • 原理图上有很多的芯片,设计原理都是一样的,我拿一个进行分析,其他的举一反三就可以了。我们以主单片机 STC89C52 为例,进行分析。如下图右上角所示,U5 表示它的编号,并且是独一无二的,在电路图上再也找不到同名的元器件了。在黄色的外框引出来了很多的引脚,每一个引脚上面均有一个数字编号,如下图所示为 1-44。表示单片机有 44 个引脚,并且编号和实际的单片机是一一对应的。
    • 在黄色框内每一个引脚都有文字描述,表示这个引脚的功能,例如下图第 4 管脚,描述为 RST,即 Reset,表示这个管脚为复位引脚。第 16 引脚描述为 GND,表示这是接地引脚,第 38 引脚描述为 VCC,表示该引脚为供电电源引脚。电路图中通常使用 VCC、GND 分别表示电源和地。
    • image.png
    • 如上图所示,我们几乎在所有引脚上都放置了“网络标签”,只要电路图中有其他地方放置了相同的“网络标签”,就表示他们是连在一起的。我们以右下角的第 23 脚为例进行讲解,它的“网络标签”是 P25,引脚编号是 23,功能描述是 P25/A13,放大图如下图所示。
    • image.png
    • 我们再来看原理图上的另外一个芯片,如下图所示,它的编号为 U2,如图中左侧所示,编号 7 引脚的“网络标签”为 P25,也就是说芯片 U2 的引脚 7 和芯片 U5 的引脚 23 是连接在一起的。
    • 总结一下,芯片原理很简单,无非就是在一个方框周围放置它的引脚,里面描述引脚功能,外面数字表示引脚编号,并且外面可以连线或者放置“网络标号”来连接其他芯片引脚。
    • image.png
  • 4.供电分析
    • 我们选取 nebula-pi 电路图上的供电电路进行分析。图中的信号流向如下图红色箭头所示。M1 为 USB 接口,当通过 USB 线连接至电脑时,M1 的第 1 引脚和电脑的 5V 接通,5V 首先经过一个保险丝 F1,随后分两个方向。方向一,经过电阻 R12->LED 小灯 D11->GND,此时 D11 将被点亮。方向二,5V 信号流动至开关 SW1,当我们拨动开关后,SW1 的引脚 1,2 连通,5V 继续往下流,接下来将会遇到两个电容 C16,C17。这里有一个方法,当遇到电容时,我们忽略不看,也就是当他们不存在,继续往下分析。5V 电压进入芯片 VR1 的 Vin 引脚,从 Vout 引脚出来。VR1 这个芯片的功能就是将 5V 电压转换成 3.3V,也就是说 5V 从 Vin 引脚进入后,Vout 出来的电压为 3.3V。紧接着要经过两个电容 C18,C19,同样我们忽略不看,随后 3.3V 经过电阻 R13,再经过 LED 小灯 D14 再到 GND,此时 D14 将被点亮。
    • image.png
    • 其实,整个电信号的流动速度是非常快的,即电子在导体中的流动速度,也就是光速了。所以,整个供电的效果为:连接好 USB 线后 D11 小灯立即点亮,拨动开关后 D14 点亮。关断开关后 D14 将熄灭。实际的电路板并不能看到连接关系,我们就是通过观看这两个 LED,才能知道电路的 5V 和 3.3V 是否接通。如上图所示,我们分别在电路上放置了“网络标号”5V(USB)、VCC、3.3V,也就是只要这里供上电了,其它放置了这些“网络标号”的地方也供上电了。
    • 供电电路实际的 PCB 布局如下图红色方框所示,红色框中无法看出元器件之间的具体连接关系,PCB 和电路图通过元器件的编号进行一一对应。为了便于识别,往往会在元器件旁边添加文字内容,即元器件的编号信息,如下图方框中所示的白色文字便是,通过文字编号便可以将 PCB 和原理图联系起来了。
    • image.png

2.3 单片机内部结构

在开始学习单片机编程之前,我们需要先了解单片机内部的结构。了解内部结构最权威的方法当然是直接查看单片机生产厂商的官方档了。我们直接把它的结构图拷贝过来,如下图所示。

image.png

咋一看,东西很多,内容很丰富!对于新手来说绝对是一个噩梦,上面的新名词很多,相互之间的连接关系也很复杂。为了突出重点,便于理解,我们整理了简化版的内部结构如下图所示。

image.png

分成了几大功能模块分别为:程序下载、程序存储器、中央处理器、数据存储器、特殊功能寄存器、外设和其他设备。从上到下,一一进行介绍!

“程序下载”模块,这个很好理解,用户编写好的程序代码就是经过他下载到单片机内部的。程序代码具体是存到单片机内部的什么地方的呢?程序存储器,也叫 FLASH,便是用来存储程序代码的,相当于电脑的硬盘,自然程序存储器的大小决定了可以装多大的代码,即决定了程序的复杂程度。STC89C52 单片机程序存储器的大小为 8K,相比于电脑动不动就 240G、1T 的容量来说,简直不值得一提。但两者应用场景不同,不可相提并论了。

程序下载到单片机后,这时“中央处理器”,即 CPU 要开始工作了,它把 FLASH 中的代码逐条拿出来进行计算,CPU 的核心功能便是计算,计算的结果或中间量存储到“数据存储器”,即 RAM 中。数据存储器相当于电脑的内存,内存的大小同样会限制可以运行程序的大小,例如,电脑的内存太小了,无法运行一些大型游戏。STC89C52 单片机的通用 RAM 为 256 字节。

单片机程序的功能当然不只是让上面的 CPU 计算计算就完事了,它最主要的目的是要控制单片机内部的“外设”工作的。这里的“外设”,如上图所示,它其实是一些可以实现特定功能的电路,只不过这些电路被制作的很小,并且集成在单片机内部了。例如可以实现输入输出口、定时器、串口等功能的外设。

从上图可以看出,CPU 并不能直接控制“外设”,而是需要通过中间模块“特殊功能寄存器”,即 SFRs,来实现控制。SFRs 其实也是“数据存储器”,CPU 可以读或者写每一个“特殊功能寄存器”,而这些“特殊功能寄存器”和“外设”是关联的,因此,CPU 可以间接的控制这些“外设”了。

好了,我们再来总结一下前面的内容,程序下载到单片机之后,CPU 从程序存储器 FLASH 中取出代码进行计算,并将计算的结果或中间量存储到 RAM 中,根据程序的功能要求,CPU 读、写一些“特殊功能寄存器”,从而控制“外设”实现特定的功能。

听起来有点绕,但所有 51 单片机的基本工作原理都是这样的!我们不必去深究里面的各个模块是如何实现的,因为我们的重点不是去设计单片机,而是应用单片机,理解他的运作方式即可。

对于不同型号的单片机,不同的地方在于,上面所描述的几大模块的容量、样式、功能有所差异。因此,我们只需要学会了一款单片机的开发,其他便可以依葫芦画瓢。

通过上面的讲解,我们可以轻松的得出结论:单片机开发无非就是写程序控制这些“特殊功能寄存器”实现相应的功能罢了。

是的,我们后续的重点,便是学习这些寄存器,并通过程序控制他们,实现我们想要的功能。STC89C52 总共 128 个寄存器,当你玩转了他们,可以说已经掌握了 51 单片机 90% 的内容。

2.4 小结

image.png

image.png

所属作品集

后发布评论
作者

图例不清楚的话,mail:harlancui@outlook.com 备注:https://rymcu.com/article/170, 我将图片打包回复