100
时 间 记 忆
100
最 新 评 论
100
专 题 分 类
100
最 新 日 志
100
最 新 留 言
100
搜 索
用 户 登 录
100
友 情 连 接
博 客 信 息
100


 
DSP28335入门(二)GPIO
[ 2022/1/21 23:24:00 | By: 欧高技术 ]
 
一、DSP的IO口大多都有其专门的功能,比如PWM通道外部中断eCAPeQEPSCI等等一系列,既然有就尽量用它,减少软件模拟造成的CPU的资源浪费。

二、C28335的IO口一共有GPIO0~GPIO87个,由结构体GPIO_CTRL_REGS控制;gpio_ctrl_reg结构体内定义了相关的GPIO的寄存器地址;根据数据手册得知C28335的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)
};

//以A组端口(GPIO0~GPIO31)为例,说明寄存器功能
类型 变量名 寄存器名
//CPACTRL寄存器:对引脚的采样速率进行配置,基础采样速率:SYSCLKOUT
union GPACTRL_REG GPACTRL; // GPIO A Control Register (GPIO0 to 31)
//GPAQSELx(1,2)寄存器:设置每个引脚的输入限定
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)
//GPAMUXx(1,2)寄存器:设置引脚复用功能
union GPA1_REG GPAMUX1; // GPIO A Mux 1 Register (GPIO0 to 15)
union GPA2_REG GPAMUX2; // GPIO A Mux 2 Register (GPIO16 to 31)
//GPADIR寄存器:设置引脚输入输出方向寄存器
union GPADAT_REG GPADIR; // GPIO A Direction Register (GPIO0 to 31)
//GPAPUD寄存器:设置使能引脚内部上拉电阻。GPAPUD寄存器有些特殊
union GPADAT_REG GPAPUD; // GPIO A Pull Up Disable Register (GPIO0 to 31)
Uint32 rsvd1;

//引脚数据结构体,可以设置、读取引脚输出状态
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];
};

1、GPADAT寄存器: 无论引脚是什么模式,可读取当前引脚的状态;在GPIO模式下写入1或0,会强制改变引脚状态;
union GPADAT_REG GPADAT; // GPIO Data Register (GPIO0 to 31)
2、GPASET寄存器: 在GPIO模式下写入1,设置引脚状态为高电平;写入0不发生变化;
union GPADAT_REG GPASET; // GPIO Data Set Register (GPIO0 to 31)
3、GPACLEAR寄存器: 在GPIO模式下写入1,设置引脚状态为低电平;写入0不发生变化;
union GPADAT_REG GPACLEAR; // GPIO Data Clear Register (GPIO0 to 31)
4、GPATOGGLE存器 在GPIO模式下写入1,电平翻转引脚状态;写入0不发生变化;
union GPADAT_REG GPATOGGLE; // GPIO Data Toggle Register (GPIO0 to 31)

 
  • 标签:数字信号处理器 
  • 群组:DSP开发知识 
  • 发表评论:
    100
    Powered by ASTAR.