⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ulpd13m.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
字号:
//===============================================================================
//            TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION          
//
//   Property of Texas Instruments 
//   For  Unrestricted  Internal  Use  Only
//   Unauthorized reproduction and/or distribution is strictly prohibited.
//   This product is protected under copyright law and trade secret law 
//   as an unpublished work. 
//   Created 2000, (C) Copyright 2000 Texas Instruments.  All rights reserved.
//
//   Filename             : ulpd13m.c
//   Date of Module Modification:8/16/01
//   Date of Generation :8/16/01 (Maxime Leclercq)
//
//===============================================================================
#include "global_types.h"
#include "ulpd13m.h"
#include "test.h"
#include "dolo_conf.h"


void ULPD13M_TestResetValue(void)
{
  UWORD16 val;
  
  //RESET VALUE ON ULPD13M_SETUP_RF
  val = ULPD13M_SETUP_SLICER &   ULPD13M_SETUP_SLICER_MASK;
  if ( val !=  ULPD13M_SETUP_SLICER_SETUP_SLICER_RES_VAL)
  {
      RES_Set(val);
  }
  else  RES_Set(RES_OK);
  
  //RESET VALUE ON ULPD13M_SETUP_VTCXO
  val = ULPD13M_SETUP_VTCXO &  ULPD13M_SETUP_VTCXO_MASK;
  if ( val != ULPD13M_SETUP_VTCXO_SETUP_VTCXO_RES_VAL)
  {
      RES_Set(val);
  }
  else  RES_Set(RES_OK);  

  //RESET VALUE ON ULPD13M_SETUP_CLK13
  val = ULPD13M_SETUP_CLK13 &  ULPD13M_SETUP_CLK13_MASK;
  if ( val != ULPD13M_SETUP_CLK13_SETUP_CLK13_RES_VAL)
  {
      RES_Set(val);
  }
  else  RES_Set(RES_OK);

  //RESET VALUE ON ULPD13M_SETUP_RF
  val = ULPD13M_SETUP_RF & ULPD13M_SETUP_RF_MASK;
  if ( val != ULPD13M_SETUP_RF_SETUP_RF_RES_VAL)
  {
      RES_Set(val);
  }
  else  RES_Set(RES_OK);

  //RESET VALUE ON  ULPD13M_VTCXO_CTRL
  val =  ULPD13M_VTCXO_CTRL &  ULPD13M_VTCXO_CTRL_MASK;
  if ( val !=  ULPD13M_VTCXO_CTRL_RES_VAL)
  {
      RES_Set(val);
  }
  else  RES_Set(RES_OK);

  //RESET VALUE ON ULPD13M_GSM_CTRL
  val = ULPD13M_GSM_CTRL &  ULPD13M_GSM_CTRL_MASK;
  if ( val !=  ULPD13M_GSM_CTRL_RES_VAL)
  {
      RES_Set(val);
  }
  else  RES_Set(RES_OK);

  //RESET VALUE ON ULPD13M_WCDMA_CTRL 
  val = ULPD13M_WCDMA_CTRL &  ULPD13M_WCDMA_CTRL_MASK;
  if ( val !=  ULPD13M_WCDMA_CTRL_RES_VAL)
  {
      RES_Set(val);
  }
  else  RES_Set(RES_OK);

  //RESET VALUE ON ULPD13M_WCDMA_CTRL 
  val =  ULPD13M_DM_CTRL &   ULPD13M_DM_CTRL_MASK;
  if ( val !=  ULPD13M_DM_CTRL_RES_VAL)
  {
      RES_Set(val);
  }
  else  RES_Set(RES_OK);
}

    
void ULPD13M_SetAllClockDomains(void)
{
  UWORD16 state = 0xF;

  //13MHz VCTCXO enable from ULPD is connected to the TOP
  DCONF_TcxoEnIf(DCONF_MODE_0);
  
  //Change the delay value to enable VTCXO, SLICER and CK13M
  //to speed-up validation: Access registers SETUP
  ULPD13M_SETUP_RF = 0x0000; 
  ULPD13M_SETUP_CLK13 = 0x0001; 
  ULPD13M_SETUP_VTCXO = 0x0001; 
  ULPD13M_SETUP_SLICER = 0x0001; 

  //Enable the 13MHZ ULPD general distribution
  SetGroupBits16(ULPD13M_VTCXO_CTRL,ULPD13M_VTCXO_CTRL_VTCXO_START_POS,ULPD13M_VTCXO_CTRL_VTCXO_START_NUMB,1); //Write VTCXO_START at 1

  //Enable All 13MHz Clock Domain: GSM / WCDMA / DM
 SetGroupBits16(ULPD13M_GSM_CTRL,ULPD13M_GSM_CTRL_SYS_ULPD_EN_POS,ULPD13M_GSM_CTRL_SYS_ULPD_EN_NUMB,1); //Start FSM
 SetGroupBits16(ULPD13M_DM_CTRL,ULPD13M_DM_CTRL_SYS_ULPD_EN_POS,ULPD13M_DM_CTRL_SYS_ULPD_EN_NUMB,1); //Start FSM
 SetGroupBits16(ULPD13M_WCDMA_CTRL,ULPD13M_WCDMA_CTRL_SYS_ULPD_EN_POS,ULPD13M_WCDMA_CTRL_SYS_ULPD_EN_NUMB,1); //Start FSM
  
  //Pull state of WCDMA ULPD to know when the clock is ready and distributed
  while (state != SYS_AWAKE)
  {
  state = GetGroupBits16(ULPD13M_WCDMA_CTRL,ULPD13M_WCDMA_CTRL_SYS_FSM_STATE_POS,ULPD13M_WCDMA_CTRL_SYS_FSM_STATE_NUMB);
  }
}    


/***********************************************************************
* ULPD13M_DisAllClockDomainsWithTimeout(UWORD32 timeoutVal)
*
* This will disable the clock domains and wait for the state transition
* to sleep mode.  If the sleep mode does not occur within the transition
* time allotted, then a failure code is returned.
*
* Returns:  0 upon successful sleep transition
*           1 upon timeout
*/
UWORD32 ULPD13M_DisAllClockDomainsWithTimeout(UWORD32 timeoutVal)    
{
   UWORD32 timeoutCount;
   UWORD16 state = 0x7;

   /* Unmask All interrupt generation */
   SetGroupBits16(ULPD13M_WCDMA_CTRL,ULPD13M_WCDMA_CTRL_MASK_IT_POS,ULPD13M_WCDMA_CTRL_MASK_IT_NUMB,0);
   SetGroupBits16(ULPD13M_GSM_CTRL,ULPD13M_GSM_CTRL_MASK_IT_POS,ULPD13M_GSM_CTRL_MASK_IT_NUMB,0);

   /* disable GSM and DM ULPD, enable DEP SLEEP for WCDMA */
   SetGroupBits16(ULPD13M_WCDMA_CTRL,ULPD13M_WCDMA_CTRL_DEEP_SLEEP_REQ_POS,ULPD13M_WCDMA_CTRL_DEEP_SLEEP_REQ_NUMB,1);
   SetGroupBits16(ULPD13M_GSM_CTRL,ULPD13M_GSM_CTRL_SYS_ULPD_EN_POS,ULPD13M_GSM_CTRL_SYS_ULPD_EN_NUMB,0); //Stop FSM
   SetGroupBits16(ULPD13M_DM_CTRL,ULPD13M_DM_CTRL_SYS_ULPD_EN_POS,ULPD13M_DM_CTRL_SYS_ULPD_EN_NUMB,0); //Stop FSM
  
   /* UnMask global Deep Sleep */
   SetGroupBits16(ULPD13M_VTCXO_CTRL,ULPD13M_VTCXO_CTRL_MASK_DEEP_SLEEP_POS,ULPD13M_VTCXO_CTRL_MASK_DEEP_SLEEP_NUMB,0);

   /* Pull state of VTCXO ULPD to know when the clock is down */
   timeoutCount = 0;
   while (state != VTCXO_DEEP_SLEEP)
   {
      state = GetGroupBits16(ULPD13M_VTCXO_CTRL,ULPD13M_VTCXO_CTRL_STATE_POS,ULPD13M_VTCXO_CTRL_STATE_NUMB);
      if (timeoutCount++ >= timeoutVal)
         break;
   }

   /* Disable WCDMA deep sleep request */
   SetGroupBits16(ULPD13M_WCDMA_CTRL,ULPD13M_WCDMA_CTRL_DEEP_SLEEP_REQ_POS,ULPD13M_WCDMA_CTRL_DEEP_SLEEP_REQ_NUMB,0);  

   if (timeoutCount >= timeoutVal)
      return(1);
   else
      return(0);
}  

