单片机的基本功能对于大多数MCU来说,以下功能是最常见和最基本的。不同单片机的描述方法可能不同,但本质是一样的。
1. Timer : Timer的种类虽然很多,但可以分为两大类。第一种是具有固定时间间隔的Timer,也就是说它的定时是由系统设定的,不能由用户程序控制。系统仅提供几种不同类型的定时器。给用户程序一个固定的时间间隔,如32Hz、16Hz、8Hz等。由于这种定时器在4位MCU 中比较常见,可以用来实现时钟、定时等相关功能。
另一种是可编程定时器。这种定时器的计时可以由用户程序控制。控制方式包括时钟源的选择、预分频数的选择、预置数的设置等。大多数MCU同时具备这三种,也有的可能具备其中一种或两种。这种Timer应用非常灵活,实际使用也是千变万化的。最常见的应用之一是使用它来实现PWM输出。
由于可以自由选择时钟源,因此此类Timer一般与Event Counter结合使用。
2. IO口:任何MCU都有一定数量的IO口。没有IO口,MCU将失去与外界通信的通道。根据IO口的可配置情况,可分为以下几种:
纯输入或纯输出:这种类型的IO口由MCU硬件设计决定,只能输入或输出,不能通过软件实时设置。
3.直接读写IO口:例如MCS-51的IO口就 属于这种IO口。执行读IO端口命令时,为输入端口;当执行写 IO 端口命令时,它自动成为一个输出端口。
程序编程设置输入输出方向:该类IO口的输入或输出由程序根据实际需要设置,应用更灵活,可实现一些总线级应用,如12C总线、各种LCD、LED Driver控制总线等。
使用IO口的时候一定要牢记这一点:对于输入口,必须有一个清电平信号,保证不能悬空(这个可以通过加上拉或下拉电阻来实现) ; 而对于输出端口,输出状态电平必须考虑到其外部连接,应保证Standby或静态时没有source current或sink current。
外部中断:外部中断是大多数MCU 的基本功能。它们通常用于实时信号生成、数据采样和状态检测。上升沿、下降沿、电平触发都是中断方式。在大多数情况下,外部中断是通过输入端口处理的。如果是IO口,只有设置为输入口时才会启用中断功能;如果设置为输出端口,外部中断功能会自动关闭(ATMEL的ATiny系列有一些例外,输出端口也可以触发中断功能)。外部中断的应用如下:
外触发信号检测:一种是基于实时性要求,如可控硅控制、突发信号检测等,另一种是基于省电。
信号频率测量:为确保不丢失信号,外部中断是最佳选择。
解码数据:为了降低遥控应用领域的设计成本,经常需要使用软件对各种编码数据进行解码,例如曼彻斯特编码和PWM 编码。
按键检测和系统唤醒:为了使MCU 进入休眠状态,必须通过外部中断将其唤醒。最基本的形式是一个按钮,而层次的变化是由按钮的动作引起的。
4 、通信接口:MCU提供的通信接口一般有SPI接口、UART。I2C 接口等,描述如下:
SPI接口:这类接口是大多数MCU提供的最基本的通信方式。它的数据传输由一个同步时钟控制。信号包括SDI(串行数据输入)、SDO(串行数据输出)、SCLK(串行时钟)和Ready信号;在某些情况下,可能没有 Ready 信号;这类接口可以工作在Master模式或者Slave模式,通俗的说就是看谁提供时钟信号,提供时钟的一方是Master,对方是Slaver。
UART:属于最基本的异步传输接口。它的信号线只有两条Rx和Tx线。基本数据格式为:Start Bit + Data Bit(7-bits/8-bits) + Parity Bit(Even, Odd or None) + Stop Bit(1~2Bit)。一位数据所占用的时间称为波特率。
对于大多数单片机,数据位长度、数据校验方式(奇校验、偶校验或无校验)、停止位长度和波特率都可以通过程序编程灵活设置。当然。这类接口最常见的方式是与PC的串口通信。
I2C接口:I2C是飞利浦开发的数据传输协议。它还使用两个信号来实现:SDAT(串行数据输入和输出)和SCLK(串行时钟)。最大的好处是可以在这条总线上挂接多个设备,并且可以通过地址来识别和访问它们;I2C总线最大的优点之一就是通过IO口使用软件实现非常方便,其传输的数据速率完全由SCLK控制。为了控制,它可以快也可以慢,不像 UART 接口,它有严格的速率要求。
5 、看门狗:看门狗是大部分单片机的基本配置,只能让程序复位不能关闭(有些是在程序烧录时设置的,比如Microchip PIC 系列单片机),而有些单片机是由一个特定的方法,无论它是否打开。比如三星的KS57系列,只要程序访问Watchdog寄存器,就会自动开启,不能再次关闭。一般来说,看门狗的复位时间可以通过程序来设置。Watchdog最基本的应用是为MCU因意外故障而死机提供自恢复能力。 |