adc_conv_mode
This is an example of ADC conversion mode.
-
This ADC supports 4 modes
- Single conversion mode
- Continuous mode
- Scan mode
- Discontinuous mode
-
The target ADC channels
// in main.c #define CONFIG_TARGET_1_ADC_CHANNEL ADC_Channel_03 #define CONFIG_TARGET_ADC_MULTI_CHANNELS (ADC_Channel_02 | ADC_Channel_03 | ADC_Channel_09) -
User pull low of the specific key to trigger ADC work
// in main.c #define CONFIG_GPIO_INPUT_PORTx GPIOA #define CONFIG_GPIO_INPUT_PINx GPIO_Pin_02
Single conversion mode
Software trigger ADC to sample a channel once
The target ADC channel is defined at
CONFIG_TARGET_1_ADC_CHANNEL
-
Configure to single conversion mode
// in main.c #define CONFIG_TARGET_ADC_MODE_SIGNAL 1 #define CONFIG_TARGET_ADC_MODE_CONTINOUS 0 #define CONFIG_TARGET_ADC_MODE_SCAN 0 #define CONFIG_TARGET_ADC_MODE_DISCONTINOUS 0 -
Operation flow
-
Step 1. Connect the AIN-Channel (
CONFIG_TARGET_1_ADC_CHANNEL) with an external device (e.g. power support) which provide difference voltage -
Step 2. Set a specific voltage to external device (e.g. power support)
-
Step 3. Press button to trigger ADC start
-
Step 4. Get the ADC conversion value from log message
-
Step 5. Calculate the measured voltage
the measured voltage = ADC_Value * ((AVDD - AVSS) / 4095) -
Step 6. repeat
Step 2 ~ Step 5
-
Continuous mode
In this mode, ADC will always sequentially sample the specific channels after a trigger-event
-
Configure to continuous mode
// in main.c #define CONFIG_TARGET_ADC_MODE_SIGNAL 0 #define CONFIG_TARGET_ADC_MODE_CONTINOUS 1 #define CONFIG_TARGET_ADC_MODE_SCAN 0 #define CONFIG_TARGET_ADC_MODE_DISCONTINOUS 0 -
Operation flow
- Step 1. Connect the AIN-Channel (
CONFIG_TARGET_1_ADC_CHANNEL) with an external device (e.g. power support) which provide difference voltage - Step 2. Set a specific voltage to the external device (e.g. power support)
- Step 3. Press button to trigger ADC start
- Step 4. Run-time change voltage from the external device (e.g. power support)
- Step 5. Get the ADC conversion value from log message
It will auto-log
CONFIG_REPEAT_TIMEStimes with a trigger-event// at main.c #define CONFIG_REPEAT_TIMES 10
- Step 1. Connect the AIN-Channel (
Scan mode
In Scan mode, ACD will sequentially sample the specific channels once after a trigger-event
-
Configure to Scan mode
// in main.c #define CONFIG_TARGET_ADC_MODE_SIGNAL 0 #define CONFIG_TARGET_ADC_MODE_CONTINOUS 0 #define CONFIG_TARGET_ADC_MODE_SCAN 1 #define CONFIG_TARGET_ADC_MODE_DISCONTINOUS 0 -
Operation flow
- Step 1. Connect the AIN-Channels (
CONFIG_TARGET_ADC_MULTI_CHANNELS) with an external device (e.g. power support) which provide difference voltages - Step 2. Set specific voltages to the external device (e.g. power support) with multi-channels
- Step 3. Press button to trigger ADC start
- Step 4. Run-time change voltages of multi-channels of the external device (e.g. power support)
- Step 5. Get the ADC conversion values from log message
It will auto-trigger the sample-event
CONFIG_REPEAT_TIMEStimes// at main.c #define CONFIG_REPEAT_TIMES 10
- Step 1. Connect the AIN-Channels (
Discontinuous mode
It will group the selected AIN-Channels and sequentially trigger a sub-group of the selected AIN-Channels with a trigger-event
An example as below
Selected AIN 4,5,7,9 Sub-Group 1: AIN 4, 5, 7 Sub-Group 2: AIN 9 the 1st trigger-evern => Execute Sub-Group 1 the 2nd trigger-evern => Execute Sub-Group 2
-
Configure to Discontinuous mode
// in main.c #define CONFIG_TARGET_ADC_MODE_SIGNAL 0 #define CONFIG_TARGET_ADC_MODE_CONTINOUS 0 #define CONFIG_TARGET_ADC_MODE_SCAN 0 #define CONFIG_TARGET_ADC_MODE_DISCONTINOUS 1 -
Operation flow
- Step 1. Connect the AIN-Channels (
CONFIG_TARGET_ADC_MULTI_CHANNELS) with an external device (e.g. power support) which provide difference voltages - Step 2. Set specific voltages to the external device (e.g. power support) with multi-channels
- Step 3. Press button to trigger ADC start
- Step 4. Run-time change voltages of multi-channels of the external device (e.g. power support)
- Step 5. Get the ADC conversion values from log message
- Step 1. Connect the AIN-Channels (
Log
Use serial port with baudrate 115200, 8bit, no parity check.
-
Single conversion mode
Oct 2 2025 16:19:41 ADC run Single conversion mode Button = PA2 wait key event (voltage level low)... ADC Single Conversion Trigger ADC ch-03 ADC Value: 3395, voltage: 2.735898 ... -
Continuous mode
Oct 2 2025 15:02:37 ADC run Continuous conversion mode Button = PA2 wait key event (voltage level low)... ADC Continuous mode Trigger ADC <--- trigger ADC => Change External Voltage ch-09 ADC Value: 2327, voltage: 1.875238 ch-03 ADC Value: 3274, voltage: 2.638388 ch-02 ADC Value: 1342, voltage: 1.081465 => Change External Voltage ch-09 ADC Value: 2331, voltage: 1.878461 ch-03 ADC Value: 3276, voltage: 2.640000 ch-02 ADC Value: 1349, voltage: 1.087106 => Change External Voltage ch-09 ADC Value: 2341, voltage: 1.886520 ch-03 ADC Value: 3152, voltage: 2.540073 <--- change AIN3 voltage ch-02 ADC Value: 1352, voltage: 1.089524 => Change External Voltage ch-09 ADC Value: 2336, voltage: 1.882491 ch-03 ADC Value: 3159, voltage: 2.545714 ch-02 ADC Value: 1351, voltage: 1.088718 => Change External Voltage ch-09 ADC Value: 2333, voltage: 1.880073 ch-03 ADC Value: 3028, voltage: 2.440146 ch-02 ADC Value: 1341, voltage: 1.080659 => Change External Voltage ch-09 ADC Value: 2336, voltage: 1.882491 ch-03 ADC Value: 2906, voltage: 2.341831 <--- change AIN3 voltage ch-02 ADC Value: 1343, voltage: 1.082271 => Change External Voltage ch-09 ADC Value: 2345, voltage: 1.889744 ch-03 ADC Value: 2902, voltage: 2.338608 ch-02 ADC Value: 1347, voltage: 1.085495 => Change External Voltage ch-09 ADC Value: 2332, voltage: 1.879267 ch-03 ADC Value: 2904, voltage: 2.340220 ch-02 ADC Value: 1717, voltage: 1.383663 <--- change AIN2 voltage => Change External Voltage ch-09 ADC Value: 2338, voltage: 1.884103 ch-03 ADC Value: 2902, voltage: 2.338608 ch-02 ADC Value: 2090, voltage: 1.684249 => Change External Voltage ch-09 ADC Value: 2340, voltage: 1.885714 ch-03 ADC Value: 2910, voltage: 2.345055 ch-02 ADC Value: 2575, voltage: 2.075092 <--- change AIN2 voltage => Change External Voltage ch-09 ADC Value: 2328, voltage: 1.876044 ch-03 ADC Value: 2905, voltage: 2.341026 ch-02 ADC Value: 2585, voltage: 2.083150 => Change External Voltage ch-09 ADC Value: 2082, voltage: 1.677802 <--- change AIN9 voltage ch-03 ADC Value: 2907, voltage: 2.342637 ch-02 ADC Value: 2582, voltage: 2.080733 => Change External Voltage ch-09 ADC Value: 1956, voltage: 1.576264 ch-03 ADC Value: 2905, voltage: 2.341026 ch-02 ADC Value: 2582, voltage: 2.080733 => Change External Voltage ch-09 ADC Value: 2457, voltage: 1.980000 ch-03 ADC Value: 2905, voltage: 2.341026 ch-02 ADC Value: 2583, voltage: 2.081538 => Change External Voltage ch-09 ADC Value: 2833, voltage: 2.283004 <--- change AIN9 voltage ch-03 ADC Value: 2904, voltage: 2.340220 ch-02 ADC Value: 2589, voltage: 2.086374 ... -
Scan mode
Oct 2 2025 15:44:15 ADC run Scan conversion mode Button = PA2 wait key event (voltage level low)... ADC Scan mode => Change External Voltage Trigger ADC <--- trigger ADC ch-09 ADC Value: 2215, voltage: 1.784982 ch-03 ADC Value: 2902, voltage: 2.338608 ch-02 ADC Value: 2581, voltage: 2.079927 => Change External Voltage Trigger ADC ch-09 ADC Value: 2214, voltage: 1.784176 ch-03 ADC Value: 2903, voltage: 2.339414 ch-02 ADC Value: 2578, voltage: 2.077509 => Change External Voltage Trigger ADC ch-09 ADC Value: 2081, voltage: 1.676996 ch-03 ADC Value: 2902, voltage: 2.338608 ch-02 ADC Value: 2587, voltage: 2.084762 => Change External Voltage Trigger ADC <--- trigger ADC ch-09 ADC Value: 1961, voltage: 1.580293 <--- change AIN9 voltage ch-03 ADC Value: 2906, voltage: 2.341831 ch-02 ADC Value: 2581, voltage: 2.079927 => Change External Voltage Trigger ADC ch-09 ADC Value: 1843, voltage: 1.485201 ch-03 ADC Value: 2907, voltage: 2.342637 ch-02 ADC Value: 2573, voltage: 2.073480 => Change External Voltage Trigger ADC <--- trigger ADC ch-09 ADC Value: 1843, voltage: 1.485201 <--- change AIN9 voltage ch-03 ADC Value: 2901, voltage: 2.337802 ch-02 ADC Value: 2586, voltage: 2.083956 => Change External Voltage Trigger ADC <--- trigger ADC ch-09 ADC Value: 1848, voltage: 1.489231 ch-03 ADC Value: 2901, voltage: 2.337802 ch-02 ADC Value: 2830, voltage: 2.280586 <--- change AIN2 voltage => Change External Voltage Trigger ADC ch-09 ADC Value: 1852, voltage: 1.492454 ch-03 ADC Value: 2906, voltage: 2.341831 ch-02 ADC Value: 2697, voltage: 2.173407 => Change External Voltage Trigger ADC <--- trigger ADC ch-09 ADC Value: 1847, voltage: 1.488425 ch-03 ADC Value: 2902, voltage: 2.338608 ch-02 ADC Value: 2453, voltage: 1.976776 <--- change AIN2 voltage => Change External Voltage Trigger ADC <--- trigger ADC ch-09 ADC Value: 1846, voltage: 1.487619 ch-03 ADC Value: 2903, voltage: 2.339414 ch-02 ADC Value: 2344, voltage: 1.888938 <--- change AIN2 voltage => Change External Voltage Trigger ADC <--- trigger ADC ch-09 ADC Value: 1851, voltage: 1.491648 ch-03 ADC Value: 2905, voltage: 2.341026 ch-02 ADC Value: 2459, voltage: 1.981612 <--- change AIN2 voltage => Change External Voltage Trigger ADC ch-09 ADC Value: 1854, voltage: 1.494066 ch-03 ADC Value: 2893, voltage: 2.331355 ch-02 ADC Value: 2466, voltage: 1.987253 => Change External Voltage Trigger ADC <--- trigger ADC ch-09 ADC Value: 1848, voltage: 1.489231 ch-03 ADC Value: 3148, voltage: 2.536850 <--- change AIN3 voltage ch-02 ADC Value: 2464, voltage: 1.985641 => Change External Voltage Trigger ADC ch-09 ADC Value: 1849, voltage: 1.490037 ch-03 ADC Value: 2782, voltage: 2.241905 ch-02 ADC Value: 2460, voltage: 1.982418 => Change External Voltage Trigger ADC <--- trigger ADC ch-09 ADC Value: 1850, voltage: 1.490842 ch-03 ADC Value: 2413, voltage: 1.944542 <--- change AIN3 voltage ch-02 ADC Value: 2458, voltage: 1.980806 => Change External Voltage Trigger ADC ch-09 ADC Value: 1848, voltage: 1.489231 ch-03 ADC Value: 2412, voltage: 1.943736 ch-02 ADC Value: 2458, voltage: 1.980806 => Change External Voltage Trigger ADC <--- trigger ADC ch-09 ADC Value: 1850, voltage: 1.490842 ch-03 ADC Value: 2679, voltage: 2.158901 <--- change AIN3 voltage ch-02 ADC Value: 2466, voltage: 1.987253 => Change External Voltage Trigger ADC ch-09 ADC Value: 1850, voltage: 1.490842 ch-03 ADC Value: 3023, voltage: 2.436117 ch-02 ADC Value: 2460, voltage: 1.982418 => Change External Voltage Trigger ADC <--- trigger ADC ch-09 ADC Value: 1854, voltage: 1.494066 ch-03 ADC Value: 3397, voltage: 2.737509 <--- change AIN3 voltage ch-02 ADC Value: 2464, voltage: 1.985641 ... -
Discontinuous mode
Sub-Group 1: AIN 2
Sub-Group 2: AIN 3
Sub-Group 3: AIN 9Oct 2 2025 16:13:42 ADC run Discontinuous conversion mode Button = PA2 wait key event (voltage level low)... ADC Discontinuous mode => Change External Voltage ## trigger 00-th Trigger ADC <--- trigger ADC Sub-Group 1 (AIN 2) ch-09 ADC Value: 0, voltage: 0.000000 ch-03 ADC Value: 0, voltage: 0.000000 ch-02 ADC Value: 2453, voltage: 1.976776 ## trigger 01-th Trigger ADC <--- trigger ADC Sub-Group 2 (AIN 3) ch-09 ADC Value: 0, voltage: 0.000000 ch-03 ADC Value: 3399, voltage: 2.739121 ch-02 ADC Value: 2453, voltage: 1.976776 ## trigger 02-th Trigger ADC <--- trigger ADC Sub-Group 3 (AIN 9) ch-09 ADC Value: 1843, voltage: 1.485201 ch-03 ADC Value: 3399, voltage: 2.739121 ch-02 ADC Value: 2453, voltage: 1.976776 ...