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

📄 armio16.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 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 1987,(C) Copyright 1997 Texas Instruments.
// All rights reserved.                                                  
//   Filename         : armio.c
//
//   Description      : Set of functions useful to test the HELEN ARMIO
//
//   Project          : Saturn/Dione
//   Modified for Helen
//
//   Author           : pmonteil@tif.ti.com  Patrice Monteil.
//   First modifier   : jp_ulpiano@ti.com
//
//=====================================================================  



#include  "armio16.h"


/*----------------------------------------------------------
   ARMIO_InitIO : Initialize one bit of the ARMIO port
-----------------------------------------------------------*/
void ARMIO_InitIO(char direction, char port)

{  
    UWORD16 armioCntl = * (UWORD16 *) ARMIO_IO_CNTL;

    armioCntl &= ~(1 << port);

    * (UWORD16 *) ARMIO_IO_CNTL = (direction ? (armioCntl | (1 << port)) 
            : armioCntl);
}

/*----------------------------------------------------------
   ARMIO_InitAll : Initialize all ARMIO ports 
-----------------------------------------------------------*/
void ARMIO_InitAll(UWORD16 direction)

{  
    * (UWORD16 *) ARMIO_IO_CNTL = direction;
}  

/*----------------------------------------------------------
   ARMIO_ReadCntl : Read I/O control port of ARMIO
-----------------------------------------------------------*/
UWORD16 ARMIO_ReadCntl(void)

{  
    return(* (UWORD16 *) ARMIO_IO_CNTL);
}  

/*----------------------------------------------------------
   ARMIO_ReadIO : read from one ARMIO port
-----------------------------------------------------------*/
char ARMIO_ReadIO(char port)

{  
    return(((* (UWORD16 *) ARMIO_IN) >> port) & 1);
}  

/*----------------------------------------------------------
   ARMIO_ReadAll : read from all ARMIO ports 
-----------------------------------------------------------*/
UWORD16 ARMIO_ReadAll(void)

{  
    return(* (UWORD16 *) ARMIO_IN);
}  

/*----------------------------------------------------------
   ARMIO_WriteIO : write to one ARMIO port
-----------------------------------------------------------*/
void ARMIO_WriteIO(char data, char port)

{  
    UWORD16 armioOut = * (UWORD16 *) ARMIO_OUT;

    armioOut &= ~(1 << port);

    * (UWORD16 *) ARMIO_OUT = (data ? (armioOut | (1 << port)) 
          : armioOut);
}  

/*----------------------------------------------------------
   ARMIO_WriteAll : write to all ARMIO ports 
-----------------------------------------------------------*/
void ARMIO_WriteAll(UWORD16 data)

{  
    * (UWORD16 *) ARMIO_OUT = data;
}

/*----------------------------------------------------------
   ARMIO_ReadOut : read from ARMIO output ports 
-----------------------------------------------------------*/
UWORD16 ARMIO_ReadOut(void)

{  
    return(* (UWORD16 *) ARMIO_OUT);
}  


/*----------------------------------------------------------
   ARMIO_ReadKbRows : Read the keyboard rows
-----------------------------------------------------------*/
char ARMIO_ReadKbRows(void)

{  
    return((char) (* (UWORD16 *) ARMIO_KBR) & ROWS_MASK);
}  

/*----------------------------------------------------------
   ARMIO_ReadKbRows8X8 : Read the keyboard rows
-----------------------------------------------------------*/
char ARMIO_ReadKbRows8X8(void)

{  
    return((char) (* (UWORD16 *) ARMIO_KBR) & ROWS8_MASK);
}  


/*----------------------------------------------------------
   ARMIO_WriteKbCol : Write to the keyboard columns
-----------------------------------------------------------*/
void ARMIO_WriteKbCol(char data)

{  
    * (UWORD16 *) ARMIO_KBC = (UWORD16) data;
}  

/*----------------------------------------------------------
   ARMIO_ReadKbCol : Read the keyboard columns
-----------------------------------------------------------*/
char ARMIO_ReadKbCol(void)

{
    return((char) (*(UWORD16 *) ARMIO_KBC) & COLUMNS_MASK);
}

/*----------------------------------------------------------
   ARMIO_ENABLE : Enable ARMIO CLK
-----------------------------------------------------------*/
void ARMIO_Enable(void)

{  
    * (UWORD16 *) ARMIO_CNTL |= ARMIO_ENABLE;
}  

/*----------------------------------------------------------
   ARMIO_ReadClk:  Read the ARMIO Clk 
-----------------------------------------------------------*/
char ARMIO_ReadClk(void)

{
    return((char) ((*(UWORD16 *) ARMIO_CNTL) >> 5) & ARMIO_ENABLE);
}


/******************************************************************************

  NAME     : ARMIO_TestResetValue()

  DESCRIPTION  : Test the registers reset value

  RETURN VALUE  : None
  
  PARAMETERS  : None
        
  LIMITATIONS  : None

******************************************************************************/
void ARMIO_TestResetValue(void)
{

  TEST_REGISTER_RESET_VALUE8(ARMIO_IO_CNTL);
  
  TEST_FIELD_RESET_VALUE8(ARMIO_CNTL,ARMIO_FREE);
  TEST_FIELD_RESET_VALUE8(ARMIO_CNTL,ARMIO_SOFT);
  TEST_FIELD_RESET_VALUE8(ARMIO_CNTL,ARMIO_CKEN);

  TEST_FIELD_RESET_VALUE8(ARMIO_KBC,ARMIO_KBC);
  
  TEST_FIELD_RESET_VALUE8(ARMIO_GPIO_EVENT_MODE,SET_GPIO_EVENT_MODE);
  TEST_FIELD_RESET_VALUE8(ARMIO_GPIO_EVENT_MODE,PIN_SELECT);

  TEST_REGISTER_RESET_VALUE8(ARMIO_GPIO_IE);
  TEST_REGISTER_RESET_VALUE8(ARMIO_KBD_IT);
  TEST_REGISTER_RESET_VALUE8(ARMIO_GPIO_IT);
  TEST_REGISTER_RESET_VALUE8(ARMIO_KBD_MASK_IT);
  TEST_REGISTER_RESET_VALUE8(ARMIO_GPIO_MASK_IT);
  TEST_REGISTER_RESET_VALUE8(ARMIO_GPIO_DEBOUNCING);
  TEST_REGISTER_RESET_VALUE8(ARMIO_GPIO_LATCH_REG);
  
  ARE_RESET_VALUES_OK();
}

/******************************************************************************

  NAME     : ARMIO_TestRegistersAccess()

  DESCRIPTION  : Test the registers reset value

  RETURN VALUE  : None
  
  PARAMETERS  : None
        
  LIMITATIONS  : None

******************************************************************************/
void ARMIO_TestRegistersAccess(void)
{

  MODIFY_REGISTER_UNDEFINED16(ARMIO_OUT);
  MODIFY_REGISTER_RESET_VALUE8(ARMIO_IO_CNTL);
  
  MODIFY_FIELD_RESET_VALUE8(ARMIO_CNTL,ARMIO_FREE);
  MODIFY_FIELD_RESET_VALUE8(ARMIO_CNTL,ARMIO_SOFT);
  MODIFY_FIELD_RESET_VALUE8(ARMIO_CNTL,ARMIO_CKEN);

  MODIFY_FIELD_RESET_VALUE8(ARMIO_KBC,ARMIO_KBC);
  
  MODIFY_FIELD_RESET_VALUE8(ARMIO_GPIO_EVENT_MODE,SET_GPIO_EVENT_MODE);
  MODIFY_FIELD_RESET_VALUE8(ARMIO_GPIO_EVENT_MODE,PIN_SELECT);

  MODIFY_REGISTER_RESET_VALUE8(ARMIO_GPIO_IE);
  MODIFY_REGISTER_RESET_VALUE8(ARMIO_KBD_MASK_IT);
  MODIFY_REGISTER_RESET_VALUE8(ARMIO_GPIO_MASK_IT);
  MODIFY_REGISTER_RESET_VALUE8(ARMIO_GPIO_DEBOUNCING);
  
  ARE_RESET_VALUES_OK();
}



/*----------------------------------------------------------
  ARMIO_InitGpioMode  :  Init GPIO interrupt mode routine
-----------------------------------------------------------*/

void ARMIO_InitGpioMode (char enable,char inputpin,char edge)
{
  *(volatile UWORD16 *) ARMIO_GPIO_EVENT_MODE = ((UWORD16)enable | (UWORD16)(inputpin << 1) | (UWORD16)(edge << 5));
}




/*----------------------------------------------------------------------
  ARMIO_WriteGpioDebouncing  :  Write the debouncing value - 500 us to 8 ms
                            by step of 500 us (range : 0000-ffff)
-----------------------------------------------------------------------*/

void ARMIO_WriteGpioDebouncing (char debounce)
{
  *(UWORD16 *)ARMIO_GPIO_DEBOUNCING =(UWORD16)debounce;
}


/*----------------------------------------------------------------------
  ARMIO_ReadGpioLatch  
-----------------------------------------------------------------------*/

UWORD16 ARMIO_ReadGpioLatch (void)
{   
  return(*(volatile UWORD16 *)ARMIO_GPIO_LATCH_REG);
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -