GPIO模块
1. GPIO概述
通用输入/输出(GPIO)外设提供专用的通用引脚,可以配置为输入或输出。当将其配置为输出时,您可以向内部寄存器写入,以控制输出引脚上的状态驱动。当配置为输入时,您可以通过读取内部寄存器的状态来检测输入的状态。
另外,GPIO外设可以在不同的中断/事件生成模式下产生CPU中断和EDMA同步事件。
2. GPIO功能
可以使用GPIO方向寄存器(DIR)独立地将每个GPIO pin (GPn)配置为输入或输出。GPIO方向寄存器(DIR)指定每个GPIO信号的方向。逻辑0表示将GPIO引脚配置为输出,逻辑1表示输入。
当配置为输出模式时,对数据设置寄存器(SET_DATA)写1可以驱动对应的GPIO引脚为逻辑高状态,对数据清除寄存器(CLR_DATA)写1可以驱动对应的GPIO引脚为逻辑低的状态。每个引脚的输出状态也可以通过写数据输出寄存器(OUT_DATA)来直接控制。
对数据设置寄存器和数据清除寄存器写0不会对GPIO引脚产生影响。另外,如果GPIO引脚设置为输入引脚,对数据设置寄存器、数据清除寄存器以及数据输出寄存器进行写操作将不会产生效果。
对于将GPIO引脚配置成输入引脚时,读取数据输入寄存器(IN_DATA)的数据将会获取引脚的当前状态。
3. GPIO寄存器
Offset |
缩写 |
寄存器功能 |
0008 |
BINTEN |
中断使能寄存器 |
0010 |
DIR |
方向寄存器 |
0014 |
OUT_DATA |
数据输出寄存器 |
0018 |
SET_DATA |
数据设置寄存器 |
001C |
CLR_DATA |
数据清除寄存器 |
0020 |
IN_DATA |
数据输入寄存器 |
0024 |
SET_RIS_TRIG |
上升沿中断设置寄存器 |
0028 |
CLR_RIS_TRIG |
上升沿中断清除寄存器 |
002C |
SET_FAL_TRIG |
下降沿中断设置寄存器 |
0030 |
CLR_FAL_TRIG |
下降沿中断清除寄存器 |
4. GPIO中断
每个GPIO pin (GPn)都可以配置为生成CPU中断(GPINTn)和EDMA同步事件(GPINTn)。中断和EDMA同步事件可以在上升沿、下降沿产生。边缘检测逻辑是与GPIO外围时钟同步的。
当使用GPIO引脚来产生中断和EDMA同步事件时,不需要将GPIO引脚设为输入引脚。当将GPIO 引脚配置为输入时,引脚上的状态转换会触发中断和EDMA同步事件。当将GPIO引脚配置为输出时,软件可以切换GPIO输出寄存器来改变引脚的状态,甚至触发中断和EDMA同步事件。
5. 配置GPIO中断
1. 配置GPIO中断
a.使能GPIO中断: BINTEN = 1;
b.配置引脚为输入引脚:DIR = 0x1<<num;(bit0-bit15对应16个引脚)
c.配置GPIO为上升沿触发/下降沿触发: SET_RIS_TRIG = 0x1<<num; (bit0-bit15对应16个引脚)
2. 查阅中断映射表,获取对应GPIO通道的中断号,将中断号和中断服务函数名配置在.tcf文件中(注意函数名前加上下划线,在Dispatcher中勾选use dispatcher ,在interrupt mask中选择all)
3. 开启全局中断使能
6. GPIO中断映射表
TMS320C6474共有16个GPIO引脚,对应16个中断事件,需要使用哪个引脚,就需要将引脚对应的时间映射至硬件中断上。
中断号 |
中断事件 |
中断描述 |
45 |
GPINT0 |
GPIO Interrupt 0 |
46 |
GPINT1 |
GPIO Interrupt 1 |
47 |
GPINT2 |
GPIO Interrupt 2 |
48 |
GPINT3 |
GPIO Interrupt 3 |
49 |
GPINT4 |
GPIO Interrupt 4 |
50 |
GPINT5 |
GPIO Interrupt 5 |
51 |
GPINT6 |
GPIO Interrupt 6 |
52 |
GPINT7 |
GPIO Interrupt 7 |
53 |
GPINT8 |
GPIO Interrupt 8 |
53 |
GPINT9 |
GPIO Interrupt 9 |
55 |
GPINT10 |
GPIO Interrupt 10 |
56 |
GPINT11 |
GPIO Interrupt 11 |
57 |
GPINT12 |
GPIO Interrupt 12 |
58 |
GPINT13 |
GPIO Interrupt 13 |
59 |
GPINT14 |
GPIO Interrupt 14 |
60 |
GPINT15 |
GPIO Interrupt 15 |