📄 2rhea.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 1999, (C) Copyright 1999 Texas Instruments. All rights reserved.
//
// Filename : rheabridge.c
//
//===============================================================================
#include "2rhea.h"
#include "mem.h"
//-------------------------------------------------------------------------------
// NAME : RHEA_WriteCntlReg
//
// DESCRIPTION : Init the Rhe Control register
//
// PARAMETERS : BridgeNumber BRIDGE_1 or BRIDGE_2
//
// FactorStrobe0 RHEA_ACCESSFACTOR_VAL_0
// RHEA_ACCESSFACTOR_VAL_1
// RHEA_ACCESSFACTOR_VAL_2
// RHEA_ACCESSFACTOR_VAL_3
// RHEA_ACCESSFACTOR_VAL_4
// RHEA_ACCESSFACTOR_VAL_5
// RHEA_ACCESSFACTOR_VAL_6
// RHEA_ACCESSFACTOR_VAL_7
// RHEA_ACCESSFACTOR_VAL_8
// RHEA_ACCESSFACTOR_VAL_9
// RHEA_ACCESSFACTOR_VAL_10
// RHEA_ACCESSFACTOR_VAL_11
// RHEA_ACCESSFACTOR_VAL_12
// RHEA_ACCESSFACTOR_VAL_13
// RHEA_ACCESSFACTOR_VAL_14
// RHEA_ACCESSFACTOR_VAL_15
//
//
// FactorStrobe1 see FactorStrobe0
//
// Timeout a value from 0 to 255
//
// RETURN VALUE : None
//
//--------------------------------------------------------------------------------
void RHEA_WriteCntlReg(BOOL BridgeNumber, UWORD16 FactorStrobe0, UWORD16 FactorStrobe1, UWORD8 TimeOutValue)
{
UWORD16 Temp=0;
//RHEA_CNTL
//----------
SetGroupBits(Temp, RHEA_ACCESS_FACTOR0_POS, RHEA_ACCESS_FACTOR0_NUMB, FactorStrobe0);
SetGroupBits(Temp, RHEA_ACCESS_FACTOR1_POS, RHEA_ACCESS_FACTOR1_NUMB, FactorStrobe1);
SetGroupBits(Temp, RHEA_ACCESS_TIMEOUT_POS, RHEA_ACCESS_TIMEOUT_NUMB, TimeOutValue);
if (BridgeNumber==BRIDGE_1)
REG16(RHEA_CNTL_REG_SUPERVISOR_ADDR) = Temp;
else
REG16(RHEA2_CNTL_REG_SUPERVISOR_ADDR) = Temp;
}
//-------------------------------------------------------------------------------
// NAME : RHEA_ReadRegisters
//
// DESCRIPTION : Read the Rhe Control register
//
// PARAMETERS : BridgeNumber BRIDGE_1 or BRIDGE_2
//
// RETURN VALUE : Value of the register RHEA_CNTL
// RHEA_BUS_ALLOC
// RHEA_ARM_RHEA
// RHEA_ENHANCED_REG
// RHEA_DEBUG_ADDRESS
// RHEA_DATA_LSB
// RHEA_DATA_MSB
// RHEA_DEBUG_CTRL
//
//
//
//--------------------------------------------------------------------------------
UWORD16 RHEA_ReadRegisters(BOOL BridgeNumber, UWORD16 Register)
{
UWORD16 Temp=0;
switch(Register)
{
case RHEA_CNTL:
Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_CNTL_REG_SUPERVISOR_ADDR):
REG16(RHEA2_CNTL_REG_SUPERVISOR_ADDR);
break;
case RHEA_BUS_ALLOC:
Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_BUS_ALLOC_REG_SUPERVISOR_ADDR):
REG16(RHEA2_BUS_ALLOC_REG_SUPERVISOR_ADDR);
break;
case RHEA_ARM_RHEA:
Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_ARM_CONTROL_REG_SUPERVISOR_ADDR):
REG16(RHEA2_ARM_CONTROL_REG_SUPERVISOR_ADDR);
break;
case RHEA_ENHANCED_REG:
Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR):
REG16(RHEA2_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR);
break;
case RHEA_DEBUG_ADDRESS:
Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_ADDRESS_DEBUG_REG_ADDR):
REG16(RHEA2_ADDRESS_DEBUG_REG_ADDR);
break;
case RHEA_DATA_LSB:
Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_DEBUG_DATA_LSB_REG_ADDR):
REG16(RHEA2_DEBUG_DATA_LSB_REG_ADDR);
break;
case RHEA_DATA_MSB:
Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_DEBUG_DATA_MSB_REG_ADDR):
REG16(RHEA2_DEBUG_DATA_MSB_REG_ADDR);
break;
case RHEA_DEBUG_CTRL:
Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_DEBUG_CONTROL_SIGNAL_REG_ADDR):
REG16(RHEA2_DEBUG_CONTROL_SIGNAL_REG_ADDR);
break;
default :
break;
}
return(Temp);
}
//-------------------------------------------------------------------------------
// NAME : RHEA_WriteBusAllocReg
//
// DESCRIPTION : Init the Rhe Bus Alloc register
//
// PARAMETERS : BridgeNumber BRIDGE_1 or BRIDGE_2
//
// RheaPriority RHEA_PRIORITY_TO_ARM
// RHEA_PRIORITY_TO_DMA_ACCESS_1
// RHEA_PRIORITY_TO_DMA_ACCESS_2
// RHEA_PRIORITY_TO_DMA_ACCESS_3
// RHEA_PRIORITY_TO_DMA_ACCESS_4
// RHEA_PRIORITY_TO_DMA_ACCESS_5
// RHEA_PRIORITY_TO_DMA_ACCESS_6
// RHEA_PRIORITY_TO_DMA_ACCESS_7
//
// PriorityEnable RHEA_ENABLE_PRIORITY
// RHEA_DISABLE_PRIORITY
// RETURN VALUE : None
//
//--------------------------------------------------------------------------------
void RHEA_WriteBusAllocReg(BOOL BridgeNumber, UWORD16 RheaPriority, BOOL PriorityEnable)
{
UWORD16 Temp=0;
//RHEA_BUS_ALLOC
//-------------
SetGroupBits(Temp, RHEA_PRIORITY_POS, RHEA_PRIORITY_NUMB, RheaPriority);
SetGroupBits(Temp, RHEA_PRIORITY_EN_POS, RHEA_PRIORITY_EN_NUMB, PriorityEnable);
if (BridgeNumber==BRIDGE_1)
REG16(RHEA_BUS_ALLOC_REG_SUPERVISOR_ADDR ) = Temp;
else
REG16(RHEA2_BUS_ALLOC_REG_SUPERVISOR_ADDR) = Temp;
}
//-------------------------------------------------------------------------------
// NAME : RHEA_WriteArmRheaReg
//
// DESCRIPTION : Init the Arm Rhea register
//
// PARAMETERS : BridgeNumber BRIDGE_1 or BRIDGE_2
//
// Strobe0WriteBuffer RHEA_WRITE_BUFFER_ENABLE
// RHEA_WRITE_BUFFER_DISABLE
//
// Strobe1WriteBuffer RHEA_WRITE_BUFFER_ENABLE
// RHEA_WRITE_BUFFER_DISABLE
//
// RETURN VALUE : None
//
//--------------------------------------------------------------------------------
void RHEA_WriteArmRheaReg(BOOL BridgeNumber, BOOL Strobe0WriteBuffer , BOOL Strobe1WriteBuffer)
{
UWORD16 Temp=0;
//ARM_RHEA_CNTL
//-------------
SetGroupBits(Temp, RHEA_WBUFF_EN0_POS, RHEA_WBUFF_EN0_NUMB , Strobe0WriteBuffer);
SetGroupBits(Temp, RHEA_WBUFF_EN1_POS, RHEA_WBUFF_EN1_NUMB , Strobe1WriteBuffer);
if (BridgeNumber==BRIDGE_1)
REG16(RHEA_ARM_CONTROL_REG_SUPERVISOR_ADDR) = Temp;
else
REG16(RHEA2_ARM_CONTROL_REG_SUPERVISOR_ADDR) = Temp;
}
//-------------------------------------------------------------------------------
// NAME : RHEA_WriteEnhancedReg
//
// DESCRIPTION : Init the Enhanced register
//
// PARAMETERS : BridgeNumber BRIDGE_1 or BRIDGE_2
//
// TimeoutEN RHEA_TIMEOUT_ENABLE
// RHEA_TIMEOUT_DISABLE
//
// MaskIt RHEA_MASK_IT
// RHEA_NO_MASK_IT
//
// FrequencyLevel RHEA_HIGH_FREQ
// RHEA_LOW_FREQ
//
// MaskAbort RHEA_ABORT_ENABLE
// RHEA_ABORT_DISABLE
//
// RETURN VALUE : None
//
//--------------------------------------------------------------------------------
void RHEA_WriteEnhancedReg(BOOL BridgeNumber, BOOL TimeoutEN, BOOL MaskIt ,
BOOL FrequencyLevel, BOOL MaskAbort)
{
UWORD16 Temp=0;
//ARM_RHEA_CNTL
//-------------
SetGroupBits(Temp, RHEA_TIMEOUT_EN_POS, RHEA_TIMEOUT_EN_NUMB, TimeoutEN );
SetGroupBits(Temp, RHEA_MASK_IT_POS, RHEA_MASK_IT_NUMB, MaskIt );
SetGroupBits(Temp, RHEA_HIGH_FREQ_POS, RHEA_HIGH_FREQ_NUMB, FrequencyLevel);
SetGroupBits(Temp, RHEA_ABORT_POS, RHEA_ABORT_NUMB, MaskAbort );
if (BridgeNumber==BRIDGE_1)
REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) = Temp;
else
REG16(RHEA2_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) = Temp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -