📄 rif.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 2001,(C) Copyright 2001 Texas Instruments.
// All rights reserved.
//=====================================================================
#include "global_types.h"
#include "rif.h"
/*********************************************************************
RIF_InitSpcx : Initialize SPCX rif register
*********************************************************************/
void RIF_InitSpcx(int Mcm, int Xrst, int Clk_auto, int Txm, int Nclk_en, int Nclk13_en, int Threshold, int Ptv)
{
MAP_RIF_SPCX_REG_DSP = ( Mcm << RIF_SPCX_MCM_POS
| Xrst << RIF_SPCX_XRST_POS
| Clk_auto << RIF_SPCX_CLKX_AUTO_POS
| Txm << RIF_SPCX_TXM_POS
| Nclk_en << RIF_SPCX_NCLK_EN_POS
| Nclk13_en << RIF_SPCX_NCK13_EN_POS
| Threshold << RIF_SPCX_THRESHOLD_POS
| Ptv << RIF_SPCX_DIV_CLK_POS);
}
/*********************************************************************
RIF_InitSpcr : Initialize SPCR rif register
*********************************************************************/
void RIF_InitSpcr(int Dlb, int Rrst, int Threshold, int Xint, int Rint, int Xdma, int Rdma, int Clklb)
{
MAP_RIF_SPCR_REG_DSP = ( Dlb << RIF_SPCR_DLB_POS
| Rrst << RIF_SPCR_RRST_POS
| Threshold << RIF_SPCR_THRESHOLD_POS
| Xint << RIF_SPCR_XINT_MASK_POS
| Rint << RIF_SPCR_RINT_MASK_POS
| Xdma << RIF_SPCR_XDMA_MASK_POS
| Rdma << RIF_SPCR_RDMA_MASK_POS
| Clklb << RIF_SPCR_CLKLB_POS);
}
/*-------------------------------------------------------------------------------
NAME : RIF_BclkInternalLoopback
SYNOPSIS : void RIF_BclkInternalLoopback(int clk_loop)
Active at one
PARAMETERS : value of
RETURN VALUE : no
LIMITATIONS :
-----------------------------------------------------------------------------*/
void RIF_BclkInternalLoopback(int Clk_loop)
{
MAP_RIF_SPCR_REG_DSP |= (Clk_loop << 14 );
}
/*********************************************************************
RIF_Reset : Soft reset for the rif
*********************************************************************/
void RIF_Reset(void )
{
int port;
port = MAP_RIF_SPCX_REG_DSP;
port &= ~RIF_CTRL_XRST;
MAP_RIF_SPCX_REG_DSP = port;
port = MAP_RIF_SPCX_REG_DSP;
port |= RIF_CTRL_XRST;
MAP_RIF_SPCX_REG_DSP = port;
port = MAP_RIF_SPCR_REG_DSP ;
port &= ~RIF_CTRL_RRST ;
MAP_RIF_SPCR_REG_DSP = port;
port = MAP_RIF_SPCR_REG_DSP ;
port |= RIF_CTRL_RRST;
MAP_RIF_SPCR_REG_DSP = port;
}
/*********************************************************************
RIF_GetMcm : Return MCM bit SPCX register
*********************************************************************/
int RIF_GetMcm(void)
{
int port;
port = MAP_RIF_SPCX_REG_DSP & RIF_CTRL_MCM ;
return port;
}
/*********************************************************************
RIF_GetMcm : Return XRST bit SPCX register
*********************************************************************/
int RIF_GetXrst(void)
{
int port;
port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_XRST) >> 1;
return port;
}
/*********************************************************************
RIF_GetClkauto : Return CLKX_AUTO bit SPCX register
*********************************************************************/
int RIF_GetClkauto(void)
{
int port;
port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_CLKX_AUTO) >> 3 ;
return port ;
}
/*********************************************************************
RIF_GetTxm : Return TXM bit SPCX register
*********************************************************************/
int RIF_GetTxm(void)
{
int port;
port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_TXM) >> 4 ;
return port ;
}
/*********************************************************************
RIF_GetNclken : Return Nclk_EN bit SPCX register
*********************************************************************/
int RIF_GetNclken(void)
{
int port;
port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_NCLK_EN) >> 5 ;
return port ;
}
/*********************************************************************
RIF_GetNclk13 : Return NCLK13bit SPCX register
*********************************************************************/
int RIF_GetNclk13(void)
{
int port;
port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_NCLK13_EN) >> 6 ;
return port ;
}
/*********************************************************************
RIF_GetThresholdx : Return THRESHOLD bit SPCX register
*********************************************************************/
int RIF_GetThresholdx(void)
{
int port;
port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_THRET) >> 10 ;
return port;
}
/*********************************************************************
RIF_GetPtv : Return PTV bit SPCX register
*********************************************************************/
int RIF_GetPtv(void)
{
int port;
port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_PTV) >> 12 ;
return port;
}
/*********************************************************************
RIF_GetAlem : Return ALMOST_EMPTY bit SPCX register
*********************************************************************/
int RIF_GetAlem(void)
{
int port;
port = ( (MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_AL_EM) >> 7 ;
return port ;
}
/*********************************************************************
RIF_GetFifoet : Return FIFO_EMPTY bit SPCX register
*********************************************************************/
int RIF_GetFifoet(void)
{
int port;
port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_FIFOET) >> 8 ;
return port ;
}
/*********************************************************************
RIF_GetFifoft : Return FIFO_FULL bit SPCX register
*********************************************************************/
int RIF_GetFifoft(void)
{
int port;
port = ( (MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_FIFOFT) >> 9 ;
return port ;
}
/*********************************************************************
RIF_GetSpcx : Get SPCX rif register
*********************************************************************/
void RIF_GetSpcx(int *Mcm, int *Xrst,
int *Clk_auto, int *Txm,
int *Nclk_en,int *Nclk13_en,
int *Threshold,int *Ptv )
{
int intreg;
intreg = MAP_RIF_SPCX_REG_DSP;
*Mcm = intreg & RIF_CTRL_MCM;
*Xrst = (intreg & RIF_CTRL_XRST) >> 1;
*Clk_auto = (intreg & RIF_CTRL_CLKX_AUTO) >> 3 ;
*Txm = (intreg & RIF_CTRL_TXM) >> 4;
*Nclk_en = (intreg & RIF_CTRL_NCLK_EN ) >> 5 ;
*Nclk13_en = (intreg & RIF_CTRL_NCLK13_EN ) >> 6;
*Threshold = (intreg & RIF_CTRL_THRET) >> 10;
*Ptv = (intreg & RIF_CTRL_PTV ) >> 12 ;
}
/*********************************************************************
RIF_GetDlb : Return DLB bit SPCR register
*********************************************************************/
int RIF_GetDlb(void)
{
int port;
port = ((MAP_RIF_SPCR_REG_DSP ) & RIF_CTRL_DLB) ;
return port;
}
/*********************************************************************
RIF_GetRrst : Return RRST bit SPCR register
*********************************************************************/
int RIF_GetRrst(void)
{
int port;
port = ((MAP_RIF_SPCR_REG_DSP) & RIF_CTRL_RRST) >> 1 ;
return port ;
}
/*********************************************************************
RIF_GetThresholdr : Return THRESHOLD bit SPCR register
*********************************************************************/
int RIF_GetThresholdr(void)
{
int port;
port = ((MAP_RIF_SPCR_REG_DSP) & RIF_CTRL_THRER) >> 7 ;
return port;
}
/*********************************************************************
RIF_GetSpcr : Get SPCR rif register
*********************************************************************/
void RIF_GetSpcr(int *Dlb, int *Rrst,
int *Threshold )
{
int intreg;
intreg = MAP_RIF_SPCR_REG_DSP;
*Dlb = intreg & RIF_CTRL_DLB;
*Rrst = (intreg & RIF_CTRL_RRST) >> 1;
*Threshold = (intreg & RIF_CTRL_THRER) >> 7 ;
}
/*********************************************************************
RIF_GetFifoafr : Return FIFO_ALMOSTFULL bit SPCR register
*********************************************************************/
int RIF_GetFifoafr(void)
{
int port;
port = ( (MAP_RIF_SPCR_REG_DSP) & RIF_CTRL_AL_FU) >> 4 ;
return port ;
}
/******************************************************************************
NAME : RIF_GetFifoer
SYNOPSIS : int RIF_GetFifoer(void)
DESCRIPTION : return FIFO_EMPTY bit SPCR register
RETURN VALUE : if FIFO receive empty return 1
FIFO receive not empty return 0
PARAMETERS : No
LIMITATIONS :
******************************************************************************/
int RIF_GetFifoer(void)
{
int port;
int dec;
port =(MAP_RIF_SPCR_REG_DSP) ;
dec = port >> 5;
port = dec & RIF_CTRL_FIRST;
return port ;
}
/******************************************************************************
NAME : RIF_TestRifReg
SYNOPSIS : int RIF_TestRifReg()
DESCRIPTION : Check read/write registers access
RETURN VALUE : Return the result of the test OK or BAD
PARAMETERS :
LIMITATIONS :
******************************************************************************/
int RIF_TestRifReg()
{
int i,res=0;
int dataIoport;
/*---------------------------------------------------------------------
Check that the value of the control and status
registers after H/W reset is correct
--------------------------------------------------------------------*/
dataIoport = MAP_RIF_SPCX_REG_DSP;
if ((dataIoport & 0x7fff) != 0x059e) {
res = 2;
}
dataIoport =MAP_RIF_SPCR_REG_DSP ;
if ((dataIoport & 0x3fff) != 0x3ca2) {
res = 3;
}
MAP_RIF_SPCX_REG_DSP = 0x05fe;
dataIoport = MAP_RIF_SPCX_REG_DSP;
if ((dataIoport & 0x7fff) != 0x05fe) {
res = 4;
}
MAP_RIF_SPCR_REG_DSP = 0x3da2;
dataIoport = MAP_RIF_SPCR_REG_DSP;
if ((dataIoport & 0x3fff) != 0x3da2) {
res = 5;
}
if (res)
return res;
return 1; /* Return OK */
}
/*********************************************************************
RIF_EnableInternalClock : Enable the transmitter clock
*********************************************************************/
void RIF_EnableInternalClock(void) {
MAP_RIF_SPCX_REG_DSP = MAP_RIF_SPCX_REG_DSP | (1 << RIF_SPCX_NCLK_EN_POS);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -