class="markdown_views prism-atom-one-light">
1 GPIO工作原理
外界二进制信息(数字量)要被CPU处理,要给存储器存放,就需要外界信息源与两者之间的交换接口,这样的交换接口若用来进行通用目的数字量的输入输出,就被称为通用数字量输入/输出接口,简称GPIO。
F28335的88路GPIO被分为3组
- A组:GPIO0 - GPIO31 只能配置INT1-INT3
- B组:GPIO32 - GPIO63 配置INT4-INT12
- C组:GPIO64 - GPIO87
2 GPIO的寄存器
2.1 GPIOMux(复用开关)寄存器 16位
F28335 DSP有多达88个GPIO口,对应着芯片引出的88个引脚,随着芯片的封装与尺寸的确定,引脚数目是有限的,所以这88个引脚多数都是功能复用的,即可以灵活配置为输入引脚,也可以灵活配置为输出引脚,即可以作为通用I/O引脚,也可以作为特殊功能口(如SCI、SPI、ECAN等),非常灵活,用户根据需要,可以通过GPIOMUX(输入输出多路选择器,复用开关)寄存器来进行相关配置。
- GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 0 将GPIO54设为数字I/O功能
- GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 1 将GPIO54设为外设功能
2.2 GPIODIR(方向)寄存器 32位
如果将这些引脚选择数字量I/O模式,可以通过方向寄存器GPxDIR配置数字量I/O的方向,即是作为输入引脚还是作为输出引脚。
- GpioCtrlRegs.GPBDIR.bit.GPIO54 = 0 将GPIO54设为输入功能
- GpioCtrlRegs.GPBDIR.bit.GPIO54 = 1 将GPIO54设为输出功能
2.3 GPxQUAL(量化)寄存器 32位
在GPIO作为数字I/O且位输入模式时,就会涉及到采样准确与否的问题,如果在输入信号毛刺较多的情况下,如果直接读取很可能会得到错误的信号。因此我们需要对输入的信号进行量化采样。
上图就是一个只有信号保持6个系统时钟周期,才确认信号是高还是低电平的操作。
所以我们通过结合实际需求来设置这个量化寄存器GPxQUAL,得到我们所需要的准确信号,一般与GPxQSEL配合使用。
2.4 电平操作寄存器
- GPxDAT寄存器:用于对I/O口置1或0,但是反应速度比较慢,一般在信号输入的时候用,输出的时候用下面三个。
- GPxSET寄存器: 用于对I/O置1,速度快
- GPxCLEAR寄存器:用于对I/O清0
注意这里的GPxSET和GPxCLEAR都只能置1,不能置0,置1功能有效
- GPxTOOGLE寄存器: 用于对I/O的电平翻转