Fix ADC resolution enum for stm32g4

This commit is contained in:
qff233 2024-04-05 01:13:23 +08:00
parent 2b7ec569a5
commit cf5ab0f41b
2 changed files with 811 additions and 1 deletions

810
data/registers/adc_g4.yaml Normal file
View File

@ -0,0 +1,810 @@
block/ADC:
description: Analog to Digital Converter
items:
- name: ISR
description: interrupt and status register
byte_offset: 0
fieldset: ISR
- name: IER
description: interrupt enable register
byte_offset: 4
fieldset: IER
- name: CR
description: control register
byte_offset: 8
fieldset: CR
- name: CFGR
description: configuration register 1
byte_offset: 12
fieldset: CFGR
- name: CFGR2
description: configuration register 2
byte_offset: 16
fieldset: CFGR2
- name: SMPR
description: sampling time register 1-2
array:
len: 2
stride: 4
byte_offset: 20
fieldset: SMPR
- name: PCSEL
description: pre channel selection register
byte_offset: 28
fieldset: PCSEL
- name: LTR1
description: analog watchdog 1 threshold register
byte_offset: 32
fieldset: LTR1
- name: HTR1
description: analog watchdog 2 threshold register
byte_offset: 36
fieldset: HTR1
- name: SQR1
description: group regular sequencer ranks register 1
byte_offset: 48
fieldset: SQR1
- name: SQR2
description: group regular sequencer ranks register 2
byte_offset: 52
fieldset: SQR2
- name: SQR3
description: group regular sequencer ranks register 3
byte_offset: 56
fieldset: SQR3
- name: SQR4
description: group regular sequencer ranks register 4
byte_offset: 60
fieldset: SQR4
- name: DR
description: group regular conversion data register
byte_offset: 64
access: Read
fieldset: DR
- name: JSQR
description: group injected sequencer register
byte_offset: 76
fieldset: JSQR
- name: OFR
description: offset number 1-4 register
array:
len: 4
stride: 4
byte_offset: 96
fieldset: OFR
- name: JDR
description: group injected sequencer rank 1-4 register
array:
len: 4
stride: 4
byte_offset: 128
access: Read
fieldset: JDR
- name: AWD2CR
description: analog watchdog 2 configuration register
byte_offset: 160
fieldset: AWD2CR
- name: AWD3CR
description: analog watchdog 3 configuration register
byte_offset: 164
fieldset: AWD3CR
- name: LTR2
description: watchdog lower threshold register 2
byte_offset: 176
fieldset: LTR2
- name: HTR2
description: watchdog higher threshold register 2
byte_offset: 180
fieldset: HTR2
- name: LTR3
description: watchdog lower threshold register 3
byte_offset: 184
fieldset: LTR3
- name: HTR3
description: watchdog higher threshold register 3
byte_offset: 188
fieldset: HTR3
- name: DIFSEL
description: channel differential or single-ended mode selection register
byte_offset: 192
fieldset: DIFSEL
- name: CALFACT
description: calibration factors register
byte_offset: 196
fieldset: CALFACT
- name: CALFACT2
description: Calibration Factor register 2
byte_offset: 200
fieldset: CALFACT2
fieldset/AWD2CR:
description: analog watchdog 2 configuration register
fields:
- name: AWD2CH
description: analog watchdog 2 monitored channel selection
bit_offset: 0
bit_size: 1
array:
len: 20
stride: 1
fieldset/AWD3CR:
description: analog watchdog 3 configuration register
fields:
- name: AWD3CH
description: analog watchdog 3 monitored channel selection
bit_offset: 1
bit_size: 1
array:
len: 20
stride: 1
fieldset/CALFACT:
description: calibration factors register
fields:
- name: CALFACT_S
description: calibration factor in single-ended mode
bit_offset: 0
bit_size: 11
- name: CALFACT_D
description: calibration factor in differential mode
bit_offset: 16
bit_size: 11
fieldset/CALFACT2:
description: Calibration Factor register 2
fields:
- name: LINCALFACT
description: Linearity Calibration Factor
bit_offset: 0
bit_size: 30
fieldset/CFGR:
description: configuration register 1
fields:
- name: DMNGT
description: DMA transfer enable
bit_offset: 0
bit_size: 2
enum: DMNGT
- name: RES
description: data resolution
bit_offset: 2
bit_size: 3
enum: RES
- name: EXTSEL
description: group regular external trigger source
bit_offset: 5
bit_size: 5
- name: EXTEN
description: group regular external trigger polarity
bit_offset: 10
bit_size: 2
enum: EXTEN
- name: OVRMOD
description: group regular overrun configuration
bit_offset: 12
bit_size: 1
enum: OVRMOD
- name: CONT
description: group regular continuous conversion mode
bit_offset: 13
bit_size: 1
- name: AUTDLY
description: low power auto wait
bit_offset: 14
bit_size: 1
- name: DISCEN
description: group regular sequencer discontinuous mode
bit_offset: 16
bit_size: 1
- name: DISCNUM
description: group regular sequencer discontinuous number of ranks
bit_offset: 17
bit_size: 3
- name: JDISCEN
description: group injected sequencer discontinuous mode
bit_offset: 20
bit_size: 1
- name: JQM
description: group injected contexts queue mode
bit_offset: 21
bit_size: 1
enum: JQM
- name: AWD1SGL
description: analog watchdog 1 monitoring a single channel or all channels
bit_offset: 22
bit_size: 1
enum: AWD1SGL
- name: AWD1EN
description: analog watchdog 1 enable on scope group regular
bit_offset: 23
bit_size: 1
- name: JAWD1EN
description: analog watchdog 1 enable on scope group injected
bit_offset: 24
bit_size: 1
- name: JAUTO
description: group injected automatic trigger mode
bit_offset: 25
bit_size: 1
- name: AWD1CH
description: analog watchdog 1 monitored channel selection
bit_offset: 26
bit_size: 5
- name: JQDIS
description: group injected contexts queue disable
bit_offset: 31
bit_size: 1
fieldset/CFGR2:
description: configuration register 2
fields:
- name: ROVSE
description: oversampler enable on scope group regular
bit_offset: 0
bit_size: 1
- name: JOVSE
description: oversampler enable on scope group injected
bit_offset: 1
bit_size: 1
- name: OVSS
description: oversampling shift
bit_offset: 5
bit_size: 4
- name: TROVS
description: oversampling discontinuous mode (triggered mode) for group regular
bit_offset: 9
bit_size: 1
enum: TROVS
- name: ROVSM
description: Regular Oversampling mode
bit_offset: 10
bit_size: 1
enum: ROVSM
- name: RSHIFT1
description: Right-shift data after Offset 1 correction
bit_offset: 11
bit_size: 1
- name: RSHIFT2
description: Right-shift data after Offset 2 correction
bit_offset: 12
bit_size: 1
- name: RSHIFT3
description: Right-shift data after Offset 3 correction
bit_offset: 13
bit_size: 1
- name: RSHIFT4
description: Right-shift data after Offset 4 correction
bit_offset: 14
bit_size: 1
- name: OSVR
description: Oversampling ratio
bit_offset: 16
bit_size: 10
- name: LSHIFT
description: Left shift factor
bit_offset: 28
bit_size: 4
fieldset/CR:
description: control register
fields:
- name: ADEN
description: enable
bit_offset: 0
bit_size: 1
- name: ADDIS
description: disable
bit_offset: 1
bit_size: 1
- name: ADSTART
description: group regular conversion start
bit_offset: 2
bit_size: 1
- name: JADSTART
description: group injected conversion start
bit_offset: 3
bit_size: 1
- name: ADSTP
description: group regular conversion stop
bit_offset: 4
bit_size: 1
enum: ADSTP
- name: JADSTP
description: group injected conversion stop
bit_offset: 5
bit_size: 1
enum: ADSTP
- name: BOOST
description: Boost mode control
bit_offset: 8
bit_size: 2
enum: BOOST
- name: ADCALLIN
description: Linearity calibration
bit_offset: 16
bit_size: 1
- name: LINCALRDYW1
description: Linearity calibration ready Word 1
bit_offset: 22
bit_size: 1
- name: LINCALRDYW2
description: Linearity calibration ready Word 2
bit_offset: 23
bit_size: 1
- name: LINCALRDYW3
description: Linearity calibration ready Word 3
bit_offset: 24
bit_size: 1
- name: LINCALRDYW4
description: Linearity calibration ready Word 4
bit_offset: 25
bit_size: 1
- name: LINCALRDYW5
description: Linearity calibration ready Word 5
bit_offset: 26
bit_size: 1
- name: LINCALRDYW6
description: Linearity calibration ready Word 6
bit_offset: 27
bit_size: 1
- name: ADVREGEN
description: voltage regulator enable
bit_offset: 28
bit_size: 1
- name: DEEPPWD
description: deep power down enable
bit_offset: 29
bit_size: 1
- name: ADCALDIF
description: differential mode for calibration
bit_offset: 30
bit_size: 1
enum: ADCALDIF
- name: ADCAL
description: calibration
bit_offset: 31
bit_size: 1
fieldset/DIFSEL:
description: channel differential or single-ended mode selection register
fields:
- name: DIFSEL
description: channel differential or single-ended mode for channel
bit_offset: 0
bit_size: 1
array:
len: 20
stride: 1
enum: DIFSEL
fieldset/DR:
description: group regular conversion data register
fields:
- name: RDATA
description: group regular conversion data
bit_offset: 0
bit_size: 16
fieldset/HTR1:
description: analog watchdog 2 threshold register
fields:
- name: HTR1
description: analog watchdog 2 threshold low
bit_offset: 0
bit_size: 26
fieldset/HTR2:
description: watchdog higher threshold register 2
fields:
- name: HTR2
description: Analog watchdog 2 higher threshold
bit_offset: 0
bit_size: 26
fieldset/HTR3:
description: watchdog higher threshold register 3
fields:
- name: HTR3
description: Analog watchdog 3 higher threshold
bit_offset: 0
bit_size: 26
fieldset/IER:
description: interrupt enable register
fields:
- name: ADRDYIE
description: ready interrupt
bit_offset: 0
bit_size: 1
- name: EOSMPIE
description: group regular end of sampling interrupt
bit_offset: 1
bit_size: 1
- name: EOCIE
description: group regular end of unitary conversion interrupt
bit_offset: 2
bit_size: 1
- name: EOSIE
description: group regular end of sequence conversions interrupt
bit_offset: 3
bit_size: 1
- name: OVRIE
description: group regular overrun interrupt
bit_offset: 4
bit_size: 1
- name: JEOCIE
description: group injected end of unitary conversion interrupt
bit_offset: 5
bit_size: 1
- name: JEOSIE
description: group injected end of sequence conversions interrupt
bit_offset: 6
bit_size: 1
- name: AWD1IE
description: analog watchdog 1 interrupt
bit_offset: 7
bit_size: 1
- name: AWD2IE
description: analog watchdog 2 interrupt
bit_offset: 8
bit_size: 1
- name: AWD3IE
description: analog watchdog 3 interrupt
bit_offset: 9
bit_size: 1
- name: JQOVFIE
description: group injected contexts queue overflow interrupt
bit_offset: 10
bit_size: 1
fieldset/ISR:
description: interrupt and status register
fields:
- name: ADRDY
description: ready flag
bit_offset: 0
bit_size: 1
- name: EOSMP
description: group regular end of sampling flag
bit_offset: 1
bit_size: 1
- name: EOC
description: group regular end of unitary conversion flag
bit_offset: 2
bit_size: 1
- name: EOS
description: group regular end of sequence conversions flag
bit_offset: 3
bit_size: 1
- name: OVR
description: group regular overrun flag
bit_offset: 4
bit_size: 1
- name: JEOC
description: group injected end of unitary conversion flag
bit_offset: 5
bit_size: 1
- name: JEOS
description: group injected end of sequence conversions flag
bit_offset: 6
bit_size: 1
- name: AWD1
description: analog watchdog 1 flag
bit_offset: 7
bit_size: 1
- name: AWD2
description: analog watchdog 2 flag
bit_offset: 8
bit_size: 1
- name: AWD3
description: analog watchdog 3 flag
bit_offset: 9
bit_size: 1
- name: JQOVF
description: group injected contexts queue overflow flag
bit_offset: 10
bit_size: 1
- name: LDORDY
description: ADC LDO output voltage ready (not always available)
bit_offset: 12
bit_size: 1
fieldset/JDR:
description: group injected sequencer rank 1 register
fields:
- name: JDATA
description: group injected sequencer rank 1 conversion data
bit_offset: 0
bit_size: 32
fieldset/JSQR:
description: group injected sequencer register
fields:
- name: JL
description: group injected sequencer scan length
bit_offset: 0
bit_size: 2
- name: JEXTSEL
description: group injected external trigger source
bit_offset: 2
bit_size: 5
- name: JEXTEN
description: group injected external trigger polarity
bit_offset: 7
bit_size: 2
enum: JEXTEN
- name: JSQ1
description: group injected sequencer rank 1-4
bit_offset: 9
bit_size: 5
array:
len: 4
stride: 6
fieldset/LTR1:
description: analog watchdog 1 threshold register
fields:
- name: LTR1
description: analog watchdog 1 threshold low
bit_offset: 0
bit_size: 26
fieldset/LTR2:
description: watchdog lower threshold register 2
fields:
- name: LTR2
description: Analog watchdog 2 lower threshold
bit_offset: 0
bit_size: 26
fieldset/LTR3:
description: watchdog lower threshold register 3
fields:
- name: LTR3
description: Analog watchdog 3 lower threshold
bit_offset: 0
bit_size: 26
fieldset/OFR:
description: offset number x register
fields:
- name: OFFSET1
description: offset number x offset level
bit_offset: 0
bit_size: 26
- name: OFFSET1_CH
description: offset number x channel selection
bit_offset: 26
bit_size: 5
- name: SSATE
description: Signed saturation enable
bit_offset: 31
bit_size: 1
fieldset/PCSEL:
description: channel preselection register
fields:
- name: PCSEL
description: Channel x (VINP[i]) pre selection
bit_offset: 0
bit_size: 1
array:
len: 20
stride: 1
enum: PCSEL
fieldset/SMPR:
description: sampling time register n
fields:
- name: SMP
description: channel n * 10 + x sampling time
bit_offset: 0
bit_size: 3
array:
len: 10
stride: 3
enum: SAMPLE_TIME
fieldset/SQR1:
description: group regular sequencer ranks register 1
fields:
- name: L
description: L3
bit_offset: 0
bit_size: 4
- name: SQ
description: group regular sequencer rank 1-4
bit_offset: 6
bit_size: 5
array:
len: 4
stride: 6
fieldset/SQR2:
description: group regular sequencer ranks register 2
fields:
- name: SQ
description: group regular sequencer rank 5-9
bit_offset: 0
bit_size: 5
array:
len: 5
stride: 6
fieldset/SQR3:
description: group regular sequencer ranks register 3
fields:
- name: SQ
description: group regular sequencer rank 10-14
bit_offset: 0
bit_size: 5
array:
len: 5
stride: 6
fieldset/SQR4:
description: group regular sequencer ranks register 4
fields:
- name: SQ
description: group regular sequencer rank 15-16
bit_offset: 0
bit_size: 5
array:
len: 2
stride: 6
enum/ADCALDIF:
bit_size: 1
variants:
- name: SingleEnded
description: Calibration for single-ended mode
value: 0
- name: Differential
description: Calibration for differential mode
value: 1
enum/ADSTP:
bit_size: 1
variants:
- name: Stop
description: Stop conversion of channel
value: 1
enum/AWD1SGL:
bit_size: 1
variants:
- name: All
description: Analog watchdog 1 enabled on all channels
value: 0
- name: Single
description: Analog watchdog 1 enabled on single channel selected in AWD1CH
value: 1
enum/BOOST:
bit_size: 2
variants:
- name: LT6_25
description: Boost mode used when clock ≤ 6.25 MHz
value: 0
- name: LT12_5
description: Boost mode used when 6.25 MHz < clock ≤ 12.5 MHz
value: 1
- name: LT25
description: Boost mode used when 12.5 MHz < clock ≤ 25.0 MHz
value: 2
- name: LT50
description: Boost mode used when 25.0 MHz < clock ≤ 50.0 MHz
value: 3
enum/DIFSEL:
bit_size: 1
variants:
- name: SingleEnded
description: Input channel is configured in single-ended mode
value: 0
- name: Differential
description: Input channel is configured in differential mode
value: 1
enum/DMNGT:
bit_size: 2
variants:
- name: DR
description: Store output data in DR only
value: 0
- name: DMA_OneShot
description: DMA One Shot Mode selected
value: 1
- name: DFSDM
description: DFSDM mode selected
value: 2
- name: DMA_Circular
description: DMA Circular Mode selected
value: 3
enum/EXTEN:
bit_size: 2
variants:
- name: Disabled
description: Trigger detection disabled
value: 0
- name: RisingEdge
description: Trigger detection on the rising edge
value: 1
- name: FallingEdge
description: Trigger detection on the falling edge
value: 2
- name: BothEdges
description: Trigger detection on both the rising and falling edges
value: 3
enum/JEXTEN:
bit_size: 2
variants:
- name: Disabled
description: Trigger detection disabled
value: 0
- name: RisingEdge
description: Trigger detection on the rising edge
value: 1
- name: FallingEdge
description: Trigger detection on the falling edge
value: 2
- name: BothEdges
description: Trigger detection on both the rising and falling edges
value: 3
enum/JQM:
bit_size: 1
variants:
- name: Mode0
description: 'JSQR Mode 0: Queue maintains the last written configuration into JSQR'
value: 0
- name: Mode1
description: 'JSQR Mode 1: An empty queue disables software and hardware triggers of the injected sequence'
value: 1
enum/OVRMOD:
bit_size: 1
variants:
- name: Preserve
description: Preserve DR register when an overrun is detected
value: 0
- name: Overwrite
description: Overwrite DR register when an overrun is detected
value: 1
enum/PCSEL:
bit_size: 1
variants:
- name: NotPreselected
description: Input channel x is not pre-selected
value: 0
- name: Preselected
description: Pre-select input channel x
value: 1
enum/RES:
bit_size: 3
variants:
- name: Bits12
description: 12-bit resolution
value: 0
- name: Bits10
description: 10-bit resolution
value: 1
- name: Bits8
description: 8-bit resolution
value: 2
- name: Bits6
description: 6-bit resolution
value: 3
enum/ROVSM:
bit_size: 1
variants:
- name: Continued
description: Oversampling is temporary stopped and continued after injection sequence
value: 0
- name: Resumed
description: Oversampling is aborted and resumed from start after injection sequence
value: 1
enum/SAMPLE_TIME:
bit_size: 3
variants:
- name: Cycles1_5
description: 1.5 clock cycles
value: 0
- name: Cycles2_5
description: 2.5 clock cycles
value: 1
- name: Cycles8_5
description: 8.5 clock cycles
value: 2
- name: Cycles16_5
description: 16.5 clock cycles
value: 3
- name: Cycles32_5
description: 32.5 clock cycles
value: 4
- name: Cycles64_5
description: 64.5 clock cycles
value: 5
- name: Cycles387_5
description: 387.5 clock cycles
value: 6
- name: Cycles810_5
description: 810.5 clock cycles
value: 7
enum/TROVS:
bit_size: 1
variants:
- name: Automatic
description: All oversampled conversions for a channel are run following a trigger
value: 0
- name: Triggered
description: Each oversampled conversion for a channel needs a new trigger
value: 1

View File

@ -209,7 +209,7 @@ impl PeriMatcher {
("STM32WLE.*:ADC:.*", ("adc", "g0", "ADC")), ("STM32WLE.*:ADC:.*", ("adc", "g0", "ADC")),
("STM32G0.*:ADC:.*", ("adc", "g0", "ADC")), ("STM32G0.*:ADC:.*", ("adc", "g0", "ADC")),
("STM32G0.*:ADC_COMMON:.*", ("adccommon", "v3", "ADC_COMMON")), ("STM32G0.*:ADC_COMMON:.*", ("adccommon", "v3", "ADC_COMMON")),
("STM32G4.*:ADC:.*", ("adc", "v4", "ADC")), ("STM32G4.*:ADC:.*", ("adc", "g4", "ADC")),
("STM32G4.*:ADC_COMMON:.*", ("adccommon", "v4", "ADC_COMMON")), ("STM32G4.*:ADC_COMMON:.*", ("adccommon", "v4", "ADC_COMMON")),
(".*:ADC_COMMON:aditf2_v1_1", ("adccommon", "v2", "ADC_COMMON")), (".*:ADC_COMMON:aditf2_v1_1", ("adccommon", "v2", "ADC_COMMON")),
(".*:ADC_COMMON:aditf5_v2_0", ("adccommon", "v3", "ADC_COMMON")), (".*:ADC_COMMON:aditf5_v2_0", ("adccommon", "v3", "ADC_COMMON")),