28377 GPIO模块

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;强制转换成一个指针
在嵌入式系统中,GPIO(通用输入输出)引脚的采样技术涉及如何正确读取外部信号的状态。以 **TMS320F28377**(简称 F28377)为例,该芯片属于 TI 的 C2000 系列高性能实时控制微控制器,广泛应用于工业自动化、电机控制和电源转换等领域。 ### GPIO 采样原理 GPIO 引脚可以配置为输入或输出模式。当用于输入时,需要对引脚上的电压状态进行采样,通常通过内部寄存器读取其电平状态(高/低)。F28377 提供了多种配置选项来优化采样过程,包括: - **数字滤波器**:为了防止由于噪声引起的误读,F28377 支持对输入信号进行滤波处理。该功能可以通过寄存器配置启用。 - **采样窗口**:GPIO 输入具有可编程的采样窗口设置,允许开发者定义在检测到有效电平之前需要连续保持稳定的时间周期[^1]。 - **同步与异步输入**:GPIO 引脚支持同步和异步两种输入方式。同步输入会将信号与系统时钟同步,适用于高速应用;而异步输入则不受时钟限制,适合低功耗场景[^2]。 ### 示例代码 以下是一个基于 F28377GPIO 输入采样示例代码,展示如何初始化并读取 GPIO 引脚状态: ```c #include "F28x_Project.h" // DSP2833x Headerfile Include File void InitGpio(void) { EALLOW; GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // 配置 GPIO0 为通用 I/O 功能 GpioCtrlRegs.GPADIR.bit.GPIO0 = 0; // 设置为输入方向 GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0; // 启用上拉电阻 EDIS; } int main(void) { Uint16 pinState; // 初始化系统控制 InitSysCtrl(); // 初始化 GPIO InitGpio(); for(;;) { pinState = GpioDataRegs.GPADAT.bit.GPIO0; // 读取 GPIO0 引脚状态 DELAY_US(1000); // 延时 1ms } } ``` 上述代码首先初始化系统控制模块,然后配置 GPIO0 引脚为输入模式,并启用内部上拉电阻。主循环中持续读取该引脚的状态。 ### 注意事项 - 在实际应用中,可能需要根据外部电路特性调整 GPIO 的上下拉配置。 - 对于高速信号采样,建议使用中断机制而非轮询方式,以提高响应速度和效率。 - 如果信号存在抖动或干扰,应启用数字滤波器或软件延时去抖动算法。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值