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

📄 omap30_dspmbx_l3.c

📁 有关于USB的一些主机端驱动
💻 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 + -