DSP F28335开发板学习记录01


前言

学习DSP可以先学习怎么使用,会写代码控制,最后再去学习理论会事半功倍。

F28335提供了88个多功能复用引脚GPIO0 ~ GPIO87。其中,复用引脚不仅可以配置成通用数字I/O工作模式,也可以配置成外设I/O工作模式,例如外设SCI、ePWM等。

这88个引脚分成了A、B、C三组。其中,A组包括GPIO0 ~ GPIO31;B组包括GPIO32 ~ GPIO63;C组包括GPIO64 ~ GPIO88。

F28335是通过寄存器来控制选择这些引脚的功能作用,例如:选择某个引脚作为通用数字I/O口,或者作为外设I/O口。


一、GPIO寄存器分类

GPIO寄存器分为三类:控制寄存器、数据寄存器、外部中断源及低功耗模式唤醒选择寄存器。

需要注意的是:第一类以及第三类寄存器(控制寄存器和外部中断源及低功耗模式唤醒选择寄存器)是受EALLOW保护的。

一、控制寄存器:

GPIO控制寄存器
以上是GPIO控制寄存器,包括GPxCTRL、GPxMUXn、GPxDIR、GPxPUD、GPxQSELn(其中x=A、B、C;n=1、2)。这里要注意的是C组GPIO是没有GPxCTRL和GPxQSELn寄存器的。

下面分别对常用配置寄存器进行介绍。

1、GPIO功能选择寄存器(GPxMUXn)

因为同一时刻,GPIO的功能只能是一个,要么作为通用数字I/O口,要么作为外设I/O口。因此需要该寄存器可以对GPIO的功能进行选择。F28335一共有6个功能选择寄存器(GPAMUX1、GPAMUX2、GPBMUX1、GPBMUX2、GPCMUX1、GPCMUX2)。

每个引脚有多种功能。同时,同一个功能也可以配置成不同的引脚。下面为配置语句:

EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;     //GPIO0配置为通用数字I/O口
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1;     //GPIO1配置为EPWM1B
GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 2;    //GPIO18配置为SCITXDB
GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 3;    //GPIO19配置为CANTXA
EDIS;

其他GPIO的功能以及选择表如下。(表中I/O表示既可以作为输入也可以作为输出,I表示仅可以作为输入,O表示仅可以作为输出)不用记住,需要时可以查看原理图和表:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、GPIO方向选择寄存器(GPxDIR)

如果已经把某个GPIO配置成了通用数字I/O口,那么就需要确定这个GPIO是作为输入,还是作为输出。此时就需要此寄存器来进行确定。输入时,需要将GPxDIR设置为0;输出时,需要将GPxDIR设置为1。下面为例子:

EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;     //GPIO0配置为通用数字I/O口
GpioCtrlRegs.GPADIR.bit.GPIO0 = 0;      //GPIO0作为输入
EDIS;

或者

EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;     //GPIO0配置为通用数字I/O口
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;      //GPIO0作为输出
EDIS;

3、GPIO上拉控制寄存器(GPxPUD)

引脚接上上拉电阻可以让一个引脚从不确定状态转为高电平状态,提高驱动能力。该寄存器不仅适用于通用数字I/O口,也适用于外设引脚。通常,GPIO0~GPIO15的上拉功能是默认禁止的,其他GPIO的上拉功能是默认使能的。若要使能GPIO0的上拉功能、禁止GPIO15的上拉功能可以写下面的语句:

EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 1;   //使能GPIO0的上拉功能
GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0;  //禁止GPIO15的上拉功能
EDIS;

4、GPIO输入限定寄存器(GPxQSELn)

实际应用时,信号会存在干扰。因此需要输入限定来消除干扰,提高引脚信号的质量,提高系统运行的稳定性。

三种输入限定方式:仅与SYSCLKOUT同步、通过采样窗限定、不同步或限定。

可以通过设置GPxQSELn(x=A、B;n=1、2;C组GPIO没有该寄存器)选择采用哪种限定方式。

因为该寄存器不常用,所以不做过多叙述。

以上就是最常用的GPIO控制寄存器的使用。需要时,可以查看原理图和表来使用。

二、数据寄存器:

该寄存器没有受EALLOW保护,因此不需要在写代码时写EALLOW和EDIS。
在这里插入图片描述

1、数据寄存器(GPxDAT)

该寄存器可以读取当前GPIO的电平状态。读取时,可以参考下面语句:

int x;
x = GpioDataRegs.GPADAT.bit.GPIO0; //若x=1,则GPIO0此时为高电平状态;若x=0,则GPIO0此时为低电平状态

该寄存器也可以写GPIO的电平状态,但是不推荐使用该寄存器写电平状态。可能会对其他引脚产生不确定的影响。

2、置位、清零、电平反转寄存器(GPxSET、GPxCLEAR、GPxTOGGLE)

若需要改变GPIO的电平状态,则可以使用GPxSET、GPxCLEAR、GPxTOGGLE来改变,可以参考下面语句:

EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;   //GPIO0配置为通用数字I/O口
GpioCtrlRegs.GPADIR.bit.GPIO0 = 0;    //GPIO0配置为输出
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;   //GPIO1配置为通用数字I/O口
GpioCtrlRegs.GPADIR.bit.GPIO1 = 0;    //GPIO1配置为输出
GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0;   //GPIO2配置为通用数字I/O口
GpioCtrlRegs.GPADIR.bit.GPIO2 = 0;    //GPIO2配置为输出
EDIS;

GpioDataRegs.GPASET.bit.GPIO0 = 1;     //GPIO0置位
GpioDataRegs.GPACLEAR.bit.GPIO1 = 1;   //GPIO1清零
GpioDataRegs.GPATOGGLE.bit.GPIO2 = 1;  //GPIO2电平翻转

需要注意的是:使用GPxSET、GPxCLEAR、GPxTOGGLE寄存器的前提是GPIO配置为通用数字I/O口且方向为输出

二、GPIO初始化配置步骤

1、选择GPIO工作模式;
2、使能或禁止内部上拉电阻(根据需要)。GPIO0~GPIO15的上拉功能是默认禁止的,其他GPIO的上拉功能是默认使能的;
3、如果引脚被配置为了通用数字I/O口,则需要选择是输入还是输出;
4、如果引脚被配置为了输入模式(不论是不是通用数字I/O口),可以选择输入限定方式,默认GPIO输入限定方式全部都是仅与SYSCLKOUT同步,也可以根据需要选择其他方式;
5、如果引脚被配置为了输出模式(是通用数字I/O口),可以根据需要设置引脚初始电平;

以上就基本完成了GPIO的初始化配置操作。
GPIO初始化配置示例:

EALLOW;
GpioCtrlRegs.GPCMUX1.bit.GPIO68=0; //GPIO68被配置为通用数字I/O口
GpioCtrlRegs.GPCDIR.bit.GPIO68=1;  //输出
GpioCtrlRegs.GPCPUD.bit.GPIO68=0;  //禁止上拉
EDIS;
 GpioDataRegs.GPCCLEAR.bit.GPIO68=1; //GPIO68初始电平设置为低电平

输入限定功能采用了默认,所以没写。


总结

本文主要讲了GPIO的功能以及配置,在后面使用时要结合原理图进行配置使用。
对GPIO的使用可以练习流水灯、采用按键控制LED灯、直流电机和步进电机的控制等。后面的文章会写一些GPIO的使用练习过程。

本文为研0学生暑假学习DSP F28335的学习记录,希望能和大家多多讨论,有错误的地方希望大家能够指正。

  • 13
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值