首先,放图,GPIO复用原理框图(主角):
接下来对主角进行介绍:
在28335中共有88个GPIO引脚,将其分为3部分:A、B、C
A:GPIO0-GPIO31
B:GPIO32-GPIO63
C:GPIO64-GPIO87
图中以A组端口为例,顾左侧圆圈内应该为GPIO0-GPIO31引脚。
1、上拉部分
在左侧圆圈的上边有一个PU(PULL UP)即为上拉的意思,可由上拉使能寄存器GPAPUD控制,其中,0为上拉,1为不上拉。
上拉的作用:让管脚默认有个初始的高电平(3.3V左右),可以输出更大的电压,即增强输出能力。(叠加原理?)
2、功能切换部分
同种GPAMUX1/2寄存器可以控制引脚在数字I/0工作模式或外设I/0工作模式(控制外设1、2、3)中切换。
3、方向控制部分
当GPIO被功能切换部分设置为数字I/O工作模式(通用输入输出口)时,通过GPADIR可控制GPIO口为输入状态还是输出状态。
右下角和左下角组成方向控制部分,XRS_hat为高电平1时经过逻辑非后变成0。
当GPIODIR为0时为输入状态:使左侧向左的三角失效,从而处于输入状态。
当GPIODIR为1时为输出状态:左侧向左的三角使能,可以输出右侧上二位的数据。
4、输出选择部分
当GPIO被功能切换部分设置为数字I/O工作模式(通用输入输出口)时,通过GPADAT可设置输出为高电平或者低电平。
GPASET(置位寄存器):在不影响其他引脚状态的情况下将相应的引脚驱动到高电平。
GPACLEAR(清零寄存器):在不影响其他引脚状态的情况下将相应的引脚驱动到低电平。
GPATOGGLE(状态翻转寄存器):在不影响其他引脚状态的情况下将相应的引脚状态进行翻转。
5、输入量化部分
当GPIO被功能切换部分设置为数字I/O工作模式(通用输入输出口)时,通过GPACTRL可控制采样周期,通过GPAQSEL1/2可控制采样次数。
当GPIO复用为其他功能时,此时输入数据既可以走同步也可以走异步。
6、输入选择部分
如图中右上位三所示,当GPIO配置为通用输入输出口时,5中输出的数据保存在数据寄存器GPADAT(read)中;当GPIO复用为其它功能时,此时输入的数据输出到右上位三中选择器的其它路径。
低功耗模式和中断模式暂不记录。
参考:F28335GPIO结构、寄存器、复用以及注意事项详细叙述_tms320f28335 gpio寄存器_Gymstruggle的博客-CSDN博客