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

📄 bbu_dd_gpioadl.c

📁 DSP芯片自检测程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/*******************************************************************************
* COPYRIGHT (C)             中国普天研究院									   *
********************************************************************************
* 源文件名: BBU_DD_GpioAdl.c                                                   *
* 功能描述:API Function Description for GPIO in TMS320C6414 and TMS320C6416   *
* 编写者:Wangshiqiang                                                         *
* 版本:1.0.0                                                                  *
* 编制日期:07/14/2004                                                         *
* 说明:                                                                       *
* 修改历史:                                                                   *
*                                                                              *
*******************************************************************************/
#include "BBU_DD_GpioCsl.h"
#include "BBU_DD_Post.h"

/******************************************************************************\
* GPIO Static Global Variable Definitions
\******************************************************************************/
#pragma DATA_SECTION(hCpbGpio,".gvariable");
GPIO_Handle *hCpbGpio;

#pragma DATA_SECTION(led1PinMask,".gvariable");
Uint32  led1PinMask;

#pragma DATA_SECTION(led2PinMask,".gvariable");
Uint32  led2PinMask;

#pragma DATA_SECTION(led3PinMask,".gvariable");
Uint32  led3PinMask;

#pragma DATA_SECTION(led4PinMask,".gvariable");
Uint32  led4PinMask;

#pragma DATA_SECTION(gpioPortHandle,".gvariable");
static GPIO_Handle gpioPortHandle = GPIO_DEVICE_ENTRY;

/* GPIO Device config structures for CPB POST */
#pragma DATA_SECTION(gpioConfig,".gvariable");
static GPIO_Config gpioConfig = { 
                             /*  GPGC        GPEN        GPDIR       GPVAL   */
                              0x00000000, 0x0000FEF8, 0x00001E18, 0x00001E18,
                             /*  GPHM        GPLM        GPPOL               */
                              0x00000000, 0x00000000, 0x00000000};
/*----------------------------------------------------------------------------*/

/******************************************************************************\
* GPIO API function declarations
\******************************************************************************/
CSLAPI void GPIO_resetAll(GPIO_Handle *hGpio);
CSLAPI GPIO_Handle *GPIO_open(void);
CSLAPI void GPIO_config(GPIO_Handle *hGpio, GPIO_Config *config);
CSLAPI void GPIO_getConfig(GPIO_Handle *hGpio, GPIO_Config *config);
CSLAPI void GPIO_close(GPIO_Handle *hGpio);
CSLAPI GPIO_Handle *GPIO_init(void);
CSLAPI Uint32 GPIO_getDspId(GPIO_Handle *hGpio);
CSLAPI void GPIO_setLedOn(GPIO_Handle *hGpio,Uint32 pinMask);
CSLAPI void GPIO_setLedOff(GPIO_Handle *hGpio,Uint32 pinMask);
CSLAPI void GPIO_setDspReady(GPIO_Handle *hGpio,Uint32 val);



/******************************************************************************\
* GPIO API Function Declarations
\******************************************************************************/
/*******************************************************************************
* 函数名称: GPIO_resetAll      				            			           *
* 函数描述: Resets the GPIO Port                                               *
* 相关文档:                                                                    *
* 参数描述:  						                    			           *
* 参数名		     类型		输入/输出 	   描述	       			           *
* -------- 		     ---- 		---------	-----------    			           *
* hGpio         GPIO_Handle*       in		Handle for GPIO Device             *
*                                                                              *
* 返回值: 无									                               *
* 说明:			                         		                           *
*******************************************************************************/
CSLAPI void GPIO_resetAll(GPIO_Handle *hGpio) 
{
Uint32 gie;    
    
    gie = IRQ_globalDisable(); 

    GPIO_RSETH(hGpio,GPGC,GPIO_GPGC_DEFAULT);
    GPIO_RSETH(hGpio,GPDIR,GPIO_GPDIR_DEFAULT);    
    GPIO_RSETH(hGpio,GPPOL,GPIO_GPPOL_DEFAULT);  
    GPIO_RSETH(hGpio,GPHM,GPIO_GPHM_DEFAULT);  
    GPIO_RSETH(hGpio,GPLM,GPIO_GPLM_DEFAULT); 
    GPIO_RSETH(hGpio,GPEN,GPIO_GPEN_DEFAULT);  
    
    GPIO_RSETH(hGpio,GPDH,0xFFFFFFFF);
    GPIO_RSETH(hGpio,GPDL,0xFFFFFFFF);
    
    GPIO_RSETH(hGpio,GPVAL,GPIO_GPVAL_DEFAULT);      

    IRQ_globalRestore(gie);   

}
/*----------------------------------------------------------------------------*/

/*******************************************************************************
* 函数名称: GPIO_open      					       			                   *
* 函数描述: Before a GPIO device can be used, it must first be opened          *
*           by this function.                                                  *
* 相关文档:                                                                    *
* 参数描述: 无   						                   			           *                                           
*                                                                              *
* 返回值: hGpio					    				                           *
* 说明:			                         		                           *
*******************************************************************************/
GPIO_Handle *GPIO_open(void) 
{                      
Uint32 gie;          
GPIO_Handle *hGpio; 
    
    hGpio = GPIO_HINV;
                         
    gie = IRQ_globalDisable();
    if (gpioPortHandle.allocated == FALSE) 
    {
      hGpio = &gpioPortHandle;
      gpioPortHandle.allocated = TRUE;
      
      GPIO_resetAll(hGpio);                                   
    }
    
    IRQ_globalRestore(gie);
    
    return hGpio;
}
/*----------------------------------------------------------------------------*/

/*******************************************************************************
* 函数名称: GPIO_config      					       			               *
* 函数描述: Setup the GPIO using the configuration structure                   *
* 相关文档:                                                                    *
* 参数描述:  						                    			           *
* 参数名		类型		    输入/输出 	    描述	      		           *
* -------- 		---- 		    ---------	    -----------    			       *
* hGpio        	GPIO_Handle*       in		   GPIO Handle for GPIO            *
* config        GPIO_Config*       in          Configuration structure for GPIO*
*                                                                              *
* 返回值: void					    				                           *
* 说明:			                         		                           *
*******************************************************************************/
CSLAPI void GPIO_config(GPIO_Handle *hGpio,GPIO_Config *config) 
{
Uint32 gie;
register int x0,x1,x2,x3,x4,x5,x6;
volatile Uint32 *base = (volatile Uint32 *)(hGpio->baseAddr);
    
    gie = IRQ_globalDisable();
    
    x0 = config->gpgc;
    x1 = config->gpen;
    x2 = config->gpdir;
    x3 = config->gpval;
    x4 = config->gphm;
    x5 = config->gplm;
    x6 = config->gppol;
    
    base[GPIO_GPGC_OFFSET] = x0;
    base[GPIO_GPEN_OFFSET] = x1;  
    base[GPIO_GPDIR_OFFSET]= x2;
    base[GPIO_GPVAL_OFFSET]= x3;
    base[GPIO_GPHM_OFFSET] = x4;
    base[GPIO_GPLM_OFFSET] = x5;
    base[GPIO_GPPOL_OFFSET]= x6;

    IRQ_globalRestore(gie);
}
/*----------------------------------------------------------------------------*/

/*******************************************************************************
* 函数名称: GPIO_getConfig      					       			           *

⌨️ 快捷键说明

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