DSP

创龙TMS320C6748开发板———PSC配置及GPIO介绍

2019-07-13 11:15发布

一、PSC电源和睡眠控制器)配置介绍        TMS320C6748Ti公司的一款超低功耗DSP产品,相比其他系列DSP它多了PSC这个模块,用以管理各个外设的睡眠和唤醒,大大节约了系统功耗,下面我们具体介绍这个模块的细节以及配置。        1PSC模块共有两个控制器模块,分别负责以下外设的配置。        从上图我们可以看到PSC模块几乎可以控制DSP中所有的外设。        也许这里大家有一个疑问,PSC0~1Domain0~1,以及具体的模块好像关系很乱。下面我们绘制了这样一张图来详细说明他们的所属关系:        实际上,只有DSP属于domain1,其余所有模块均属于domain0        2)下面我们接着介绍PSC能够控制各个模块进入的状态(EnableDisableSyncResetSwRstDisableAutoSleepAutoWake)一般我么常用的是前4个状态,Enable为正常工作状态,而Disable状态关闭了模块时钟;SyncReset使模块处于复位状态,时钟正常,SwRstDisable使模块处于复位状态,并关闭了时钟。具体说明见下图所示。        3PSC模块配置说明        a. 等待PTSTAT中的GOSTAT[x]为清零,x为当前模块所属的domain        b. 检查MDSTAT[x]中的STAT位是否与简要配置的状态相同,如果相同,直接返回。        c. 清除MDCTL[x]中的NEXT(非常重要)        d. 配置MDCTL[x]中的NEXT位为指定的状态。        e. 配置PTCMD中的GO[x]位,开始转换模块状态。        f. 等待,检查PTSTAT中的GOSTAT[x]是否清零,表示转换完成。        g. 检查MDSTAT[x]中的STAT位是否与简要配置的状态相同。 二、GPIO(通用输入输出)配置介绍        本节我们主要介绍GPIO的输入输出控制功能,中断部分下次结合中断向量表一起说明。        1TMS320C6748共有8 Banks16 GPIOsper Bank,几乎所有引脚都可以配置成为GPIO端口。        对于GPIO,我们只需关注这几个寄存器:        DIR:方向控制寄存器,控制GPIO管脚是输入还是输出,其中,对应位置0表示该管脚为输出管脚;对应位置1表示该管脚为输入管脚。        OUT_DATA:输出数据寄存器,控制管脚输出电平,其中,对应位置0表示该管脚输出为低电平;对应位置1表示该管脚输出为高电平。        SET_DATA:设置数据寄存器,对应位置1表示该管脚输出为高电平,需要注意的是该寄存器写0无效。        CLEAR_DATA:清除数据寄存器,对应位置1表示该管脚输出为低电平,需要注意的是该寄存器写0无效。        IN_DATA:输入数据寄存器,注意该寄存器是只读寄存器,返回对应位输入电平。        2GPIO配置说明        a. 配置PSC模块,使能GPIO功能。        b. 配置PINMUX模块,选择需要使用的管脚作为GPIO引脚。具体可以参看我的这篇帖子。http://bbs.elecfans.com/forum.php?mod=viewthread&tid=516939&page=1&extra=#pid3851865        c. 配置DIR方向控制寄存器。        d. 如果配置GPIO为输入引脚,那么在有信号输入后可以读取IN_DATA寄存器以获得输入电平;如果配置GPIO为输出引脚,可以配置OUT_DATASET_DATACLEAR_DATA寄存器输出高/低电平。 三、CCS调试的一些经验        以后如果我想起一些关于CCS调试有用的功能,会不定时在帖子最后更新,希望有助于大家的学习~        大家在调试工程的时候会不会遇到工程出错,但是又找不到事那个部分出问题,一般有经验的工程师在编写子函数时都会写一些返回值,这样在调试时直接查看这些返回值就可以知道程序那里出错了。但是,这样编写效率不高,遇到多次调用子函数的情况很难知道那个部分出问题了。一般工程师们还会在程序运行时及时打印出系统运行状态,主要有两种方法,一种是基于UART接口的方法(我们以后结合UART再说),另一种是调用printf函数的方法。        格式为:printf("hello ! ");        重要的事情说三遍,在语句的结尾一定一定要有回车符 和换行符        大家可以看到在CCSConsole里有如下的显示。