史上最强单片机科普 应广单片机( 二 )


外部中断:外部中断也是大多数MCU的基本功能,一般用于信号的实时触发、数据采样和状态检测 。中断模式由上升沿、下降沿和电平触发 。外部中断通常通过输入端口实现 。如果是IO口,其中断功能只有设置为输入时才会开启 。如果是输出端口,外部中断功能会自动关闭(ATMEL的ATiny系列也有一些例外,使用输出端口也可以触发中断功能) 。外部中断的应用如下:
外部触发信号检测:一种是基于实时性要求,如可控硅的控制,突发信号的检测等 。,而另一个则是需要节约用电 。
信号频率的测量,为了保证信号不被遗漏,外部中断是最理想的选择 。
数据解码:在远程控制应用领域,为了降低设计成本,往往需要使用软件对各种编码数据进行解码,如曼彻斯特编码、PWM编码等 。
按键检测和系统唤醒:对于进入睡眠状态的MCU,一般需要通过外部中断唤醒,最基本的形式就是按键,通过按键的动作产生电平变化 。
通信接口:单片机提供的通信接口一般包括SPI接口、UART、I2C接口等 。,分别描述如下:
SPI接口:该接口是大多数MCU提供的最基本的通信方式,其数据传输由同步时钟控制 。信号包括串行数据输入、串行数据输出、SCLK和就绪信号 。在某些情况下,可能没有就绪信号;这种接口可以在主模式或从模式下工作 。通俗来说就是看谁提供时钟信号,提供时钟的一方是Master,对面是Slave 。
通用异步接收发送:它是最基本的异步传输接口 。它的信号线只有Rx和Tx 。基本数据格式为:起始位+数据位(7位/8位)+奇偶校验位(偶数、奇数或无)+停止位(1 ~ 2位) 。一位数据占用的时间称为波特率 。
对于大多数单片机来说,数据长度、数据校验方式(奇数校验、偶数校验或无校验)、停止位长度和波特率可以通过编程灵活设置 。这种接口最常见的方式是与PC机的串口通信 。
I2C接口:I2C是飞利浦开发的数据传输协议,也是通过两个信号实现的:SDAT(串行数据输入输出)和SCLK(串行时钟) 。它最大的优点是可以在这条总线上连接多个设备,并通过地址识别和访问它们 。I2C总线最大的优点之一就是通过IO口用软件实现非常方便,其数据速率完全由SCLK控制,可以快也可以慢 。与UART接口不同,它有严格的速率要求 。
看门狗(Watchdog timer):看门狗也是大多数MCU的基本配置(有些4位MCU可能没有这个功能) 。大多数单片机的看门狗只能让程序复位而不能关闭(有些是程序烧录时设置的,比如Microchip PIC单片机) 。有些MCU决定是否以特定方式打开,比如三星的KS57系列 。只要程序访问看门狗寄存器,它就会自动打开,不能再关闭 。一般来说,看门狗的复位时间是可以编程的 。看门狗最基本的应用就是为MCU提供一种因意外故障而崩溃的自恢复能力 。
单片机学习技巧
任何一个MCU的基本原理和功能都是相似的,只有外围功能模块、指令系统等的配置和数量 。
对于指令系统来说,虽然形式看似千差万别,但实际上只是不同的符号,其含义、要完成的功能和寻址方式基本相似 。
要了解一个MCU,首先要知道的是它的ROM空房间,RAM空房间,IO端口号,定时器数量和计时方式,提供的外设电路,中断源,工作电压和功耗等 。
在了解了这些MCU特性之后,下一步就是将所选MCU的功能与实际项目开发所需的功能进行对比,明确目前需要哪些资源,哪些资源没有在本项目中使用 。
对于项目中需要用到但并非由所选MCU提供的功能,需要仔细了解MCU的相关信息,才能间接实现 。比如开发的项目需要与PC的COM端口进行通信,而选择的MCU不提供UART端口,则可以通过外部中断来实现 。
对于项目开发所需的资源,需要仔细理解和阅读其Manua *,而不必要的功能模块可以忽略或浏览 。对于单片机学习来说,应用是关键,也是主要目的 。
明确了单片机的相关功能后,接下来就可以开始编程了 。
对于初次使用这款MCU的初学者或设计师来说,可能有很多地方对MCU的功能描述不太清楚 。对于这样的问题,有两种方法可以解决 。一是编写专门的验证程序,了解数据中描述的功能 。另一个暂时可以忽略,单片机编程是按照我目前的理解写的,调试时留下修改完善 。前一种方法适合时间比较宽松的项目和初学者,后一种方法适合对单片机开发有一定经验的人或者日程比较紧迫的项目 。
系统永远不应该花时间去理解指令 。指令系统只是逻辑描述的符号 。只有在编程的时候,才可以根据自己的逻辑和程序的逻辑要求来检查相关的指令 。而且随着编程,你会越来越精通指令系统,甚至可以在不知不觉中背下来 。

推荐阅读