📄 msgpio.c
字号:
}
}
/******************************************************************************/
///GPIO initialize
/******************************************************************************/
void msGPIO_Init()
{
MDrv_Scaler_SetPanelVCC(DISABLE);
Power_On();
XBYTE[PWM0_PWM1_CTRL] = 0x00; // duble_bufer=0, pwm0/1:disable, polar=0,clk=osc ( 1:clk=osc/4)
XBYTE[PWM2_PWM3_CTRL] = 0x00; // duble_bufer=0, pwm0/1:disable, polar=0,clk=osc
msPWM0_Period( PWM0_PERIOD ); //0x7f00 );
msPWM1_Period( PWM1_PERIOD ); //0x7f00 );
msPWM2_Period( PWM2_PERIOD ); //0x0000 );
msPWM3_Period( PWM3_PERIOD ); //0x0000 );
msPWMD0_DutyCycle( INIT_PWM0_DUTY );
msPWMD1_DutyCycle( INIT_PWM1_DUTY );
msPWMD2_DutyCycle( INIT_PWM2_DUTY );
msPWMD3_DutyCycle( INIT_PWM3_DUTY );
msPWM0_Setting( PWM0_SELECT ); // PWM0
msPWM1_Setting( PWM1_SELECT ); // PWM1
msPWM2_Setting( PWM2_SELECT ); // PWM2
msPWM3_Setting( PWM3_SELECT ); // PWM3
//msPWM_OutputEnable( (PWM0_ENABLE | PWM1_ENABLE | PWM2_ENABLE | PWM3_ENABLE) );
SetPanelBacklight(BACKLITE_INIT_SETTING); //DISABLE);
//CUS03 No Use
//===============================
Switch_YPbPr1();
#if (FLASH_WP_PIN_CONTROL == ENABLE)
Flash_Write_Protect_Disable(); //wp pin has no connect in Saturn2 demo circuit
#endif
#if (EEPROM_WP_PIN_CONTROL == ENABLE)
EEPROM_Write_Protect_Disable(); //wp pin has no connect in Saturn2 demo circuit
#endif
Panel_VG_HL_CTL_ON();
Tuner_ON();
Demodulator_ON();
//===============================
//printf("\r\n *** Init GPIO done ***"); // kevin test
}
BOOLEAN msGPIO_IsBackLightOn(void)
{
if(stSystemInfo.u8PanelPowerStatus & PANEL_POWER_LIGHT_ON)
return TRUE;
else
return FALSE;
}
void msGPIO_AuSetPowerOnOff(BOOLEAN bOnOff)
{
if(bOnOff == FALSE )
{
/*#if ( MS_BOARD_TYPE_SEL == BD_CUS1X_03)
Audio_Amplifier_Stb();
MDrv_Timer_Delayms(50);
Audio_Lineut_OFF();
Audio_Lineout_Stb();
#endif*/ // kevin 071023_3
}
}
//---------------------------------------------------------------------
// Pin Number should be 0~7
#define CONVERTPIN(Pin) (\
(Pin == 0) ? (BIT0) :\
(Pin == 1) ? (BIT1) :\
(Pin == 2) ? (BIT2) :\
(Pin == 3) ? (BIT3) :\
(Pin == 4) ? (BIT4) :\
(Pin == 5) ? (BIT5) :\
(Pin == 6) ? (BIT6) :(BIT7)\
)
typedef enum _CovertGPIOREGType
{
REGGPIO34 = _BIT10,
REGGPIO35 = _BIT11,
REGGPIO36 = _BIT8,
REGGPIO37 = _BIT9,
REGGPIO38 = _BIT6,
REGGPIO39 = _BIT7,
REGGPIO40 = _BIT4,
REGGPIO41 = _BIT5,
REGGPIO42 = _BIT0,
REGGPIO43 = _BIT1,
REGGPIO44 = _BIT2,
REGGPIO45 = _BIT3
}CovertGPIOREGType;
//---------------------------------------------------------------------
void GPIOWrite(BYTE Pin, BYTE Level)
{
BYTE PinPos;
PinPos = CONVERTPIN(Pin%8);
if (Level)
{
if (Pin < 8)
{
XBYTE[REG_MUX_DTCON_GPIO_SEL] |= PinPos;// to force it as GPO (It's not necessary to set if it already init)
XBYTE[REG_MUX_TOP0_GPIO] |= PinPos;
}
else if (Pin < 16)
XBYTE[REG_MUX_TOP1_GPIO] |= PinPos;
else if (Pin < 24)
XBYTE[REG_MUX_TOP2_GPIO] |= PinPos;
else if (Pin < 32)
XBYTE[REG_MUX_TOP3_GPIO] |= PinPos;
else if (Pin < 34)
XBYTE[REG_MUX_TOP4_GPIO] |= PinPos;
else if (Pin >= 48 && Pin <= 51)
XBYTE[0x3A21] |= PinPos;
else if (Pin == 52)
XBYTE[REG_MUX_TOP6_GPIO] |= BIT2;
else if (Pin == 53)
XBYTE[REG_MUX_TOP6_GPIO] |= BIT0;
else
{
if (Pin >= 34 && Pin <= 37)
{
if (Pin == 34)
XBYTE[0x309F] |= (REGGPIO34>>8);
else if (Pin == 35)
XBYTE[0x309F] |= (REGGPIO35>>8);
else if (Pin == 36)
XBYTE[0x309F] |= (REGGPIO36>>8);
else
XBYTE[0x309F] |= (REGGPIO37>>8);
}
else if (Pin >= 38 && Pin <= 45)
{
if (Pin == 38)
XBYTE[0x309F] |= REGGPIO38;
else if (Pin == 39)
XBYTE[0x309F] |= REGGPIO39;
else if (Pin == 40)
XBYTE[0x309F] |= REGGPIO40;
else if (Pin == 41)
XBYTE[0x309F] |= REGGPIO41;
else if (Pin == 42)
XBYTE[0x309F] |= REGGPIO42;
else if (Pin == 43)
XBYTE[0x309F] |= REGGPIO43;
else if (Pin == 44)
XBYTE[0x309F] |= REGGPIO44;
else if (Pin == 45)
XBYTE[0x309F] |= REGGPIO45;
}
else if (Pin == 46)
{
XBYTE[REG_MUX_TOP5_GPIO] |= _BIT6;
}
}
}
else
{
if (Pin < 8)
{
XBYTE[REG_MUX_DTCON_GPIO_SEL] |= PinPos;// to force it as GPO (It's not necessary to set if it already init)
XBYTE[REG_MUX_TOP0_GPIO] &= ~PinPos;
}
else if (Pin < 16)
XBYTE[REG_MUX_TOP1_GPIO] &= ~PinPos;
else if (Pin < 24)
XBYTE[REG_MUX_TOP2_GPIO] &= ~PinPos;
else if (Pin < 32)
XBYTE[REG_MUX_TOP3_GPIO] &= ~PinPos;
else if (Pin < 34)
XBYTE[REG_MUX_TOP4_GPIO] &= ~PinPos;
else if (Pin >= 48 && Pin <= 51)
XBYTE[0x3A21] &= ~PinPos;
else if (Pin == 52)
XBYTE[REG_MUX_TOP6_GPIO] &= ~BIT2;
else if (Pin == 53)
XBYTE[REG_MUX_TOP6_GPIO] &= ~BIT0;
else
{
if (Pin >= 34 && Pin <= 37)
{
if (Pin == 34)
XBYTE[0x309F] &= ~(REGGPIO34>>8);
else if (Pin == 35)
XBYTE[0x309F] &= ~(REGGPIO35>>8);
else if (Pin == 36)
XBYTE[0x309F] &= ~(REGGPIO36>>8);
else
XBYTE[0x309F] &= ~(REGGPIO37>>8);
}
else if (Pin >= 38 && Pin <= 45)
{
if (Pin == 38)
XBYTE[0x309F] &= ~REGGPIO38;
else if (Pin == 39)
XBYTE[0x309F] &= ~REGGPIO39;
else if (Pin == 40)
XBYTE[0x309F] &= ~REGGPIO40;
else if (Pin == 41)
XBYTE[0x309F] &= ~REGGPIO41;
else if (Pin == 42)
XBYTE[0x309F] &= ~REGGPIO42;
else if (Pin == 43)
XBYTE[0x309F] &= ~REGGPIO43;
else if (Pin == 44)
XBYTE[0x309F] &= ~REGGPIO44;
else if (Pin == 45)
XBYTE[0x309F] &= ~REGGPIO45;
else if (Pin == 46)
{
XBYTE[REG_MUX_TOP5_GPIO] &= ~_BIT6;
}
}
}
}
}
BYTE GPIOWRead(BYTE Pin)
{
BYTE Level = 0, PinPos;
PinPos = CONVERTPIN(Pin%8);
if (Pin < 8)
{
XBYTE[REG_MUX_DTCON_GPIO_SEL] &= ~PinPos;// to force it as GPI (It's not necessary to set if it already init)
Level = XBYTE[REG_TOP0_GPIO_R] & PinPos;
}
else if (Pin < 16)
Level = XBYTE[REG_TOP1_GPIO_R] & PinPos;
else if (Pin < 24)
Level = XBYTE[REG_TOP2_GPIO_R] & PinPos;
else if (Pin < 32)
Level = XBYTE[REG_TOP3_GPIO_R] & PinPos;
else if (Pin < 34)
Level = XBYTE[REG_TOP4_GPIO_R] & PinPos;
else if (Pin >= 48 && Pin <= 51)
Level = XBYTE[0x3A21] & PinPos;
else if (Pin == 52)
Level = XBYTE[REG_TOP6_GPIO_R] & BIT1;
else if (Pin == 53)
Level = XBYTE[REG_TOP6_GPIO_R] & BIT0;
else
{
if (Pin >= 34 && Pin <= 37)
{
if (Pin == 34)
Level = XBYTE[0x309F] & (REGGPIO34>>8);
else if (Pin == 35)
Level = XBYTE[0x309F] & (REGGPIO35>>8);
else if (Pin == 36)
Level = XBYTE[0x309F] & (REGGPIO36>>8);
else
Level = XBYTE[0x309F] & (REGGPIO37>>8);
}
else if (Pin >= 38 && Pin <= 45)
{
if (Pin == 38)
Level = XBYTE[0x309F] & REGGPIO38;
else if (Pin == 39)
Level = XBYTE[0x309F] & REGGPIO39;
else if (Pin == 40)
Level = XBYTE[0x309F] & REGGPIO40;
else if (Pin == 41)
Level = XBYTE[0x309F] & REGGPIO41;
else if (Pin == 42)
Level = XBYTE[0x309F] & REGGPIO42;
else if (Pin == 43)
Level = XBYTE[0x309F] & REGGPIO43;
else if (Pin == 44)
Level = XBYTE[0x309F] & REGGPIO44;
else if (Pin == 45)
Level = XBYTE[0x309F] & REGGPIO45;
}
else if (Pin == 46)
{
Level = XBYTE[REG_TOP5_GPIO_R] & _BIT6;
}
}
if (Level != 0)
Level = 1;
return Level;
}
//----------------------------------------------------------------------
#undef _MSGPIO_C_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -