Exemplo n.º 1
0
/**
* @brief 		Get ADC Data from AD Global register
* @param[in]	ADCx pointer to ADC
* @param[in]	channel channel number
* @return 		Result of conversion
*
 *********************************************************************/
uint16_t ADC_GlobalGetData(ADC_TypeDef *ADCx, uint8_t channel)
{
	CHECK_PARAM(PARAM_ADCx(ADCx));
	CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(channel));

	//ADCx->ADGDR &= ~ADC_GDR_CH_MASK;
	//ADCx->ADGDR |= ADC_GDR_CH(channel);
	return (uint16_t)(ADC_GDR_RESULT(ADCx->ADGDR));
}
Exemplo n.º 2
0
/*********************************************************************//**
 * @brief 		Get ADC result
 * @param[in]	channel channel number
 * @return 		Data conversion
 *
 ************************************************************************/
uint16_t ADC_ChannelGetData(uint8_t channel)
{
	uint32_t adc_value;
	
	CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(channel));

	adc_value = *(uint32_t *) ((&LPC_ADC->DR[0]) + channel);
	return ADC_DR_RESULT(adc_value);
}
Exemplo n.º 3
0
/**
* @brief 		Get Result conversion from A/D data register
* @param[in]	channel number which want to read back the result
* @return 		Result of conversion
 *********************************************************************/
uint32_t ADC_GetData(uint32_t channel)
{
	uint32_t adc_value;

	CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(channel));

	adc_value = *(uint32_t *)((&ADC->ADDR0) + channel);
	return ADC_GDR_RESULT(adc_value);
}
Exemplo n.º 4
0
/**
* @brief 		Get ADC result
* @param[in]	ADCx pointer to ADC
* @param[in]	channel channel number
* @return 		Data conversion
*
 *********************************************************************/
uint16_t ADC_ChannelGetData(ADC_TypeDef *ADCx, uint8_t channel)
{
	uint32_t adc_value;

	CHECK_PARAM(PARAM_ADCx(ADCx));
	CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(channel));

	adc_value = *(uint32_t *) ((&ADCx->ADDR0) + channel);
	return ADC_DR_RESULT(adc_value);
}
Exemplo n.º 5
0
/*********************************************************************//**
 * @brief 		Enable/Disable ADC channel number 
 * @param[in]	Channel channel number
 * @param[in]	NewState Enable or Disable
 *
 * @return 		None
 *
 ************************************************************************/
void ADC_ChannelCmd (uint8_t Channel, FunctionalState NewState)
{
	CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(Channel));
       
	if (NewState == ENABLE) {
		LPC_ADC->CR |= ADC_CR_CH_SEL(Channel);
	} else {
		LPC_ADC->CR &= ~ADC_CR_CH_SEL(Channel);
	}
}
Exemplo n.º 6
0
/**
* @brief 		Enable/Disable ADC channel number
* @param[in]	ADCx pointer to ADC
* @param[in]	Channel channel number
* @param[in]	NewState Enable or Disable
*
* @return 		None
*
 *********************************************************************/
void ADC_ChannelCmd (ADC_TypeDef *ADCx, uint8_t Channel, FunctionalState NewState)
{
	CHECK_PARAM(PARAM_ADCx(ADCx));
	CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(Channel));

	if (NewState == ENABLE) {
		ADCx->ADCR |= ADC_CR_CH_SEL(Channel);
	} else {
		ADCx->ADCR &= ~ADC_CR_CH_SEL(Channel);
	}
}
Exemplo n.º 7
0
/*********************************************************************//**
* @brief        Enable/Disable ADC channel number
* @param[in]    ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
* @param[in]    Channel channel number
* @param[in]    NewState Enable or Disable
*
* @return       None
**********************************************************************/
void ADC_ChannelCmd (LPC_ADC_TypeDef *ADCx, uint8_t Channel, FunctionalState NewState)
{
    CHECK_PARAM(PARAM_ADCx(ADCx));
    CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(Channel));

    if (NewState == ENABLE) {
        ADCx->ADCR |= ADC_CR_CH_SEL(Channel);
    } else {
        if (ADCx->ADCR & ADC_CR_START_MASK) //need to stop START bits before disable channel
           ADCx->ADCR &= ~ADC_CR_START_MASK;
        ADCx->ADCR &= ~ADC_CR_CH_SEL(Channel);
    }
}
Exemplo n.º 8
0
/********************************************************************//**
 * @brief 		Init ADC AD input pins, pins assign:
 *                AD0 - PIO0_11
 *                AD1 - PIO1_0
 *                AD2 - PIO1_1
 *                AD3 - PIO1_2
 *                AD4 - PIO1_3
 *                AD5 - PIO1_4
 *                AD6 - PIO1_10
 *                AD7 - PIO1_11
 *              NOTE:AD0,AD1,AD2,AD3,AD4 are multiplexed with JTAG pins(SW)
 *
 * @param[in]	* @param[in]	Channel channel number           
 *
 * @return		None
 *********************************************************************/
