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

📄 armio32.h

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 H
📖 第 1 页 / 共 2 页
字号:
//=====================================================================  
//      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.h
//
//   Description      : ARM interrupt vectors
//
//   Project          : HELEN
//
//   Author           : pmonteil@ti.com  Patrice Monteil for Saturn
//                      Modified by JP Ulpiano for HELEN
//                                              
//=====================================================================  

#ifndef _ARMIO_H
#define _ARMIO_H


#include "mapping.h"
#include "result.h"
#include "test.h"

#ifdef SET32BITS
  #undef SET32BITS
#endif
#define SET32BITS(ADDR) ((ADDR)<<2)


//========================
//    ARMIO Registers
//========================

//Input register
//==============
#define ARMIO_IN_OFFSET       SET32BITS(0x00)
#define ARMIO_IN              (ARMIO_ADDR + ARMIO_IN_OFFSET)
#define ARMIO_PIN0    0
#define ARMIO_PIN1    1
#define ARMIO_PIN2    2
#define ARMIO_PIN3    3
#define ARMIO_PIN4    4
#define ARMIO_PIN5    5
#define ARMIO_PIN6    6
#define ARMIO_PIN7    7
#define ARMIO_PIN8    8
#define ARMIO_PIN9    9
#define ARMIO_PIN10  10
#define ARMIO_PIN11  11
#define ARMIO_PIN12  12
#define ARMIO_PIN13  13
#define ARMIO_PIN14  14
#define ARMIO_PIN15  15

//Output register
//===============
#define ARMIO_OUT_OFFSET    SET32BITS(0x01)
#define ARMIO_OUT           (ARMIO_ADDR + ARMIO_OUT_OFFSET)
#define ARMIO_OUT_SET_VAL   0xFFFF

#define ARMIO_HIGH         1
#define ARMIO_LOW          0

//Input/Output Control register
//=============================
#define ARMIO_IO_CNTL_OFFSET    SET32BITS(0x02)
#define ARMIO_IO_CNTL           (ARMIO_ADDR + ARMIO_IO_CNTL_OFFSET)
#define ARMIO_IO_CNTL_RES_VAL   0xFFFF
#define ARMIO_INPUT             1
#define ARMIO_OUTPUT            0

//ArmIO Control register
//======================
#define ARMIO_CNTL_OFFSET    SET32BITS(0x03)
#define ARMIO_CNTL           (ARMIO_ADDR + ARMIO_CNTL_OFFSET)

#define ARMIO_FREE_POS      0x02
#define ARMIO_SOFT_POS      0x03
#define ARMIO_CKEN_POS      0x05

#define ARMIO_FREE_NUMB     1
#define ARMIO_SOFT_NUMB     1
#define ARMIO_CKEN_NUMB     1

#define ARMIO_FREE_RES_VAL  0x0
#define ARMIO_SOFT_RES_VAL  0x0
#define ARMIO_CKEN_RES_VAL  0x0


#define ARMIO_CKEN        1
#define ARMIO_CKDIS       0
#define ARMIO_ENABLE        0x20
#define ARMIO_ALL_INPUT      0xffff 
#define ARMIO_ALL_OUTPUT    0x0000  

//Keyboard Row Register
//=====================
#define ARMIO_KBR_OFFSET   SET32BITS(0x04)
#define ARMIO_KBR         (ARMIO_ADDR + ARMIO_KBR_OFFSET)

#define ROWS_MASK     0x1f    
#define ROWS8_MASK     0xff    

//Keyboard Column Register
//========================
#define ARMIO_KBC_OFFSET    SET32BITS(0x05)
#define ARMIO_KBC           (ARMIO_ADDR + ARMIO_KBC_OFFSET)
#define ARMIO_KBC_POS       0
#define ARMIO_KBC_NUMB      5
#define ARMIO_KBC_RES_VAL   0x0

#define COLUMNS_MASK        0x3f    
#define COLUMNS8_MASK        0xff    

//GPIO event mode register
//========================
#define ARMIO_GPIO_EVENT_MODE_OFFSET    SET32BITS(0x06)
#define ARMIO_GPIO_EVENT_MODE           (ARMIO_ADDR + ARMIO_GPIO_EVENT_MODE_OFFSET)

#define SET_GPIO_EVENT_MODE_POS         0x0
#define SET_GPIO_EVENT_MODE_NUMB        1
#define SET_GPIO_EVENT_MODE_RES_VAL     0x0

#define PIN_SELECT_POS                  0x1
#define PIN_SELECT_MASK                 0xF
#define PIN_SELECT_NUMB                 4
#define PIN_SELECT_RES_VAL              0x0

#define ARMIO_DISEVT                    0
#define ARMIO_ENEVT                     1



//GPIO interrupt edge
//===================
#define ARMIO_GPIO_IE_OFFSET            SET32BITS(0x07)
#define ARMIO_GPIO_IE                   (ARMIO_ADDR+ARMIO_GPIO_IE_OFFSET)
#define ARMIO_GPIO_IE_RES_VAL           0x0000

#define ARMIO_FALLING_EDGE              0
#define ARMIO_RISING_EDGE               1


//Kbd Interrupt register
//======================
#define ARMIO_KBD_IT_OFFSET             SET32BITS(0x08)
#define ARMIO_KBD_IT                    (ARMIO_ADDR + ARMIO_KBD_IT_OFFSET)

#define ARMIO_KBD_IT_POS                0x0
#define ARMIO_KBD_IT_NUMB               0x1
#define ARMIO_KBD_IT_RES_VAL            0x1

#define ARMIO_KBD_IT_OCCURED            0x1
#define ARMIO_KBD_NO_IT_OCCURED         0x0

//GPIO Interrupt register
//=======================
#define ARMIO_GPIO_IT_OFFSET            SET32BITS(0x09)
#define ARMIO_GPIO_IT                   (ARMIO_ADDR + ARMIO_GPIO_IT_OFFSET)
#define ARMIO_GPIO_IT_RES_VAL           0x0000

#define ARMIO_GPIO_IT_OCCURED           0x1
#define ARMIO_GPIO_NO_IT_OCCURED        0x0

//Kbd Mask Interrupt register
//===========================
#define ARMIO_KBD_MASK_IT_OFFSET        SET32BITS(0x0A)
#define ARMIO_KBD_MASK_IT               (ARMIO_ADDR + ARMIO_KBD_MASK_IT_OFFSET)

#define ARMIO_KBD_MASK_IT_POS           0x0
#define ARMIO_KBD_MASK_IT_NUMB          0x1
#define ARMIO_KBD_MASK_IT_RES_VAL       0x0

#define ARMIO_ENABLE_IT                 0
#define ARMIO_DISABLE_IT                1

//GPIO Mask Interrupt register
//===========================
#define ARMIO_GPIO_MASK_IT_OFFSET        SET32BITS(0x0B)
#define ARMIO_GPIO_MASK_IT               (ARMIO_ADDR + ARMIO_GPIO_MASK_IT_OFFSET)
#define ARMIO_GPIO_MASK_IT_RES_VAL       0x0000

#define ARMIO_GPIO_ENABLE_ALL_IT     0x00
#define ARMIO_GPIO_DISABLE_ALL_IT    0xFF

//GPIO Debouncing Register
//========================
#define ARMIO_GPIO_DEBOUNCING_OFFSET     SET32BITS(0x0C)
#define ARMIO_GPIO_DEBOUNCING            (ARMIO_ADDR + ARMIO_GPIO_DEBOUNCING_OFFSET)

#define ARMIO_GPIO_DEBOUNCING_POS        0x0
#define ARMIO_GPIO_DEBOUNCING_NUMB       0x4
#define ARMIO_GPIO_DEBOUNCING_RES_VAL    0x0

//GPIO latch Register
//===================
#define ARMIO_GPIO_LATCH_REG_OFFSET      SET32BITS(0x0D)
#define ARMIO_GPIO_LATCH_REG             (ARMIO_ADDR + ARMIO_GPIO_LATCH_REG_OFFSET)
#define ARMIO_GPIO_LATCH_REG1            (ARMIO_ADDR + ARMIO_GPIO_LATCH_REG_OFFSET)
#define ARMIO_GPIO_LATCH_REG2            (ARMIO_ADDR + ARMIO_GPIO_LATCH_REG_OFFSET)
#define ARMIO_GPIO_LATCH_REG1_POS         0x0        
#define ARMIO_GPIO_LATCH_REG2_POS         0x8        
#define ARMIO_GPIO_LATCH_REG1_NUMB        0x7
#define ARMIO_GPIO_LATCH_REG2_NUMB        0x8
#define ARMIO_GPIO_LATCH_REG1_RES_VAL     0x0
#define ARMIO_GPIO_LATCH_REG2_RES_VAL     0x0


// Alias only used by TEST_ARMIO_GPIO
//-----------------------------------------------------
#define time_2ms 2000
#define time_4ms 4000

#define DEB_0US 0
#define DEB_500US 1
#define DEB_1MS 2
#define DEB_2MS 4
#define DEB_4MS 8

#define FALLING_EDGE 0
#define RISING_EDGE 1
//-----------------------------------------------------

#define ARMIO_SET_BIT(Registre,Data,Bit) \
                             (Registre)=((Data)==0 ? (Registre)&(~(1<<(Bit))):(Registre)|(1<<(Bit)))
#define ARMIO_GET_BIT(Registre,Bit) (  ( (Registre)& (1<<(Bit)) )>>(Bit)  )

//=================================================================================

//  All the followings are macro. They were used as they are faster than functions

//=================================================================================


//-------------------------------------------------------------------
// NAME        : ARMIO_GET_GPIO_ALL
// DESCRIPTION : Returns the 16 bits of the GPIO of the ARMIO
// PARAMETERS  : None
// RETURN VALUE: Returns the 16 bits of the GPIO of the ARMIO
// LIMITATIONS : None
//-------------------------------------------------------------------
#define ARMIO_GET_GPIO_ALL()            REG16(ARMIO_IN)

//-------------------------------------------------------------------
// NAME        : ARMIO_GET_GPIO_BIT
// DESCRIPTION : Returns one of the 16 input bit
// PARAMETERS  : The pin of the bit
// RETURN VALUE: Returns one of the 16 input bit
// LIMITATIONS : None
//-------------------------------------------------------------------
#define ARMIO_GET_GPIO_BIT(Bit)         ARMIO_GET_BIT(REG16(ARMIO_IN),Bit)

//-------------------------------------------------------------------
// NAME        : ARMIO_SET_GPIO_ALL
// DESCRIPTION : Sets all the out bits
// PARAMETERS  : The value of all the pins
// RETURN VALUE: None
// LIMITATIONS : None
//-------------------------------------------------------------------
#define ARMIO_SET_GPIO_ALL(Data)        REG16(ARMIO_OUT)=Data
//-------------------------------------------------------------------
// NAME        : ARMIO_SET_GPIO_BIT
// DESCRIPTION : Set one of the output bit
// PARAMETERS  : Data: The value of the bit ARMIO_HIGH / ARMIO_LOW
//               and Bit the pin number
// RETURN VALUE: None
// LIMITATIONS : None
//-------------------------------------------------------------------
#define ARMIO_SET_GPIO_BIT(Data,Bit)    ARMIO_SET_BIT(REG16(ARMIO_OUT),Data,Bit)

//-------------------------------------------------------------------
// NAME        : ARMIO_GET_BIT_IO_CNTL
// DESCRIPTION : Get one of the configuration (I/O) bit
// PARAMETERS  : Bit : Pin number
// RETURN VALUE: One of the configuration (I/O) bit
// LIMITATIONS : None
//-------------------------------------------------------------------
#define ARMIO_GET_BIT_IO_CNTL(Bit)      ARMIO_GET_BIT(REG16(ARMIO_IO_CNTL),Bit)

//-------------------------------------------------------------------
// NAME        : ARMIO_SET_BIT_IO_CNTL
// DESCRIPTION : Set one of the configuration (I/O) bit
// PARAMETERS  : Dir : ARMIO_INPUT / ARMIO_OUTPUT, Bit : Pin number
// RETURN VALUE: None
// LIMITATIONS : None
//-------------------------------------------------------------------
#define ARMIO_SET_BIT_IO_CNTL(Dir,Bit)  ARMIO_SET_BIT(REG16(ARMIO_IO_CNTL),Dir,Bit)

//-------------------------------------------------------------------
// NAME        : ARMIO_GET_ALL_IO_CNTL
// DESCRIPTION : Get all the configuation (I/O) bit
// PARAMETERS  : None
// RETURN VALUE: All the configuation (I/O) bit
// LIMITATIONS : None
//-------------------------------------------------------------------
#define ARMIO_GET_ALL_IO_CNTL()         REG16(ARMIO_IO_CNTL)

//-------------------------------------------------------------------
// NAME        : ARMIO_SET_ALL_IO_CNTL
// DESCRIPTION : Set all the configuation (I/O) bit
// PARAMETERS  : Dir : a 16 bits value that represents the configuration
// RETURN VALUE: None
// LIMITATIONS : None

⌨️ 快捷键说明

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