void ULPD13M_DisAllClockDomains(void)    
{
 UWORD16 state = 0x7;

 //Unmask All interrupt generation
  SetGroupBits16(ULPD13M_WCDMA_CTRL,ULPD13M_WCDMA_CTRL_MASK_IT_POS,ULPD13M_WCDMA_CTRL_MASK_IT_NUMB,0);
  SetGroupBits16(ULPD13M_GSM_CTRL,ULPD13M_GSM_CTRL_MASK_IT_POS,ULPD13M_GSM_CTRL_MASK_IT_NUMB,0);

  //disable GSM and DM ULPD, enable DEP SLEEP for WCDMA
  SetGroupBits16(ULPD13M_WCDMA_CTRL,ULPD13M_WCDMA_CTRL_DEEP_SLEEP_REQ_POS,ULPD13M_WCDMA_CTRL_DEEP_SLEEP_REQ_NUMB,1);
  SetGroupBits16(ULPD13M_GSM_CTRL,ULPD13M_GSM_CTRL_SYS_ULPD_EN_POS,ULPD13M_GSM_CTRL_SYS_ULPD_EN_NUMB,0); //Stop FSM
 SetGroupBits16(ULPD13M_DM_CTRL,ULPD13M_DM_CTRL_SYS_ULPD_EN_POS,ULPD13M_DM_CTRL_SYS_ULPD_EN_NUMB,0); //Stop FSM
  
 //UnMask global Deep Sleep
  SetGroupBits16(ULPD13M_VTCXO_CTRL,ULPD13M_VTCXO_CTRL_MASK_DEEP_SLEEP_POS,ULPD13M_VTCXO_CTRL_MASK_DEEP_SLEEP_NUMB,0);

  //Pull state of VTCXO ULPD to know when the clock is down
  while (state != VTCXO_DEEP_SLEEP)
  {
  state = GetGroupBits16(ULPD13M_VTCXO_CTRL,ULPD13M_VTCXO_CTRL_STATE_POS,ULPD13M_VTCXO_CTRL_STATE_NUMB);
  }

  //Disable WCDMA deep sleep request
  SetGroupBits16(ULPD13M_WCDMA_CTRL,ULPD13M_WCDMA_CTRL_DEEP_SLEEP_REQ_POS,ULPD13M_WCDMA_CTRL_DEEP_SLEEP_REQ_NUMB,0);  
 
  }  


void ULPD13M_SoftWakeUpWcdma(void)
{
  UWORD16 state = 0x0;
  UWORD16 i = 0x0;

  //Generate Software wake up request
  SetGroupBits16(ULPD13M_WCDMA_CTRL,ULPD13M_WCDMA_CTRL_WAKEUP_REQ_POS,ULPD13M_WCDMA_CTRL_WAKEUP_REQ_NUMB,1); 

  //Pull state of WCDMA ULPD to know when the clock is ready and distributed
  while (state != SYS_AWAKE)
  {
  state = GetGroupBits16(ULPD13M_WCDMA_CTRL,ULPD13M_WCDMA_CTRL_SYS_FSM_STATE_POS,ULPD13M_WCDMA_CTRL_SYS_FSM_STATE_NUMB);
  }

  //Reset the request when awake
  SetGroupBits16(ULPD13M_WCDMA_CTRL,ULPD13M_WCDMA_CTRL_WAKEUP_REQ_POS,ULPD13M_WCDMA_CTRL_WAKEUP_REQ_NUMB,0); 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -