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

📄 gpio.c

📁 8032底层驱动部分。因为可以移植 所以单独来拿出来
💻 C
📖 第 1 页 / 共 2 页
字号:
	#if defined(MT6219)   
	else if (port < 54)
	   return((DRV_Reg(GPIO_DIN4) >> (port-48)) & 1);
	#endif
#endif
#if ((defined(MT6228))|| defined(MT6229) || defined(MT6230))|| (defined(MT6226))|| (defined(MT6227))||defined(MT6226M)    	   	
   kal_uint16 no;
   kal_uint16 remainder;
   kal_uint16 data;   
   #ifdef __CUST_NEW__
   if (gpio_debug_enable == KAL_TRUE)
   {
      ASSERT(port & GPIO_MAGIC_NUM);
   }
   port &= (~GPIO_MAGIC_NUM);
   if (gpio_debug_enable == KAL_TRUE)
   {
   #if (defined(MT6228) || defined(MT6229) || defined(MT6230))
      if(((port > 25)&&(port < 32)) || 
         ((port > 43)&&(port < 48)) || 
         ((port > 53)&&(port < 63)) || 
         ((port > 67)&&(port < 75)))
      {
         ASSERT(GPIO_ReturnMode(port) == 1);
      }
      else
   #endif /* (defined(MT6228))*/
      {
         ASSERT(GPIO_ReturnMode(port) == 0);
      }
      ASSERT(GPIO_ReturnDir(port) == 0);
   }
   port &= (~GPIO_MAGIC_NUM);
   #endif /* __CUST_NEW__ */
   no = port/16;
   remainder = port % 16;
         		
   data=DRV_Reg(GPIO_DIN(no));   
   data=data&(1 << remainder);
   data=(data >> remainder);
   return (kal_uint8)data;
   
#endif   /*MT6218, MT6218B, MT6219, MT6217*/
}

/*
* FUNCTION                                                            
*	GPIO_WriteIO
*
* DESCRIPTION                                                           
*   	This function is to write data to one GPIO port
*
* CALLS  
*	Write data to one GPIO port
*
* PARAMETERS
*	data: KAL_TRUE(1) or KAL_FALSE(0)
*	port: gpio pin number
*	
* RETURNS
*	None
*
* GLOBALS AFFECTED
*   external_global        
*/
void GPIO_WriteIO(char data, char port)
{
#ifdef MT6205
	if (data == 1)
	{
	   if (port < 16)
		   DRV_Reg(GPIO_DOUT) |= (1 << port);
		else
		   DRV_Reg(GPIO_DOUT2) |= (1 << (port-16));
	}
	else
	{
	   if (port < 16)
		   DRV_Reg(GPIO_DOUT) &= ~(1 << port);
		else
		   DRV_Reg(GPIO_DOUT2) &= ~(1 << (port-16));
	}
#endif /*(MT6205)*/

#ifdef MT6205B
   #ifdef __CUST_NEW__
   if (gpio_debug_enable == KAL_TRUE)
   {
      ASSERT(port & GPIO_MAGIC_NUM);
   }
   port &= (~GPIO_MAGIC_NUM);
   if (gpio_debug_enable == KAL_TRUE)
   {
      ASSERT(GPIO_ReturnMode(port) == 0);
      ASSERT(GPIO_ReturnDir(port) == 1);
   }
   #endif /* __CUST_NEW__ */
	if (data == 1)
	{
	   if (port < 16)
	      DRV_WriteReg(GPIO_DOUT_SET,(1 << port));
		else
		   DRV_WriteReg(GPIO_DOUT2_SET,(1 << (port-16)));
	}
	else
	{
	   if (port < 16)
	      DRV_WriteReg(GPIO_DOUT_CLR,(1 << port));
		else
		   DRV_WriteReg(GPIO_DOUT2_CLR,(1 << (port-16)));
	}
#endif   /*MT6205B*/

#if ( (defined(MT6208)) || (defined(FPGA)) )
	if (data == 1)
	{
		DRV_Reg(GPIO_DOUT) |= (1 << port);
	}
	else
	{
		DRV_Reg(GPIO_DOUT) &= ~(1 << port);
	}
#endif   /*(MT6208,FPGA)*/

#if ( (defined(MT6218)) || (defined(MT6218B))|| (defined(MT6219))|| (defined(MT6217))|| (defined(MT6228))|| defined(MT6229) || defined(MT6230)|| (defined(MT6226))|| (defined(MT6227))||defined(MT6226M) )
   kal_uint16 no;
   kal_uint16 remainder;
      
   #ifdef __CUST_NEW__
   if (gpio_debug_enable == KAL_TRUE)
   {
      ASSERT(port & GPIO_MAGIC_NUM);
   }
   port &= (~GPIO_MAGIC_NUM);
   if (gpio_debug_enable == KAL_TRUE)
   {
   #if (defined(MT6228) || defined(MT6229) || defined(MT6230))
      if(((port > 25)&&(port < 32)) || 
         ((port > 43)&&(port < 48)) || 
         ((port > 53)&&(port < 63)) || 
         ((port > 67)&&(port < 75)))
      {
         ASSERT(GPIO_ReturnMode(port) == 1);
      }
      else
   #endif /* (defined(MT6228))*/
      {
         ASSERT(GPIO_ReturnMode(port) == 0);
      }
      ASSERT(GPIO_ReturnDir(port) == 1);
   }
   #endif /* __CUST_NEW__ */
   no = port/16;
   remainder = port % 16;
   if (data == 1)
      DRV_WriteReg(GPIO_DOUT_SET(no),(1 << remainder));
	else
      DRV_WriteReg(GPIO_DOUT_CLR(no),(1 << remainder));
#endif   /*MT6218, MT6218B, MT6219, MT6217, MT6228, MT6229*/
}

