📄 gpio.c
字号:
#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 + -