28335GPIO及外部中断配置介绍

本文详细介绍了F28335 DSP的GPIO口配置,包括GPIO口的分组、功能、寄存器操作以及外部中断的配置步骤。通过对GPIO的初始化设置,如GPIO方向、量化限制以及中断源的选择,实现GPIO的输入输出功能。同时,文章还阐述了外部中断的配置,包括选择中断源、设置中断极性和使能中断。通过对GPIO和中断寄存器的详细解析,为读者提供了清晰的配置指导。
摘要由CSDN通过智能技术生成

弄了两周终于把28335的启动流程、寄存器及中断向量表的映射方法、内存的划分等有了一个全面的了解,今天看到久违的LED灯的闪烁,顿扫阴霾。特在此总结下28335GPIO及外部中断配置介绍。其实对于一个微控制器,只要能够独立实现这两个功能,也算是入门了。

一、GPIO口介绍

外界二进制信息(数字量)要被CPU处理,要给存储器存放,就需要外界信息源与两者之间的交换接口,这样的交换接口若用来进行通用目的数字量的输入输出,就被称为通用数字量输入/输出接口,简称GPIO。F28335 DSP有多达88GPIO口,对应着芯片引出的88个引脚,随着芯片的封装与尺寸的确定,引脚数目是有限的,所以88个引脚多数都是功能复用的,即可以灵活配置为输入引脚,也可以灵活配置为输出引脚,即可以作为通用I/O引脚,也可以作为特殊功能口(如SCI、SPI、ECAN等),非常灵活,用户根据需要,可以通过GPIO MUX(输入输出多路选择器,复用开关)寄存器来进行相关配置。

F28335DSP将这88GPIO口分成了ABC三大组,A组包括GPIO0GPIO31,B组包括GPIO32GPIO63,C组包括GPIO64GPIO87,每个引脚都复用了多个功能,同一时刻,每个引脚只能用该引脚的一个功能。究竟工作在哪个模式下,可以通过GPIO Mux(复用开关)寄存器配置每个引脚的具体功能(通用数字量I/O或者外设专用功能)。如果将这些引脚选择数字量I/O模式,可以通过方向寄存器GPxDIR配置数字量I/O的方向,即是作为输入引脚还是作为输出引脚;还可以通过量化寄存器GPxQUAL对输入信号进行量化限制,从而可以消除数字量I/O引脚的噪声干扰。


二、GPIO口寄存器及功能

1、可以通过GPxDAT寄存器独立读/写I/O信号;(操作较慢,需要加延时(取反不需),下面的方法不需加延时)

2、利用GPxSET寄存器写1(写0无效)对I/O口进行置位

3、利用GPxCLEAR寄存器写1(写0无效)对I/O口进行清零;

4、利用GPxTOOGLE寄存器置1后(写0无效)来将I/O输出电平翻转,原来高电平变成低电平,原来低电平则变成高电平。

对GPIO模块的设置主要通过三类寄存器来完成(TI的库文件把GPIO的寄存器分成三部分,实际的寄存器在这三类中),分别是:控制寄存器、数据寄存器、中断寄存器。(TI已经定义了三个这样的名字)
extern volatilestruct GPIO_CTRL_REGSGpioCtrlRegs;

externvolatilestruct GPIO_DATA_REGSGpioDataRegs;

extern volatile struct GPIO_INT_REGS GpioIntRegs;

想要操作一个外设,首先可以查看对应外设头文件最后定义的这几个结构体变量,其实就是对这几个结构体的赋值。然后查看对应结构体的元素,后面都有对应的说明,然后可层层查看包含的结构体及元素,后面的注释很容易理解相应的意思,然后根据需要配置即可。

例:GpioCtrlRegs.GPADIR.bit.GPIO2 = 1;    // GPIO2 = output

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)—反转
3、中断寄存器
   GPIOXINT1SEL;// XINT1 GPIO Input Selection

   GPIOXINT2SEL;// XINT2 GPIO Input Selection
   GPIOXNMISEL;// XNMI_Xint13 GPIO Input Selection
   GPIOXINT3SEL;// XINT3 GPIO Input Selection
   GPIOXINT4SEL;// XINT4 GPIO Input Selection
   GPIOXINT5SEL;// XINT5 GPIO Input Selection
   GPIOXINT6SEL;// XINT6 GPIO Input Selection
   GPIOXINT7SEL;// XINT7 GPIO Input Selection
   GPIOLPMSEL;// Low power modes GP I/O input select
   可以对GPIO0-63进行外部中断设置;

采样频率:分为同步频率和异步频率

同步频率:当IO口作为普通IO时,对信号采样使用的是同步采样信号,SYSCLKOUT 或者SYSCLKOUT/n

异步频率:当IO口作为SCISPI eCAN I2C这样的外设外口时,不需要同步采样频率,外设本身就有异步的采样频率。

系统复位的时候,所有的管脚都是默认为输入状态,默认都是普通IO口,采样频率默认都为SYSCLKOUT。上拉电阻在复位后默认除了ePWM(GPIO0~GPIO11)外都是默认已经上拉。

采样次数

采样窗口分3次和6次两种窗口,用来过滤噪声。采样窗口为3的间隔时间为2个采样周期,采样窗口为6的间隔时间为5个采样周期。

只有在这2或者5个采样周期内采集的信号完全一样才说明信号稳定,信号才会传递为DSP,依次来消除噪声。

(采样次数与采样频率根据实际要求配合使用)

GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 2;        // XINT2 Qual using 6 samples
GpioCtrlRegs.GPACTRL.bit.QUALPRD0 = 0x80;   // Each sampling window is 128*SYSCLKOUT 

GPIO的寄存器(A):


上面表格内容由TI转化为了下面的结构体:

struct GPIO_CTRL_REGS {

   union  GPACTRL_REG GPACTRL;   // GPIO A ControlRegister (GPIO0 to 31)

   union  GPA1_REG    GPAQSEL1;  // GPIO A QualifierSelect 1 Register (GPIO0 to 15)

   union  GPA2_REG    GPAQSEL2;  // GPIO A QualifierSelect 2 Register (GPIO16 to 31)

   union  GPA1_REG    GPAMUX1;   // GPIO A Mux 1 Register(GPIO0 to 15)

   union  GPA2_REG    GPAMUX2;   // GPIO A Mux 2 Register(GPIO16 to 31)

   union  GPADAT_REG  GPADIR;    // GPIO A DirectionRegister (GPIO0 to 31)

   union  GPADAT_REG  GPAPUD;    // GPIO A Pull Up DisableRegister (GPIO0 to 31)

   Uint32              rsvd1;

   union  GPBCTRL_REG GPBCTRL;   // GPIO B ControlRegister (GPIO32 to 63)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值