Gpio模块:
GPADIR决定是输入还是输出 开漏(open-drain,漏极开路)和推挽(push-pull)
GPAMUX 选择功能引脚
GPADIR 方向寄存器
GPACTRL
GPAQSEL
1、GPxMUX寄存器
通用输入输出多路选择寄存器I/O是工作在通用数字IO还是外围IO信号引脚就有GPxMUX决定。
GPxMUX.bit.xx=0,xx通用数字IO;
GPxMUX.bit.xx=1,xx外围IO引脚。
2、GPxDIR寄存器 方向选择寄存器
如果配置为通用数字IO脚,那么GPxDIR决定了该引脚是输入还是输出。
GPxDIR.bit.xx=0,xx配置为输入;
GPxDIR.bitxx=1,xx配置为输出。
3、GPxQUAL寄存器 设置采样脉冲寄存器
在配置为通用数字IO后,DSP的数字IO引脚有对输入过滤噪声的功能,即对IO输入电平采样,在采样设置的次数后都是一个电平,才会确定有效。
假如设置为输入高电平,采样10次,那么这10都为高电平才认为输入高有效,GPxDAT寄存器相应位才会改变。
它是一个16位的寄存器,低八位有效。
GPxQUAL=0; 与SYSCLKOUT同步,没有限制作用
GPxQUAL=1;
2个SYSCLKOUT周期采样,
GPxQUAL=2;
4个SYSCLKOUT周期采样,
GPxQUAL=0xff;510个SYSCLKOUT周期采样,
4、GPxSET置1寄存器
每个IO口有一个置1寄存器,只能写不能读,也就是只能用在输出上,写1可以使输出为1,写0没有变化。
GPxSET .bit.xx=0,被忽略;
GPxSET .bit.xx=1,且引脚配置为输出,则输出变高
5、GPxCLEAR清0寄存器
每个IO口有一个清0寄存器,只能写不能读,也就是只能用在输出上,写1可以使输出清0,写0没有变化。
GPxCLEAR .bit.xx=0,被忽略;
GPxCLEAR .bit.xx=1,且引脚配置为输出,则输出清0
6、GPxTOGGLE 翻转寄存器
每个IO口有一个翻转寄存器,只能写不能读,也就是只能用在输出上,写1可以使输出翻转,写0没有变化。
GPxTOGGLE .bit.xx=0,被忽略;
GPxTOGGLE.bit.xx=1,且引脚配置为输出,则输出翻转
7、GPxDAT寄存器
IO数据寄存器
每个IO都有一个数据寄存器,当IO配置为输出时,相GPxDAT中写数据就可以决定输出状态;
GPxDAT.bit.xx=0,输出变低;
GPxDAT.xx=1,输出变高
当IO配置为输入时,读取GPxDAT中的数据就可以决定输入状态;
注意:当引脚配置为通用数字IO时,相应的外围功能必须屏蔽,否则可能会引发不必要的中断。
================================================================
Input X-BAR
On this device, the Input X-BAR is used to route signals from a GPIO to many different IP blocks such as
the ADC(s), eCAP(s), ePWM(s), and external interrupts.
gpio 分组后面的编号gpio(x)分三大类control,data,interupt
All GPIO pins are I/O/Z and have an internal pullup, which can be selectively enabled or disabled on a per-
pin basis. This feature only applies to the GPIO pins. The pullups are not enabled at reset.
The default for each pin is the GPIO function, secondary functions
can be selected by setting both the GPyGMUXn.GPIOz and GPyMUXn.GPIOz register bits
GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0; // Enable pullup on GPIO11
GpioCtrlRegs.GPAMUX1.bit.GPIO11= 0;//GPIO51 =GPIO51
GpioCtrlRegs.GPADIR.bit.GPIO11 = 1;
GpioDataRegs.GPADAT.bit.GPIO11 = 1;
GpioDataRegs.GPADSET.bit.GPIO11 = 1
GpioDataRegs.GPACLEAR.bit.GPIO11 = 1
A better solution is to use the GPySET/GPyCLEAR/GPyTOGGLE registers instead of the GPyDAT registers
INPUT
You can select the type of input
qualification for each GPIO pin by configuring the GPyQSEL1 and GPyQSEL2 registers
==============================================================
InitGpio();
GPIO_SetupPinMux(31, GPIO_MUX_CPU1, 0);
GPIO_SetupPinOptions(31, GPIO_OUTPUT, GPIO_PUSHPULL);
gpioBaseAddr = (Uint32 *)&GpioCtrlRegs;强制转换成一个指针