GPIO
- 格式:doc
- 大小:109.50 KB
- 文档页数:9
gpio的类别
GPIO(General Purpose Input/Output,通用输入/输出)的类别或模式可以根据不同的应用和设计需求进行划分。
以下是一些常见的GPIO类别或模式:
1、输入模式(Input Mode):GPIO端口将读取外部设备发出的信号。
2、输出模式(Output Mode):GPIO端口将向外部设备发出信号。
3、复用模式(Multiplexing Mode):GPIO端口可以同时实现输入和输出功能。
4、高阻模式(High Impedance Mode):GPIO端口被设置为高阻模式,输入端口的输入信号会被抑制。
5、推挽输出模式(Push-Pull Output Mode):GPIO端口可以在输出模式时使用推挽输出模式。
6、中断模式(Interrupt Mode):GPIO端口可以捕捉到外部设备发出的信号。
7、测试模式(Test Mode):GPIO端口可以用于测试外部设备。
8、热插拔模式(Hot-Plugging Mode):GPIO端口可以实现热插拔功能。
9、此外,在Cortex-M3等处理器中,GPIO的配置种类可能还包括模拟输入(AIN)、浮空输入(IN_FLOATING)、下拉输入(IPD)、
上拉输入(IPU)、开漏输出(Out_OD)等。
请注意,这些模式并非全部,具体的GPIO类别或模式可能会因处理器、芯片或开发板的不同而有所差异。
因此,在实际应用中,需要参考相关的硬件文档或数据手册以获取准确的GPIO类别和配置信息。
gpio 输入高阻GPIO(通用输入输出)是嵌入式系统中常用的一种硬件接口,可以实现数字信号的输入输出。
在GPIO中,输入高阻是一种重要的应用模式。
本文将详细介绍GPIO输入高阻的原理、应用场景、优势以及操作方法。
一、GPIO基本概念GPIO,即通用输入输出,是一种广泛应用于嵌入式系统的硬件接口。
它通常包括输入模式、输出模式和复用模式。
在输入模式下,GPIO可以检测外部信号电平;在输出模式下,GPIO可以驱动外部负载;在复用模式下,GPIO可以同时具备输入和输出功能。
二、输入高阻的原理输入高阻是指GPIO在输入模式下,对外部信号的干扰具有较强的抗性。
这是因为在这种模式下,GPIO引脚内部不含有源电阻,从而降低了外部信号对系统的影响。
输入高阻的实现主要依赖于外部电路的设计,如采用抗干扰能力较强的电阻网络或其他滤波电路。
三、应用场景及优势1.应用场景:输入高阻广泛应用于各种嵌入式系统和物联网设备中,如传感器数据采集、通信信号检测等。
在这些场景下,输入高阻可以有效降低外部噪声对系统的影响,提高信号的准确性。
2.优势:输入高阻具有以下优势:- 抗干扰能力强:输入高阻模式下,GPIO引脚对外部信号的干扰具有较高的抵抗力,有利于提高系统稳定性。
- 电源消耗低:与输出模式相比,输入高阻模式下的GPIO电源消耗较低,有利于延长设备续航时间。
- 系统安全性高:输入高阻模式下的GPIO不直接驱动外部负载,从而降低了因负载故障导致的系统安全风险。
四、操作方法与示例1.操作方法:要将GPIO设置为输入高阻模式,需要根据具体的硬件平台和开发框架进行配置。
一般来说,操作步骤如下:- 初始化GPIO:配置GPIO引脚为输入高阻模式,如设置为三态门或浮空输入等。
- 配置外部电路:根据实际应用需求,设计相应的抗干扰电路,如电阻网络、滤波电路等。
- 读取信号值:通过GPIO读取外部信号电平,并进行相应的处理和分析。
2.示例:以Arduino为例,设置GPIO输入高阻模式的代码示例如下:```c#define GPIO_PIN 2 // 定义GPIO引脚void setup() {pinMode(GPIO_PIN, INPUT_HIGH_RESISTANCE); // 设置GPIO为输入高阻模式}void loop() {int sensorValue = digitalRead(GPIO_PIN); // 读取GPIO引脚电平printf("GPIO %d 状态:%d", GPIO_PIN, sensorValue);}```通过以上介绍,相信大家对GPIO输入高阻有了更深入的了解。
gpio 电平转换摘要:1. GPIO简介2.电平转换原理3.电平转换方法4.应用场景5.总结正文:一、GPIO简介GPIO,即通用输入输出接口,是电子设备中广泛应用的一种接口。
它允许外部信号与内部电路进行交互,实现诸如控制LED亮灭、读取传感器数据等功能。
在嵌入式系统中,GPIO口通常用于实现各种硬件控制和数据采集。
二、电平转换原理电平转换是指在不同的电压系统之间进行信号传输时,需要将信号电压调整到接收端能够识别的范围内。
常见的电平转换有两种:一种是数字信号电平转换,另一种是模拟信号电平转换。
数字信号电平转换:数字信号通常采用高低电平表示0和1。
在不同的设备之间传输时,由于供电电压和电平标准差异,可能导致接收端无法正确识别信号。
因此,需要进行电平转换。
模拟信号电平转换:模拟信号具有连续的电压值,但在不同设备之间传输时,同样需要进行电平转换以保证信号质量。
三、电平转换方法1.水平转换器:水平转换器是一种常见的电平转换器件,它能够将输入信号调整到预定的电压范围内。
常见的水平转换器有LC滤波器、运放等。
2.逻辑门电路:逻辑门电路可以实现数字信号的电平转换。
例如,使用与非门(NAND)或或非门(NOR)等,可以将输入信号调整到合适的电平。
3.编码器:编码器可以将高电平信号转换为低电平信号,常见于串行通信中。
例如,将3.3V电平转换为5V电平。
4.电源适配器:电源适配器用于将输入电压转换为适合设备工作的电压。
例如,将220V市电转换为5V直流电源供给手机充电。
四、应用场景1.嵌入式系统:电平转换在嵌入式系统中应用广泛,如单片机、FPGA等硬件平台,需要将外部传感器、执行器等设备的信号电平转换为内部电路能够识别的电平。
2.通信设备:在通信领域,电平转换用于实现不同电压系统的信号传输,如将光纤通信中的电信号转换为电信号。
3.工业控制:电平转换在工业控制领域有助于实现精确控制,如将PLC (可编程逻辑控制器)的输出信号转换为驱动电机所需的电平。
gpio详细解读-回复GPIO详细解读GPIO,全称为通用输入输出接口(General Purpose Input/Output),是一种在计算机系统中用于与外部设备进行数字通信的接口。
它允许计算机与各种不同类型的外设进行通信,并且可以通过软件控制这些外设的输入和输出。
在本文中,我将逐步回答关于GPIO的各种问题,以帮助读者全面理解和使用GPIO接口。
一、GPIO概述GPIO是计算机系统与外部设备之间的桥梁,它通过引脚(pin)与外设相连,使用数字信号进行通信。
每个引脚可以配置为输入或输出模式,以实现不同的功能。
GPIO接口的灵活性和通用性使其成为计算机系统的核心部分。
二、GPIO引脚GPIO引脚是与外部设备相连的物理引脚,它们通常以数字方式编号,并且可以通过引脚号来识别和访问。
常见的计算机系统通常具有多个GPIO引脚,可以通过软件将它们配置为输入或输出模式。
三、GPIO模式GPIO引脚可以配置为输入或输出模式,取决于与之相连的外部设备类型和应用需求。
在输入模式下,GPIO引脚可以接收来自外设的信号,并将其传递到计算机系统;而在输出模式下,GPIO引脚可以发送计算机系统生成的信号到外设。
四、GPIO寄存器GPIO寄存器是计算机系统中用于配置和控制GPIO引脚的寄存器。
通过读写这些寄存器的值,可以设置GPIO引脚的工作模式、电平状态和其他参数。
使用GPIO寄存器可以实现对GPIO接口的灵活编程控制。
五、GPIO驱动程序为了简化对GPIO的操作,操作系统通常提供了GPIO驱动程序。
通过调用这些驱动程序提供的接口函数,可以更方便地实现对GPIO引脚的配置和控制。
驱动程序隐藏了底层硬件细节,使开发人员能够更专注于应用程序的开发。
六、GPIO使用示例以下是一个简单的GPIO使用示例,以帮助读者更好地理解GPIO接口的工作原理。
1. 引脚配置:首先,需要选择一个GPIO引脚,并将其配置为输入或输出模式。
这可以通过操作GPIO寄存器来实现。
GPIO模式详解GPIO是General Purpose Input/Output的缩写,中文意思为通用输入输出引脚。
它是一种通用的硬件接口,可以用于连接外部设备和微控制器或单片机。
GPIO在许多嵌入式系统中都被广泛使用,例如树莓派等。
GPIO功能的实现方式有几种,其中最常见的是通过设置寄存器来控制GPIO的模式和状态。
下面将详细介绍GPIO的几种常见模式。
1. 输入模式(Input Mode):GPIO引脚在输入模式下接收外部信号,可以监测外部信号的状态。
输入模式通常用于外部设备的传感器信号读取。
在输入模式下,可以设置GPIO引脚为上拉输入(Pull-up Input)或下拉输入(Pull-down Input),以防止输入信号漂移。
2. 输出模式(Output Mode):GPIO引脚在输出模式下可以向外部设备发送信号。
输出模式通常用于控制外部设备的电平或状态。
在输出模式下,可以设置GPIO引脚为开漏输出(Open Drain Output)或推挽输出(Push-pull Output),用于适应不同的外部设备。
3. 仿真模式(Analog Mode):GPIO引脚在仿真模式下可以实现模拟信号输入和输出。
在一些特定的应用中,需要使用GPIO引脚来进行模拟信号的输入和输出,例如连接模拟传感器或驱动模拟设备。
4. 复用模式(Alternate Function Mode):GPIO引脚在复用模式下可以实现多种不同的功能,通常用于连接外部设备的特定功能接口。
例如,一些GPIO引脚可以被设置为串行通信接口(如SPI、I2C、UART等)的引脚,以便与外部设备进行通信。
根据不同的芯片和硬件平台,GPIO的模式实现方式有所不同。
有些芯片需要通过设置特定的寄存器来配置GPIO的模式和状态,其他一些芯片则通过使用特定的库函数或驱动程序来操作GPIO。
此外,GPIO的模式还包括一些其他的特性,例如中断功能、输入输出速度控制、上下拉电阻的选择等。
gpio标准
GPIO(General Purpose Input/Output)是一种通用的输入输出接口标准,常用于嵌入式系统和单片机开发中。
GPIO标准定义了一组可以被程序控制的引脚,可以灵活地通过软件设置为输入或输出模式,并对引脚的电平状态进行读取或控制。
GPIO标准通常包括以下几个要素:
1. 引脚编号:每个GPIO引脚都有一个唯一的编号,用于软件中的引用。
2. 输入模式:GPIO引脚可以设置为输入模式,可以通过读取引脚的状态来获取外部设备的信号。
3. 输出模式:GPIO引脚可以设置为输出模式,可以通过控制引脚输出电平来控制外部设备的状态。
4. 上拉和下拉电阻:GPIO引脚通常可以配置上拉电阻或下拉电阻,以提供默认电平状态。
5. 中断功能:一些GPIO引脚支持中断功能,可以在引脚状态变化时触发中断,以提高系统的实时性。
6. 多功能引脚:一些GPIO引脚具有多个功能,可以通过配置选择不同的功能,如串口、SPI、I2C等。
GPIO标准在不同的硬件平台和操作系统中有所差异,常见的GPIO接口包括GPIO口、引脚、管脚等术语。
开发人员需要根据具体平台和文档来进行GPIO的配置和使用。
gpio读写操作GPIO(General Purpose Input/Output)是一种通用输入输出接口,广泛应用于各种嵌入式系统,如微控制器、树莓派、Arduino等。
GPIO操作主要用于与外部硬件设备进行交互,包括读取传感器数据、控制执行器等。
本文将介绍GPIO的基本概念、读写操作方法以及应用实例。
一、GPIO基础GPIO通常通过特定的引脚与外部设备进行通信。
这些引脚可以设置为输入模式(从外部设备读取数据)或输出模式(向外部设备发送数据)。
GPIO通常被用来驱动LED灯、蜂鸣器、继电器等简单硬件设备。
此外,GPIO还常常用于控制微控制器或其他硬件的外设。
1. 初始化GPIO在进行GPIO读写操作前,需要先进行初始化。
具体来说,需要配置GPIO引脚的电气特性,如高低电平、上拉/下拉电阻等。
初始化通常在程序启动时进行。
2. 读取GPIO状态读取GPIO状态是指从GPIO引脚读取当前状态,即判断该引脚是高电平还是低电平。
可以通过查询引脚的值或者使用取反操作来获取状态。
3. 设置GPIO值设置GPIO值是指向GPIO引脚写入数据,以控制外部设备的动作。
通常使用输出操作来完成。
需要注意的是,不同的硬件平台可能具有不同的数据类型和寄存器,需要根据具体的硬件平台进行设置。
4. 配置GPIO为输入模式将GPIO配置为输入模式是指将该引脚设置为从外部设备读取数据。
当引脚接收到外部信号时,会自动将其状态存储起来,以便后续读取。
在输入模式下,通常需要配置适当的上拉或下拉电阻以避免悬空。
三、应用实例以下是一个简单的应用实例,演示如何使用树莓派和Python编程语言进行GPIO读写操作:1. 初始化GPIO在Python中,可以使用RPi.GPIO模块来操作树莓派的GPIO引脚。
首先,需要导入该模块并使用setup()函数初始化GPIO。
例如:RPi.GPIO.setmode(RPi.GPIO.BOARD) # 设置模式为板载模式RPi.GPIO.setup(12, RPi.GPIO.OUT) # 将引脚12设置为输出模式2. 读取GPIO状态可以使用input()函数来读取GPIO的状态。
gpio对应的端口号
(实用版)
目录
1.GPIO 简介
2.GPIO 的功能
3.GPIO 的端口号
4.GPIO 端口号的应用
5.总结
正文
1.GPIO 简介
GPIO,全称通用输入/输出(General Purpose Input/Output),是一种硬件接口,通常用于外部设备与微控制器之间的通信。
GPIO具有灵活
性和可编程性,可以根据实际需求配置为输入或输出模式,从而实现数据的读取或控制。
2.GPIO 的功能
GPIO 的主要功能有以下几点:
a.作为输入端口,用于读取外部设备的状态信息;
b.作为输出端口,用于向外部设备发送控制信号;
c.配置为复用功能,实现多种功能同时使用;
d.支持中断功能,实现异步响应外部事件。
3.GPIO 的端口号
GPIO 端口号是指 GPIO 接口在微控制器上的物理引脚编号。
不同的
微控制器型号和生产厂商可能会有不同的命名规则和编号方式。
一般来说,
GPIO 端口号用字母和数字表示,如 GPIOA、GPIOB 等。
4.GPIO 端口号的应用
GPIO 端口号广泛应用于各种电子设备和系统中,例如:
a.嵌入式系统:用于传感器数据采集、控制 LED 显示、按键检测等;
b.物联网设备:用于连接各种传感器和执行器,实现设备之间的通信和控制;
c.电子设备:如手机、电脑等,用于实现各种外设的控制和数据交互。
5.总结
GPIO 端口号是微控制器与外部设备通信的重要接口,具有灵活可编程、功能丰富等特点。
GPIO 电平转换1. 什么是 GPIO?GPIO(General Purpose Input/Output)通用输入输出,是一种常见的数字电路接口技术,用于与外部设备进行通信。
它允许计算机或其他电子设备通过数字信号与外部电路进行交互,实现输入和输出的功能。
在计算机领域,GPIO 通常指的是计算机主板上的引脚,用于连接外部设备,如传感器、执行器、LED 灯等。
通过控制 GPIO 引脚的电平状态,我们可以读取外部设备的状态或控制它们的行为。
2. GPIO 引脚电平转换GPIO 引脚的电平转换是指将 GPIO 引脚的电平状态从高电平(High)转换为低电平(Low),或者从低电平(Low)转换为高电平(High)的过程。
这种转换通常是通过控制 GPIO 引脚的输入输出状态来实现的。
在大多数情况下,GPIO 引脚的电平转换是由计算机或其他控制器提供的。
通过编程控制 GPIO 引脚的输入输出状态,我们可以实现电平的转换。
3. GPIO 电平转换的应用场景GPIO 电平转换在嵌入式系统、物联网、机器人等领域有着广泛的应用。
以下是一些常见的应用场景:3.1 控制 LED 灯LED 灯是常用的输出设备,通过控制 GPIO 引脚的电平状态,我们可以实现对 LED 灯的开关控制。
当 GPIO 引脚输出高电平时,LED 灯亮起;当 GPIO 引脚输出低电平时,LED 灯熄灭。
3.2 读取按钮状态按钮是常用的输入设备,通过控制 GPIO 引脚的输入模式,我们可以读取按钮的状态。
当按钮按下时,GPIO 引脚的电平由高变为低;当按钮松开时,GPIO 引脚的电平由低变为高。
3.3 驱动电机通过控制 GPIO 引脚的电平状态,我们可以实现对电机的驱动。
例如,当 GPIO 引脚输出高电平时,电机正转;当 GPIO 引脚输出低电平时,电机反转。
3.4 传感器数据采集通过控制 GPIO 引脚的输入输出状态,我们可以实现对传感器数据的采集。
gpio相关函数GPIO相关函数简介GPIO(General Purpose Input/Output)是通用输入输出引脚的缩写,是一种用于控制外部设备的接口。
在嵌入式系统中,GPIO引脚常常用于与各种外部设备进行通信,例如LED灯、按钮、传感器等。
为了方便开发者对GPIO进行操作,各种编程语言都提供了相应的GPIO相关函数。
在本文中,将介绍几种常用的GPIO相关函数,包括GPIO初始化、设置输入输出方向、读写GPIO等。
一、GPIO初始化函数GPIO初始化函数用于初始化GPIO的相关配置,包括引脚编号、输入输出方向、电平状态等。
不同的编程语言提供了不同的初始化函数,例如在Python中,可以使用RPi.GPIO库的GPIO.setmode()函数进行初始化。
在C语言中,可以使用wiringPi库的wiringPiSetup()函数进行初始化。
二、设置输入输出方向函数设置输入输出方向函数用于设置GPIO引脚的输入输出方向。
对于需要作为输入的引脚,可以使用相应的函数将其设置为输入模式;对于需要作为输出的引脚,可以使用相应的函数将其设置为输出模式。
例如在Python中,可以使用RPi.GPIO库的GPIO.setup()函数进行设置。
三、读写GPIO函数读写GPIO函数用于读取或写入GPIO引脚的电平状态。
对于输入引脚,可以使用相应的函数读取其电平状态;对于输出引脚,可以使用相应的函数写入电平状态。
例如在Python中,可以使用RPi.GPIO库的GPIO.input()函数读取输入引脚的电平状态,使用GPIO.output()函数写入输出引脚的电平状态。
在使用GPIO相关函数时,需要注意以下几点:1. 确保正确设置引脚编号,避免引脚编号冲突或错误使用。
2. 在设置输入输出方向时,应根据实际需求选择合适的模式,避免引脚方向设置错误。
3. 在读写GPIO时,应注意检查返回值或错误码,以确保操作的正确执行。
F2812 I/O配置与应用浅析GPIO,英文全称为General-Purpose IO ports,也就是通用IO口。
嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。
而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭。
对这些设备/电路的控制,使用传统的串行口或并行口都不合适。
所以在微控制器芯片上一般都会提供一个“通用可编程IO接口”,即GPIO。
接口至少有两个寄存器,即“通用IO控制寄存器”与“通用IO数据寄存器”。
数据寄存器的各位都直接引到芯片外部,而对这种寄存器中每一位的作用,即每一位的信号流通方向,则可以通过控制寄存器中对应位独立的加以设置。
这样,有无GPIO接口也就成为微控制器区别于微处理器的一个特征。
一、 F2812 I/O端口概述F2812提供了56个多功能引脚,这些引脚的第一功能是作为通用意义数字I/O口(GPIO),而第二功能则可以作为片内外设的输入/输出引脚。
F2812通过专门的多路选择器(MUX)进行引脚功能的选择。
如果作为通用数字I/O口,有专门的方向寄存器用于配置引脚作为输入还是输出,另外还有专门的数据寄存器、置位寄存器、清零寄存器以及触发寄存器用于对I/O口的状态进行读取或配置。
GPIO 引脚分配GPIO AGPIOA0 / PWM1 GPIOA1 / PWM2 GPIOA2 / PWM3 GPIOA3 / PWM4 GPIOA4 / PWM5 GPIOA5 / PWM6 GPIOA6 / T1PWM_T1CMP GPIOA7 / T2PWM_T2CMP GPIOA8 / CAP1_QEP1 GPIOA9 / CAP2_QEP2 GPIOA10 / CAP3_QEPI1 GPIOA11 / TDIRA GPIOA12 / TCLKINA GPIOA13 / C1TRIP GPIOA14 / C2TRIP GPIOA15 / C3TRIPGPIO BGPIOB0 / PWM7 GPIOB1 / PWM8 GPIOB2 / PWM9 GPIOB3 / PWM10 GPIOB4 / PWM11 GPIOB5 / PWM12 GPIOB6 / T3PWM_T3CMP GPIOB7 / T4PWM_T4CMP GPIOB8 / CAP4_QEP3 GPIOB9 / CAP5_QEP4 GPIOB10 / CAP6_QEPI2 GPIOB11 / TDIRBGPIOB12 / TCLKINBGPIOB13 / C4TRIPGPIOB14 / C5TRIPGPIOB15 / C6TRIPGPIO DGPIOD0 / T1CTRIP_PDPINTA GPIOD1 / T2CTRIP / EVASOC GPIOD5 / T3CTRIP_PDPINTB GPIOD6 / T4CTRIP / EVBSOC GPIO EGPIOE0 / XINT1_XBIO GPIOE1 / XINT2_ADCSOC GPIOE2 / XNMI_XINT13 GPIO FGPIOF0 / SPISIMOAGPIOF1 / SPISOMIAGPIOF2 / SPICLKAGPIOF3 / SPISTEAGPIOF4 / SCITXDAGPIOF5 / SCIRXDAGPIOF6 / CANTXAGPIOF7 / CANRXAGPIOF8 / MCLKXAGPIOF9 / MCLKRAGPIOF10 / MFSXAGPIOF11 / MFSRAGPIOF12 / MDXAGPIOF13 / MDRAGPIOF14 / XFGPIO GGPIOG4 / SCITXDBGPIOG5 / SCIRXDBNote: GPIO are pinfunctions at reset GPIO A, B, D, E include Input Qualification feature二、GPIO寄存器控制2、1 GPxMUX寄存器通用输入输出多路选择寄存器I/O是工作在通用数字IO还是外围IO信号引脚就有GPxMUX决定。
GPxMUX.bit.xx=0,xx通用数字IO;GPxMUX.bit.xx=1,xx外围IO引脚。
2、2 GPxDIR寄存器方向选择寄存器如果配置为通用数字IO脚,那么GPxDIR决定了该引脚是输入还是输出。
GPxDIR.bit.xx=0,xx配置为输入;GPxDIR.bitxx=1,xx配置为输出。
2、3 GPxQUAL寄存器设置采样脉冲寄存器在配置为通用数字IO后,DSP的数字IO引脚有对输入过滤噪声的功能,即对IO输入电平采样,在采样设置的次数后都是一个电平,才会确定有效。
假如设置为输入高电平,采样10次,那么这10都为高电平才认为输入高有效,GPxDAT寄存器相应位才会改变。
它是一个16位的寄存器,低八位有效。
GPxQUAL=0;与SYSCLKOUT同步,没有限制作用GPxQUAL=1;2个SYSCLKOUT周期采样,GPxQUAL=2;4个SYSCLKOUT周期采样,GPxQUAL=0xff;510个SYSCLKOUT周期采样,2、4 GPxSET置1寄存器每个IO口有一个置1寄存器,只能写不能读,也就是只能用在输出上,写1可以使输出为1,写0没有变化。
GPxSET .bit.xx=0,被忽略;GPxSET .bit.xx=1,且引脚配置为输出,则输出变高2、5 GPxCLEAR清0寄存器每个IO口有一个清0寄存器,只能写不能读,也就是只能用在输出上,写1可以使输出清0,写0没有变化。
GPxCLEAR .bit.xx=0,被忽略;GPxCLEAR .bit.xx=1,且引脚配置为输出,则输出清02、6 GPxTOGGLE 翻转寄存器每个IO口有一个翻转寄存器,只能写不能读,也就是只能用在输出上,写1可以使输出翻转,写0没有变化。
GPxTOGGLE .bit.xx=0,被忽略;GPxTOGGLE.bit.xx=1,且引脚配置为输出,则输出翻转2、7 GPxDAT寄存器IO数据寄存器每个IO都有一个数据寄存器,当IO配置为输出时,相GPxDAT中写数据就可以决定输出状态;GPxDAT.bit.xx=0,输出变低;GPxDAT.xx=1,输出变高当IO配置为输入时,读取GPxDAT中的数据就可以决定输入状态;注意:当引脚配置为通用数字IO时,相应的外围功能必须屏蔽,否则可能会引发不必要的中断三、GPIO应用举例应用DSP的GPIO端口控制输出数据,控制8×8点阵进行图形或字符显示。
3、1硬件电路设计电路如下图所示。
74164为串行输入并行输出移位寄存器。
设计中,选择两片74164分别控制点阵模块的行和列,控制数据从DSP端口输出。
其中,GPIOF0输出数据与U1的74164的A端口相连,GPIOF1与B口连接,两个端口用来输出对点阵进行显示控制的数据,GPIOF2输出模拟时钟脉冲信号,与74164的CLK引脚相连,GPIOF3连接CLR清零端。
DSP F2812的GPIOB0---GPIOB3与另外一片74164的A、B、CLR、CLK对应相连。
如图所示。
图3.1 8×8点阵电路图3、2 8×8点阵内部电路点阵内部为排列的8×8个发光二极管,每一个二极管都在行线和列线的交点处,要同时受到行和列的控制才能点亮。
二极管阵列的正向端分别由COL1-COL8端口控制,负向端通过端口ROW1-ROW8控制。
在驱动某个点阵点点亮时,需要同时控制该发光二极管正端接高电平,负端接低电平即可。
例如:要使得COL4和ROW4交点处二极管点亮,则需要在端口COL 端输入数据:00001000(08H),在ROW端输入:00001000(08H)。
图3.2 8×8点阵内部电路3、3串行输入并行输出移位寄存器74164功能如图所示为74164的引脚图,CLEAR为清零端,CLOCK为时钟脉冲输入端,A、B端口为串行输入数据引脚, Q0—Q7为数据输出引脚。
从真值表可以看出,CLEAR为逻辑低电平时,无论其他引脚电平信号如何,从QA-QH端口输出均为低电平,实现输出清零。
A、B输入信号为相与的关系,相与后的结果送入内部RS触发器。
在CLOCK脉冲信号的上升沿,采样输入脚A、B相与后的结果,作为内部RS触发器的输入信号,根据输入数据触发输出,从QA端口输出。
在QA端口输出更新数据时,QB 端口输出数据为QA端口更新前的QAn,QC端口输出数据为QBn,依次类推。
图3.3 74164引脚图图3.4 74164内部电路以如下时序图为例说明:在图中标注的时钟脉冲1时刻,A端口输入为高电平,B端口输入为逻辑1,在CLOCK 上升沿,采样输入信号,经过内部RS触发器,在QA端口输出逻辑1,此时,QB输出为QA 更新前QAn,更新前QAn为逻辑0,因此,QB输出为0,QC输出为QBn,QD输出为QCn,依此类推,QH输出为QGn,输出均为0。
在图中标注的时钟脉冲1-8时刻,从A端口串行输入的数据为1101 0000,从B端口输入数据为1111 1111逻辑1,AB相与后输入内部RS触发器的串行数据为:1101 0000。
经过8个时钟脉冲后,从第八个时钟脉冲上升沿后QA-QH引脚电平可以看出,该串行数据从QA-QH端口并行输出,即从QH-QA输出电平为:1101 0000。
从而,实现了将串行输入数据并行输出的功能。
图3.5 74164时序图3、4参考主程序:#include "DSP28_Device.h"#include "DSP28_Globalprototypes.h"/*****************************************************************************端口GPIOF0用DINA表示,“#define”为宏定义,以下程序中用字符“DINA”代表成员变量GpioDataRegs.GPFDAT.bit.GPIOF0,增加程序的可读性。
其他端口定义用法相同。
***************************************************************************/#define DINA GpioDataRegs.GPFDAT.bit.GPIOF0#define DINB GpioDataRegs.GPFDAT.bit.GPIOF1#define CLK2 GpioDataRegs.GPFDAT.bit.GPIOF2#define CLEAR2 GpioDataRegs.GPFDAT.bit.GPIOF3#define DINC GpioDataRegs.GPBDAT.bit.GPIOB0#define DIND GpioDataRegs.GPBDAT.bit.GPIOB1#define CLK1 GpioDataRegs.GPBDAT.bit.GPIOB2#define CLEAR1 GpioDataRegs.GPBDAT.bit.GPIOB3/********程序中引用的函数定义**************/void delay_loop(void); //点阵动态显示控制的延时程序void Gpio_select(void); //GPIO端口设置程序void sendto1(unsigned char kdab); //串行数据输出函数,输出行扫描数void sendto2(unsigned char dat); //串行数据输出函数,输出列扫描数void DELAY(void);/**************定义变量数组*****************/unsigned char dispdata[8]={0x10,0xFE,0x92,0xFE,0x10,0x10,0x10,0x10};//显示字符“中”字的行扫描数组unsigned char dispbit[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}//显示字符“中”字的列扫描数组unsigned char kdab;unsigned char kdat;/*************************主程序************************/void main(void){ unsigned char i;InitSysCtrl(); //系统初始化函数InitPieCtrl(); //初始化PIE模块到默认状态InitPieVectTable();Gpio_select(); //设置端口函数/*************************初始化74164各控制引脚**************************/ CLEAR2=0; //74164进行清零操作CLEAR1=0; //74164进行清零操作CLEAR2=1; //74164复位CLEAR1=1; //74164复位CLK1=1; //74164的CLOCK引脚置为高电平CLK2=1; //74164的CLOCK引脚置为高电平DINA=1; //74164数据输入端口置为高电平DINB=1; //74164数据输入端口置为高电平DINC=1; //74164数据输入端口置为高电平DIND=1; //74164数据输入端口置为高电平while(1){sendto1(dispbit[0]);sendto2(dispdata[0]);DELAY();sendto1(dispbit[1]);sendto2(dispdata[1]);DELAY();sendto1(dispbit[2]);sendto2(dispdata[2]);DELAY();sendto1(dispbit[3]);sendto2(dispdata[3]);DELAY();}}/***********************GPIO端口配置函数***************************/void Gpio_select(void){ EALLOW;GpioMuxRegs.GPBMUX.all=0x0000; //设置B组端口为GPIO功能GpioMuxRegs.GPBDIR.all=0xFFFF; // 设置B组端口为输出端口GpioMuxRegs.GPFMUX.all=0x0000; //设置F组端口为GPIO功能GpioMuxRegs.GPFDIR.all=0xFFFF ; // 设置F组端口为输出端口EDIS; }/****************行扫描数据串行输出函数***************************/void sendto1(unsigned char kdab){ unsigned char i;kdab=dab;CLK1=0; //控制时钟脉冲引脚输出设置为低电平for(i=0;i<8;i++) //经过八个时钟脉冲控制将八位串行数据输出 {if((kdab&0x01) == 0x01) //判别输出数据{DINC=1; //如果输出数据为1,将数据送入DINC输出}else DINC = 0; //如果输出数据为0,将数据送入DINC输出CLK1=1; //时钟引脚设置输出高电平CLK1=0; //时钟引脚恢复为低电平,通过这两个命令,//在CLK1脚模拟输出一个时钟脉冲信号,将//串行端口数据输出一位。