ADC Exported Functions
- group ADC_Exported_Functions
Functions
-
void ADC_DeInit(ADC_TypeDef *ADCx)
Deinitialize the ADC peripheral registers to their default reset values (turn off ADC clock).
rtl876x_adc.h
Example usage
void driver_adc_init(void) { // Turn off the clock. ADC_DeInit(ADC); }
- Parameters:
ADCx – [in] Specify ADC peripheral, can only be ADC.
- Returns:
None.
-
void ADC_Init(ADC_TypeDef *ADCx, ADC_InitTypeDef *ADC_InitStruct)
Initialize the ADC peripheral according to the specified parameters in the ADC_InitStruct.
rtl876x_adc.h
Example usage
void driver_adc_init(void) { // Turn on the clock. RCC_PeriphClockCmd(APBPeriph_ADC, APBPeriph_ADC_CLOCK, ENABLE); ADC_InitTypeDef ADC_InitStruct; ADC_StructInit(&ADC_InitStruct); ADC_InitStruct.ADC_SchIndex[0] = EXT_SINGLE_ENDED(0); ADC_InitStruct.ADC_SchIndex[1] = EXT_SINGLE_ENDED(1); ADC_InitStruct.ADC_Bitmap = 0x03; // Add other initialization parameters that need to be configured here. ADC_Init(ADC, &ADC_InitStruct); }
- Parameters:
ADCx – [in] selected ADC peripheral.
ADC_InitStruct – [in] pointer to an ADC_InitTypeDef structure that contains the configuration information for the specified ADC peripheral
- Returns:
None.
-
void ADC_StructInit(ADC_InitTypeDef *ADC_InitStruct)
Fill each ADC_InitStruct member with its default value.
rtl876x_adc.h
Example usage
void driver_adc_init(void) { // Turn on the clock. RCC_PeriphClockCmd(APBPeriph_ADC, APBPeriph_ADC_CLOCK, ENABLE); ADC_InitTypeDef ADC_InitStruct; ADC_StructInit(&ADC_InitStruct); ADC_InitStruct.ADC_SchIndex[0] = EXT_SINGLE_ENDED(0); ADC_InitStruct.ADC_SchIndex[1] = EXT_SINGLE_ENDED(1); ADC_InitStruct.ADC_Bitmap = 0x03; // Add other initialization parameters that need to be configured here. ADC_Init(ADC, &ADC_InitStruct); }
- Parameters:
ADC_InitStruct – [in] Pointer to an ADC_InitTypeDef structure which will be initialized.
- Returns:
None.
-
void ADC_Cmd(ADC_TypeDef *ADCx, uint8_t adcMode, FunctionalState NewState)
Enable or disable the ADC peripheral.
rtl876x_adc.h
Example usage
void board_adc_init(void) { Pad_Config(P2_0, PAD_SW_MODE, PAD_IS_PWRON, PAD_PULL_NONE, PAD_OUT_DISABLE, PAD_OUT_LOW); Pad_Config(P2_1, PAD_SW_MODE, PAD_IS_PWRON, PAD_PULL_NONE, PAD_OUT_DISABLE, PAD_OUT_LOW); } void driver_adc_init(void) { // Open clock RCC_PeriphClockCmd(APBPeriph_ADC, APBPeriph_ADC_CLOCK, ENABLE); ADC_InitTypeDef ADC_InitStruct; ADC_StructInit(&ADC_InitStruct); ADC_InitStruct.ADC_SchIndex[0] = EXT_SINGLE_ENDED(0); ADC_InitStruct.ADC_SchIndex[1] = EXT_SINGLE_ENDED(1); ADC_InitStruct.ADC_Bitmap = 0x03; // Add other initialization parameters here. ADC_Init(ADC, &ADC_InitStruct); ADC_INTConfig(ADC, ADC_INT_ONE_SHOT_DONE, ENABLE); } void adc_demo(void) { board_adc_init(); driver_adc_init(); ADC_Cmd(ADC, ADC_ONE_SHOT_MODE, ENABLE); }
- Parameters:
ADCx – [in] Specify ADC peripheral.
adcMode – [in] ADC operation mode selection. This parameter can be one of the following values, which refer to ADC Operation Mode.
ADC_ONE_SHOT_MODE: One shot mode.
ADC_CONTINUOUS_MODE: Continuous sampling mode.
NewState – [in] New state of the ADC peripheral. This parameter can be: ENABLE or DISABLE.
- Returns:
None.
-
void ADC_INTConfig(ADC_TypeDef *ADCx, uint32_t ADC_INT, FunctionalState NewState)
Enable or disable the specified ADC interrupts.
rtl876x_adc.h
Example usage
void driver_adc_init(void) { // Open clock RCC_PeriphClockCmd(APBPeriph_ADC, APBPeriph_ADC_CLOCK, ENABLE); ADC_InitTypeDef ADC_InitStruct; ADC_StructInit(&ADC_InitStruct); ADC_InitStruct.ADC_SchIndex[0] = EXT_SINGLE_ENDED(0); ADC_InitStruct.ADC_SchIndex[1] = EXT_SINGLE_ENDED(1); ADC_InitStruct.ADC_Bitmap = 0x03; // Add other initialization parameters here. ADC_Init(ADC, &ADC_InitStruct); ADC_INTConfig(ADC, ADC_INT_FIFO_RD_ERR, ENABLE); ADC_INTConfig(ADC, ADC_INT_ONE_SHOT_DONE, ENABLE); }
- Parameters:
ADCx – [in] Specify ADC peripheral.
ADC_INT – [in] Specify the ADC interrupt sources to be enabled or disabled. This parameter can be any combination of the following values, which refer to ADC Interrupts Definition.
ADC_INT_FIFO_RD_REQ : ADC FIFO size >= burst size interrupt.
ADC_INT_FIFO_RD_ERR : ADC FIFO underflow interrupt.
ADC_INT_FIFO_THD : ADC FIFO size > thd interrupt.
ADC_INT_FIFO_FULL : ADC FIFO full interrupt.
ADC_INT_ONE_SHOT_DONE : ADC one shot mode done interrupt.
ADC_INT_FIFO_OVERFLOW : ADC FIFO overflow interrupt.
NewState – [in] New state of the specified ADC interrupt. This parameter can be: ENABLE or DISABLE.
- Returns:
None.
-
uint16_t ADC_ReadRawData(ADC_TypeDef *ADCx, uint8_t index)
Read ADC data according to specific channel.
rtl876x_adc.h
Example usage
void board_adc_init(void) { Pad_Config(P2_0, PAD_SW_MODE, PAD_IS_PWRON, PAD_PULL_NONE, PAD_OUT_DISABLE, PAD_OUT_LOW); Pad_Config(P2_1, PAD_SW_MODE, PAD_IS_PWRON, PAD_PULL_NONE, PAD_OUT_DISABLE, PAD_OUT_LOW); } void driver_adc_init(void) { // Open clock RCC_PeriphClockCmd(APBPeriph_ADC, APBPeriph_ADC_CLOCK, ENABLE); ADC_InitTypeDef ADC_InitStruct; ADC_StructInit(&ADC_InitStruct); ADC_InitStruct.ADC_SchIndex[0] = EXT_SINGLE_ENDED(0); ADC_InitStruct.ADC_SchIndex[1] = EXT_SINGLE_ENDED(1); ADC_InitStruct.ADC_Bitmap = 0x03; // Add other initialization parameters here. ADC_Init(ADC, &ADC_InitStruct); ADC_INTConfig(ADC, ADC_INT_ONE_SHOT_DONE, ENABLE); } void adc_demo(void) { board_adc_init(); driver_adc_init(); ADC_Cmd(ADC, ADC_ONE_SHOT_MODE, ENABLE); while(ADC_GetINTStatus(ADC, ADC_INT_ONE_SHOT_DONE) == RESET); uint16_t raw_data_0 = ADC_ReadRawData(ADC, 0); uint16_t raw_data_1 = ADC_ReadRawData(ADC, 1); }
- Parameters:
ADCx – [in] Specify ADC peripheral.
index – [in] Can be 0 to 15.
- Returns:
The 12-bit converted ADC raw data.
-
uint16_t ADC_ReadAvgRawData(ADC_TypeDef *ADCx)
Get ADC average data from ADC schedule table 0.
rtl876x_adc.h
Example usage
void board_adc_init(void) { Pad_Config(P2_0, PAD_SW_MODE, PAD_IS_PWRON, PAD_PULL_NONE, PAD_OUT_DISABLE, PAD_OUT_LOW); } void driver_adc_init(void) { // open clock RCC_PeriphClockCmd(APBPeriph_ADC, APBPeriph_ADC_CLOCK, ENABLE); ADC_InitTypeDef ADC_InitStruct; ADC_StructInit(&ADC_InitStruct); ADC_InitStruct.ADC_SchIndex[0] = EXT_SINGLE_ENDED(0); ADC_InitStruct.ADC_Bitmap = 0x01; ADC_InitStruct.ADC_DataAvgEn = ADC_DATA_AVERAGE_ENABLE; ADC_InitStruct.ADC_DataAvgSel = ADC_DATA_AVERAGE_OF_2; // Add other initialization parameters here. ADC_Init(ADC, &ADC_InitStruct); ADC_INTConfig(ADC, ADC_INT_ONE_SHOT_DONE, ENABLE); } void adc_demo(void) { board_adc_init(); driver_adc_init(); ADC_Cmd(ADC, ADC_ONE_SHOT_MODE, ENABLE); while(ADC_GetINTStatus(ADC, ADC_INT_ONE_SHOT_DONE) == RESET); uint16_t raw_data = 0; raw_data = ADC_ReadAvgRawData(ADC); }
- Parameters:
ADCx – [in] Specify ADC peripheral.
- Returns:
The 10 bits integer data + 2 bits fractional ADC raw data.
-
uint16_t ADC_ReadFIFO(ADC_TypeDef *ADCx)
Get raw data from ADC FIFO.
rtl876x_adc.h
Example usage
void board_adc_init(void) { Pad_Config(P2_0, PAD_SW_MODE, PAD_IS_PWRON, PAD_PULL_NONE, PAD_OUT_DISABLE, PAD_OUT_LOW); } void driver_adc_init(void) { // open clock RCC_PeriphClockCmd(APBPeriph_ADC, APBPeriph_ADC_CLOCK, ENABLE); ADC_InitTypeDef ADC_InitStruct; ADC_StructInit(&ADC_InitStruct); ADC_InitStruct.ADC_SchIndex[0] = EXT_SINGLE_ENDED(0); ADC_InitStruct.ADC_Bitmap = 0x01; ADC_InitStruct.ADC_DataWriteToFifo = ADC_DATA_WRITE_TO_FIFO_DISABLE; ADC_Init(ADC, &ADC_InitStruct); ADC_INTConfig(ADC, ADC_INT_ONE_SHOT_DONE, ENABLE); } void adc_demo(void) { board_adc_init(); driver_adc_init(); ADC_Cmd(ADC, ADC_ONE_SHOT_MODE, ENABLE); while(ADC_GetINTStatus(ADC, ADC_INT_ONE_SHOT_DONE) == RESET); uint16_t raw_data = 0; raw_data = ADC_ReadFIFO(ADC); }
- Parameters:
ADCx – [in] selected ADC peripheral.
- Returns:
ADC FIFO data.
-
void ADC_ReadFIFOData(ADC_TypeDef *ADCx, uint16_t *outBuf, uint16_t num)
Get data from ADC FIFO.
rtl876x_adc.h
Example usage
void adc_demo(void) { // ADC already start uint16_t raw_data[32] = {0}; uint8_t data_len = ADC_GetFIFODataLen(ADC); ADC_ReadFIFOData(ADC, raw_data, data_len); }
- Parameters:
ADCx – [in] Specify ADC peripheral.
outBuf – [out] Buffer to save data read from ADC FIFO.
num – [in] Number of data to be read.
- Returns:
None.
-
uint8_t ADC_GetFIFODataLen(ADC_TypeDef *ADCx)
Get ADC FIFO data number.
rtl876x_adc.h
Example usage
void adc_demo(void) { // ADC already start uint16_t raw_data[32] = {0}; uint8_t data_len = ADC_GetFIFODataLen(ADC); ADC_ReadFIFOData(ADC, raw_data, data_len); }
- Parameters:
ADCx – [in] selected ADC peripheral.
- Returns:
Current data number in ADC FIFO.
-
void ADC_SchIndexConfig(ADC_TypeDef *ADCx, uint8_t adcMode, uint16_t Index)
Config ADC schedule table index.
rtl876x_adc.h
Example usage
void adc_demo(void) { ADC_SchIndexConfig(ADC, INTERNAL_VBAT_MODE, 0); }
- Parameters:
ADCx – [in] Specify ADC peripheral.
adcMode – [in] ADC operation mode. This parameter can be one of the following values, which refer to ADC Channel and Mode.
INTERNAL_VBAT_MODE
Index – [in] Schedule table index.
- Returns:
None.
-
void ADC_SchTableConfig(ADC_TypeDef *ADCx, uint16_t Index, uint8_t adcMode)
Config ADC schedule table.
- Parameters:
ADCx – [in] selected ADC peripheral.
Index – [in] Schedule table index.
adcMode – [in] ADC mode. This parameter can be one of the following values, which refer to ADC Channel and Mode.
INTERNAL_VBAT_MODE
- Returns:
none.
-
void ADC_BitMapConfig(ADC_TypeDef *ADCx, uint16_t bitMap, FunctionalState NewState)
Config ADC bit map.
rtl876x_adc.h
Example usage
void adc_demo(void) { uint16_t bit_map = 0x03; ADC_BitMapConfig(ADC, bit_map, ENABLE); }
- Parameters:
ADCx – [in] Specify ADC peripheral.
bitMap – [in] ADC channel map.
NewState – [in] New state of the ADC peripheral. This parameter can be: ENABLE or DISABLE.
- Returns:
None.
-
void ADC_ManualPowerOnCmd(ADC_TypeDef *ADCx, FunctionalState NewState)
Power on ADC manually.
rtl876x_adc.h
Example usage
void adc_demo(void) { ADC_ManualPowerOnCmd(ADC, ENABLE); }
- Parameters:
ADCx – [in] Specify ADC peripheral.
NewState – [in] New state of the ADC power on. This parameter can be: ENABLE or DISABLE. If enabled, ADC power will always be on until disabled.
- Returns:
None.
-
void ADC_WriteFIFOCmd(ADC_TypeDef *ADCx, FunctionalState NewState)
Enable or disable stop FIFO from writing data.
rtl876x_adc.h
Example usage
void adc_demo(void) { ADC_WriteFIFOCmd(ADC, ENABLE); }
- Parameters:
ADCx – [in] Specify ADC peripheral.
NewState – [in] New state of the ADC FIFO write. This parameter can be: ENABLE or DISABLE.
- Returns:
None.
-
void ADC_BypassCmd(uint8_t ChannelNum, FunctionalState NewState)
Config ADC bypass resistor.
rtl876x_adc.h
Example usage
void adc_demo(void) { ADC_BypassCmd(0, ENABLE); }
Note
The input voltage of channel pin using bypass mode cannot exceed 0.9V!
- Parameters:
ChannelNum – [in] External channel number, can be 0~7.
NewState – [in] Specify whether the channel enables bypass mode. This parameter can be: ENABLE or DISABLE.
- Returns:
None.
-
ITStatus ADC_GetINTStatus(ADC_TypeDef *ADCx, uint32_t ADC_INT)
Check whether the specified ADC interrupt flag is set.
rtl876x_adc.h
Example usage
void adc_demo(void) { ITStatus int_status = RESET; int_status = ADC_GetINTStatus(ADC, ADC_INT_FIFO_OVERFLOW); }
- Parameters:
ADCx – [in] selected ADC peripheral.
ADC_INT – [in] Specify the interrupt flag to check. This parameter can be one of the following values, which refer to ADC Interrupts Definition.
ADC_INT_FIFO_OVERFLOW: ADC FIFO overflow interrupt.
ADC_INT_ONE_SHOT_DONE: ADC once convert end interrupt.
ADC_INT_FIFO_FULL: ADC FIFO full interrupt.
ADC_INT_FIFO_THD: FIFO larger than threshold interrupt.
ADC_INT_FIFO_RD_ERR: ADC FIFO underflow interrupt.
ADC_INT_FIFO_RD_REQ: ADC FIFO size >= burst size interrupt.
- Returns:
The new state of ADC_INT (SET or RESET).
-
void ADC_ClearINTPendingBit(ADC_TypeDef *ADCx, uint32_t ADC_INT)
Clear the ADC interrupt pending bit.
rtl876x_adc.h
Example usage
void adc_demo(void) { ADC_ClearINTPendingBit(ADC, ADC_INT_FIFO_OVERFLOW); }
- Parameters:
ADCx – [in] Specify ADC peripheral.
ADC_INT – [in] Specify the interrupt pending bit to clear. This parameter can be any combination of the following values, which refer to ADC Interrupts Definition.
ADC_INT_FIFO_OVERFLOW: ADC FIFO overflow interrupt.
ADC_INT_ONE_SHOT_DONE: ADC once convert end interrupt.
ADC_INT_FIFO_FULL: ADC FIFO full interrupt.
ADC_INT_FIFO_THD: FIFO larger than threshold interrupt.
ADC_INT_FIFO_RD_ERR: ADC FIFO underflow interrupt.
ADC_INT_FIFO_RD_REQ: ADC FIFO size >= burst size interrupt.
- Returns:
None.
-
void ADC_ClearFIFO(ADC_TypeDef *ADCx)
Clear ADC FIFO.
rtl876x_adc.h
Example usage
void adc_demo(void) { ADC_ClearFIFO(ADC); }
- Parameters:
ADCx – [in] Specify ADC peripheral.
- Returns:
None.
-
uint8_t ADC_GetAllFlagStatus(ADC_TypeDef *ADCx)
Get all ADC interrupt flag status.
rtl876x_adc.h
Example usage
void adc_demo(void) { uint8_t all_flag_status = 0; all_flag_status = ADC_GetAllFlagStatus(ADC); }
- Parameters:
ADCx – [in] Specify ADC peripheral.
- Returns:
All ADC interrupt status. ADC Interrupts Definition.
-
bool ADC_CalibrationInit(void)
Initialize the voltage conversion.
adc_lib.h
Example usage
bool adc_k_status = false; adc_k_status = ADC_CalibrationInit();
- Parameters:
None. – [in]
- Return values:
true – ADC voltage calibration correct.
false:. – ADC voltage calibration incorrect.
- Returns:
The status of ADC calibration.
-
float ADC_GetVoltage(const ADC_SampleMode vSampleMode, int32_t vSampleData, ADC_ErrorStatus *pErrorStatus)
Obtain the actual voltage value.
adc_lib.h
Example usage
float sample_voltage = 0; sample_voltage = ADC_GetVoltage(BYPASS_SINGLE_MODE, (int32_t)sample_data, &error_status);
- Parameters:
vSampleMode – [in] ADC operation mode.
vSampleData – [in] ADC sample data.
pErrorStatus – [in] This parameter can be a value of ADC_ErrorStatus.
- Returns:
actual voltage value.
-
uint16_t ADC_GetResistance(void)
Obtain the actual resistance value.
adc_lib.h
Example usage
uint32_t value = ADC_GetResistance();
- Parameters:
None. – [in]
- Returns:
resistance value.
-
void ADC_DeInit(ADC_TypeDef *ADCx)