DSP

对OMAP-L138的PSC模块的理解

2019-07-13 10:29发布

正文开始之前我先来扯几句无关的大笑,怀着无比忐忑和激动的心开始写我的第一篇博客,在这充满大神的csdn,也让我这个小白来灌灌水大笑

刚开始学习TI的OMAP-L138,底层资料特别缺乏,数据手册也只有英文的,下面是我对PSC模块的理解(也困扰了小白好久,刚明白一点就想分享一下,有理解错误的地方请见谅和多多指正大笑

       PSC (Power Sleep Contorller)
      下面官方手册的讲解,PSC是管理系统电源,时钟开关,设备和外设的启动,

      它主要是为外设和CPU提供电源控制;

       PSC模块分为全局PSC(GPSC)和局部PSC(LPSC);

       GPSC包括内存映射寄存器,PSC中断和PSC控制的外设或模块的状态机;              LPSC控制外设和模块

                             

在系统架构中是这样的:

       

      官方库中给的PSC初始化函数为:


int PSCModuleControl (unsigned int baseAdd, unsigned int moduleId,

                          unsigned int powerDomain, unsigned int flags);

                函数有4个参数

第一个参数为 SOC_PSC_1_REGS  代表PSC模块的基地址 


第二个参数就比较复杂了,  PSC模块分为2的控制器PSC0 和PSC1,分别控制不同的外设 , 
下表为PSC0的外设参数,这些外设的具体对应情况可以在pcs.h的头文件中找到。


                      

      第三个参数有要牵扯到上表中第三列的叫Power Domain的东西,它的参数只有两个 0和1,具体我理解的也不是很清楚,但是大部分的外设开启都是选择Always on(0),只有使用PD_DSP时选择  PSC_POWERDOMAIN_PD_DSP  (1)

在文档中有说明:


   第四个参数对应一下文档,它的大概意思是PSC为模块定义了几种状态,这几个状态直接有一个组合,有的状态在一些外设控制上无效的,具体的参数定义可以在官方库中查到,因为时间紧迫和水平有限,理解还有问题,我会尽量在后面补充和纠正,

                        #define PSC_MDCTL_NEXT_SWRSTDISABLE (0x00000000u)
                        #define PSC_MDCTL_NEXT_SYNCRST      (0x00000001u)
                        #define PSC_MDCTL_NEXT_DISABLE      (0x00000002u)
                        #define PSC_MDCTL_NEXT_ENABLE       (0x00000003u)
                        #define PSC_MDCTL_NEXT_AUTOWAKE     (0x00000005u)
                                 

         刚开始学习OMAP-L138,肯定有很多不足和错误的地方,希望大哥们多多指教大笑