欢迎光临专业集成电路测试网~~欢迎加入IC测试QQ群:111938408

专业IC测试网

MCU介绍

时间:2023-03-24 16:18来源:元器件封装测试之友 作者:ictest8_edit 点击:

MCU简介

微控制单元(Microcontroller Unit;MCU) ,又称单片微型计算机(Single Chip Microcomputer )或者单片机,是把中央处理器(Central Process Unit;CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。诸如手机、PC外围、遥控器,至汽车电子、工业上的步进马达、机器手臂的控制等,都可见到MCU的身影。

MCU工作原理

MCU同温度传感器之间通过I2C总线连接。I2C总线占用2条MCU输入输出口线,二者之间的通信完全依靠软件完成。温度传感器的地址可以通过2根地址引脚设定,这使得一根I2C总线上可以同时连接8个这样的传感器。本方案中,传感器的7位地址已经设定为1001000。MCU需要访问传感器时,先要发出一个8位的寄存器指针,然后再发出传感器的地址(7位地址,低位是WR信号)。传感器中有3个寄存器可供MCU使用,8位寄存器指针就是用来确定MCU究竟要使用哪个寄存器的。本方案中,主程序会不断更新传感器的配置寄存器,这会使传感器工作于单步模式,每更新一次就会测量一次温度。
要读取传感器测量值寄存器的内容,MCU必须首先发送传感器地址和寄存器指针。MCU发出一个启动信号,接着发出传感器地址,然后将RD/WR管脚设为高电平,就可以读取测量值寄存器。
为了读出传感器测量值寄存器中的16位数据,MCU必须与传感器进行两次8位数据通信。当传感器上电工作时,默认的测量精度为9位,分辨力为0.5 C/LSB(量程为-128.5 C至128.5 C)。本方案采用默认测量精度,根据需要,可以重新设置传感器,将测量精度提高到12位。如果只要求作一般的温度指示,比如自动调温器,那么分辨力达到1 C就可以满足要求了。这种情况下,传感器的低8位数据可以忽略,只用高8位数据就可以达到分辨力1 C的设计要求。由于读取寄存器时是按先高8位后低8位的顺序,所以低8位数据既可以读,也可以不读。只读取高8位数据的好处有二,第一是可以缩短MCU和传感器的工作时间,降低功耗;第二是不影响分辨力指标。
MCU读取传感器的测量值后,接下来就要进行换算并将结果显示在LCD上。整个处理过程包括:判断显示结果的正负号,进行二进制码到BCD码的转换,将数据传到LCD的相关寄存器中。
数据处理完毕并显示结果之后,MCU会向传感器发出一个单步指令。单步指令会让传感器启动一次温度测试,然后自动进入等待模式,直到模数转换完毕。MCU发出单步指令后,就进入LPM3模式,这时MCU系统时钟继续工作,产生定时中断唤醒CPU。定时的长短可以通过编程调整,以便适应具体应用的需要。
MCU主要分类
 
按用途分类:
通用型:将可开发的资源(ROM、RAM、I/O、 EPROM)等全部提供给用户。
专用型:其硬件及指令是按照某种特定用途而设计,例如录音机机芯控制器、打印机控制器、电机控制器等。
按其基本操作处理的数据位数分类:
根据总线或数据暂存器的宽度,单片机又分为1位、4位、8位、16位、32位甚至64位单片机。4位MCU大部份应用在计算器、车用仪表、车用防盗装置、呼叫器、无线电话、CD播放器、LCD驱动控制器、LCD游戏机、儿童玩具、磅秤、充电器、胎压计、温湿度计、遥控器及傻瓜相机等;8位MCU大部份应用在电表、马达控制器、电动玩具机、变频式冷气机、呼叫器、传真机、来电辨识器(CallerID)、电话录音机、CRT显示器、键盘及USB等;8位、16位单片机主要用于一般的控制领域,一般不使用操作系统, 16位MCU大部份应用在行动电话、数字相机及摄录放影机等;32位MCU大部份应用在Modem、GPS、PDA、HPC、STB、Hub、Bridge、Router、工作站、ISDN电话、激光打印机与彩色传真机;32位用于网络操作、多媒体处理等复杂处理的场合,一般要使用嵌入式操作系统。64位MCU大部份应用在高阶工作站、多媒体互动系统、高级电视游乐器(如SEGA的Dreamcast及Nintendo的GameBoy)及高级终端机等。
8位MCU工作频率在16~50MHz之间,强调简单效能、低成本应用,在目前MCU市场总值仍有一定地位,而不少MCU业者也持续为8bit MCU开发频率调节的节能设计,以因应绿色时代的产品开发需求。
16位MCU,则以16位运算、16/24位寻址能力及频率在24~100MHz为主流规格,部分16bit MCU额外提供32位加/减/乘/除的特殊指令。由于32bit MCU出现并持续降价及8bit MCU简单耐用又便宜的低价优势下,夹在中间的16bit MCU市场不断被挤压,成为出货比例中最低的产品。
32位MCU可说是MCU市场主流,单颗报价在1.5~4美元之间,工作频率大多在100~350MHz之间,执行效能更佳,应用类型也相当多元。但32位MCU会因为操作数与内存长度的增加,相同功能的程序代码长度较8/16bit MCU增加30~40%,这导致内嵌OTP/FlashROM内存容量不能太小,而芯片对外脚位数量暴增,进一步局限32bit MCU的成本缩减能力。
内嵌程序存储器类型
下面以51单片机为例(MCS-51系列MCU是我国使用最多的单片机),根据其内部存储器的类型不同可以分为以下几个基本型:
1.无ROM型 :8031
2.ROM型:8051
3.EPROM型:8751
4.EEPROM 型:8951
5.增强型:8032/8052/8752/8952/C8051F
MCU按其存储器类型可分为无片内ROM型和带片内ROM型两种。对于无片内ROM型的芯片,必须外接EPROM才能应用(典型芯片为8031)。带片内ROM型的芯片又分为片内EPROM型(典型芯片为87C51)、MASK片内掩模ROM型(典型芯片为8051)、片内FLASH型(典型芯片为89C51)等类型,一些公司还推出带有片内一次性可编程ROM(One Time Programming, OTP)的芯片(典型芯片为97C51)。MASKROM的MCU价格便宜,但程序在出厂时已经固化,适合程序固定不变的应用场合;FLASH ROM的MCU程序可以反复擦写,灵活性很强,但价格较高,适合对价格不敏感的应用场合或做开发用途;OTPROM的MCU价格介于前两者之间,同时又拥有一次性可编程能力,适合既要求一定灵活性,又要求低成本的应用场合,尤其是功能不断翻新、需要迅速量产的电子产品。
由于MCU强调是最大密集度与最小芯片面积,以有限的程序代码达成控制功能,因此当今MCU多半使用内建的MaskROM、OTP ROM、EEPROM或Flash内存来储存韧体码,MCU内建Flash内存容量从低阶4~64KB到最高阶512KB~2MB不等。
存储器结构
MCU根据其存储器结构可分为哈佛(Harvard)结构和冯▪诺依曼(Von Neumann)结构。现在的单片机绝大多数都是基于冯·诺伊曼结构的,这种结构清楚地定义了嵌入式系统所必需的四个基本部分:一个中央处理器核心,程序存储器(只读存储器或者闪存)、数据存储器(随机存储器)、一个或者更多的定时/计时器,还有用来与外围设备以及扩展资源进行通信的输入/输出端口,所有这些都被集成在单个集成电路芯片上。
指令结构
MCU根据指令结构又可分为CISC(Complex Instruction Set Computer,复杂指令集计算机)和RISC(Reduced Instruction Set Comuter,精简指令集计算机微控制器)

MCU特点

(1)集成度高、体积小。
Mcu将CPU、存储器、I/O接口等各种功能部件集成在一块晶体芯片上,体积小,节省空间。能灵活,方便地应用于各种智能化的控制设备和仪器,实现机电一体化。
(2)可靠性高,抗干扰性强。
Mcu把各种功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了Mcu的可靠性与抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。
(3)低功耗。
许多Mcu的工作电压只有2~4伏特,电流几百微安,功耗很低,适用于便携式系统。
(4)控制功能强。
其CPU可以对I/O端口直接进行操作,可以进行位操作、分支转移操作, 还能方便地实现多机控制,使整个系统的控制效率大为提高,适用于专门的控制领域。
(5)可扩展性好。
Mcu具有灵活方便的外部扩展总线接口,使得当片内资源不够使用时可以非常方便地进行片外扩展。另外,现在Mcu具有越来越丰富的通信接口:如异步串行口SCI、同步串行口SPI、I2C、CAN总线、甚至有的Mcu还集成了USB接口或以太网接口,这些丰富的通信接口使得Mcu系统与外部计算机系统的通信变得非常容易。
(6)性价比高。
Mcu应用广泛,生产批量大,产品供应商的商业竞争使得Mcu产品的性能越来越强而价格低廉,有优异的性能价格比。
 

MCU基本功能

对于绝大多数MCU,下列功能是最普遍也是最基本的,针对不同的MCU,其描述的方式可能会有区别,但本质上是基本相同的:
TImer(定时器):TImer的种类虽然比较多,但可归纳为两大类:一类是固定时间间隔的TImer,即其定时的时间是由系统设定的,用户程序不可控制,系统只提供几种固定的时间间隔给用户程序进行选择,如32Hz,16Hz,8Hz等,此类TImer在4位MCU中比较常见,因此可以用来实现时钟、计时等相关的功能;另一类则是Programmable Timer(可编程定时器),顾名思义,该类Timer的定时时间是可以由用户的程序来控制的,控制的方式包括:时钟源的选择、分频数(Prescale)选择及预制数的设定等,有的MCU三者都同时具备,而有的则可能是其中的一种或两种。此类Timer应用非常灵活,实际的使用也千变万化,其中最常见的一种应用就是用其实现PWM输出(具体的应用,后续会有特别的介绍)。由于时钟源可以自由选择,因此,此类Timer一般均与Event Counter(事件计数器)合在一起;
IO口:任何MCU都具有一定数量的IO口,没有IO口,MCU就失去了与外部沟通的渠道。根据IO口的可配置情况,可以分为如下几种类型:
纯输入或纯输出口:此类IO口有MCU硬件设计决定,只能是输入或输出,不可用软件来进行实时的设定;
直接读写IO口:如MCS-51的IO口就属于此类IO口。当执行读IO口指令时,就是输入口;当执行写IO口指令则自动为输出口;
程序编程设定输入输出方向的:此类IO口的输入或输出由程序根据实际的需要来进行设定,应用比较灵活,可以实现一些总线级的应用,如I2C总线,各种LCD、LED Driver的控制总线等;
对于IO口的使用,重要的一点必须牢记的是:对于输入口,必须有明确的电平信号,确保不能浮空(可以通过增加上拉或下拉电阻来实现);而对于输出口,其输出的状态电平必须考虑其外部的连接情况,应保证在Standby或静态状态下不存在拉电流或灌电流。
外部中断:外部中断也是绝大多数MCU所具有的基本功能,一般用于信号的实时触发,数据采样和状态的检测,中断的方式由上升沿、下降沿触发和电平触发几种。外部中断一般通过输入口来实现,若为IO口,则只有设为输入时其中断功能才会开启;若为输出口,则外部中断功能将自动关闭(ATMEL的ATiny系列存在一些例外,输出口时也能触发中断功能)。外部中断的应用如下:
外部触发信号的检测:一种是基于实时性的要求,比如可控硅的控制,突发性信号的检测等;而另一种情况则是省电的需要;
信号频率的测量;为了保证信号不被遗漏,外部中断是最理想的选择;
数据的解码:在遥控应用领域,为了降低设计的成本,经常需要采用软件的方式来对各种编码数据进行解码,如Manchester和PWM编码的解码;
按键的检测和系统的唤醒:对于进入Sleep状态的MCU,一般需要通过外部中断来进行唤醒,最基本的形式则是按键,通过按键的动作来产生电平的变化;
 
通讯接口:MCU所提供的通讯接口一般包括SPI接口,UART,I2C接口等,其分别描述如下:
SPI接口:此类接口是绝大多数MCU都提供的一种最基本通讯方式,其数据传输采用同步时钟来控制,信号包括:SDI(串行数据输入)、SDO(串行数据输出)、SCLK(串行时钟)及Ready信号;有些情况下则可能没有Ready信号;此类接口可以工作在Master方式或Slave方式下,通俗说法就是看谁提供时钟信号,提供时钟的一方为Master,相反的一方则为Slaver;
UART(Universal Asynchronous Receive Transmit):属于最基本的一种异步传输接口,其信号线只有Rx和Tx两条,基本的数据格式为:Start Bit + Data Bit(7-bits/8-bits) + Parity Bit(Even, Odd or None) + Stop Bit(1~2Bit)。一位数据所占的时间称为Baud Rate(波特率)。对于大多数的MCU来讲,数据为的长度、数据校验方式(奇校验、偶校验或无校验)、停止位(Stop Bit)的长度及Baud Rate是可以通过程序编程进行灵活设定。此类接口最常用的方式就是与PC机的串口进行数据通讯。
I2C接口:I2C是由Philips开发的一种数据传输协议,同样采用2根信号来实现:SDAT(串行数据输入输出)和SCLK(串行时钟)。其最大的好处是可以在此总线上挂接多个设备,通过地址来进行识别和访问;I2C总线的一个最大的好处就是非常方便用软件通过IO口来实现,其传输的数据速率完全由SCLK来控制,可快可慢,不像UART接口,有严格的速率要求。
Watchdog(看门狗定时器):Watchdog也是绝大多数MCU的一种基本配置(一些4位MCU可能没有此功能),大多数的MCU的Watchdog只能允许程序对其进行复位而不能对其关闭(有的是在程序烧入时来设定的,如Microchip PIC系列MCU),而有的MCU则是通过特定的方式来决定其是否打开,如Samsung的KS57系列,只要程序访问了Watchdog寄存器,就自动开启且不能再被关闭。一般而言watchdog的复位时间是可以程序来设定的。Watchdog的最基本的应用是为MCU因为意外的故障而导致死机提供了一种自我恢复的能力。

MCU架构介绍

在MCU 开发方面,以架构而言,可分为两大主流;RISC(如HOLTEK HT48XXX 系列)与CISC(如华邦W78 系列).
RISC (Reduced Instruction Set Computer) 代表MCU 的所有指令都是利用一些简单的指令组成的,简单的指令代表 MCU 的线路可以尽量做到最佳化,而提高执行速率,相对的使得一个指令所需的时间减到最短。HOLTEK 的HT46XX(A/D MCU 系列) HT47XX(R to F MCU 系列) HT48XX(一般I/O MCU 系列) HT49XX(LCD MCU 系列) 便是采用 RISC 结构来设计。不管是 RISC 或是 CISC(Complex Instruction Set Computer),设计MCU 的目的便是为人类服务的,对于 RISC 来说,因为指令集的精简,所以许多工作都必须组合简单的指令,而针对较复杂组合的工作便需要由『编译程序』(compiler) 来执行,而 CISC MCU ,compiler 的工作因而减少许多。以一个数值运算程序来说,使用 CISC 指令集的MCU 运算对于一个积分表达式可能只需要十个机器指令,而 RISC MCU 在执行相同的程序时,却因为CPU 本身不提供浮点数乘法的指令,所以可能需要执行上百个机器指令 (但每一个指令可能只需要 CISC 指令十分之一的时间),而由程序语言转换成机器指令的动作是由程序语言的 Compiler 来执行,所以在 RISC MCU 的Compiler 便会较复杂 。
因为同样一个高级语言 A=B*C 的运算,在 RISC MCU 转换为机器指令可能有许多种组合,而每一种组合的『时间/空间』组合都不尽相同。所以 RISC 与 CISC 的取舍之间,似乎也是MCU 硬件架构与软件(Compiler) 的平衡之争,应该没有绝对优势的一方,只能说因应不同的需求而有不同的产品,例如工作单纯的打印机核心 MCU,便适合使用效能稳定,但单位指令效率较佳的 RISC MCU. (MCU) 微控制器产品架构由早期以累积器为基础的CPU,演进至现今含精简指令(RISC)或同时含RISC、DSP如Motorola的68356, 也有如DEC 的SAIIC、与Hitachi 的SH-DSP 系列等之32 位嵌入式微控制器 ,每一系列产品又因应不同的应用与接口需求 ,衍生出不同规格的产品 。微控制器产品以特性做为区分的标准与市场统计的依据 ,区分为4 位 、8 位 、以及16/32 位等三大类 。各厂商依其不同功能组合 ,发展出系列性的微控制器产品 ,如NEC 供应PD75X 的4 位系列 ,Toshiba 供应47CXX 的4 位系列 、HOLTEK 供应HT48CXX 的8 位系列 、及Intel 之MCS-96 的16 位系列等。
 

MCU程序的编写

MCU的程序的编写与PC下的程序的编写存在很大的区别,虽然现在基于C的MCU开发工具越来越流行,但对于一个高效的程序代码和喜欢使用汇编的设计者来讲,汇编语言仍然是最简洁、最有效的编程语言。对于MCU的程序编写,其基本的框架可以说是大体一致的,一般分为初始化部分(这是MCU程序设计与PC最大的不同),主程序循环体和中断处理程序三大部分,其分别说明如下:
 
初始化:对于所有的MCU程序的设计来讲,出世化是最基本也是最重要的一步,一般包括如下内容:
屏蔽所有中断并初始化堆栈指针:初始化部分一般不希望有任何中断发生;
清除系统的RAM区域和显示Memory:虽然有时可能没有完全的必要,但从可靠性及一致性的角度出发,特别是对于防止意外的错误,还是建议养成良好的编程习惯;
IO口的初始化:根据项目的应用的要求,设定相关IO口的输入输出方式,对与输入口,需要设定其上拉或下拉电阻;对于输出口,则必须设定其出世的电平输出,以防出现不必要的错误;
中断的设置:对于所有项目需要用到的中断源,应该给予开启并设定中断的触发条件,而对于不使用的多余的中断,则必须给予关闭;
其他功能模块的初始化:对于所有需要用到的MCU的外围功能模块,必须按项目的应用的要求进行相应的设置,如UART的通讯,需要设定Baud Rate,数据长度,校验方式和Stop Bit的长度等,而对于Programmer Timer,则必须设置其时钟源,分频数及Reload Data等;
参数的出世化:完成了MCU的硬件和资源的出世化后,接下来就是对程序中使用到的一些变量和数据的初始化设置,这一部分的初始化需要根据具体的项目及程序的总体安排来设计。对于一些用EEPROM来保存项目预制数的应用来讲,建议在初始化时将相关的数据拷贝到MCU的RAM,以提高程序对数据的访问速度,同时降低系统的功耗(原则上,访问外部EEPROM都会增加电源的功耗)。
主程序循环体:大多数MCU是属于长时间不间断运行的,因此其主程序体基本上都是以循环的方式来设计,对于存在多种工作模式的应用来讲,则可能存在多个循环体,相互之间通过状态标志来进行转换。对于主程序体,一般情况下主要安排如下的模块:
计算程序:计算程序一般比较耗时,因此坚决反对放在任何中断中处理,特别是乘除法运算;
实时性要求不高或没有实时性要求的处理程序;
显示传输程序:主要针对存在外部LED、LCD Driver的应用;
中断处理程序:中断程序主要用于处理实时性要求较高的任务和事件,如,外部突发性信号的检测,按键的检测和处理,定时计数,LED显示扫描等。一般情况下,中断程序应尽可能保证代码的简洁和短小,对于不需要实时去处理的功能,可以在中断中设置触发的标志,然后由主程序来执行具体的事务――这一点非常重要,特别是对于低功耗、低速的MCU来讲,必须保证所有中断的及时响应。
对于不同任务体的安排,不同的MCU其处理的方法也有所不同。例如,对于低速、低功耗的MCU(Fosc=32768Hz)应用,考虑到此类项目均为手持式设备和采用普通的LCD显示,对按键的反应和显示的反应要求实时性较高,应此一般采用定时中断的方式来处理按键的动作和数据的显示;而对于高速的MCU,如Fosc》1MHz的应用,由于此时MCU有足够的时间来执行主程序循环体,因此可以只在相应的中断中设置各种触发标志,并将所有的任务放在主程序体中来执行;
在MCU的程序设计中,还需要特别注意的一点就是:要防止在中断和主程序体中同时访问或设置同一个变量或数据的情况。有效的预防方法是,将此类数据的处理安排在一个模块中,通过判断触发标志来决定是否执行该数据的相关操作;而在其他的程序体中(主要是中断),对需要进行该数据的处理的地方只设置触发的标志。――这可以保证数据的执行是可预知和唯一的。

MCU发展趋势

1、低成本、低功耗、高集成、高精度、高稳定性MCU占据更大市场份额。除了对传统领域现有MCU系列产品进行更新、升级外,未来新兴应用领域如低能耗电机控制、便携式医疗设备、高精度工业仪器控制、特殊工作环境电子控制、精细动力控制等,对产品可靠性、鲁棒性、稳定性等都有较高的要求。物联网、节能环保、新能源动力电池、轨道交通等新兴战略性产业也需要大量低成本、低功耗、高集成、高精度、高稳定性MCU。
2、整合各种不同功能的MCU不断涌现。随着智能设备、物联网等产业的快速发展,无线RF、传感器、电源管理等搭配MCU成为一种新趋势。高度整合的MCU不仅可以方便客户开发产品,并且可减少印刷电路板的占用空间,从而能够降低一部分成本,将来非常具有市场潜力。
 

MCU应用

由于制程的改进,8 位MCU 与4 位MCU 价差相去无几,8 位已渐成为市场主流;针对4 位MCU,大部份供货商采接单生产,目前4 位MCU 大部份应用在计算器、车表、车用防盗装置、呼叫器、无线电话、CD Player、LCD 、LCD Game、儿童玩具、磅秤、充电器、胎压计、温湿度计、遥控器及傻瓜相机等;8 位MCU 大部份应用在电表、马达控制器、电动玩具机、变频式冷气机、呼叫器、传真机、来电辨识器(Caller ID)、电话录音机、CRT Display、键盘及USB 等;16 位MCU 大部份应用在行动电话、数字相机及摄录放影机等;32 位MCU 大部份应用在Modem、GPS、PDA、HPC、 STB、Hub、Bridge、Router、工作站、ISDN 电话、激光打印机与彩色传真机;64 位MCU 大部份应用在高阶工作站、多媒体互动系统、高级电视游乐器(如SEGA 的Dreamcast 及Nintendo 的GameBoy)及高级终端机等。
 
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名: 验证码: 点击我更换图片