微控制器发展简史
微控制器的历史并不长,但发展非常迅速。 它的生产和发展一般与微处理器(CPU)的生产和发展同步。 自1971年美国英特尔公司首次推出4位微处理器以来,其发展至今大致可分为五个阶段。 下面介绍一下Intel公司的微控制器的发展情况。
1971~1976
微控制器发展的初级阶段。 1971年11月,Intel首先设计了Intel 4004,这是一款集成度为2000个晶体管/芯片的4位微处理器,配备了RAM、ROM和移位寄存器,形成了第一个MCS-4微处理器。 推出8位微处理器Intel 8008,以及其他公司推出的8位微处理器。
1976年~1980年
低性能微控制器阶段。 以Intel于1976年推出的MCS-48系列为代表,采用单片结构,在一块半导体芯片上集成了8位CPU、8位并行I/O接口、8位定时器/计数器、RAM和ROM。 虽然其寻址范围有限(不超过4 KB),没有串行I/O,RAM和ROM容量较小,中断系统也比较简单,但其功能可以满足一般工业控制和智能的需要。仪器仪表。
1980~1983
高性能微控制器阶段。 现阶段推出的高性能8位单片机一般都具有串口、多级中断处理系统以及多个16位定时器/计数器。 片上RAM和ROM容量增大,寻址范围可达64KB。 有些芯片还带有A/D转换接口。
1983年~20世纪80年代末
16 位微控制器级。 1983年,Intel推出高性能16位微控制器MCS-96系列。 由于采用了最新的制造技术,芯片集成度高达12万个晶体管/芯片。
20世纪90年代
微控制器在集成度、功能、速度、可靠性和应用领域等各个方面都在向更高水平发展。
单片机的分类及应用
MCU按照存储器类型可以分为两种类型:不带片上ROM的和带片上ROM的。 对于没有片上ROM的芯片,必须外接EPROM才可以使用(典型的是8031); 片上ROM的芯片分为片上EPROM型(典型芯片为87C51)、MASK片上掩模ROM型(典型芯片为8051)、片上Flash型(典型芯片为89C51)等类型。
按用途可分为通用型和专用型; 根据数据总线的宽度和一次可以处理的数据字节的长度,可以分为8位、16位和32位MCU。
目前,国内MCU应用最广泛的市场是消费电子领域,其次是工业领域和汽车电子市场。 消费电子包括家用电器、电视、游戏机、音视频系统等。工业领域包括智能家居、自动化、医疗应用、新能源发电和配电等。 汽车领域包括汽车动力总成和安全控制系统。
单片机的基本功能
对于大多数MCU来说,以下功能是最常见和基本的。 对于不同的MCU,其描述方式可能有所不同,但本质上是相同的:
TImer(定时器):虽然TImer的种类很多,但可以概括为两类:一类是固定时间间隔的TImer,即它的定时时间由系统设定,不能由用户程序控制。 系统只提供了几种固定的时间间隔供用户程序选择,如32Hz、16Hz、8Hz等。这类TImer在4位MCU中比较常见,因此可以用来实现时钟、定时以及其他相关功能。
另一种类型是可编程定时器。 顾名思义,该类Timer的计时时间可以由用户的程序来控制。 控制方式包括:时钟源选择、分频(Prescale)选择和Preset个数设置等,有的MCU同时具备这三项,有的MCU则可能只有其中一两个。 这类Timer应用非常灵活,实际用途也千变万化。 最常见的应用之一是用它来实现 PWM 输出。
由于时钟源可以自由选择,因此此类定时器一般与事件计数器结合使用。
IO端口:任何MCU都有一定数量的IO端口。 没有IO口,MCU就失去了与外界通信的通道。 根据IO口的可配置性,可分为以下几种:
纯输入或纯输出端口:这种类型的IO端口由MCU硬件设计决定。 只能输入或输出,不能用软件进行实时设置。
直接读写IO口:例如MCS-51的IO口就属于此类IO口。 执行读IO口指令时,为输入口; 当执行写IO口指令时,自动成为输出口。
编程设置输入输出方向:该类IO口的输入或输出由程序根据实际需要来设置。 应用比较灵活,可以实现一些总线级的应用,如I2C总线、各种LCD、LED Drivers控制总线等。
对于IO口的使用,必须牢记的一点是:对于输入口,必须有一个明确的电平信号,保证其不能悬空(这可以通过加上拉或上拉来实现)下拉电阻); 对于输出端口,其输出状态电平必须考虑其外部连接条件,并应保证在Standby或静态状态下没有拉电流或灌电流。
外部中断:外部中断也是大多数MCU的基本功能。 一般用于信号的实时触发、数据采样和状态检测。 中断方式有上升沿触发、下降沿触发和电平触发。 外部中断一般通过输入端口来实现。 如果是IO口,只有设置为输入时才会开启中断功能; 如果是输出口,则会自动关闭外部中断功能(ATMEL的ATiny系列有一些例外,输出口也可以触发中断功能)。 外部中断的应用如下:
外部触发信号的检测:一是基于实时性要求,如晶闸管的控制、突发信号的检测等,二是出于节省电能的需要。
对于信号频率测量,为了保证不漏掉信号,外部中断是理想的选择。
数据解码:在远程控制应用领域,为了降低设计成本,常采用软件对各种编码数据进行解码,如曼彻斯特编码、PWM编码等解码。
按键检测和系统唤醒:对于进入Sleep状态的MCU,一般需要通过外部中断来唤醒。 最基本的形式是按键,它通过按键的动作产生电平变化。
通信接口:MCU提供的通信接口一般包括SPI接口、UART、I2C接口等,分别介绍如下:
SPI接口:此类接口是大多数MCU提供的最基本的通信方式。 其数据传输由同步时钟控制。 信号包括:SDI(串行数据输入)、SDO(串行数据输出)、SCLK(串行时钟)和Ready信号; 某些情况下,可能没有Ready信号; 这种类型的接口可以工作在Master模式或Slave模式。 通俗的说法是,取决于谁提供时钟信号。 提供时钟的一方是Master,对方则是Slaver。
UART(通用异步接收发送):是最基本的异步传输接口。 它只有两条信号线:Rx 和 Tx。 基本数据格式为:起始位 + 数据位(7 位/8 位)+ 奇偶校验位(偶数、奇数或无)+ 停止位(1~2 位)。 一位数据所占用的时间称为波特率。
对于大多数MCU来说,数据的长度、数据的校验方式(奇校验、偶校验或无校验)、停止位(Stop Bit)的长度以及波特率都可以通过程序编程灵活设置。 当然。 此类接口最常用的方法是与PC机的串口进行通信。
I2C接口:I2C是Philips公司开发的一种数据传输协议。 它还使用 2 个信号来实现:SDAT(串行数据输入和输出)和 SCLK(串行时钟)。 它最大的好处是可以将多个设备连接到这条总线上,并通过地址进行识别和访问; I2C总线的最大好处之一是可以非常方便地通过IO口使用软件来实现,并且其传输数据速率完全由SCLK控制。 控制时可以快也可以慢,不像UART接口对速度有严格的要求。
Watchdog(看门狗定时器):看门狗也是大多数MCU的基本配置(部分4位MCU可能没有此功能)。 大多数MCU的看门狗只能允许程序复位,而不能关闭。 (有的在烧入程序时设置,如Microchip PIC系列MCU),而有的MCU则采用特定的方法来决定是否打开,如三星的KS57系列。 只要程序访问看门狗寄存器,它就会自动打开并且不能再次关闭。 一般来说,看门狗的复位时间是可以可编程设置的。 Watchdog最基本的应用是为因意外故障而崩溃的MCU提供自恢复能力。
学习微控制器的技巧
任何MCU的基本原理和功能都是类似的。 唯一的区别是外围功能模块、指令系统等的配置和数量。
对于指令系统来说,虽然它们在形式上看起来有很大不同,但实际上只是符号的不同。 它们所代表的含义、要完成的功能、寻址方式基本相似。
要了解一款MCU,首先需要了解它的ROM空间、RAM空间、IO口数量、定时器数量和计时方式、提供的外围功能模块(Peripheral Circuit)、中断源、工作电压和功耗等。
了解了这些MCU的特性之后,下一步就是将所选MCU的功能与实际项目开发所需的功能进行比较,明确哪些资源是当前需要的,哪些是本项目中没有使用到的。
对于项目中需要用到但所选MCU不提供的功能,需要仔细了解MCU的相关信息,才能采用间接的方法来实现。 例如,正在开发的项目需要与PC机的COM口进行通信,而所选的MCU没有提供UART口,则可以考虑使用外部中断来实现。
对于项目开发所需的资源,您需要仔细理解和阅读Manua*,而不必要的功能模块则可以忽略或浏览。 对于单片机的学习来说,应用是关键,也是主要目的。
明确了单片机的相关功能后,就可以开始编程了。
对于初学者或者第一次使用该MCU的设计者来说,可能会遇到很多不清楚MCU功能的情况。 对于此类问题,有两种解决方法。 一是编写专门的验证程序,了解资料中描述的功能; 其他的可以暂时忽略。 在单片机程序设计中,按照自己目前的理解来编写,留待调试时修改和完善。 前一种方法适合时间比较宽松、初学者的项目,而后一种方法适合有一定单片机开发经验的人或者项目工期比较紧张的情况。
不要花特别的时间来理解命令系统。 指令系统只是逻辑描述的符号。 编程时只能根据自己的逻辑和程序的逻辑要求检查相关指令。 随着编程的进展,你会对指令系统越来越熟悉,甚至可以在不知不觉中记住它。
单片机编程
单片机程序编写和PC程序编写有很大区别。 虽然基于C的MCU开发工具越来越流行,但对于拥有高效程序代码且喜欢使用汇编的设计者来说,汇编语言仍然是最简单、最高效的编程语言。
对于单片机编程来说,基本框架可以说是大致相同的。 一般分为三个部分:初始化部分(这是单片机编程与PC编程最大的区别)、主程序循环体和中断处理程序,分别进行说明。 如下:
初始化:对于所有MCU程序的设计来说,初始化是最基本也是最重要的步骤,一般包括以下内容:
屏蔽所有中断并初始化堆栈指针:初始化部分一般不希望发生任何中断。
清除系统的RAM区域和显示内存:虽然有时可能不是完全必要,但从可靠性和一致性的角度来看,特别是为了防止意外错误,建议养成良好的编程习惯。
IO口的初始化:根据项目的应用需求,设置相关IO口的输入输出模式。 对于输入端口,需要设置其上拉或下拉电阻; 对于输出端口,必须设置其出生级别。 输出以防止不必要的错误。
中断设置:对于工程中需要使用的所有中断源,都应该打开并设置中断的触发条件。 对于不使用的冗余中断,必须将其关闭。
其他功能模块的初始化:对于需要使用的MCU的所有外围功能模块,必须根据项目应用的要求进行相应的设置。 例如,对于UART通信,需要设置波特率、数据长度、验证方法和停止位。 长度等,对于编程定时器,必须设置其时钟源、分频器、重载数据等。
参数初始化:完成单片机硬件和资源的初始化后,下一步就是初始化程序中用到的一些变量和数据。 这部分的初始化需要根据具体项目以及程序的整体安排来设计。 。 对于一些使用EEPROM保存工程预制数据的应用,建议在初始化时将相关数据复制到MCU的RAM中,以提高程序对数据的访问速度,降低系统功耗(原则上访问外部EEPROM不会影响系统的功耗)增加电源的功耗)。
主程序循环体:大多数MCU都是长时间连续运行的,所以它们的主程序体基本上都是循环设计的。 对于多种工作模式的应用,可能存在多个环路。 体,并通过状态标志相互转换。 对于主程序体来说,一般安排以下模块:
计算程序:计算程序一般比较耗时,因此我们坚决反对在任何中断中处理它们,尤其是乘法和除法运算。
显示传输方案:主要针对外接LED和LCD驱动器的应用。
中断处理程序:中断程序主要用于处理实时性要求较高的任务和事件,如外部突发信号的检测、按键的检测和处理、定时计数、LED显示屏扫描等。
一般来说,中断程序应使代码尽可能简洁和短小。 对于不需要实时处理的功能,可以在中断中设置触发标志,然后主程序就会执行具体的事务——这一点非常重要。 特别是对于低功耗、低速的MCU,必须保证对所有中断的及时响应。
不同的MCU对于不同任务体的安排有不同的处理方式。
例如,对于低速、低功耗的MCU(Fosc=32768Hz)应用,考虑到此类项目是手持设备且使用普通LCD显示屏,对按钮按下的响应和显示响应要求实时性较高,因此这一般、定时中断用于处理按钮动作和数据显示; 对于高速MCU,如Fosc>1MHz的应用,由于此时MCU有足够的时间执行主程序循环,因此只能在相应的中断中设置各种触发标志位来执行主程序循环所有任务都在主程序体中执行。
在MCU编程中,需要特别注意的一件事是防止在中断和主程序体中同时访问或设置同一个变量或数据。 有效的预防方法是将此类数据的处理安排在一个模块中,通过判断触发标志来决定是否对该数据进行相关操作; 在其他程序体(主要是中断)中,需要处理数据的处理处只设置触发标志。 –这确保了数据执行是可预测的和唯一的。
全球主流微控制器厂商
欧洲和美洲
1.飞思卡尔+恩智浦(Freescale+NXP):荷兰,主要提供16位和32位MCU。 应用:汽车电子、LED 和普通照明、医疗保健、多媒体融合、家用电器和电动工具、楼宇自动化技术电机控制、电源和电源转换器、能源和智能电网、自动化、计算机和通信基础设施。
2. Microchip+Atmel(Microchip Technology+Atmel):美国,主要提供16位和32位MCU。 应用领域:汽车电子、工业用途、电机控制、汽车、楼宇自动化、家用电器、家庭娱乐、工业自动化、照明、物联网、智慧能源、移动电子设备、计算机外围设备。
3、Cypress+Spansion(赛普拉斯+Spansion半导体):美国,主要提供8位、16位、32位MCU。 应用领域:汽车电子、家用电器、医疗、消费电子、通信和电信、工业、无线。
4、ADI(Analog Devices):美国,主要提供8位、16位、32位MCU。 应用:航空航天和国防、汽车应用、建筑技术、通信、消费电子产品、能源、医疗保健、仪器仪表和测量、电机、工业自动化、安全。
5、英飞凌:德国,主要提供16位和32位MCU。 应用领域:汽车电子、消费电子、工程、商用和农用车辆、数据处理、电动交通、工业应用、医疗设备、移动设备、电机控制和驱动、电源、摩托车、电动自行车和小型电动汽车、智能电网、照明、太阳能系统解决方案、风能系统解决方案。
6. ST微电子:意大利/法国,主要提供32位MCU。 应用:LED 和普通照明、交通、医疗保健、多媒体融合、家用电器和电动工具、楼宇自动化技术电机控制、电源和电源转换器、能源和智能电网、自动化、计算机和通信基础设施。
7.高通:美国,主要提供16位和32位MCU。 应用:智能手机、平板电脑、无线调制解调器。
8、德州仪器:美国,主要提供16位和32位MCU。 应用范围:汽车电子、消费电子、医疗设备、移动设备、通讯。
9.美信(Maxim):美国,主要提供32位MCU。 应用范围:汽车电子、消费电子、工业应用、安防。
日本、韩国
1.瑞萨:日本,主要提供16位和32位MCU。 应用范围:计算机及周边设备、消费电子、健康及医疗电子、汽车电子、工业、通讯等。
2、东芝:日本,主要提供16位和32位MCU。 应用范围:汽车电子、工业用途、电机控制、无线通讯、手机、电脑及周边设备、影像及音视频、消费类(家电)、LED照明、安防、电源管理、娱乐设备。
3.富士通:日本,主要提供32位MCU。 应用范围:汽车、医疗、机械、家电。
4.三星电子:韩国,主要提供16位和32位MCU。 应用领域:汽车电子、工业用途、电机控制、汽车、楼宇自动化、家用电器、家庭娱乐、工业自动化、照明、物联网、智慧能源、移动电子设备、计算机外围设备。
台湾地区
1.宏晶科技:台湾,主要提供32位MCU。 应用范围:通讯、工业控制、信息家电、语音。
2. Holtek Semiconductor:台湾,主要提供8位和32位MCU。 应用范围:消费电子、LED照明等。
3.凌阳科技:台湾,主要提供8位和16位MCU。 适用范围:家庭影音。
4、中盈电子:台湾,主要提供4位和8位MCU。 应用范围:充电器、移动电源、家电、工业控制。
5、松瀚科技:台湾,主要提供8位和32位MCU。 应用范围:遥控器、智能充电器、大小系统、电子秤、耳温计、血压计、胎压计、各种测量及健康设备。
6.华邦电子:台湾,主要提供8位和16位MCU。 应用范围:汽车电子、工业电子、网络、计算机、消费电子、物联网。
7.十速科技:台湾,主要提供4位、8位、51位MCU。 应用范围:遥控器、小家电。
8.宜华微电子:台湾,主要提供4位和8位MCU。 应用范围:录音集成电路产品、消费类电子产品、家用产品。
9、盈光科技微控制器:台湾,主要提供4位和8位MCU。 应用范围:机械、自动化、家电、机器人。
10.义隆电子:台湾,主要提供8位和16位MCU。 应用范围:消费电子、电脑、智能手机。
中国大陆
1.西格玛微电子:主要提供32位MCU,应用范围:电信、制造、能源、交通、电力等。
2、珠海轨道:主要提供32位MCU,应用范围:航空航天:星箭站船舶、飞机; 高端工业控制:嵌入式计算机; 船舶控制、工业控制、电力设备、环境监测。
3.兆易创新:主要提供32位MCU,应用范围:工业自动化、人机界面、电机控制、安防监控、智能家居、物联网。
4、盛思微电子:主要提供8位和32位MCU。 应用范围:小家电、消费电子、遥控器、鼠标、锂电池、数码产品、汽车电子、医疗仪器与测量、玩具、工业控制、智能家居及安防等领域。
5、芯海科技:主要提供16位和32位MCU。 应用范围:仪器仪表、物联网、消费电子、家电、汽车电子。
6、联华集成电路:主要提供8位和16位MCU。 应用范围:消费电子、白色家电、工业控制、通讯设备、汽车电子、计算机。
7、珠海建荣:主要提供8位MCU,应用范围:家用电器、移动电源。
8.炬芯科技:主要提供8位至32位MCU,应用范围:平板电脑、智能家居、多媒体、蓝牙、wifi音频。
9、爱思克微电子:主要提供8位和16位MCU。 应用范围:消费类芯片、通信芯片、信息芯片、家用电器。
10、华芯微电子:主要提供8位和4位MCU。 应用:卫星接收器、手机充电器、万年历和一体化遥控器。
11、上海贝岭(华大半导体控股):主要提供8位、16位、32位MCU。 应用:计算机外围设备、HDTV、电源管理、小家电和数字电器。
12、海尔集成电路:主要提供14位、15位、16位MCU。 应用范围:消费电子、汽车电子、工业、智能仪器仪表。
13、北京君正:主要提供32位MCU,应用范围:可穿戴设备、物联网、智能家电、汽车、消费电子、平板电脑。
14、中微电子:主要提供8位MCU,应用范围:智能家电、汽车电子、安防监控、LED照明及景观、智能玩具、智能家居、消费电子。
15、神舟龙芯集成电路:主要提供32位MCU,应用范围:电力监控、智能电网、工业数字控制、物联网、智能家居、数据监控。
16、紫光微电子:主要提供8位和16位MCU。 应用范围:智能家电。
17、时代民芯:主要提供32位MCU,应用范围:汽车导航、交通监控、渔船监管、电力电信网络。
18、华润硅微电子(华润微电子子公司):主要提供8位和16位MCU。 应用范围:消费电子、工业控制、家用电器。
19、国芯科技:主要提供32位MCU,应用范围:信息安全领域、办公自动化领域、通信网络领域、信息安全领域。
20、中天微:主要提供32位MCU。 应用:智能手机、数字电视、机顶盒、汽车电子、GPS、电子阅读器和打印机。
21、华润微电子:主要提供8位和16位MCU。 应用范围:家用电器、消费电子、工业自动化控制的通用控制电路。
22、中盈电子:主要提供4位、8位、16位、32位MCU。 应用范围:家用电器、电机。
23、岭东微电子:主要提供32位,应用范围:电机控制、蓝牙控制、高清显示、无线充电、无人机、微型打印机、智能标签、电子烟、LED点阵屏等。
24、新唐科技:主要提供8位MCU,应用范围:照明、物联网等。
25、东软Carrier:主要提供8位和32位MCU。 应用范围:家电、智能家居、仪器仪表、液晶面板控制器、工业控制等。
26、Betley:主要提供32位MCU,应用范围:智能家居、工业控制和消费产品。
27、圣泉科技:主要提供8位MCU,应用范围:汽车、教育、工控、医疗等中小型显示面板。
28、航顺芯片:主要提供8位和32位MCU。 应用范围:汽车、物联网等。
29、复旦微电子:主要提供16位和32位MCU。 应用:智能电表、智能门锁等。
30、华大半导体:主要提供8位、16位、32位MCU。 应用领域:工业控制、智能制造、智慧生活、物联网。