基于Tronlong TMS320C6748的学习笔记之GPIO配置

DSP C6748学习笔记

1.1 GPIO简介

TMS320C6748共有8 Banks,16 GPIOs per Bank,几乎所有引脚都可以配置成为GPIO端口。

img

img

  • DIR:方向控制寄存器,控制GPIO管脚是输入还是输出,其中,对应位置0表示该管脚为输出管脚;对应位置1表示该管脚为输入管脚

Direction:方向,表示控制方向 其中0表示输出管脚 1表示输入管脚

或者可以理解0为output,1为input

  • OUT_DATA:输出数据寄存器,控制管脚输出电平,其中,对应位置0表示该管脚输出为低电平;对应位置1表示该管脚输出为高电平

out:表示输出

关于高低电平的问题可以学习数字电子技术基础,其中我们一般认为0是低电平,1是高电平

  • IN_DATA:输入数据寄存器,注意该寄存器是只读寄存器,返回对应位的输入电平

输入寄存器,注意只是只读寄存器,返回对应位的输入电平

  • SET_DATA:设置数据寄存器,对应位置1表示该管脚输出为高电平,需要注意的是该寄存器写0无效

out:表示输出

关于高低电平的问题可以学习数字电子技术基础,其中我们一般认为0是低电平,1是高电平

  • CLEAR_DATA:清除数据寄存器,对应位置1表示该管脚输出为低电平,需要注意的是该寄存器写0无效

clear表示清除

1.2 GPIO配置说明

a.配置PSC模块,使能GPIO功能

//初始化
void PSCInit(void)
{
	// 使能 GPIO 模块
	// 对相应外设模块的使能也可以在 BootLoader 中完成
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
}

PSCModuleControl :

​ PSC:电源和睡眠控制器,一个PSC模块有一个全局PSC和一组本地PSC组成

​ SOC_PSC_1_REGS是PSC1的寄存器地址

​ HW_PSC_GPIO是GPIO使能的偏移

img

b.配置PINMUX模块,选择需要使用的管脚作为GPIO引脚

// GPIO 管脚复用配置                                           
void GPIOBankPinMuxSet(void)
{
	// 配置相应的 GPIO 口功能为普通输入输出口
	// 核心板 LED
	GPIOBank6Pin12PinMuxSetup();
	GPIOBank6Pin13PinMuxSetup();

	// 底板 LED
	GPIOBank0Pin1PinMuxSetup();
	GPIOBank0Pin2PinMuxSetup();
	GPIOBank0Pin5PinMuxSetup();
}

DSP C6748大多数引脚的有引脚复用,因此在操作引脚的时候,需要将引脚复用状态设置调整为普通的输入输出接口

GPIOBank6Pin12PinMuxSetup函数和GPIOBank6Pin13PinMuxSetup函数将GPIO[12]和GPIO[13]这两个引脚设为普通输入输出口(即GPIO口)

PinMuxSetup可以理解为引脚复用设置

c.配置DIR方向控制寄存器

//GPIO 管脚初始化                                             
void GPIOBankPinInit(void)
{
	// 配置 LED 对应管脚为输出管脚
    // OMAPL138 及 DSP C6748 共有 144 个 GPIO
	// 以下为各组 GPIO BANK 起始管脚对应值
    // 范围 1-144
	// GPIO0[0] 1
    // GPIO1[0] 17
	// GPIO2[0] 33
    // GPIO3[0] 49
	// GPIO4[0] 65
    // GPIO5[0] 81
	// GPIO6[0] 97
	// GPIO7[0] 113
	// GPIO8[0] 129
	// 17个GPIO位一组,一共有8组
	// 核心板 LED
    GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);  
    // 核心板FD1  GPIO6[13]
	GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);  
    // 核心板FD2  GPIO6[12]

    // 底板 LED
    GPIODirModeSet(SOC_GPIO_0_REGS, 6, GPIO_DIR_OUTPUT);    
    // 底板GD1  GPIO0[5]
    GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_OUTPUT);    
    // 底板GD2  GPIO0[1]
    GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_OUTPUT);    
    // 底板GD3  GPIO0[2]
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值