/*
* FUNCTION                                                            
*	GPI_O_ReadIO
*
* DESCRIPTION                                                           
*   	This function is to read data from one GPI pin
*
* CALLS  
*	Read data from one GPI pin
*
* PARAMETERS
*	None
*	
* RETURNS
*	1 or 0
*
* GLOBALS AFFECTED
*   external_global
*/
#if ( (defined(MT6208)) || (defined(FPGA)) )
char GPI_ReadIO(void)
{
	return((DRV_Reg(GPI_O_DIO) >> 15) & 1);
}
#endif   /*!(MT6208,FPGA)*/
/*
* FUNCTION                                                            
*	GPI_O_WriteIO
*
* DESCRIPTION                                                           
*   	This function is to write data to one GPO pin
*
* CALLS  
*	Write data to one GPO pin
*
* PARAMETERS
*	data: KAL_TRUE(1) or KAL_FALSE(0)
*	port: gpo pin number
*	
* RETURNS
*	None
*
* GLOBALS AFFECTED
*   external_global
*/

void GPO_WriteIO(char data,char port)
{
#ifdef MT6205
	if (data == 1)
	{
		DRV_Reg(GPO_DOUT) |= (1 << port);
	}
	else
	{
		DRV_Reg(GPO_DOUT) &= ~(1 << port);
	}
#endif   /*(MT6205)*/

#ifdef MT6205B
   #ifdef __CUST_NEW__
   if (gpio_debug_enable == KAL_TRUE)
   {
      ASSERT(port & GPO_MAGIC_NUM);
   }
   port &= (~GPO_MAGIC_NUM);
   if (gpio_debug_enable == KAL_TRUE)
   {
      ASSERT(GPO_ReturnMode(port)== 0);
   }
   #endif /* __CUST_NEW__ */
	if (data == 1)
	{
	   DRV_WriteReg(GPO_DOUT_SET,(1 << port));
	}
	else
	{
	   DRV_WriteReg(GPO_DOUT_CLR,(1 << port));
	}
#endif   /*MT6205B*/

#if( (defined(MT6218)) || (defined(MT6218B))|| (defined(MT6219))|| (defined(MT6217))|| (defined(MT6228))|| defined(MT6229) || defined(MT6230)|| (defined(MT6226))|| (defined(MT6227))||defined(MT6226M) )
   #ifdef __CUST_NEW__
   if (gpio_debug_enable == KAL_TRUE)
   {
      ASSERT(port & GPO_MAGIC_NUM);
   }
   port &= (~GPO_MAGIC_NUM);
   if (gpio_debug_enable == KAL_TRUE)
   {
      ASSERT(GPO_ReturnMode(port)== 0);
   }
   #endif /* __CUST_NEW__ */
	if (data == 1)
	{
	   DRV_WriteReg(GPO_DOUT_SET,(1 << port));
	}
	else
	{
	   DRV_WriteReg(GPO_DOUT_CLR,(1 << port));
	}
#endif   /*MT6218, MT6218B, MT6219, MT6217, MT6228, MT6229*/

#if ( (defined(MT6208)) || (defined(FPGA)) )
	if (data == 1)
	{
		DRV_Reg(GPI_O_DIO) |= (1 << port);
	}
	else
	{
		DRV_Reg(GPI_O_DIO) &= ~(1 << port);
	}
#endif   /*(MT6208,FPGA)*/
}

/*
* FUNCTION                                                            
*	GPI_O_WriteAll
*
* DESCRIPTION                                                           
*   	This function is to write data to all GPO pins
*
* CALLS  
*	Write data to all GPO pins
*
* PARAMETERS
*	write_data: expected GPO data to all pins
*	
* RETURNS
*	None
*
* GLOBALS AFFECTED
*   external_global
*/
void GPO_WriteAll(kal_uint16 write_data)
{
#if ( (defined(MT6205)) || (defined(MT6205B)) )
   DRV_WriteReg(GPO_DOUT,write_data);
#endif   /*(MT6205,MT6205B)*/
#if ( (defined(MT6218)) || (defined(MT6218B))|| (defined(MT6219))|| (defined(MT6217))|| (defined(MT6228))|| defined(MT6229) || defined(MT6230)|| (defined(MT6226))|| (defined(MT6227))||defined(MT6226M) )
   DRV_WriteReg(GPO_DOUT,write_data);
#endif   /*(MT6218, MT6218B, MT6219, MT6217, MT6228, MT6229)*/
#if ( (defined(MT6208)) || (defined(FPGA)) )
   DRV_WriteReg(GPI_O_DIO,write_data);
#endif   /*(MT6208,FPGA)*/
}

/*
* FUNCTION                                                            
*	GPIO_ReturnDout
*
* DESCRIPTION                                                           
*   	This function is to report GPIO output value
*
* CALLS  
*	Report GPIO output value accoding to input pin
*
* PARAMETERS
*	GPIO pin 
*	
* RETURNS
*	GPIO output value
*
* GLOBALS AFFECTED
*   external_global
*/
char GPIO_ReturnDout(char port)
{
   kal_uint16 no;
   kal_uint16 remainder;
   kal_uint16 data;   
   #ifdef __CUST_NEW__
   port &= (~GPIO_MAGIC_NUM);
   #endif /* __CUST_NEW__ */
   no = port/16;
   remainder = port % 16;

#if ( (defined(MT6205)) || (defined(MT6205B)) )
   if(0==no)
      data=DRV_Reg(GPIO_DOUT); 
   else if(1==no)
      data=DRV_Reg(GPIO_DOUT2); 
#endif

#if ( (defined(MT6208)) || (defined(FPGA)) )
   data=DRV_Reg(GPIO_DOUT); 	
#endif

#if ( (defined(MT6218)) || (defined(MT6218B)) || (defined(MT6219))|| (defined(MT6217))|| (defined(MT6228))|| defined(MT6229) || defined(MT6230)|| (defined(MT6226))|| (defined(MT6227))||defined(MT6226M) )
   data=DRV_Reg(GPIO_DOUT(no)); 
#endif   
   
   data=data&(1 << remainder);
   data=(data >> remainder);
   return (kal_uint8)data;
}
/*
* FUNCTION                                                            
*	GPO_ReturnDout
*
* DESCRIPTION                                                           
*   	This function is to report GPO output value
*
* CALLS  
*	Report GPO output value accoding to input pin
*
* PARAMETERS
*	GPO pin 
*	
* RETURNS
*	GPO output value
*
* GLOBALS AFFECTED
*   external_global
*/
char GPO_ReturnDout(char port)
{
   kal_uint16 no;
   kal_uint16 remainder;
   kal_uint16 data;   
   #ifdef __CUST_NEW__
   port &= (~GPO_MAGIC_NUM);
   #endif /* __CUST_NEW__ */
   no = port/16;
   remainder = port % 16;


#if ( (defined(MT6208)) || (defined(FPGA)) )
   data=DRV_Reg(GPI_O_DIO); 	
#endif

#if ( (defined(MT6205)) || (defined(MT6205B))||(defined(MT6218)) || (defined(MT6218B)) || (defined(MT6219))|| (defined(MT6217))|| (defined(MT6228))|| defined(MT6229) || defined(MT6230)|| (defined(MT6226))|| (defined(MT6227))||defined(MT6226M) )
   data=DRV_Reg(GPO_DOUT); 
#endif   
   
   data=data&(1 << remainder);
   data=(data >> remainder);
   return (kal_uint8)data;
}
/*
* FUNCTION                                                            
*	GPIO_ReturnDir
*
* DESCRIPTION                                                           
*   	This function is to report GPIO direction value
*
* CALLS  
*	Report GPIO direction value accoding to input pin
*
* PARAMETERS
*	GPIO pin 
*	
* RETURNS
*	GPIO direction value
*
* GLOBALS AFFECTED
*   external_global
*/
char GPIO_ReturnDir(char port)
{
	
   kal_uint16 no;
   kal_uint16 remainder;
   kal_uint16 data;   
   #ifdef __CUST_NEW__
   port &= (~GPIO_MAGIC_NUM);
   #endif /* __CUST_NEW__ */
   no = port/16;
   remainder = port % 16;
#if ( (defined(MT6205)) || (defined(MT6205B)) )
   if(0==no)
      data=DRV_Reg(GPIO_DIR); 
   else if(1==no)
      data=DRV_Reg(GPIO_DIR2); 
#endif
#if ( (defined(MT6208)) || (defined(FPGA)) )
   data=DRV_Reg(GPIO_DIR); 	
#endif
#if ( (defined(MT6218)) || (defined(MT6218B)) || (defined(MT6219))|| (defined(MT6217))|| (defined(MT6228))|| defined(MT6229) || defined(MT6230)|| (defined(MT6226))|| (defined(MT6227))||defined(MT6226M) )
   data=DRV_Reg(GPIO_DIR(no)); 
#endif   
   
   data=data&(1 << remainder);
   data=(data >> remainder);
   return (kal_uint8)data;

}
/*
* FUNCTION                                                            
*	GPIO_ReturnMode
*
* DESCRIPTION                                                           
*   	This function is to report GPIO mode value
*
* CALLS  
*	Report GPIO mode value accoding to input pin
*
* PARAMETERS
*	GPIO pin 
*	
* RETURNS
*	GPIO mode value
*
* GLOBALS AFFECTED
*   external_global
*/
char GPIO_ReturnMode(char port)
{
   kal_uint16 no;
   kal_uint16 remainder;
   kal_uint32 data;   
   #ifdef __CUST_NEW__
      port &= (~GPIO_MAGIC_NUM);
   #endif /* __CUST_NEW__ */
   no = port/8;
   remainder = port % 8;
   
 
   data=DRV_Reg(GPIO_MODE(no)); 
   data=data&(0x3 << (2*remainder));
   data=(data >> (2*remainder));
   return (kal_uint8)data;
   
}

