当前位置:首页 >> 信息与通信 >>

如何学习一款新的微控制器或处理器


控制器, 处理器, 上手, 学习 任何一款 MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及 数量、指令系统等。对于指令系统,虽然形式上看似千差万别,但实际上只是符号的不同, 其所代表的含义、所要完成的功能和寻址方式基本上是类似的。因此,对于任何一款 MCU, 主要应从如下的几个方面来理解和掌握: * MCU 的特点:要了解一款 MCU,首先需要知道就是其

ROM 空间、RAM 空间、IO 口数量、定时器数量和定时方式、所提供的外围功能模块(Peripheral Circuit) 、中断源、工 作电压及功耗等等。 * 了解这些 MCU Features 后,接下来第一步就是将所选 MCU 的功能与实际项目开发 的要求的功能进行对比,明确那些资源是目前所需要的,那些是本项目所用不到的。对于项 目中需要用到的而所选 MCU 不提供的功能,则需要认真理解 MCU 的相关资料,以求用间 接的方法来实现,例如,所开发的项目需要与 PC 机 COM 口进行通讯,而所选的 MCU 不 提供 UART 口,则可以考虑用外部中断的方式来实现; * 对于项目开发需要用到的资源,则需要对其 Manua*进行认真的理解和阅读,而对于 不需要的功能模块则可以忽略或浏览即可。对于 MCU 学习来讲,应用才是关键,也是最主 要的目的。 * 明确了 MCU 的相关功能后,接下来就可以开始编程了。对于初学者或初次使用此款 MCU 的设计者来说,可能会遇到很多对 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) + arity 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 IC 系列 MCU) ,而有的 MCU 则是 通过特定的方式来决定其是否打开,如 Samsung 的 KS57 系列,只要程序访问了 Watchdog 寄存器,就自动开启且不能再被关闭。一般而言 watchdog 的复位时间是可以程序来设定的。 Watchdog 的最基本的应用是为 MCU 因为意外的故障而导致死机提供了一种自我恢复的能 力。 MCU 程序的编写: MCU 的程序的编写与 PC 下的程序的编写存在很大的区别,虽然现在基于 C 的 MCU 开发工具越来越流行, 但对于一个高效的程序代码和喜欢使用汇编的设计者来讲, 汇编语言 仍然是最简洁、最有效的编程语言。对于 MCU 的程序编写,其基本的框架可以说是大体一 致的,一般分为初始化部分(这是 MCU 程序设计与 PC 最大的不同) ,主程序循环体和中断 处理程序三大部分(见图 1 a 和 b) ,其分别说明如下: * 初始化:对于所有的 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 开发来讲,必须记住一点: “条条大路通罗马” ,没有做不到的事,关 键是看方法是否正确!再就是多做多动手和多想。


相关文章:
单片机、微控制器和微处理器有何区别?
处理器通常指微处理器微控制器和数字信号处理器这...微处理器(MPU)通常代表一功能强大的 CPU,但不是...驾考新题抢先版78份文档 一起来广场舞 广场舞活动...
单片机、微控制器和微处理器区别
答:处理器通常指微处理器微控制器和数字信号处理器这三种类型的芯片。微处理器 (MPU)通常代表一功能强大的 CPU,但不是为任何已有的特定计算目 的而设计的...
嵌入式系统(STM32微处理器)实训指导书
嵌入式系统(STM32微处理器)实训指导书_计算机硬件及...在工作中,我们常常会遇到新的东西,需要以已有的 ...1)学习 STM32 微控制器资料,熟悉 Keil MDK 软件...
如何计算感温电缆配套使用的微机控制器和终端处理器
如何计算感温电缆配套使用的微机控制器和终端处理器_电子/电路_工程科技_专业资料...电缆上时,其固定卡具的数目计算方法如下:固定卡具数目= 正弦波半波数× 2...
“单片机原理及嵌入式系统”课程教学大纲
第二章:新一代 8 位微控制器物 MC68HC08 MC68HC08 系列微控制器概述, ...——微控制器与微 处理器,MCU 的开发手段,为什么要学 MCU 和怎样 学习 MCU...
《嵌入式微控制器设计及应用》大纲
学习,使学生了 解嵌入式处理器 ARM7 微处理器体系...嵌入式微控制器设计及应用课程内,开设 3 实验: ...新市场营销法则 助推企业成长 999感冒灵市场营销方案...
毕业论文-浅谈单片机的学习及应用
单片机又称单片微控制器,它不是完成某一逻辑功能...因发明微处理器,霍夫被英国《经济 家》杂志列为...或新的单片机品种 , 如 AVR 单 21 片机 DIP 封装...
中南大学微控制器考试复习资料
中南大学微控制器考试复习资料_工_高等教育_教育专区...微处理器由 和 两大部分组成,是单片机的核心部件。...5、MCS-51 单片机存储器在物理结构上共分为 4 个...
CPU新介绍--C8051F020单片微控制器
的运算处理能力 2.3.1 CIP-51 微控制器 MCU 系统控制器的内核是 CIP-51 ...如何学习一款新的微控制... 5页 1下载券 C8051F020概述 20页 5下载券 ...
单片机课程综述
我对本 学期单片机极其应用系统的学习总结理解如下: 首先我们要了解什么是单片机...单片机又称单片微控制器,是指在一块芯片体上集成中央处理器 CPU、 随机存储器...
更多相关标签: