📄 omap30_dspmbx_l3.c
字号:
//------------------------------------------------------------------------------
// TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION
// Property of Texas Instruments
// For Unrestricted Internal Use Only
// Unauthorized reprofuction 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
//
//------------------------------------------------------------------------------
#include "omap30_l3.h"
//------------------------------------------------------------------------------
//
// FUNCTIONS
//
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// NAME : Mailbox_Write
// DESCRIPTION : Write data to Mailbox registers :
// - DSP2ARM1 and DSP2ARM1B if DSP2ARM1_FLAG[0] == 0
// - DSP2ARM2 and DSP2ARM2B if DSP2ARM2_FLAG[0] == 0
// PARAMETERS : Mailbox DSP2ARM1 or DSP2ARM2
// Data1 data to first register
// Data2 data to second register
// RETURN VALUE: TRUE if write done successfully, otherwise FALSE
// LIMITATIONS : None
//------------------------------------------------------------------------------
UWORD16 Mailbox_Write(Mailbox_Enum_t Mailbox, UWORD16 Data1, UWORD16 Data2)
{
switch (Mailbox)
{
case DSP2ARM1 :
{
if (( REG16(MB_DSP2ARM1_FLAG_REG_ADDR) & MB_DSP2ARM_FLAG_MASK ) == 0x0000 )
{
REG16(MB_DSP2ARM1_REG_ADDR) = Data1;
REG16(MB_DSP2ARM1B_REG_ADDR) = Data2;
return(TRUE);
}
else
return(FALSE);
}
case DSP2ARM2 :
{
if ( ( REG16(MB_DSP2ARM2_FLAG_REG_ADDR) & MB_DSP2ARM_FLAG_MASK ) == 0x0000 )
{
REG16(MB_DSP2ARM2_REG_ADDR) = Data1;
REG16(MB_DSP2ARM2B_REG_ADDR) = Data2;
return(TRUE);
}
else
return(FALSE);
}
default :
{
return(FALSE);
}
}
}
//------------------------------------------------------------------------------
// NAME : Mailbox_Read
// DESCRIPTION : Read data from Mailbox registers :
// - ARM2DSP1 and ARM2DSP1B
// - ARM2DSP2 and ARM2DSP2B
// - DSP2ARM1 and DSP2ARM1B
// - DSP2ARM2 and DSP2ARM2B
// PARAMETERS : Mailbox ARM2DSP1, ARM2DSP2, DSP2ARM1 or DSP2ARM2
// *Ptr1 pointer on data from first register
// *Ptr2 pointer on data from second register
// RETURN VALUE: None
// LIMITATIONS : None
//------------------------------------------------------------------------------
void Mailbox_Read(Mailbox_Enum_t Mailbox, UWORD16 *Ptr1, UWORD16 *Ptr2)
{
switch (Mailbox)
{
case ARM2DSP1 :
{
*Ptr1 = REG16(MB_ARM2DSP1_REG_ADDR);
*Ptr2 = REG16(MB_ARM2DSP1B_REG_ADDR);
break;
}
case ARM2DSP2 :
{
*Ptr1 = REG16(MB_ARM2DSP2_REG_ADDR);
*Ptr2 = REG16(MB_ARM2DSP2B_REG_ADDR);
break;
}
case DSP2ARM1 :
{
*Ptr1 = REG16(MB_DSP2ARM1_REG_ADDR);
*Ptr2 = REG16(MB_DSP2ARM1B_REG_ADDR);
break;
}
case DSP2ARM2 :
{
*Ptr1 = REG16(MB_DSP2ARM2_REG_ADDR);
*Ptr2 = REG16(MB_DSP2ARM2B_REG_ADDR);
break;
}
default:
break;
}
return;
}
//------------------------------------------------------------------------------
// NAME : Mailbox_Clear
// DESCRIPTION : Clear the interrupt send by the DSP :
// - DSP2ARM_INT1B
// - DSP2ARM_INT2B
// PARAMETERS : Mailbox DSP2ARM1 or DSP2ARM2
// RETURN VALUE: None
// LIMITATIONS : None
//------------------------------------------------------------------------------
void Mailbox_Clear(Mailbox_Enum_t Mailbox)
{
switch (Mailbox)
{
case ARM2DSP1 :
REG16(MB_ARM2DSP1_REG_ADDR) = 0x0000;
REG16(MB_ARM2DSP1B_REG_ADDR) = 0x0000;
break;
case ARM2DSP2 :
REG16(MB_ARM2DSP2_REG_ADDR) = 0x0000;
REG16(MB_ARM2DSP2B_REG_ADDR) = 0x0000;
break;
default :
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -