本文与TMS320DM6437为例,TMS320DM6437共有111个GPIO引脚,分属7个bank(组)。
(bank0~5):各有16个引脚,(bank6):有15个引脚。
如: bank0对应的16个管脚为GP[0]~GP[15];bank1对应的16个管脚为GP[16]~GP[31];......
GPIO的使用,由多个控制寄存器控制,寄存器主要分为两类: 数据类寄存器 ,中断类寄存器
一个寄存器(32位寄存器)控制两组bank的GPIO引脚,如: register01:bank0,bank1;register23:bank2,bank3 ......(4个寄存器控制01 23 45 6的GPIO)
即:每个GPIO引脚对应寄存器的1位,所以每种寄存器要有四个。
一、数据类寄存器
方向寄存器DIR:设置指定的GPIO管脚为输入、输出;1为输入,0为输出。
如,GPIO[30]作为输入:DIR01的30位,对应的就是GPIO[30],1表示输入
输入数据寄存器INDATA :GPIO输入时,读取GPIO管脚的当前状态
输出数据寄存器OUTDATA :GPIO输出时,读取GPIO管脚的当前状态
设置数据寄存器SET_DATA :设置GPIO引脚输出为高电平 置0:无影响 置1:引脚n输出为1
清除数据寄存器CLR_DATA:设置GPIO引脚输出为低电平 置0:无影响 置1:引脚n输出为0
二、中断类寄存器
GPIO中断事件有两种:
组中断:7个,GPIO bank0~bank6 单中断:8个,GP[0]~GP[7]
中断号表
如表,bank0含8个单一中断GP[0:7],中断号为64~71;bank x有独立的bank中断,中断可以由上升沿或下降沿触发。
bank x的使能寄存器BINTEN:控制GPIO组中断使能
BINTEN对中断和EDMA事件起控制作用。EN0~EN6分别对应bank0~bank6,其他位保留。 ENx = 0:关闭 bank x中断 ENx = 1: bank x中断使能。
例如,BINTEN的0位置1,使能bank0中断。
边沿触发寄存器:配置GPIO中断边沿触发方式
(1)设置上升沿触发寄存器SET_RIS_TRIG
写1允许上升沿触发中断; 写0无影响;
(2)清除上升沿触发寄存器CLR_RIS_TRIG
写1允许下降沿触发中断; 写0无影响;
(3)设置下降沿沿触发寄存器SET_FALL_TRIG
(4)清除下降沿触发寄存器CLR_FALL_TRIG
例,bank0中断,设置下降沿触发,禁止上升沿触发
SET_FAL_TRIG01的1位置1,允许下降沿触发中断
CLR_RIS_TRIG01的1位置1,禁止上升沿触发中断
(5)中断状态寄存器
可以通过读取GPIO中断状态寄存器(INTSTATn)来监视GPIO中断事件的状态。
在相关位置 1:对应的GPIO管脚,有中断挂起; 0:对应的GPIO管脚,没有中断挂起。
完结!