DSP C6748学习笔记
1.1 GPIO简介
TMS320C6748共有8 Banks,16 GPIOs per Bank,几乎所有引脚都可以配置成为GPIO端口。
- 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使能的偏移
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]
}