2991|1

1140

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

TMS320C6748的初始化GPIO步骤 [复制链接]

参看《SPRUFL8B》 2.9 Initialization部分

1.进行器件引脚复用设置

2.设置PSC(电源和睡眠控制寄存器)使能GPIO

3.设置方向、数据、中断控制寄存器来按需配置

四、介绍StarterWare的有关GPIO的库函数

       使用StarterWare的GPIO函数需要添加“gpio.c”或者“C:\ti\C6748_StarterWare_1_20_04_01\binary\c674x\cgt_ccs\c6748\drivers\Debug\drivers.lib”,另外,还需要添加的头文件有"gpio.h"、 "soc_C6748.h"、 "hw_syscfg0_C6748.h"、 "hw_types.h" 这些头文件定义了很多寄存器的物理地址和用来计算地址位置等的函数宏。

1.按照步骤,我们先看一下有关复用的寄存器PINMUXn。因为我的开发板用到的是GPIO2[8],所以直接定位到PINMUX5寄存器:

看到GP2[8]在PINMUX5的31-28位,令此位为“1”即可。下图为PINMUX5寄存器的物理地址:

我们采取“读-屏蔽-写”的操作避免影响到其他位的配置。在hw_types.h中定义了HWREG(x)  (*((volatile unsigned int *)(x))),于是我们可以如下设置:

PINMUX_5_VAL=HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5));  /* 读取PINMUX5(复用寄存器)寄存器的值 */ 
PINMUX_5_VAL=(PINMUX_5_VAL&0x0fffffff)|0x80000000;

HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5))=PINMUX_5_VAL;/* 将设置后的值写回PINMUX5寄存器  GP2[8] */

       上面的SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)值为0x1c14134正好为PINMUX5的地址。StarterWare会根据某一外设的寄存器的基址的规律来计算该外设下的某一寄存器地址,就像SOC_SYSCFG_0_REGS,它在soc_C6748.h的289行定义为0x01C14000,而PINMUX5在此外设下。而SYSCFG0_PINMUX(n)  (0x120 + (n * 4))正好利用了每个PINMUXn之间有九个其他寄存器,每个寄存器都是32位来线性计算的。

2.这里PSC用硬件复位后的default就好了。

3.设置输入/输出寄存器。库函数中定义了void GPIODirModeSet(unsigned int baseAdd, unsigned int pinNumber,unsigned int pinDir);来设置IO口的输入/输出状态。其中pinNumber要注意,函数入口参数中有如下说明:

The 144 GPIO pins have serial numbers from 1 to 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

譬如我想要设置GPIO2[8]为输出,则pinNumber=41。

GPIODirModeSet(SOC_GPIO_0_REGS, 41, GPIO_DIR_OUTPUT);可设置GPIO2[8]为输出;同样的,写GPIO函数一样的原理,只是寄存器地址计算不一样,这里就不列举了。GPIOPinWrite(SOC_GPIO_0_REGS, 41, GPIO_PIN_HIGH);就可以让GPIO2[8]输出高电平了。读操作具体函数参看"C:\ti\C6748_StarterWare_1_20_04_01\drivers\gpio.c”。这样我们就可以简单操作GPIO了!

最新回复

不错的分享   详情 回复 发表于 2019-9-12 10:26
点赞 关注
 

回复
举报

2618

帖子

0

TA的资源

纯净的硅(高级)

沙发
 

不错的分享

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表