关于DSP的GPIO与中断事件

本文与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管脚,没有中断挂起。

完结!

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PIO(General-Purpose Input/Output)——通用输入/输出口;       DSP28335 GPIO模块分为三类IO口:PORTA(0-31),PORTB(32-63),PORTC(64-87) 对GPIO模块的设置主要通过三类寄存器来完成,分别是:控制寄存器、数据寄存器、中断寄存器。 1、控制寄存器   GPxCTRL;    // GPIO x Control Register (GPIO0 to 31)               //设置采样窗周期T=2*GPXCTRL*Tsysclk;   GPxQSEL1;   // GPIO x Qualifier Select 1 Register (GPIO0 to 15)(32-47)               GPxQSEL2;   // GPIO x Qualifier Select 2 Register (GPIO16 to 31)(48-63)               //每两位控制一个引脚,确定是3周期采样还是6周期采样或者不用采样   GPxMUX1;    // GPIO x Mux 1 Register (GPIO0 to 15)(32-47)(64-79)   GPxMUX2;    // GPIO x Mux 2 Register (GPIO16 to 31)(48-63)(80-95)               //配置各个引脚的功能,0:I/O功能,1:外设功能。   GPxDIR;     // GPIO x Direction Register (GPIO0 to 31)(32-63)(64-95)               //配置每个引脚是输入还是输出,0:数字量输入;1:数字量输出。   GPxPUD;     // GPIO x Pull Up Disable Register (GPIO0 to 31)(32-63)(64-95)               //使能或禁止内部上拉 0:开启上拉,1:禁止上拉 2、数据寄存器   GPxDAT;     // GPIO Data Register (GPIO0 to 31)(32-63)(64-95)   GPxSET;     // GPIO Data Set Register (GPIO0 to 31)(32-63)(64-95)——置位   GPxCLEAR;   // GPIO Data Clear Register (GPIO0 to 31)(32-63)(64-95)   GPxTOGGLE;  // GPIO Data Toggle Register (GPIO0 to 31)(32-63)(64-95)—反转
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值