TMS320F28335的GPIO
TMS320F28335的GPIOF28335有三种32位的I/O口,依次PORTA(GPIO0-GPIO31),PORTB(GPIO32-GPIO63),PORTC(GPIO64-GPIO87),这些口都可以配置为普通的数字IO口同样也能被配置为外部接口。这样涉及到了IO的寄存器,IO口共有三类寄存器:控制寄存器、数据寄存器和中断控制寄存器。下面依次介绍这些寄存器。
[*]struct GPIO_CTRL_REGS {
[*] unionGPACTRL_REGGPACTRL; // GPIO A Control Register (GPIO0 to 31)
[*] unionGPA1_REG GPAQSEL1; // GPIO A Qualifier Select 1 Register (GPIO0 to 15)
[*] unionGPA2_REG GPAQSEL2; // GPIO A Qualifier Select 2 Register (GPIO16 to 31)
[*] unionGPA1_REG GPAMUX1; // GPIO A Mux 1 Register (GPIO0 to 15)
[*] unionGPA2_REG GPAMUX2; // GPIO A Mux 2 Register (GPIO16 to 31)
[*] unionGPADAT_REG GPADIR; // GPIO A Direction Register (GPIO0 to 31)
[*] unionGPADAT_REG GPAPUD; // GPIO A Pull Up Disable Register (GPIO0 to 31)
[*] Uint32 rsvd1;
[*] unionGPBCTRL_REGGPBCTRL; // GPIO B Control Register (GPIO32 to 63)
[*] unionGPB1_REG GPBQSEL1;// GPIO B Qualifier Select 1 Register (GPIO32 to 47)
[*] unionGPB2_REG GPBQSEL2;// GPIO B Qualifier Select 2 Register (GPIO48 to 63)
[*] unionGPB1_REG GPBMUX1; // GPIO B Mux 1 Register (GPIO32 to 47)
[*] unionGPB2_REG GPBMUX2; // GPIO B Mux 2 Register (GPIO48 to 63)
[*] unionGPBDAT_REG GPBDIR; // GPIO B Direction Register (GPIO32 to 63)
[*] unionGPBDAT_REG GPBPUD; // GPIO B Pull Up Disable Register (GPIO32 to 63)
[*] Uint16 rsvd2;
[*] unionGPC1_REG GPCMUX1; // GPIO C Mux 1 Register (GPIO64 to 79)
[*] unionGPC2_REG GPCMUX2; // GPIO C Mux 2 Register (GPIO80 to 95)
[*] unionGPCDAT_REG GPCDIR; // GPIO C Direction Register (GPIO64 to 95)
[*] unionGPCDAT_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 {
[*] unionGPADAT_REG GPADAT; // GPIO Data Register (GPIO0 to 31)
[*] unionGPADAT_REG GPASET; // GPIO Data Set Register (GPIO0 to 31)
[*] unionGPADAT_REG GPACLEAR; // GPIO Data Clear Register (GPIO0 to 31)
[*] unionGPADAT_REG GPATOGGLE; // GPIO Data Toggle Register (GPIO0 to 31)
[*] unionGPBDAT_REG GPBDAT; // GPIO Data Register (GPIO32 to 63)
[*] unionGPBDAT_REG GPBSET; // GPIO Data Set Register (GPIO32 to 63)
[*] unionGPBDAT_REG GPBCLEAR; // GPIO Data Clear Register (GPIO32 to 63)
[*] unionGPBDAT_REG GPBTOGGLE; // GPIO Data Toggle Register (GPIO32 to 63)
[*] unionGPCDAT_REG GPCDAT; // GPIO Data Register (GPIO64 to 95)
[*] unionGPCDAT_REG GPCSET; // GPIO Data Set Register (GPIO64 to 95)
[*] unionGPCDAT_REG GPCCLEAR; // GPIO Data Clear Register (GPIO64 to 95)
[*] unionGPCDAT_REG GPCTOGGLE; // GPIO Data Toggle Register (GPIO64 to 95)
[*] Uint16 rsvd1;};这些寄存器就是为了写数据,读数据用的。再下面就是中断寄存器struct GPIO_INT_REGS {
[*] unionGPIOXINT_REG GPIOXINT1SEL; // XINT1 GPIO Input Selection
[*] unionGPIOXINT_REG GPIOXINT2SEL; // XINT2 GPIO Input Selection
[*] unionGPIOXINT_REG GPIOXNMISEL;// XNMI_Xint13 GPIO Input Selection
[*] unionGPIOXINT_REG GPIOXINT3SEL; // XINT3 GPIO Input Selection
[*] unionGPIOXINT_REG GPIOXINT4SEL; // XINT4 GPIO Input Selection
[*] unionGPIOXINT_REG GPIOXINT5SEL; // XINT5 GPIO Input Selection
[*] unionGPIOXINT_REG GPIOXINT6SEL; // XINT6 GPIO Input Selection
[*] unionGPIOXINT_REG GPIOXINT7SEL; // XINT7 GPIO Input Selection
[*] unionGPADAT_REG GPIOLPMSEL; // Low power modes GP I/O input select
[*]};
[*]
复制代码
以上就是IO口的外部中断寄存器,我们可以对上面GPIO0-GPIO63进行外部中断配置。
手把手教你学DSP—基于TMS320F2833 这个很全面。 《TMS320F28335DSP原理与开发编程》介绍的非常详细。 IO的定义都差不多的。 DSP28335 GPIO模块分为三类IO口:PORTA(0-31),PORTB(32-63),PORTC(64-87) 这个是哪里的头文件? 普通的数字IO的驱动能力不足,需要上拉电阻补充。
页:
[1]