Files

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_TIMES times with a trigger-event

      // at main.c
      #define CONFIG_REPEAT_TIMES             10
      

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_TIMES times

      // at main.c
      #define CONFIG_REPEAT_TIMES             10
      

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

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 9

    Oct  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
    
    ...