📄 ulpd13m.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 + -