/*
* FUNCTION                                                            
*	GPO_ReturnMode
*
* DESCRIPTION                                                           
*   	This function is to report GPO mode value
*
* CALLS  
*	Report GPO mode value accoding to input pin
*
* PARAMETERS
*	GPO pin 
*	
* RETURNS
*	GPO mode value
*
* GLOBALS AFFECTED
*   external_global
*/
char GPO_ReturnMode(char port)
{
   kal_uint16 no;
   kal_uint16 remainder;
   kal_uint32 data;   
   #ifdef __CUST_NEW__
      port &= (~GPO_MAGIC_NUM);
   #endif /* __CUST_NEW__ */
   no = port/8;
   remainder = port % 8;

#if ( (defined(MT6208)) || (defined(FPGA)))
    data=DRV_Reg(GPIO_MODE2); 
#endif      
#if ( (defined(MT6205)) || (defined(MT6205B)) )
    data=DRV_Reg(GPIO_MODE4); 
#endif   
#if ( (defined(MT6218)) || (defined(MT6218B)) || (defined(MT6219))|| (defined(MT6217))|| (defined(MT6228))|| defined(MT6229) || defined(MT6230)|| (defined(MT6226))|| (defined(MT6227))||defined(MT6226M) )
   data=DRV_Reg(GPO_MODE); 
#endif   
   data=data&(0x3 << (2*remainder));
   data=(data >> (2*remainder));
   return (kal_uint8)data;
   
}   






