单片机必须了解的外设功能——GPIO/串行通信
活学活用单片机连载将介绍有效使用单片机外设功能的结构及使用方法,能让我们将能学到各种单片机共通的基本外设功能,并可广泛应用到各个方面。单片机仅靠CPU和内存是无法运行的!本文介绍 GPIO和串行通信。
有效使用单片机不可或缺的"外设功能"是什么呢?
正如过去连载的"单片机入门"系列中所介绍的那样,对电子产品进行控制的单片机是由CPU、内存及外设功能等部分组成的(图1)。CPU根据指令(程序),执行运算、数据的读写以及进行条件判断等,而内存则用来保存该程序(记忆)。
外设功能是指为了使单片机便于使用的各种功能。例如,CPU为了与外部的传感器及开关等进行信号交换,就需要"输入/输出端口(I/O端口)"这种外设功能。
而且,将模拟输入信号转换为数字值的"A/D转换器"以及反过来将数字值转换为模拟输出信号的"D/A转换器"则是单片机对各种信号进行处理时不可或缺的外设功能。
另外,还有为了正确测量时间所用的"定时器"以及提供日期和时计的"实时时钟(RTC)",用于进行与时间相关的处理,此外还有将并行信号(parallel signal)和串行信号(serial signal)进行互相交换的"UART(Universal Asynchronous Receiver Transmitter,通用异步收发器)"等,以便进行通信。
本连载中,将以瑞萨电子单片机--RX63N为例,介绍令单片机更便于使用的外设功能的基础知识。我们将使用搭载了"RX63N"程序的电子板"GR-SAKURA"进行说明,请你也实际操作试试看吧!
了解数字信号的输入/输出端口---"GPIO"
在"输入/输出端口(I/O端口)"中,数字信号的输入/输出端口即"GPIO(General Purpose Input/Output)"也被称为"通用I/O端口",是一种用于数字信号输入/输出的非常方便的端口。用于将数字输出的传感器值和开关的ON/OFF值传送到单片机的输入端及通过LED来显示单片机的运算结果,以及输出用于驱动电机运行的信号等等。
GPIO被称为通用端口是其引脚既可以用于输入也可以用于输出。在早期的单片机中,引脚都被固定用于输入或输出,但是现在很多单片机中都可以自由地将其设定为输入或输出端口。假设GPIO端子有8个引脚,则可以将4个引脚用于输入,另4个引脚用于输出,也可以将1个引脚用于输入,剩下的7个引脚用于输出。
在GPIO中,为了使CPU和外部设备之间进行数据交换,要相互执行通过程序处理的数字值(0或1)与信号(电压的LOW电平或HIGH电平)的转换。下面是作为RX63N单片机的GPIO端口基础的寄存器(※1)的作用(图2)。
(※1)寄存器(Register):存在于单片机的CPU和外设功能内部中的记忆回路。用于运算和保持CPU的执行状态。由于是作为CPU及外设功能的内部回路,所以在对内存进行写入和读取时速度很快,但容量却非常小,既有可以用于各种用途的寄存器(通用寄存器),又有用于某些限定的功能和用途的特殊寄存器。
端口方向寄存器(PDR)
决定引脚方向的寄存器,也称为"方向寄存器"。
端口输入数据寄存器(PIDR)
输入时反映所使用的引脚状态的寄存器。从引脚输入LOW电平或者HIGH电平时会将之转换为0或1的值并读取该转换结果。随着引脚的变化数值也将发生变化。所以不会保持读取时的值。
端口输出数据寄存器(PODR)
此寄存器保存用作输出引脚的输出数据。将0或1的值转换为LOW电平或HIGH电平信号并从引脚输出。由于可以与内存一样保持改写前的值,所以在改写前来自引脚的输出电压也将保持不变。
通过GR-SAKURA来体验活用了GPIO的程序!
本期我们将通过"按下开关时LED会发光"这个程序来学习GPIO的运行。我们将利用GR-SAKURA专用的程序库进行编程。(樱花程序库的"数字I/O")(仅英文版)
在樱花程序库(SAKURA Library)的"数字I/O"中,电路板上的I/O专用引脚究竟是用作输入还是用作输出最初由pinMode(引脚号、模式)函数来指定。一旦指定后,只要引脚的用法没发生变化就无需执行pinMode函数。
用作输入时,通过digitalRead函数来指定引脚号,结果将被作为HIGH电平或LOW电平信号被返送回。用作输出时通过digitalWrite函数来指定引脚号。值还是HIGH电平或LOW电平,HIGH电平相当于1,LOW电平相当于0,所以也可将之记述为0或1。
由于这次使用的是GR-SAKURA电路板上的开关和LED,所以即使不知道与其相连的引脚号和端口号,如为开关,只需在程序中写入"PIN_SW",如为LED,只需在程序中写入"PIN_LED0"?"PIN_LED3",樱花程序库(SAKURA Library)就会进行处理。
图3所示的是使用GPIO时,通过LED的闪烁来反
- STM32之的GPIO推挽输出与开漏输出的区别(11-13)
- 串行通信层MIPI D‘PHY RX详细解读(09-28)
- FPGA与单片机实现数据串行通信的解决方案(02-11)
- DSP与蓝牙模块UART口通信电路设计(08-29)
- 单片机在电源设计中的应用(06-07)
- 基于单片机的锅炉液位控制装置设计(07-22)