打印

TMS320F28335的GPIO

[复制链接]
476|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Rollo|  楼主 | 2016-6-30 21:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  F28335有三种32位的I/O口,依次PORTA(GPIO0-GPIO31),  PORTB(GPIO32-GPIO63),  PORTC(GPIO64-GPIO87),这些口都可以配置为普通的数字IO口同样也能被配置为外部接口。这样涉及到了IO的寄存器,IO口共有三类寄存器:控制寄存器、数据寄存器和中断控制寄存器。下面依次介绍这些寄存器。

struct GPIO_CTRL_REGS {
   union  GPACTRL_REG  GPACTRL;      // GPIO A Control Register (GPIO0 to 31)
   union  GPA1_REG        GPAQSEL1;   // GPIO A Qualifier Select 1 Register (GPIO0 to 15)
   union  GPA2_REG        GPAQSEL2;   // GPIO A Qualifier Select 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 Direction Register (GPIO0 to 31)
   union  GPADAT_REG    GPAPUD;      // GPIO A Pull Up Disable Register (GPIO0 to 31)
   Uint32                 rsvd1;
   union  GPBCTRL_REG  GPBCTRL;     // GPIO B Control Register (GPIO32 to 63)
   union  GPB1_REG        GPBQSEL1;  // GPIO B Qualifier Select 1 Register (GPIO32 to 47)
   union  GPB2_REG        GPBQSEL2;  // GPIO B Qualifier Select 2 Register (GPIO48 to 63)
   union  GPB1_REG        GPBMUX1;   // GPIO B Mux 1 Register (GPIO32 to 47)
   union  GPB2_REG        GPBMUX2;   // GPIO B Mux 2 Register (GPIO48 to 63)
   union  GPBDAT_REG    GPBDIR;      // GPIO B Direction Register (GPIO32 to 63)
   union  GPBDAT_REG    GPBPUD;     // GPIO B Pull Up Disable Register (GPIO32 to 63)
   Uint16                rsvd2[8];
   union  GPC1_REG        GPCMUX1;   // GPIO C Mux 1 Register (GPIO64 to 79)
   union  GPC2_REG        GPCMUX2;   // GPIO C Mux 2 Register (GPIO80 to 95)
   union  GPCDAT_REG    GPCDIR;      // GPIO C Direction Register (GPIO64 to 95)
   union  GPCDAT_REG    GPCPUD;    // GPIO C Pull Up Disable Register (GPIO64 to 95)
};
复制代码
       其中GPXCTRL寄存器的作用是设置采样窗周期T=2*GPXCTRL*Tsysclk;GPxQSEL中每两位控制一个引脚,确定是3周期采样还是6周期采样或者不用采样;GPxMUX的功能很简单就是配置各个引脚的功能,或者是数字IO口,或者是外部接口。同样是两位控制一个引脚;GPxDIR是控制每个引脚的输入或是输出,0是输入,1是输出。还有一个GPxPUD寄存器,是用来使能或禁止指定接口的内部上拉。以上这些就是属于IO口的控制寄存器。下面的是IO数据类寄存器所有集合
struct GPIO_DATA_REGS {
   union  GPADAT_REG     GPADAT;         // GPIO Data Register (GPIO0 to 31)
   union  GPADAT_REG     GPASET;         // GPIO Data Set Register (GPIO0 to 31)
   union  GPADAT_REG     GPACLEAR;     // GPIO Data Clear Register (GPIO0 to 31)
   union  GPADAT_REG     GPATOGGLE;   // GPIO Data Toggle Register (GPIO0 to 31)
   union  GPBDAT_REG     GPBDAT;         // GPIO Data Register (GPIO32 to 63)
   union  GPBDAT_REG     GPBSET;         // GPIO Data Set Register (GPIO32 to 63)
   union  GPBDAT_REG     GPBCLEAR;     // GPIO Data Clear Register (GPIO32 to 63)
   union  GPBDAT_REG     GPBTOGGLE;   // GPIO Data Toggle Register (GPIO32 to 63)
   union  GPCDAT_REG     GPCDAT;         // GPIO Data Register (GPIO64 to 95)
   union  GPCDAT_REG     GPCSET;         // GPIO Data Set Register (GPIO64 to 95)
   union  GPCDAT_REG     GPCCLEAR;     // GPIO Data Clear Register (GPIO64 to 95)
   union  GPCDAT_REG     GPCTOGGLE;   // GPIO Data Toggle Register (GPIO64 to 95)
   Uint16                  rsvd1[8];};这些寄存器就是为了写数据,读数据用的。再下面就是中断寄存器struct GPIO_INT_REGS {
   union  GPIOXINT_REG     GPIOXINT1SEL; // XINT1 GPIO Input Selection
   union  GPIOXINT_REG     GPIOXINT2SEL; // XINT2 GPIO Input Selection
   union  GPIOXINT_REG     GPIOXNMISEL;  // XNMI_Xint13 GPIO Input Selection
   union  GPIOXINT_REG     GPIOXINT3SEL; // XINT3 GPIO Input Selection
   union  GPIOXINT_REG     GPIOXINT4SEL; // XINT4 GPIO Input Selection
   union  GPIOXINT_REG     GPIOXINT5SEL; // XINT5 GPIO Input Selection
   union  GPIOXINT_REG     GPIOXINT6SEL; // XINT6 GPIO Input Selection
   union  GPIOXINT_REG     GPIOXINT7SEL; // XINT7 GPIO Input Selection
   union  GPADAT_REG       GPIOLPMSEL;   // Low power modes GP I/O input select
};
复制代码
       以上就是IO口的外部中断寄存器,我们可以对上面GPIO0-GPIO63进行外部中断配置。

相关帖子

沙发
xietingfeng| | 2016-6-30 21:28 | 只看该作者
这个是分析内寄存器吗

使用特权

评论回复
板凳
xietingfeng| | 2016-6-30 21:33 | 只看该作者
不都是函数操作吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

115

主题

730

帖子

1

粉丝