void ADC_PinsInit(uint8_t channel)
{    
	uint32_t pin;
	CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(channel));
    // alexk: CHECK_PARAM(PARAM_ADMODE(mod));

    /* Set AD function */
    switch(channel) {
    case 0:         /* AD Channel 0:  PIO0_11 */
        IOCON_SetPinFunc(IOCON_PIO0_11, PIO0_11_FUN_AD0);
        pin = IOCON_PIO0_11;
        break;
    case 1:         /* AD Channel 1:  PIO1_0  */
        IOCON_SetPinFunc(IOCON_PIO1_0, PIO1_0_FUN_AD1);
        pin = IOCON_PIO1_0;
        break;
    case 2:         /* AD Channel 2:  PIO1_1  */
        IOCON_SetPinFunc(IOCON_PIO1_1, PIO1_1_FUN_AD2);        
        pin = IOCON_PIO1_1;
        break;
    case 3:         /* AD Channel 3:  PIO1_2  */
        IOCON_SetPinFunc(IOCON_PIO1_2, PIO1_2_FUN_AD3);
        pin = IOCON_PIO1_2;
        break;
    case 4:         /* AD Channel 4:  PIO1_3  */
        IOCON_SetPinFunc(IOCON_PIO1_3, PIO1_3_FUN_AD4);
        pin = IOCON_PIO1_3;
        break;
    case 5:         /* AD Channel 5:  PIO1_4  */
        IOCON_SetPinFunc(IOCON_PIO1_4, PIO1_4_FUN_AD5);
        pin = IOCON_PIO1_4;
        break;
    case 6:         /* AD Channel 6:  PIO1_10 */
        IOCON_SetPinFunc(IOCON_PIO1_10, PIO1_10_FUN_AD6);
        pin = IOCON_PIO1_10;
        break;
    case 7:         /* AD Channel 7:  PIO1_11  */
        IOCON_SetPinFunc(IOCON_PIO1_11, PIO1_11_FUN_AD7);
        pin = IOCON_PIO1_11;
        break;
    default: return;
    };

   	*(uint32_t *)((uint32_t)&(LPC_IOCON->PIO2_6) + pin) &= ~ADC_PINS_MODE_MASK;
}
Exemplo n.º 9
0
/*********************************************************************//**
 * @brief 		Get ADC Chanel status from ADC data register
 * @param[in]	channel channel number
 * @param[in]  	StatusType
 *              		 	0:Burst status
 *               		1:Done 	status
 * @return 		SET / RESET
 *
 ************************************************************************/
FlagStatus ADC_ChannelGetStatus(uint8_t channel, uint32_t StatusType)
{
	uint32_t temp;
	
	CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(channel));
	CHECK_PARAM(PARAM_ADC_DATA_STATUS(StatusType));

	temp =  *(uint32_t *) ((&LPC_ADC->DR[0]) + channel);
	if (StatusType) {
		temp &= ADC_DR_DONE_FLAG;
	}else{
		temp &= ADC_DR_OVERRUN_FLAG;
	}
	if (temp) {
		return SET;
	} else {
		return RESET;
	}
}
Exemplo n.º 10
0
/*********************************************************************//**
* @brief 		Get ADC Chanel status from ADC data register
* @param[in]	ADCx pointer to LPC_ADC_TypeDef, should be: LPC_ADC
* @param[in]	channel: channel number, should be 0..7
* @param[in]  	StatusType
*              		 	0:Burst status
*               		1:Done 	status
* @return 		SET / RESET
**********************************************************************/
FlagStatus ADC_ChannelGetStatus(LPC_ADC_TypeDef *ADCx, uint8_t channel, uint32_t StatusType)
{
	uint32_t temp;

	CHECK_PARAM(PARAM_ADCx(ADCx));
	CHECK_PARAM(PARAM_ADC_CHANNEL_SELECTION(channel));
	CHECK_PARAM(PARAM_ADC_DATA_STATUS(StatusType));

	temp =  *((&ADCx->ADDR0) + channel);
	if (StatusType) {
		temp &= ADC_DR_DONE_FLAG;
	}else{
		temp &= ADC_DR_OVERRUN_FLAG;
	}
	if (temp) {
		return SET;
	} else {
		return RESET;
	}

}