Exemple #1
0
bool IsMicInLink(void)
{
#ifdef FUNC_MIC_DET_EN
	static uint8_t MicLinkState = 0;
	#define MICIN_JETTER_TIMES		10	//连接检测消抖时间:10次,100ms
	//设为输入,打开上拉
	GpioClrRegOneBit(MICIN_DETECT_PORT_OE, MICIN_DETECT_BIT);
	GpioClrRegOneBit(MICIN_DETECT_PORT_PU, MICIN_DETECT_BIT);
	GpioClrRegOneBit(MICIN_DETECT_PORT_PD, MICIN_DETECT_BIT);
	GpioSetRegBits(MICIN_DETECT_PORT_IE, MICIN_DETECT_BIT);

	if(GpioGetReg(MICIN_DETECT_PORT_IN) & MICIN_DETECT_BIT)
	{
		MicLinkState = 0;						//断开状态不做消抖处理
	}
	else
	{
		if(MicLinkState < MICIN_JETTER_TIMES)	//连接状态做消抖处理
		{
			MicLinkState++;
		}
	}
	gSys.MicEnable = (MicLinkState >= MICIN_JETTER_TIMES);
	return gSys.MicEnable;
#else
	gSys.MicEnable = TRUE;
	return TRUE;
#endif
}
Exemple #2
0
static void USER_FUNC lum_sendStudyWaveData(ORIGIN_WAVE_DATA* pWaveInfo)
{
	static U8 g_sendCount = 0;
	U8 index;
	U16 clkCount;
	BOOL gpioHighLevel;


	//lum_disableAllIrq();
	if(pWaveInfo->firstHighlevel != 0)
	{
		GpioSetRegOneBit(GPIO_C_OUT, 0x04);
		lum_delay15us(300);
	}
	for(index=0; index<pWaveInfo->waveCount; index++)
	{
		gpioHighLevel = ((index%2) == pWaveInfo->firstHighlevel)?TRUE:FALSE;
		for(clkCount = 0; clkCount<pWaveInfo->waveData[index]; clkCount++) //only for clk timing
		{
			if(gpioHighLevel)
			{
				GpioSetRegOneBit(GPIO_C_OUT, 0x04);
			}
			else
			{
				GpioClrRegOneBit(GPIO_C_OUT, 0x04);
			}
			lum_delay15us(1);
			__nop(); // 1
			__nop(); // 2
			__nop(); // 3
			__nop(); // 4
			__nop(); // 5
			__nop(); // 6
			__nop(); // 7
			__nop(); // 8
			__nop(); // 9

		}
	}

	//lum_enableAllIrq();
	hfgpio_fset_out_low(HFGPIO_F_SDO_2);

	g_sendCount++;
	if(g_sendCount < MAX_WAVE_RESEND_COUNT)
	{
		lum_start433StudyTimer(MAX_SEND_WAVE_TIME_DELAY);
	}
	else
	{
		g_sendCount = 0;
		lum_setRfMode(RF_SLEEP);
		g_searchFreqData.chipStatus = SX1208_IDLE;
	}
}
OSStatus platform_gpio_output_low( const platform_gpio_t* gpio )
{
  OSStatus err = kNoErr;

  require_action_quiet( gpio != NULL, exit, err = kParamErr);

  platform_mcu_powersave_disable();
  
  GpioClrRegOneBit(GPIO_A_OUT + gpio->port , ((uint32_t)1 << gpio->pin) );
  
exit:
  platform_mcu_powersave_enable();
  return err;
}
Exemple #4
0
static void USER_FUNC lum_studyTest(ORIGIN_WAVE_DATA* pWaveInfo)
{
	static U8 g_sendCount = 0;
	U8 index;
	U16 clkCount;
	BOOL gpioHighLevel;


	if(pWaveInfo->firstHighlevel != 0)
	{
		GpioSetRegOneBit(GPIO_B_OUT, 0x8000000);
	}

	for(index=0; index<pWaveInfo->waveCount; index++)
	{
		gpioHighLevel = ((index%2) == pWaveInfo->firstHighlevel)?TRUE:FALSE;
		for(clkCount = 0; clkCount<pWaveInfo->waveData[index]; clkCount++) //only for clk timing
		{
			if(gpioHighLevel)
			{
				GpioSetRegOneBit(GPIO_B_OUT, 0x8000000);
				//hfgpio_fset_out_high(HFGPIO_F_SDO_1);
			}
			else
			{
				GpioClrRegOneBit(GPIO_B_OUT, (0x8000000));
				//hfgpio_fset_out_low(HFGPIO_F_SDO_1);
			}
			lum_delay15us(1);
			__nop(); // 1
			__nop(); // 2
			__nop(); // 3
			__nop(); // 4
			__nop(); // 5
			__nop(); // 6
			__nop(); // 7
			__nop(); // 8
			__nop(); // 9

		}
	}
	hfgpio_fset_out_low(HFGPIO_F_SDO_1);
}
Exemple #5
0
static void USER_FUNC lum_lightHwTimerCallback( hftimer_handle_t htimer )
{
	if(g_lightDimStatus == ZERO_DETECT)
	{
		//hfgpio_fset_out_high(HFGPIO_F_DIM);
		//GpioSetRegOneBit(GPIO_B_OUT, (1<<20)); //O18_GPIO_BANK_B(20),  //lpb SPI_MOSI
		GpioSetRegOneBit(GPIO_B_OUT, 0x100000);
		lum_lightDimShutdown();
	}
	else if(g_lightDimStatus == SHUT_DOWN_DIM)
	{
		//hfgpio_fset_out_low(HFGPIO_F_DIM);
		//GpioClrRegOneBit(GPIO_B_OUT, (1<<20));	 //O18_GPIO_BANK_B(20),  //lpb SPI_MOSI
		GpioClrRegOneBit(GPIO_B_OUT, 0x100000);
	}
	else if(g_lightDimStatus == GET_AC_FREQ)
	{
		g_lightDimStatus = ZERO_DETECT;
		if(g_lightLevel == 0)
		{
			hfgpio_fdisable_interrupt(HFGPIO_F_ZERO_DETECTER);
		}
	}
}
Exemple #6
0
// Initialize coding key scan (GPIO) operation.
// Config interrupt at negative edge of signal-A
void CodingKeyInit(void)
{
	//enable pull up resister.
	GpioClrRegOneBit(CODING_KEY_A_PORT_OE, CODING_KEY_A_BIT);
	GpioClrRegOneBit(CODING_KEY_A_PORT_PU, CODING_KEY_A_BIT);
	GpioClrRegOneBit(CODING_KEY_A_PORT_PD, CODING_KEY_A_BIT);

	//enable pull up resister.
	GpioClrRegOneBit(CODING_KEY_B_PORT_OE, CODING_KEY_B_BIT);
	GpioClrRegOneBit(CODING_KEY_B_PORT_PU, CODING_KEY_B_BIT);
	GpioClrRegOneBit(CODING_KEY_B_PORT_PD, CODING_KEY_B_BIT);

	//enable int
	GpioIntEn(CODING_KEY_A_PORT_INT, CODING_KEY_A_BIT, GPIO_NEG_EDGE_TRIGGER);

	ClockWiseCnt = 0;
	CounterClockWiseCnt = 0;

	//enable gpio irqc
	NVIC_EnableIRQ(GPIO_IRQn);
}
OSStatus platform_gpio_init( const platform_gpio_t* gpio, platform_pin_config_t config )
{
  OSStatus          err = kNoErr;

  platform_mcu_powersave_disable();
  require_action_quiet( gpio != NULL, exit, err = kParamErr);

  GpioClrRegOneBit(GPIO_A_OUTDS + gpio->port , ((uint32_t)1 << gpio->pin) );

  if ( (config == INPUT_PULL_UP ) || (config == INPUT_HIGH_IMPEDANCE ) || (config == INPUT_PULL_DOWN )){
    GpioClrRegOneBit(GPIO_A_OE + gpio->port , ((uint32_t)1 << gpio->pin) );
    GpioSetRegOneBit(GPIO_A_IE + gpio->port , ((uint32_t)1 << gpio->pin) );
  }else{
    GpioClrRegOneBit(GPIO_A_IE + gpio->port , ((uint32_t)1 << gpio->pin) );
    GpioSetRegOneBit(GPIO_A_OE + gpio->port , ((uint32_t)1 << gpio->pin) );    
  }
  
  if ( (config == INPUT_PULL_UP ) || (config == OUTPUT_OPEN_DRAIN_PULL_UP ) )
  {
    GpioClrRegOneBit(GPIO_A_PU + gpio->port , ((uint32_t)1 << gpio->pin) );
    GpioClrRegOneBit(GPIO_A_PD + gpio->port , ((uint32_t)1 << gpio->pin) );
  }
  else if (config == INPUT_PULL_DOWN )
  {
    GpioSetRegOneBit(GPIO_A_PU + gpio->port , ((uint32_t)1 << gpio->pin) );
    GpioSetRegOneBit(GPIO_A_PD + gpio->port , ((uint32_t)1 << gpio->pin) );
  }
  else
  {
    GpioSetRegOneBit(GPIO_A_PU + gpio->port , ((uint32_t)1 << gpio->pin) );
    GpioClrRegOneBit(GPIO_A_PD + gpio->port , ((uint32_t)1 << gpio->pin) );
  }
  
  if(config == OUTPUT_PUSH_PULL)
    GpioSetRegOneBit(GPIO_A_OUTDS + gpio->port , ((uint32_t)1 << gpio->pin) );
  
exit:
  platform_mcu_powersave_enable();
  return err;
}
Exemple #8
0
void SetInputSDA(void* I2cMasterHandle)
{
	I2C_HANDLE I2cHandle = (I2C_HANDLE)I2cMasterHandle;
	GpioClrRegOneBit(I2cHandle->SdaPortIndex + 3, I2cHandle->SdaMask);
}
Exemple #9
0
void ClrSDA(void* I2cMasterHandle)
{
	I2C_HANDLE I2cHandle = (I2C_HANDLE)I2cMasterHandle;
	GpioClrRegOneBit(I2cHandle->SdaPortIndex + 1, I2cHandle->SdaMask);
	I2C_Delay();
}