#ifdef IC_MODULE_TEST
#ifdef __CUST_NEW__
extern const char gpio_ic_module_ready_bot_pin;
extern const char gpio_ic_module_ready_eot_pin;
extern const char gpio_ic_module_ready_bin_pin;
#else  /* __CUST_NEW__ */
   #define IC_MODULE_Ready_BOT   13
   #define IC_MODULE_Ready_EOT   14
   #define IC_MODULE_Ready_BIN   15
#endif /* __CUST_NEW__ */
   kal_uint8 IC_MODULE_GPT_Handle;
   void IC_MODULE_Calback(void *parameter)
   {
    #ifdef __CUST_NEW__
   	GPIO_WriteIO(1,gpio_ic_module_ready_eot_pin);
    #else  /* __CUST_NEW__ */
   	GPIO_WriteIO(1,IC_MODULE_Ready_EOT);
    #endif /* __CUST_NEW__ */
   }

   void IC_ModuleTest_Start(void)
   {
      #ifdef MT6205B
         #ifdef __CUST_NEW__
         GPIO_WriteIO(0,gpio_ic_module_ready_bin_pin);
         GPIO_WriteIO(1,gpio_ic_module_ready_eot_pin);
         GPIO_WriteIO(1,gpio_ic_module_ready_bot_pin);
         #else  /* __CUST_NEW__ */
         GPIO_WriteIO(0,IC_MODULE_Ready_BIN);
         GPIO_WriteIO(1,IC_MODULE_Ready_EOT);
         GPIO_WriteIO(1,IC_MODULE_Ready_BOT);
         #endif /* __CUST_NEW__ */
         GPTI_GetHandle(&IC_MODULE_GPT_Handle);
      #endif
   }
   
   void IC_ModuleTest_End(kal_bool status)
   {
      #ifdef MT6205B
      #ifdef __CUST_NEW__
         GPIO_WriteIO(1,gpio_ic_module_ready_bot_pin);
         if (status)
            GPIO_WriteIO(1,gpio_ic_module_ready_bin_pin);
         else
            GPIO_WriteIO(0,gpio_ic_module_ready_bin_pin);

         GPIO_WriteIO(0,gpio_ic_module_ready_eot_pin);
      #else  /* __CUST_NEW__ */
         GPIO_WriteIO(1,IC_MODULE_Ready_BOT);
         if (status)
            GPIO_WriteIO(1,IC_MODULE_Ready_BIN);
         else
            GPIO_WriteIO(0,IC_MODULE_Ready_BIN);
         
         GPIO_WriteIO(0,IC_MODULE_Ready_EOT);
     # endif /* __CUST_NEW__ */
         
         GPTI_StartItem(IC_MODULE_GPT_Handle,
                        3,
                        IC_MODULE_Calback,
                        NULL);
      #endif
   }
#endif   /*IC_MODULE_TEST*/

⌨️ 快捷键说明

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