diff --git a/.golden/stm32f405-isrs/golden b/.golden/stm32f405-isrs/golden
new file mode 100644
--- /dev/null
+++ b/.golden/stm32f405-isrs/golden
@@ -0,0 +1,90 @@
+  | WWDG -- 0 Window Watchdog interrupt
+  | PVD -- 1 PVD through EXTI line detection interrupt
+  | TAMP_STAMP -- 2 Tamper and TimeStamp interrupts through the EXTI line
+  | RTC_WKUP -- 3 RTC Wakeup interrupt through the EXTI line
+  | Undefined4 -- 4 Undefined interrupt (padding only)
+  | RCC -- 5 RCC global interrupt
+  | EXTI0 -- 6 EXTI Line0 interrupt
+  | EXTI1 -- 7 EXTI Line1 interrupt
+  | EXTI2 -- 8 EXTI Line2 interrupt
+  | EXTI3 -- 9 EXTI Line3 interrupt
+  | EXTI4 -- 10 EXTI Line4 interrupt
+  | DMA1_STREAM0 -- 11 DMA1 Stream0 global interrupt
+  | DMA1_STREAM1 -- 12 DMA1 Stream1 global interrupt
+  | DMA1_STREAM2 -- 13 DMA1 Stream2 global interrupt
+  | DMA1_STREAM3 -- 14 DMA1 Stream3 global interrupt
+  | DMA1_STREAM4 -- 15 DMA1 Stream4 global interrupt
+  | DMA1_STREAM5 -- 16 DMA1 Stream5 global interrupt
+  | DMA1_STREAM6 -- 17 DMA1 Stream6 global interrupt
+  | ADC -- 18 ADC1 global interrupt
+  | CAN1_TX -- 19 CAN1 TX interrupts
+  | CAN1_RX0 -- 20 CAN1 RX0 interrupts
+  | CAN1_RX1 -- 21 CAN1 RX1 interrupts
+  | CAN1_SCE -- 22 CAN1 SCE interrupt
+  | EXTI9_5 -- 23 EXTI Line[9:5] interrupts
+  | TIM1_BRK_TIM9 -- 24 TIM1 Break interrupt and TIM9 global interrupt
+  | TIM1_UP_TIM10 -- 25 TIM1 Update interrupt and TIM10 global interrupt
+  | TIM1_TRG_COM_TIM11 -- 26 TIM1 Trigger and Commutation interrupts and TIM11 global interrupt
+  | TIM1_CC -- 27 TIM1 Capture Compare interrupt
+  | TIM2 -- 28 TIM2 global interrupt
+  | TIM3 -- 29 TIM3 global interrupt
+  | TIM4 -- 30 TIM4 global interrupt
+  | I2C1_EV -- 31 I2C1 event interrupt
+  | I2C1_ER -- 32 I2C1 error interrupt
+  | I2C2_EV -- 33 I2C2 event interrupt
+  | I2C2_ER -- 34 I2C2 error interrupt
+  | SPI1 -- 35 SPI1 global interrupt
+  | SPI2 -- 36 SPI2 global interrupt
+  | USART1 -- 37 USART1 global interrupt
+  | USART2 -- 38 USART2 global interrupt
+  | USART3 -- 39 USART3 global interrupt
+  | EXTI15_10 -- 40 EXTI Line[15:10] interrupts
+  | RTC_ALARM -- 41 RTC Alarms (A and B) through EXTI line interrupt
+  | OTG_FS_WKUP -- 42 USB On-The-Go FS Wakeup through EXTI line interrupt
+  | TIM8_BRK_TIM12 -- 43 TIM8 Break interrupt and TIM12 global interrupt
+  | TIM8_UP_TIM13 -- 44 TIM8 Update interrupt and TIM13 global interrupt
+  | TIM8_TRG_COM_TIM14 -- 45 TIM8 Trigger and Commutation interrupts and TIM14 global interrupt
+  | TIM8_CC -- 46 TIM8 Capture Compare interrupt
+  | DMA1_STREAM7 -- 47 DMA1 Stream7 global interrupt
+  | FSMC -- 48 FSMC global interrupt
+  | SDIO -- 49 SDIO global interrupt
+  | TIM5 -- 50 TIM5 global interrupt
+  | SPI3 -- 51 SPI3 global interrupt
+  | UART4 -- 52 UART4 global interrupt
+  | UART5 -- 53 UART5 global interrupt
+  | TIM6_DAC -- 54 TIM6 global interrupt, DAC1 and DAC2 underrun error interrupt
+  | TIM7 -- 55 TIM7 global interrupt
+  | DMA2_STREAM0 -- 56 DMA2 Stream0 global interrupt
+  | DMA2_STREAM1 -- 57 DMA2 Stream1 global interrupt
+  | DMA2_STREAM2 -- 58 DMA2 Stream2 global interrupt
+  | DMA2_STREAM3 -- 59 DMA2 Stream3 global interrupt
+  | DMA2_STREAM4 -- 60 DMA2 Stream4 global interrupt
+  | Undefined61 -- 61 Undefined interrupt (padding only)
+  | Undefined62 -- 62 Undefined interrupt (padding only)
+  | CAN2_TX -- 63 CAN2 TX interrupts
+  | CAN2_RX0 -- 64 CAN2 RX0 interrupts
+  | CAN2_RX1 -- 65 CAN2 RX1 interrupts
+  | CAN2_SCE -- 66 CAN2 SCE interrupt
+  | OTG_FS -- 67 USB On The Go FS global interrupt
+  | DMA2_STREAM5 -- 68 DMA2 Stream5 global interrupt
+  | DMA2_STREAM6 -- 69 DMA2 Stream6 global interrupt
+  | DMA2_STREAM7 -- 70 DMA2 Stream7 global interrupt
+  | USART6 -- 71 USART6 global interrupt
+  | I2C3_EV -- 72 I2C3 event interrupt
+  | I2C3_ER -- 73 I2C3 error interrupt
+  | OTG_HS_EP1_OUT -- 74 USB On The Go HS End Point 1 Out global interrupt
+  | OTG_HS_EP1_IN -- 75 USB On The Go HS End Point 1 In global interrupt
+  | OTG_HS_WKUP -- 76 USB On The Go HS Wakeup through EXTI interrupt
+  | OTG_HS -- 77 USB On The Go HS global interrupt
+  | DCMI -- 78 DCMI global interrupt
+  | CRYP -- 79 CRYP crypto global interrupt
+  | HASH_RNG -- 80 Hash and Rng global interrupt
+  | FPU -- 81 FPU interrupt
+  | Undefined82 -- 82 Undefined interrupt (padding only)
+  | Undefined83 -- 83 Undefined interrupt (padding only)
+  | Undefined84 -- 84 Undefined interrupt (padding only)
+  | Undefined85 -- 85 Undefined interrupt (padding only)
+  | Undefined86 -- 86 Undefined interrupt (padding only)
+  | Undefined87 -- 87 Undefined interrupt (padding only)
+  | LTDC -- 88 LTDC global interrupt
+  | LTDC_ER -- 89 LTDC global error interrupt
diff --git a/.golden/stm32f405-memmap/golden b/.golden/stm32f405-memmap/golden
new file mode 100644
--- /dev/null
+++ b/.golden/stm32f405-memmap/golden
@@ -0,0 +1,170 @@
+tim2_periph_base :: Integer
+tim2_periph_base = 0x40000000
+tim3_periph_base :: Integer
+tim3_periph_base = 0x40000400
+tim4_periph_base :: Integer
+tim4_periph_base = 0x40000800
+tim5_periph_base :: Integer
+tim5_periph_base = 0x40000c00
+tim6_periph_base :: Integer
+tim6_periph_base = 0x40001000
+tim7_periph_base :: Integer
+tim7_periph_base = 0x40001400
+tim12_periph_base :: Integer
+tim12_periph_base = 0x40001800
+tim13_periph_base :: Integer
+tim13_periph_base = 0x40001c00
+tim14_periph_base :: Integer
+tim14_periph_base = 0x40002000
+rtc_periph_base :: Integer
+rtc_periph_base = 0x40002800
+wwdg_periph_base :: Integer
+wwdg_periph_base = 0x40002c00
+iwdg_periph_base :: Integer
+iwdg_periph_base = 0x40003000
+i2s2ext_periph_base :: Integer
+i2s2ext_periph_base = 0x40003400
+spi2_periph_base :: Integer
+spi2_periph_base = 0x40003800
+spi3_periph_base :: Integer
+spi3_periph_base = 0x40003c00
+i2s3ext_periph_base :: Integer
+i2s3ext_periph_base = 0x40004000
+usart2_periph_base :: Integer
+usart2_periph_base = 0x40004400
+usart3_periph_base :: Integer
+usart3_periph_base = 0x40004800
+uart4_periph_base :: Integer
+uart4_periph_base = 0x40004c00
+uart5_periph_base :: Integer
+uart5_periph_base = 0x40005000
+i2c1_periph_base :: Integer
+i2c1_periph_base = 0x40005400
+i2c2_periph_base :: Integer
+i2c2_periph_base = 0x40005800
+i2c3_periph_base :: Integer
+i2c3_periph_base = 0x40005c00
+can1_periph_base :: Integer
+can1_periph_base = 0x40006400
+can2_periph_base :: Integer
+can2_periph_base = 0x40006800
+pwr_periph_base :: Integer
+pwr_periph_base = 0x40007000
+dac_periph_base :: Integer
+dac_periph_base = 0x40007400
+tim1_periph_base :: Integer
+tim1_periph_base = 0x40010000
+tim8_periph_base :: Integer
+tim8_periph_base = 0x40010400
+usart1_periph_base :: Integer
+usart1_periph_base = 0x40011000
+usart6_periph_base :: Integer
+usart6_periph_base = 0x40011400
+adc1_periph_base :: Integer
+adc1_periph_base = 0x40012000
+adc2_periph_base :: Integer
+adc2_periph_base = 0x40012100
+adc3_periph_base :: Integer
+adc3_periph_base = 0x40012200
+adc_common_periph_base :: Integer
+adc_common_periph_base = 0x40012300
+sdio_periph_base :: Integer
+sdio_periph_base = 0x40012c00
+spi1_periph_base :: Integer
+spi1_periph_base = 0x40013000
+spi4_periph_base :: Integer
+spi4_periph_base = 0x40013400
+syscfg_periph_base :: Integer
+syscfg_periph_base = 0x40013800
+exti_periph_base :: Integer
+exti_periph_base = 0x40013c00
+tim9_periph_base :: Integer
+tim9_periph_base = 0x40014000
+tim10_periph_base :: Integer
+tim10_periph_base = 0x40014400
+tim11_periph_base :: Integer
+tim11_periph_base = 0x40014800
+spi5_periph_base :: Integer
+spi5_periph_base = 0x40015000
+spi6_periph_base :: Integer
+spi6_periph_base = 0x40015400
+sai1_periph_base :: Integer
+sai1_periph_base = 0x40015800
+ltdc_periph_base :: Integer
+ltdc_periph_base = 0x40016800
+gpioa_periph_base :: Integer
+gpioa_periph_base = 0x40020000
+gpiob_periph_base :: Integer
+gpiob_periph_base = 0x40020400
+gpioc_periph_base :: Integer
+gpioc_periph_base = 0x40020800
+gpiod_periph_base :: Integer
+gpiod_periph_base = 0x40020c00
+gpioe_periph_base :: Integer
+gpioe_periph_base = 0x40021000
+gpiof_periph_base :: Integer
+gpiof_periph_base = 0x40021400
+gpiog_periph_base :: Integer
+gpiog_periph_base = 0x40021800
+gpioh_periph_base :: Integer
+gpioh_periph_base = 0x40021c00
+gpioi_periph_base :: Integer
+gpioi_periph_base = 0x40022000
+gpioj_periph_base :: Integer
+gpioj_periph_base = 0x40022400
+gpiok_periph_base :: Integer
+gpiok_periph_base = 0x40022800
+crc_periph_base :: Integer
+crc_periph_base = 0x40023000
+rcc_periph_base :: Integer
+rcc_periph_base = 0x40023800
+flash_periph_base :: Integer
+flash_periph_base = 0x40023c00
+dma1_periph_base :: Integer
+dma1_periph_base = 0x40026000
+dma2_periph_base :: Integer
+dma2_periph_base = 0x40026400
+otg_hs_global_periph_base :: Integer
+otg_hs_global_periph_base = 0x40040000
+otg_hs_host_periph_base :: Integer
+otg_hs_host_periph_base = 0x40040400
+otg_hs_device_periph_base :: Integer
+otg_hs_device_periph_base = 0x40040800
+otg_hs_pwrclk_periph_base :: Integer
+otg_hs_pwrclk_periph_base = 0x40040e00
+otg_fs_global_periph_base :: Integer
+otg_fs_global_periph_base = 0x50000000
+otg_fs_host_periph_base :: Integer
+otg_fs_host_periph_base = 0x50000400
+otg_fs_device_periph_base :: Integer
+otg_fs_device_periph_base = 0x50000800
+otg_fs_pwrclk_periph_base :: Integer
+otg_fs_pwrclk_periph_base = 0x50000e00
+dcmi_periph_base :: Integer
+dcmi_periph_base = 0x50050000
+cryp_periph_base :: Integer
+cryp_periph_base = 0x50060000
+hash_periph_base :: Integer
+hash_periph_base = 0x50060400
+rng_periph_base :: Integer
+rng_periph_base = 0x50060800
+fsmc_periph_base :: Integer
+fsmc_periph_base = 0xa0000000
+scb_actrl_periph_base :: Integer
+scb_actrl_periph_base = 0xe000e008
+stk_periph_base :: Integer
+stk_periph_base = 0xe000e010
+nvic_periph_base :: Integer
+nvic_periph_base = 0xe000e100
+scb_periph_base :: Integer
+scb_periph_base = 0xe000ed00
+fpu_cpacr_periph_base :: Integer
+fpu_cpacr_periph_base = 0xe000ed88
+mpu_periph_base :: Integer
+mpu_periph_base = 0xe000ed90
+nvic_stir_periph_base :: Integer
+nvic_stir_periph_base = 0xe000ef00
+fpu_periph_base :: Integer
+fpu_periph_base = 0xe000ef34
+dbgmcu_periph_base :: Integer
+dbgmcu_periph_base = 0xe0042000
diff --git a/.golden/stm32f405/golden b/.golden/stm32f405/golden
new file mode 100644
--- /dev/null
+++ b/.golden/stm32f405/golden
@@ -0,0 +1,8896 @@
+STM32F405
+  
+  TIM2 0x40000000 General purpose timers
+    
+    CR1 0x0 - control register 1
+      _                         :: Bits 22  -- (Reserved)
+      CKD                       :: Bits 2   -- Clock division
+      ARPE                      :: Bit      -- Auto-reload preload enable
+      CMS                       :: Bits 2   -- Center-aligned mode selection
+      DIR                       :: Bit      -- Direction
+      OPM                       :: Bit      -- One-pulse mode
+      URS                       :: Bit      -- Update request source
+      UDIS                      :: Bit      -- Update disable
+      CEN                       :: Bit      -- Counter enable
+
+    CR2 0x4 - control register 2
+      _                         :: Bits 24  -- (Reserved)
+      TI1S                      :: Bit      -- TI1 selection
+      MMS                       :: Bits 3   -- Master mode selection
+      CCDS                      :: Bit      -- Capture/compare DMA selection
+      _                         :: Bits 3   -- (Reserved)
+
+    SMCR 0x8 - slave mode control register
+      _                         :: Bits 16  -- (Reserved)
+      ETP                       :: Bit      -- External trigger polarity
+      ECE                       :: Bit      -- External clock enable
+      ETPS                      :: Bits 2   -- External trigger prescaler
+      ETF                       :: Bits 4   -- External trigger filter
+      MSM                       :: Bit      -- Master/Slave mode
+      TS                        :: Bits 3   -- Trigger selection
+      _                         :: Bit      -- (Reserved)
+      SMS                       :: Bits 3   -- Slave mode selection
+
+    DIER 0xc - DMA/Interrupt enable register
+      _                         :: Bits 17  -- (Reserved)
+      TDE                       :: Bit      -- Trigger DMA request enable
+      _                         :: Bit      -- (Reserved)
+      CC4DE                     :: Bit      -- Capture/Compare 4 DMA request enable
+      CC3DE                     :: Bit      -- Capture/Compare 3 DMA request enable
+      CC2DE                     :: Bit      -- Capture/Compare 2 DMA request enable
+      CC1DE                     :: Bit      -- Capture/Compare 1 DMA request enable
+      UDE                       :: Bit      -- Update DMA request enable
+      _                         :: Bit      -- (Reserved)
+      TIE                       :: Bit      -- Trigger interrupt enable
+      _                         :: Bit      -- (Reserved)
+      CC4IE                     :: Bit      -- Capture/Compare 4 interrupt enable
+      CC3IE                     :: Bit      -- Capture/Compare 3 interrupt enable
+      CC2IE                     :: Bit      -- Capture/Compare 2 interrupt enable
+      CC1IE                     :: Bit      -- Capture/Compare 1 interrupt enable
+      UIE                       :: Bit      -- Update interrupt enable
+
+    SR 0x10 - status register
+      _                         :: Bits 19  -- (Reserved)
+      CC4OF                     :: Bit      -- Capture/Compare 4 overcapture flag
+      CC3OF                     :: Bit      -- Capture/Compare 3 overcapture flag
+      CC2OF                     :: Bit      -- Capture/compare 2 overcapture flag
+      CC1OF                     :: Bit      -- Capture/Compare 1 overcapture flag
+      _                         :: Bits 2   -- (Reserved)
+      TIF                       :: Bit      -- Trigger interrupt flag
+      _                         :: Bit      -- (Reserved)
+      CC4IF                     :: Bit      -- Capture/Compare 4 interrupt flag
+      CC3IF                     :: Bit      -- Capture/Compare 3 interrupt flag
+      CC2IF                     :: Bit      -- Capture/Compare 2 interrupt flag
+      CC1IF                     :: Bit      -- Capture/compare 1 interrupt flag
+      UIF                       :: Bit      -- Update interrupt flag
+
+    EGR 0x14 - event generation register
+      _                         :: Bits 25  -- (Reserved)
+      TG                        :: Bit      -- Trigger generation
+      _                         :: Bit      -- (Reserved)
+      CC4G                      :: Bit      -- Capture/compare 4 generation
+      CC3G                      :: Bit      -- Capture/compare 3 generation
+      CC2G                      :: Bit      -- Capture/compare 2 generation
+      CC1G                      :: Bit      -- Capture/compare 1 generation
+      UG                        :: Bit      -- Update generation
+
+    CCMR1_Output 0x18 - capture/compare mode register 1 (output mode)
+      _                         :: Bits 16  -- (Reserved)
+      OC2CE                     :: Bit      -- OC2CE
+      OC2M                      :: Bits 3   -- OC2M
+      OC2PE                     :: Bit      -- OC2PE
+      OC2FE                     :: Bit      -- OC2FE
+      CC2S                      :: Bits 2   -- CC2S
+      OC1CE                     :: Bit      -- OC1CE
+      OC1M                      :: Bits 3   -- OC1M
+      OC1PE                     :: Bit      -- OC1PE
+      OC1FE                     :: Bit      -- OC1FE
+      CC1S                      :: Bits 2   -- CC1S
+
+    CCMR1_Input 0x18 - capture/compare mode register 1 (input mode)
+      _                         :: Bits 16  -- (Reserved)
+      IC2F                      :: Bits 4   -- Input capture 2 filter
+      IC2PSC                    :: Bits 2   -- Input capture 2 prescaler
+      CC2S                      :: Bits 2   -- Capture/Compare 2 selection
+      IC1F                      :: Bits 4   -- Input capture 1 filter
+      IC1PSC                    :: Bits 2   -- Input capture 1 prescaler
+      CC1S                      :: Bits 2   -- Capture/Compare 1 selection
+
+    CCMR2_Output 0x1c - capture/compare mode register 2 (output mode)
+      _                         :: Bits 16  -- (Reserved)
+      OC4CE                     :: Bit      -- O24CE
+      OC4M                      :: Bits 3   -- OC4M
+      OC4PE                     :: Bit      -- OC4PE
+      OC4FE                     :: Bit      -- OC4FE
+      CC4S                      :: Bits 2   -- CC4S
+      OC3CE                     :: Bit      -- OC3CE
+      OC3M                      :: Bits 3   -- OC3M
+      OC3PE                     :: Bit      -- OC3PE
+      OC3FE                     :: Bit      -- OC3FE
+      CC3S                      :: Bits 2   -- CC3S
+
+    CCMR2_Input 0x1c - capture/compare mode register 2 (input mode)
+      _                         :: Bits 16  -- (Reserved)
+      IC4F                      :: Bits 4   -- Input capture 4 filter
+      IC4PSC                    :: Bits 2   -- Input capture 4 prescaler
+      CC4S                      :: Bits 2   -- Capture/Compare 4 selection
+      IC3F                      :: Bits 4   -- Input capture 3 filter
+      IC3PSC                    :: Bits 2   -- Input capture 3 prescaler
+      CC3S                      :: Bits 2   -- Capture/compare 3 selection
+
+    CCER 0x20 - capture/compare enable register
+      _                         :: Bits 16  -- (Reserved)
+      CC4NP                     :: Bit      -- Capture/Compare 4 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC4P                      :: Bit      -- Capture/Compare 3 output Polarity
+      CC4E                      :: Bit      -- Capture/Compare 4 output enable
+      CC3NP                     :: Bit      -- Capture/Compare 3 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC3P                      :: Bit      -- Capture/Compare 3 output Polarity
+      CC3E                      :: Bit      -- Capture/Compare 3 output enable
+      CC2NP                     :: Bit      -- Capture/Compare 2 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC2P                      :: Bit      -- Capture/Compare 2 output Polarity
+      CC2E                      :: Bit      -- Capture/Compare 2 output enable
+      CC1NP                     :: Bit      -- Capture/Compare 1 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC1P                      :: Bit      -- Capture/Compare 1 output Polarity
+      CC1E                      :: Bit      -- Capture/Compare 1 output enable
+
+    CNT 0x24 - counter
+      CNT                       :: Bits 32  -- Counter value
+
+    PSC 0x28 - prescaler
+      _                         :: Bits 16  -- (Reserved)
+      PSC                       :: Bits 16  -- Prescaler value
+
+    ARR 0x2c - auto-reload register
+      ARR                       :: Bits 32  -- Auto-reload value
+
+    CCR1 0x34 - capture/compare register
+      CCR                       :: Bits 32  -- Capture/Compare value
+
+    CCR2 0x38 - capture/compare register
+      CCR                       :: Bits 32  -- Capture/Compare value
+
+    CCR3 0x3c - capture/compare register
+      CCR                       :: Bits 32  -- Capture/Compare value
+
+    CCR4 0x40 - capture/compare register
+      CCR                       :: Bits 32  -- Capture/Compare value
+
+    DCR 0x48 - DMA control register
+      _                         :: Bits 19  -- (Reserved)
+      DBL                       :: Bits 5   -- DMA burst length
+      _                         :: Bits 3   -- (Reserved)
+      DBA                       :: Bits 5   -- DMA base address
+
+    DMAR 0x4c - DMA address for full transfer
+      _                         :: Bits 16  -- (Reserved)
+      DMAB                      :: Bits 16  -- DMA register for burst accesses
+
+    OR 0x50 - TIM5 option register
+      _                         :: Bits 20  -- (Reserved)
+      ITR1_RMP                  :: Bits 2   -- Timer Input 4 remap
+      _                         :: Bits 10  -- (Reserved)
+
+  TIM3 0x40000400 General purpose timers
+    
+    CR1 0x0 - control register 1
+      _                         :: Bits 22  -- (Reserved)
+      CKD                       :: Bits 2   -- Clock division
+      ARPE                      :: Bit      -- Auto-reload preload enable
+      CMS                       :: Bits 2   -- Center-aligned mode selection
+      DIR                       :: Bit      -- Direction
+      OPM                       :: Bit      -- One-pulse mode
+      URS                       :: Bit      -- Update request source
+      UDIS                      :: Bit      -- Update disable
+      CEN                       :: Bit      -- Counter enable
+
+    CR2 0x4 - control register 2
+      _                         :: Bits 24  -- (Reserved)
+      TI1S                      :: Bit      -- TI1 selection
+      MMS                       :: Bits 3   -- Master mode selection
+      CCDS                      :: Bit      -- Capture/compare DMA selection
+      _                         :: Bits 3   -- (Reserved)
+
+    SMCR 0x8 - slave mode control register
+      _                         :: Bits 16  -- (Reserved)
+      ETP                       :: Bit      -- External trigger polarity
+      ECE                       :: Bit      -- External clock enable
+      ETPS                      :: Bits 2   -- External trigger prescaler
+      ETF                       :: Bits 4   -- External trigger filter
+      MSM                       :: Bit      -- Master/Slave mode
+      TS                        :: Bits 3   -- Trigger selection
+      _                         :: Bit      -- (Reserved)
+      SMS                       :: Bits 3   -- Slave mode selection
+
+    DIER 0xc - DMA/Interrupt enable register
+      _                         :: Bits 17  -- (Reserved)
+      TDE                       :: Bit      -- Trigger DMA request enable
+      _                         :: Bit      -- (Reserved)
+      CC4DE                     :: Bit      -- Capture/Compare 4 DMA request enable
+      CC3DE                     :: Bit      -- Capture/Compare 3 DMA request enable
+      CC2DE                     :: Bit      -- Capture/Compare 2 DMA request enable
+      CC1DE                     :: Bit      -- Capture/Compare 1 DMA request enable
+      UDE                       :: Bit      -- Update DMA request enable
+      _                         :: Bit      -- (Reserved)
+      TIE                       :: Bit      -- Trigger interrupt enable
+      _                         :: Bit      -- (Reserved)
+      CC4IE                     :: Bit      -- Capture/Compare 4 interrupt enable
+      CC3IE                     :: Bit      -- Capture/Compare 3 interrupt enable
+      CC2IE                     :: Bit      -- Capture/Compare 2 interrupt enable
+      CC1IE                     :: Bit      -- Capture/Compare 1 interrupt enable
+      UIE                       :: Bit      -- Update interrupt enable
+
+    SR 0x10 - status register
+      _                         :: Bits 19  -- (Reserved)
+      CC4OF                     :: Bit      -- Capture/Compare 4 overcapture flag
+      CC3OF                     :: Bit      -- Capture/Compare 3 overcapture flag
+      CC2OF                     :: Bit      -- Capture/compare 2 overcapture flag
+      CC1OF                     :: Bit      -- Capture/Compare 1 overcapture flag
+      _                         :: Bits 2   -- (Reserved)
+      TIF                       :: Bit      -- Trigger interrupt flag
+      _                         :: Bit      -- (Reserved)
+      CC4IF                     :: Bit      -- Capture/Compare 4 interrupt flag
+      CC3IF                     :: Bit      -- Capture/Compare 3 interrupt flag
+      CC2IF                     :: Bit      -- Capture/Compare 2 interrupt flag
+      CC1IF                     :: Bit      -- Capture/compare 1 interrupt flag
+      UIF                       :: Bit      -- Update interrupt flag
+
+    EGR 0x14 - event generation register
+      _                         :: Bits 25  -- (Reserved)
+      TG                        :: Bit      -- Trigger generation
+      _                         :: Bit      -- (Reserved)
+      CC4G                      :: Bit      -- Capture/compare 4 generation
+      CC3G                      :: Bit      -- Capture/compare 3 generation
+      CC2G                      :: Bit      -- Capture/compare 2 generation
+      CC1G                      :: Bit      -- Capture/compare 1 generation
+      UG                        :: Bit      -- Update generation
+
+    CCMR1_Output 0x18 - capture/compare mode register 1 (output mode)
+      _                         :: Bits 16  -- (Reserved)
+      OC2CE                     :: Bit      -- OC2CE
+      OC2M                      :: Bits 3   -- OC2M
+      OC2PE                     :: Bit      -- OC2PE
+      OC2FE                     :: Bit      -- OC2FE
+      CC2S                      :: Bits 2   -- CC2S
+      OC1CE                     :: Bit      -- OC1CE
+      OC1M                      :: Bits 3   -- OC1M
+      OC1PE                     :: Bit      -- OC1PE
+      OC1FE                     :: Bit      -- OC1FE
+      CC1S                      :: Bits 2   -- CC1S
+
+    CCMR1_Input 0x18 - capture/compare mode register 1 (input mode)
+      _                         :: Bits 16  -- (Reserved)
+      IC2F                      :: Bits 4   -- Input capture 2 filter
+      IC2PSC                    :: Bits 2   -- Input capture 2 prescaler
+      CC2S                      :: Bits 2   -- Capture/Compare 2 selection
+      IC1F                      :: Bits 4   -- Input capture 1 filter
+      IC1PSC                    :: Bits 2   -- Input capture 1 prescaler
+      CC1S                      :: Bits 2   -- Capture/Compare 1 selection
+
+    CCMR2_Output 0x1c - capture/compare mode register 2 (output mode)
+      _                         :: Bits 16  -- (Reserved)
+      OC4CE                     :: Bit      -- O24CE
+      OC4M                      :: Bits 3   -- OC4M
+      OC4PE                     :: Bit      -- OC4PE
+      OC4FE                     :: Bit      -- OC4FE
+      CC4S                      :: Bits 2   -- CC4S
+      OC3CE                     :: Bit      -- OC3CE
+      OC3M                      :: Bits 3   -- OC3M
+      OC3PE                     :: Bit      -- OC3PE
+      OC3FE                     :: Bit      -- OC3FE
+      CC3S                      :: Bits 2   -- CC3S
+
+    CCMR2_Input 0x1c - capture/compare mode register 2 (input mode)
+      _                         :: Bits 16  -- (Reserved)
+      IC4F                      :: Bits 4   -- Input capture 4 filter
+      IC4PSC                    :: Bits 2   -- Input capture 4 prescaler
+      CC4S                      :: Bits 2   -- Capture/Compare 4 selection
+      IC3F                      :: Bits 4   -- Input capture 3 filter
+      IC3PSC                    :: Bits 2   -- Input capture 3 prescaler
+      CC3S                      :: Bits 2   -- Capture/compare 3 selection
+
+    CCER 0x20 - capture/compare enable register
+      _                         :: Bits 16  -- (Reserved)
+      CC4NP                     :: Bit      -- Capture/Compare 4 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC4P                      :: Bit      -- Capture/Compare 3 output Polarity
+      CC4E                      :: Bit      -- Capture/Compare 4 output enable
+      CC3NP                     :: Bit      -- Capture/Compare 3 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC3P                      :: Bit      -- Capture/Compare 3 output Polarity
+      CC3E                      :: Bit      -- Capture/Compare 3 output enable
+      CC2NP                     :: Bit      -- Capture/Compare 2 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC2P                      :: Bit      -- Capture/Compare 2 output Polarity
+      CC2E                      :: Bit      -- Capture/Compare 2 output enable
+      CC1NP                     :: Bit      -- Capture/Compare 1 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC1P                      :: Bit      -- Capture/Compare 1 output Polarity
+      CC1E                      :: Bit      -- Capture/Compare 1 output enable
+
+    CNT 0x24 - counter
+      _                         :: Bits 16  -- (Reserved)
+      CNT                       :: Bits 16  -- Counter value
+
+    PSC 0x28 - prescaler
+      _                         :: Bits 16  -- (Reserved)
+      PSC                       :: Bits 16  -- Prescaler value
+
+    ARR 0x2c - auto-reload register
+      _                         :: Bits 16  -- (Reserved)
+      ARR                       :: Bits 16  -- Auto-reload value
+
+    CCR1 0x34 - capture/compare register
+      _                         :: Bits 16  -- (Reserved)
+      CCR                       :: Bits 16  -- Capture/Compare value
+
+    CCR2 0x38 - capture/compare register
+      _                         :: Bits 16  -- (Reserved)
+      CCR                       :: Bits 16  -- Capture/Compare value
+
+    CCR3 0x3c - capture/compare register
+      _                         :: Bits 16  -- (Reserved)
+      CCR                       :: Bits 16  -- Capture/Compare value
+
+    CCR4 0x40 - capture/compare register
+      _                         :: Bits 16  -- (Reserved)
+      CCR                       :: Bits 16  -- Capture/Compare value
+
+    DCR 0x48 - DMA control register
+      _                         :: Bits 19  -- (Reserved)
+      DBL                       :: Bits 5   -- DMA burst length
+      _                         :: Bits 3   -- (Reserved)
+      DBA                       :: Bits 5   -- DMA base address
+
+    DMAR 0x4c - DMA address for full transfer
+      _                         :: Bits 16  -- (Reserved)
+      DMAB                      :: Bits 16  -- DMA register for burst accesses
+
+  TIM4 0x40000800 
+      
+      Derived from TIM3
+
+  TIM5 0x40000c00 General-purpose-timers
+    
+    CR1 0x0 - control register 1
+      _                         :: Bits 22  -- (Reserved)
+      CKD                       :: Bits 2   -- Clock division
+      ARPE                      :: Bit      -- Auto-reload preload enable
+      CMS                       :: Bits 2   -- Center-aligned mode selection
+      DIR                       :: Bit      -- Direction
+      OPM                       :: Bit      -- One-pulse mode
+      URS                       :: Bit      -- Update request source
+      UDIS                      :: Bit      -- Update disable
+      CEN                       :: Bit      -- Counter enable
+
+    CR2 0x4 - control register 2
+      _                         :: Bits 24  -- (Reserved)
+      TI1S                      :: Bit      -- TI1 selection
+      MMS                       :: Bits 3   -- Master mode selection
+      CCDS                      :: Bit      -- Capture/compare DMA selection
+      _                         :: Bits 3   -- (Reserved)
+
+    SMCR 0x8 - slave mode control register
+      _                         :: Bits 16  -- (Reserved)
+      ETP                       :: Bit      -- External trigger polarity
+      ECE                       :: Bit      -- External clock enable
+      ETPS                      :: Bits 2   -- External trigger prescaler
+      ETF                       :: Bits 4   -- External trigger filter
+      MSM                       :: Bit      -- Master/Slave mode
+      TS                        :: Bits 3   -- Trigger selection
+      _                         :: Bit      -- (Reserved)
+      SMS                       :: Bits 3   -- Slave mode selection
+
+    DIER 0xc - DMA/Interrupt enable register
+      _                         :: Bits 17  -- (Reserved)
+      TDE                       :: Bit      -- Trigger DMA request enable
+      _                         :: Bit      -- (Reserved)
+      CC4DE                     :: Bit      -- Capture/Compare 4 DMA request enable
+      CC3DE                     :: Bit      -- Capture/Compare 3 DMA request enable
+      CC2DE                     :: Bit      -- Capture/Compare 2 DMA request enable
+      CC1DE                     :: Bit      -- Capture/Compare 1 DMA request enable
+      UDE                       :: Bit      -- Update DMA request enable
+      _                         :: Bit      -- (Reserved)
+      TIE                       :: Bit      -- Trigger interrupt enable
+      _                         :: Bit      -- (Reserved)
+      CC4IE                     :: Bit      -- Capture/Compare 4 interrupt enable
+      CC3IE                     :: Bit      -- Capture/Compare 3 interrupt enable
+      CC2IE                     :: Bit      -- Capture/Compare 2 interrupt enable
+      CC1IE                     :: Bit      -- Capture/Compare 1 interrupt enable
+      UIE                       :: Bit      -- Update interrupt enable
+
+    SR 0x10 - status register
+      _                         :: Bits 19  -- (Reserved)
+      CC4OF                     :: Bit      -- Capture/Compare 4 overcapture flag
+      CC3OF                     :: Bit      -- Capture/Compare 3 overcapture flag
+      CC2OF                     :: Bit      -- Capture/compare 2 overcapture flag
+      CC1OF                     :: Bit      -- Capture/Compare 1 overcapture flag
+      _                         :: Bits 2   -- (Reserved)
+      TIF                       :: Bit      -- Trigger interrupt flag
+      _                         :: Bit      -- (Reserved)
+      CC4IF                     :: Bit      -- Capture/Compare 4 interrupt flag
+      CC3IF                     :: Bit      -- Capture/Compare 3 interrupt flag
+      CC2IF                     :: Bit      -- Capture/Compare 2 interrupt flag
+      CC1IF                     :: Bit      -- Capture/compare 1 interrupt flag
+      UIF                       :: Bit      -- Update interrupt flag
+
+    EGR 0x14 - event generation register
+      _                         :: Bits 25  -- (Reserved)
+      TG                        :: Bit      -- Trigger generation
+      _                         :: Bit      -- (Reserved)
+      CC4G                      :: Bit      -- Capture/compare 4 generation
+      CC3G                      :: Bit      -- Capture/compare 3 generation
+      CC2G                      :: Bit      -- Capture/compare 2 generation
+      CC1G                      :: Bit      -- Capture/compare 1 generation
+      UG                        :: Bit      -- Update generation
+
+    CCMR1_Output 0x18 - capture/compare mode register 1 (output mode)
+      _                         :: Bits 16  -- (Reserved)
+      OC2CE                     :: Bit      -- OC2CE
+      OC2M                      :: Bits 3   -- OC2M
+      OC2PE                     :: Bit      -- OC2PE
+      OC2FE                     :: Bit      -- OC2FE
+      CC2S                      :: Bits 2   -- CC2S
+      OC1CE                     :: Bit      -- OC1CE
+      OC1M                      :: Bits 3   -- OC1M
+      OC1PE                     :: Bit      -- OC1PE
+      OC1FE                     :: Bit      -- OC1FE
+      CC1S                      :: Bits 2   -- CC1S
+
+    CCMR1_Input 0x18 - capture/compare mode register 1 (input mode)
+      _                         :: Bits 16  -- (Reserved)
+      IC2F                      :: Bits 4   -- Input capture 2 filter
+      IC2PSC                    :: Bits 2   -- Input capture 2 prescaler
+      CC2S                      :: Bits 2   -- Capture/Compare 2 selection
+      IC1F                      :: Bits 4   -- Input capture 1 filter
+      IC1PSC                    :: Bits 2   -- Input capture 1 prescaler
+      CC1S                      :: Bits 2   -- Capture/Compare 1 selection
+
+    CCMR2_Output 0x1c - capture/compare mode register 2 (output mode)
+      _                         :: Bits 16  -- (Reserved)
+      OC4CE                     :: Bit      -- O24CE
+      OC4M                      :: Bits 3   -- OC4M
+      OC4PE                     :: Bit      -- OC4PE
+      OC4FE                     :: Bit      -- OC4FE
+      CC4S                      :: Bits 2   -- CC4S
+      OC3CE                     :: Bit      -- OC3CE
+      OC3M                      :: Bits 3   -- OC3M
+      OC3PE                     :: Bit      -- OC3PE
+      OC3FE                     :: Bit      -- OC3FE
+      CC3S                      :: Bits 2   -- CC3S
+
+    CCMR2_Input 0x1c - capture/compare mode register 2 (input mode)
+      _                         :: Bits 16  -- (Reserved)
+      IC4F                      :: Bits 4   -- Input capture 4 filter
+      IC4PSC                    :: Bits 2   -- Input capture 4 prescaler
+      CC4S                      :: Bits 2   -- Capture/Compare 4 selection
+      IC3F                      :: Bits 4   -- Input capture 3 filter
+      IC3PSC                    :: Bits 2   -- Input capture 3 prescaler
+      CC3S                      :: Bits 2   -- Capture/compare 3 selection
+
+    CCER 0x20 - capture/compare enable register
+      _                         :: Bits 16  -- (Reserved)
+      CC4NP                     :: Bit      -- Capture/Compare 4 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC4P                      :: Bit      -- Capture/Compare 3 output Polarity
+      CC4E                      :: Bit      -- Capture/Compare 4 output enable
+      CC3NP                     :: Bit      -- Capture/Compare 3 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC3P                      :: Bit      -- Capture/Compare 3 output Polarity
+      CC3E                      :: Bit      -- Capture/Compare 3 output enable
+      CC2NP                     :: Bit      -- Capture/Compare 2 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC2P                      :: Bit      -- Capture/Compare 2 output Polarity
+      CC2E                      :: Bit      -- Capture/Compare 2 output enable
+      CC1NP                     :: Bit      -- Capture/Compare 1 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC1P                      :: Bit      -- Capture/Compare 1 output Polarity
+      CC1E                      :: Bit      -- Capture/Compare 1 output enable
+
+    CNT 0x24 - counter
+      CNT                       :: Bits 32  -- Counter value
+
+    PSC 0x28 - prescaler
+      _                         :: Bits 16  -- (Reserved)
+      PSC                       :: Bits 16  -- Prescaler value
+
+    ARR 0x2c - auto-reload register
+      ARR                       :: Bits 32  -- Auto-reload value
+
+    CCR1 0x34 - capture/compare register
+      CCR                       :: Bits 32  -- Capture/Compare value
+
+    CCR2 0x38 - capture/compare register
+      CCR                       :: Bits 32  -- Capture/Compare value
+
+    CCR3 0x3c - capture/compare register
+      CCR                       :: Bits 32  -- Capture/Compare value
+
+    CCR4 0x40 - capture/compare register
+      CCR                       :: Bits 32  -- Capture/Compare value
+
+    DCR 0x48 - DMA control register
+      _                         :: Bits 19  -- (Reserved)
+      DBL                       :: Bits 5   -- DMA burst length
+      _                         :: Bits 3   -- (Reserved)
+      DBA                       :: Bits 5   -- DMA base address
+
+    DMAR 0x4c - DMA address for full transfer
+      _                         :: Bits 16  -- (Reserved)
+      DMAB                      :: Bits 16  -- DMA register for burst accesses
+
+    OR 0x50 - TIM5 option register
+      _                         :: Bits 24  -- (Reserved)
+      IT4_RMP                   :: Bits 2   -- Timer Input 4 remap
+      _                         :: Bits 6   -- (Reserved)
+
+  TIM6 0x40001000 Basic timers
+    
+    CR1 0x0 - control register 1
+      _                         :: Bits 24  -- (Reserved)
+      ARPE                      :: Bit      -- Auto-reload preload enable
+      _                         :: Bits 3   -- (Reserved)
+      OPM                       :: Bit      -- One-pulse mode
+      URS                       :: Bit      -- Update request source
+      UDIS                      :: Bit      -- Update disable
+      CEN                       :: Bit      -- Counter enable
+
+    CR2 0x4 - control register 2
+      _                         :: Bits 25  -- (Reserved)
+      MMS                       :: Bits 3   -- Master mode selection
+      _                         :: Bits 4   -- (Reserved)
+
+    DIER 0xc - DMA/Interrupt enable register
+      _                         :: Bits 23  -- (Reserved)
+      UDE                       :: Bit      -- Update DMA request enable
+      _                         :: Bits 7   -- (Reserved)
+      UIE                       :: Bit      -- Update interrupt enable
+
+    SR 0x10 - status register
+      _                         :: Bits 31  -- (Reserved)
+      UIF                       :: Bit      -- Update interrupt flag
+
+    EGR 0x14 - event generation register
+      _                         :: Bits 31  -- (Reserved)
+      UG                        :: Bit      -- Update generation
+
+    CNT 0x24 - counter
+      _                         :: Bits 16  -- (Reserved)
+      CNT                       :: Bits 16  -- Low counter value
+
+    PSC 0x28 - prescaler
+      _                         :: Bits 16  -- (Reserved)
+      PSC                       :: Bits 16  -- Prescaler value
+
+    ARR 0x2c - auto-reload register
+      _                         :: Bits 16  -- (Reserved)
+      ARR                       :: Bits 16  -- Low Auto-reload value
+
+  TIM7 0x40001400 
+      
+      Derived from TIM6
+
+  TIM12 0x40001800 
+      
+      Derived from TIM9
+
+  TIM13 0x40001c00 
+      
+      Derived from TIM10
+
+  TIM14 0x40002000 
+      
+      Derived from TIM10
+
+  RTC 0x40002800 Real-time clock
+    
+    TR 0x0 - time register
+      _                         :: Bits 9   -- (Reserved)
+      PM                        :: Bit      -- AM/PM notation
+      HT                        :: Bits 2   -- Hour tens in BCD format
+      HU                        :: Bits 4   -- Hour units in BCD format
+      _                         :: Bit      -- (Reserved)
+      MNT                       :: Bits 3   -- Minute tens in BCD format
+      MNU                       :: Bits 4   -- Minute units in BCD format
+      _                         :: Bit      -- (Reserved)
+      ST                        :: Bits 3   -- Second tens in BCD format
+      SU                        :: Bits 4   -- Second units in BCD format
+
+    DR 0x4 - date register
+      _                         :: Bits 8   -- (Reserved)
+      YT                        :: Bits 4   -- Year tens in BCD format
+      YU                        :: Bits 4   -- Year units in BCD format
+      WDU                       :: Bits 3   -- Week day units
+      MT                        :: Bit      -- Month tens in BCD format
+      MU                        :: Bits 4   -- Month units in BCD format
+      _                         :: Bits 2   -- (Reserved)
+      DT                        :: Bits 2   -- Date tens in BCD format
+      DU                        :: Bits 4   -- Date units in BCD format
+
+    CR 0x8 - control register
+      _                         :: Bits 8   -- (Reserved)
+      COE                       :: Bit      -- Calibration output enable
+      OSEL                      :: Bits 2   -- Output selection
+      POL                       :: Bit      -- Output polarity
+      COSEL                     :: Bit      -- Calibration output selection
+      BKP                       :: Bit      -- Backup
+      SUB1H                     :: Bit      -- Subtract 1 hour (winter time change)
+      ADD1H                     :: Bit      -- Add 1 hour (summer time change)
+      TSIE                      :: Bit      -- Time-stamp interrupt enable
+      WUTIE                     :: Bit      -- Wakeup timer interrupt enable
+      ALRBIE                    :: Bit      -- Alarm B interrupt enable
+      ALRAIE                    :: Bit      -- Alarm A interrupt enable
+      TSE                       :: Bit      -- Time stamp enable
+      WUTE                      :: Bit      -- Wakeup timer enable
+      ALRBE                     :: Bit      -- Alarm B enable
+      ALRAE                     :: Bit      -- Alarm A enable
+      DCE                       :: Bit      -- Coarse digital calibration enable
+      FMT                       :: Bit      -- Hour format
+      BYPSHAD                   :: Bit      -- Bypass the shadow registers
+      REFCKON                   :: Bit      -- Reference clock detection enable (50 or 60 Hz)
+      TSEDGE                    :: Bit      -- Time-stamp event active edge
+      WUCKSEL                   :: Bits 3   -- Wakeup clock selection
+
+    ISR 0xc - initialization and status register
+      _                         :: Bits 15  -- (Reserved)
+      RECALPF                   :: Bit      -- Recalibration pending Flag
+      _                         :: Bit      -- (Reserved)
+      TAMP2F                    :: Bit      -- TAMPER2 detection flag
+      TAMP1F                    :: Bit      -- Tamper detection flag
+      TSOVF                     :: Bit      -- Time-stamp overflow flag
+      TSF                       :: Bit      -- Time-stamp flag
+      WUTF                      :: Bit      -- Wakeup timer flag
+      ALRBF                     :: Bit      -- Alarm B flag
+      ALRAF                     :: Bit      -- Alarm A flag
+      INIT                      :: Bit      -- Initialization mode
+      INITF                     :: Bit      -- Initialization flag
+      RSF                       :: Bit      -- Registers synchronization flag
+      INITS                     :: Bit      -- Initialization status flag
+      SHPF                      :: Bit      -- Shift operation pending
+      WUTWF                     :: Bit      -- Wakeup timer write flag
+      ALRBWF                    :: Bit      -- Alarm B write flag
+      ALRAWF                    :: Bit      -- Alarm A write flag
+
+    PRER 0x10 - prescaler register
+      _                         :: Bits 9   -- (Reserved)
+      PREDIV_A                  :: Bits 7   -- Asynchronous prescaler factor
+      _                         :: Bit      -- (Reserved)
+      PREDIV_S                  :: Bits 15  -- Synchronous prescaler factor
+
+    WUTR 0x14 - wakeup timer register
+      _                         :: Bits 16  -- (Reserved)
+      WUT                       :: Bits 16  -- Wakeup auto-reload value bits
+
+    CALIBR 0x18 - calibration register
+      _                         :: Bits 24  -- (Reserved)
+      DCS                       :: Bit      -- Digital calibration sign
+      _                         :: Bits 2   -- (Reserved)
+      DC                        :: Bits 5   -- Digital calibration
+
+    ALRMAR 0x1c - Alarm A register
+      MSK4                      :: Bit      -- Alarm date mask
+      WDSEL                     :: Bit      -- Week day selection
+      DT                        :: Bits 2   -- Date tens in BCD format
+      DU                        :: Bits 4   -- Date units or day in BCD format
+      MSK3                      :: Bit      -- Alarm hours mask
+      PM                        :: Bit      -- AM/PM notation
+      HT                        :: Bits 2   -- Hour tens in BCD format
+      HU                        :: Bits 4   -- Hour units in BCD format
+      MSK2                      :: Bit      -- Alarm minutes mask
+      MNT                       :: Bits 3   -- Minute tens in BCD format
+      MNU                       :: Bits 4   -- Minute units in BCD format
+      MSK1                      :: Bit      -- Alarm seconds mask
+      ST                        :: Bits 3   -- Second tens in BCD format
+      SU                        :: Bits 4   -- Second units in BCD format
+
+    ALRMBR 0x20 - Alarm B register
+      MSK4                      :: Bit      -- Alarm date mask
+      WDSEL                     :: Bit      -- Week day selection
+      DT                        :: Bits 2   -- Date tens in BCD format
+      DU                        :: Bits 4   -- Date units or day in BCD format
+      MSK3                      :: Bit      -- Alarm hours mask
+      PM                        :: Bit      -- AM/PM notation
+      HT                        :: Bits 2   -- Hour tens in BCD format
+      HU                        :: Bits 4   -- Hour units in BCD format
+      MSK2                      :: Bit      -- Alarm minutes mask
+      MNT                       :: Bits 3   -- Minute tens in BCD format
+      MNU                       :: Bits 4   -- Minute units in BCD format
+      MSK1                      :: Bit      -- Alarm seconds mask
+      ST                        :: Bits 3   -- Second tens in BCD format
+      SU                        :: Bits 4   -- Second units in BCD format
+
+    WPR 0x24 - write protection register
+      _                         :: Bits 24  -- (Reserved)
+      KEY                       :: Bits 8   -- Write protection key
+
+    SSR 0x28 - sub second register
+      _                         :: Bits 16  -- (Reserved)
+      SS                        :: Bits 16  -- Sub second value
+
+    SHIFTR 0x2c - shift control register
+      ADD1S                     :: Bit      -- Add one second
+      _                         :: Bits 16  -- (Reserved)
+      SUBFS                     :: Bits 15  -- Subtract a fraction of a second
+
+    CALR 0x3c - calibration register
+      _                         :: Bits 16  -- (Reserved)
+      CALP                      :: Bit      -- Increase frequency of RTC by 488.5 ppm
+      CALW8                     :: Bit      -- Use an 8-second calibration cycle period
+      CALW16                    :: Bit      -- Use a 16-second calibration cycle period
+      _                         :: Bits 4   -- (Reserved)
+      CALM                      :: Bits 9   -- Calibration minus
+
+    TAFCR 0x40 - tamper and alternate function configuration register
+      _                         :: Bits 13  -- (Reserved)
+      ALARMOUTTYPE              :: Bit      -- AFO_ALARM output type
+      TSINSEL                   :: Bit      -- TIMESTAMP mapping
+      TAMP1INSEL                :: Bit      -- TAMPER1 mapping
+      TAMPPUDIS                 :: Bit      -- TAMPER pull-up disable
+      TAMPPRCH                  :: Bits 2   -- Tamper precharge duration
+      TAMPFLT                   :: Bits 2   -- Tamper filter count
+      TAMPFREQ                  :: Bits 3   -- Tamper sampling frequency
+      TAMPTS                    :: Bit      -- Activate timestamp on tamper detection event
+      _                         :: Bits 2   -- (Reserved)
+      TAMP2TRG                  :: Bit      -- Active level for tamper 2
+      TAMP2E                    :: Bit      -- Tamper 2 detection enable
+      TAMPIE                    :: Bit      -- Tamper interrupt enable
+      TAMP1TRG                  :: Bit      -- Active level for tamper 1
+      TAMP1E                    :: Bit      -- Tamper 1 detection enable
+
+    ALRMASSR 0x44 - Alarm A sub-second register
+      _                         :: Bits 4   -- (Reserved)
+      MASKSS                    :: Bits 4   -- Mask the most-significant bits starting at this bit
+      _                         :: Bits 9   -- (Reserved)
+      SS                        :: Bits 15  -- Sub seconds value
+
+    ALRMBSSR 0x48 - Alarm B sub-second register
+      _                         :: Bits 4   -- (Reserved)
+      MASKSS                    :: Bits 4   -- Mask the most-significant bits starting at this bit
+      _                         :: Bits 9   -- (Reserved)
+      SS                        :: Bits 15  -- Sub seconds value
+
+    BKP0R 0x50 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP1R 0x54 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP2R 0x58 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP3R 0x5c - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP4R 0x60 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP5R 0x64 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP6R 0x68 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP7R 0x6c - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP8R 0x70 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP9R 0x74 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP10R 0x78 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP11R 0x7c - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP12R 0x80 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP13R 0x84 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP14R 0x88 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP15R 0x8c - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP16R 0x90 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP17R 0x94 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP18R 0x98 - backup register
+      BKP                       :: Bits 32  -- BKP
+
+    BKP19R 0x9c - backup register
+      BKP                       :: Bits 32  -- BKP
+
+  WWDG 0x40002c00 Window watchdog
+    
+    CR 0x0 - Control register
+      _                         :: Bits 24  -- (Reserved)
+      WDGA                      :: Bit      -- Activation bit
+      T                         :: Bits 7   -- 7-bit counter (MSB to LSB)
+
+    CFR 0x4 - Configuration register
+      _                         :: Bits 22  -- (Reserved)
+      EWI                       :: Bit      -- Early wakeup interrupt
+      WDGTB                     :: Bits 2   -- Timer base
+      W                         :: Bits 7   -- 7-bit window value
+
+    SR 0x8 - Status register
+      _                         :: Bits 31  -- (Reserved)
+      EWIF                      :: Bit      -- Early wakeup interrupt flag
+
+  IWDG 0x40003000 Independent watchdog
+    
+    KR 0x0 - Key register
+      _                         :: Bits 16  -- (Reserved)
+      KEY                       :: Bits 16  -- Key value (write only, read 0000h)
+
+    PR 0x4 - Prescaler register
+      _                         :: Bits 29  -- (Reserved)
+      PR                        :: Bits 3   -- Prescaler divider
+
+    RLR 0x8 - Reload register
+      _                         :: Bits 20  -- (Reserved)
+      RL                        :: Bits 12  -- Watchdog counter reload value
+
+    SR 0xc - Status register
+      _                         :: Bits 30  -- (Reserved)
+      RVU                       :: Bit      -- Watchdog counter reload value update
+      PVU                       :: Bit      -- Watchdog prescaler value update
+
+  I2S2ext 0x40003400 
+      
+      Derived from SPI1
+
+  SPI2 0x40003800 
+      
+      Derived from SPI1
+
+  SPI3 0x40003c00 
+      
+      Derived from SPI1
+
+  I2S3ext 0x40004000 
+      
+      Derived from SPI1
+
+  USART2 0x40004400 
+      
+      Derived from USART1
+
+  USART3 0x40004800 
+      
+      Derived from USART1
+
+  UART4 0x40004c00 Universal synchronous asynchronous receiver transmitter
+    
+    SR 0x0 - Status register
+      _                         :: Bits 23  -- (Reserved)
+      LBD                       :: Bit      -- LIN break detection flag
+      TXE                       :: Bit      -- Transmit data register empty
+      TC                        :: Bit      -- Transmission complete
+      RXNE                      :: Bit      -- Read data register not empty
+      IDLE                      :: Bit      -- IDLE line detected
+      ORE                       :: Bit      -- Overrun error
+      NF                        :: Bit      -- Noise detected flag
+      FE                        :: Bit      -- Framing error
+      PE                        :: Bit      -- Parity error
+
+    DR 0x4 - Data register
+      _                         :: Bits 23  -- (Reserved)
+      DR                        :: Bits 9   -- Data value
+
+    BRR 0x8 - Baud rate register
+      _                         :: Bits 16  -- (Reserved)
+      DIV_Mantissa              :: Bits 12  -- mantissa of USARTDIV
+      DIV_Fraction              :: Bits 4   -- fraction of USARTDIV
+
+    CR1 0xc - Control register 1
+      _                         :: Bits 16  -- (Reserved)
+      OVER8                     :: Bit      -- Oversampling mode
+      _                         :: Bit      -- (Reserved)
+      UE                        :: Bit      -- USART enable
+      M                         :: Bit      -- Word length
+      WAKE                      :: Bit      -- Wakeup method
+      PCE                       :: Bit      -- Parity control enable
+      PS                        :: Bit      -- Parity selection
+      PEIE                      :: Bit      -- PE interrupt enable
+      TXEIE                     :: Bit      -- TXE interrupt enable
+      TCIE                      :: Bit      -- Transmission complete interrupt enable
+      RXNEIE                    :: Bit      -- RXNE interrupt enable
+      IDLEIE                    :: Bit      -- IDLE interrupt enable
+      TE                        :: Bit      -- Transmitter enable
+      RE                        :: Bit      -- Receiver enable
+      RWU                       :: Bit      -- Receiver wakeup
+      SBK                       :: Bit      -- Send break
+
+    CR2 0x10 - Control register 2
+      _                         :: Bits 17  -- (Reserved)
+      LINEN                     :: Bit      -- LIN mode enable
+      STOP                      :: Bits 2   -- STOP bits
+      _                         :: Bits 5   -- (Reserved)
+      LBDIE                     :: Bit      -- LIN break detection interrupt enable
+      LBDL                      :: Bit      -- lin break detection length
+      _                         :: Bit      -- (Reserved)
+      ADD                       :: Bits 4   -- Address of the USART node
+
+    CR3 0x14 - Control register 3
+      _                         :: Bits 20  -- (Reserved)
+      ONEBIT                    :: Bit      -- One sample bit method enable
+      _                         :: Bits 3   -- (Reserved)
+      DMAT                      :: Bit      -- DMA enable transmitter
+      DMAR                      :: Bit      -- DMA enable receiver
+      _                         :: Bits 2   -- (Reserved)
+      HDSEL                     :: Bit      -- Half-duplex selection
+      IRLP                      :: Bit      -- IrDA low-power
+      IREN                      :: Bit      -- IrDA mode enable
+      EIE                       :: Bit      -- Error interrupt enable
+
+  UART5 0x40005000 
+      
+      Derived from UART4
+
+  I2C1 0x40005400 Inter-integrated circuit
+    
+    CR1 0x0 - Control register 1
+      _                         :: Bits 16  -- (Reserved)
+      SWRST                     :: Bit      -- Software reset
+      _                         :: Bit      -- (Reserved)
+      ALERT                     :: Bit      -- SMBus alert
+      PEC                       :: Bit      -- Packet error checking
+      POS                       :: Bit      -- Acknowledge/PEC Position (for data reception)
+      ACK                       :: Bit      -- Acknowledge enable
+      STOP                      :: Bit      -- Stop generation
+      START                     :: Bit      -- Start generation
+      NOSTRETCH                 :: Bit      -- Clock stretching disable (Slave mode)
+      ENGC                      :: Bit      -- General call enable
+      ENPEC                     :: Bit      -- PEC enable
+      ENARP                     :: Bit      -- ARP enable
+      SMBTYPE                   :: Bit      -- SMBus type
+      _                         :: Bit      -- (Reserved)
+      SMBUS                     :: Bit      -- SMBus mode
+      PE                        :: Bit      -- Peripheral enable
+
+    CR2 0x4 - Control register 2
+      _                         :: Bits 19  -- (Reserved)
+      LAST                      :: Bit      -- DMA last transfer
+      DMAEN                     :: Bit      -- DMA requests enable
+      ITBUFEN                   :: Bit      -- Buffer interrupt enable
+      ITEVTEN                   :: Bit      -- Event interrupt enable
+      ITERREN                   :: Bit      -- Error interrupt enable
+      _                         :: Bits 2   -- (Reserved)
+      FREQ                      :: Bits 6   -- Peripheral clock frequency
+
+    OAR1 0x8 - Own address register 1
+      _                         :: Bits 16  -- (Reserved)
+      ADDMODE                   :: Bit      -- Addressing mode (slave mode)
+      _                         :: Bits 5   -- (Reserved)
+      ADD                       :: Bits 10  -- Interface address
+
+    OAR2 0xc - Own address register 2
+      _                         :: Bits 24  -- (Reserved)
+      ADD2                      :: Bits 7   -- Interface address
+      ENDUAL                    :: Bit      -- Dual addressing mode enable
+
+    DR 0x10 - Data register
+      _                         :: Bits 24  -- (Reserved)
+      DR                        :: Bits 8   -- 8-bit data register
+
+    SR1 0x14 - Status register 1
+      _                         :: Bits 16  -- (Reserved)
+      SMBALERT                  :: Bit      -- SMBus alert
+      TIMEOUT                   :: Bit      -- Timeout or Tlow error
+      _                         :: Bit      -- (Reserved)
+      PECERR                    :: Bit      -- PEC Error in reception
+      OVR                       :: Bit      -- Overrun/Underrun
+      AF                        :: Bit      -- Acknowledge failure
+      ARLO                      :: Bit      -- Arbitration lost (master mode)
+      BERR                      :: Bit      -- Bus error
+      TxE                       :: Bit      -- Data register empty (transmitters)
+      RxNE                      :: Bit      -- Data register not empty (receivers)
+      _                         :: Bit      -- (Reserved)
+      STOPF                     :: Bit      -- Stop detection (slave mode)
+      ADD10                     :: Bit      -- 10-bit header sent (Master mode)
+      BTF                       :: Bit      -- Byte transfer finished
+      ADDR                      :: Bit      -- Address sent (master mode)/matched (slave mode)
+      SB                        :: Bit      -- Start bit (Master mode)
+
+    SR2 0x18 - Status register 2
+      _                         :: Bits 16  -- (Reserved)
+      PEC                       :: Bits 8   -- acket error checking register
+      DUALF                     :: Bit      -- Dual flag (Slave mode)
+      SMBHOST                   :: Bit      -- SMBus host header (Slave mode)
+      SMBDEFAULT                :: Bit      -- SMBus device default address (Slave mode)
+      GENCALL                   :: Bit      -- General call address (Slave mode)
+      _                         :: Bit      -- (Reserved)
+      TRA                       :: Bit      -- Transmitter/receiver
+      BUSY                      :: Bit      -- Bus busy
+      MSL                       :: Bit      -- Master/slave
+
+    CCR 0x1c - Clock control register
+      _                         :: Bits 16  -- (Reserved)
+      F_S                       :: Bit      -- I2C master mode selection
+      DUTY                      :: Bit      -- Fast mode duty cycle
+      _                         :: Bits 2   -- (Reserved)
+      CCR                       :: Bits 12  -- Clock control register in Fast/Standard mode (Master mode)
+
+    TRISE 0x20 - TRISE register
+      _                         :: Bits 26  -- (Reserved)
+      TRISE                     :: Bits 6   -- Maximum rise time in Fast/Standard mode (Master mode)
+
+  I2C2 0x40005800 
+      
+      Derived from I2C1
+
+  I2C3 0x40005c00 
+      
+      Derived from I2C1
+
+  CAN1 0x40006400 Controller area network
+    
+    MCR 0x0 - master control register
+      _                         :: Bits 15  -- (Reserved)
+      DBF                       :: Bit      -- DBF
+      RESET                     :: Bit      -- RESET
+      _                         :: Bits 7   -- (Reserved)
+      TTCM                      :: Bit      -- TTCM
+      ABOM                      :: Bit      -- ABOM
+      AWUM                      :: Bit      -- AWUM
+      NART                      :: Bit      -- NART
+      RFLM                      :: Bit      -- RFLM
+      TXFP                      :: Bit      -- TXFP
+      SLEEP                     :: Bit      -- SLEEP
+      INRQ                      :: Bit      -- INRQ
+
+    MSR 0x4 - master status register
+      _                         :: Bits 20  -- (Reserved)
+      RX                        :: Bit      -- RX
+      SAMP                      :: Bit      -- SAMP
+      RXM                       :: Bit      -- RXM
+      TXM                       :: Bit      -- TXM
+      _                         :: Bits 3   -- (Reserved)
+      SLAKI                     :: Bit      -- SLAKI
+      WKUI                      :: Bit      -- WKUI
+      ERRI                      :: Bit      -- ERRI
+      SLAK                      :: Bit      -- SLAK
+      INAK                      :: Bit      -- INAK
+
+    TSR 0x8 - transmit status register
+      LOW2                      :: Bit      -- Lowest priority flag for mailbox 2
+      LOW1                      :: Bit      -- Lowest priority flag for mailbox 1
+      LOW0                      :: Bit      -- Lowest priority flag for mailbox 0
+      TME2                      :: Bit      -- Lowest priority flag for mailbox 2
+      TME1                      :: Bit      -- Lowest priority flag for mailbox 1
+      TME0                      :: Bit      -- Lowest priority flag for mailbox 0
+      CODE                      :: Bits 2   -- CODE
+      ABRQ2                     :: Bit      -- ABRQ2
+      _                         :: Bits 3   -- (Reserved)
+      TERR2                     :: Bit      -- TERR2
+      ALST2                     :: Bit      -- ALST2
+      TXOK2                     :: Bit      -- TXOK2
+      RQCP2                     :: Bit      -- RQCP2
+      ABRQ1                     :: Bit      -- ABRQ1
+      _                         :: Bits 3   -- (Reserved)
+      TERR1                     :: Bit      -- TERR1
+      ALST1                     :: Bit      -- ALST1
+      TXOK1                     :: Bit      -- TXOK1
+      RQCP1                     :: Bit      -- RQCP1
+      ABRQ0                     :: Bit      -- ABRQ0
+      _                         :: Bits 3   -- (Reserved)
+      TERR0                     :: Bit      -- TERR0
+      ALST0                     :: Bit      -- ALST0
+      TXOK0                     :: Bit      -- TXOK0
+      RQCP0                     :: Bit      -- RQCP0
+
+    RF0R 0xc - receive FIFO 0 register
+      _                         :: Bits 26  -- (Reserved)
+      RFOM                      :: Bit      -- RFOM0
+      FOVR                      :: Bit      -- FOVR0
+      FULL                      :: Bit      -- FULL0
+      _                         :: Bit      -- (Reserved)
+      FMP                       :: Bits 2   -- FMP0
+
+    RF1R 0x10 - receive FIFO 1 register
+      _                         :: Bits 26  -- (Reserved)
+      RFOM                      :: Bit      -- RFOM0
+      FOVR                      :: Bit      -- FOVR0
+      FULL                      :: Bit      -- FULL0
+      _                         :: Bit      -- (Reserved)
+      FMP                       :: Bits 2   -- FMP0
+
+    IER 0x14 - interrupt enable register
+      _                         :: Bits 14  -- (Reserved)
+      SLKIE                     :: Bit      -- SLKIE
+      WKUIE                     :: Bit      -- WKUIE
+      ERRIE                     :: Bit      -- ERRIE
+      _                         :: Bits 3   -- (Reserved)
+      LECIE                     :: Bit      -- LECIE
+      BOFIE                     :: Bit      -- BOFIE
+      EPVIE                     :: Bit      -- EPVIE
+      EWGIE                     :: Bit      -- EWGIE
+      _                         :: Bit      -- (Reserved)
+      FOVIE1                    :: Bit      -- FOVIE1
+      FFIE1                     :: Bit      -- FFIE1
+      FMPIE1                    :: Bit      -- FMPIE1
+      FOVIE0                    :: Bit      -- FOVIE0
+      FFIE0                     :: Bit      -- FFIE0
+      FMPIE0                    :: Bit      -- FMPIE0
+      TMEIE                     :: Bit      -- TMEIE
+
+    ESR 0x18 - interrupt enable register
+      REC                       :: Bits 8   -- REC
+      TEC                       :: Bits 8   -- TEC
+      _                         :: Bits 9   -- (Reserved)
+      LEC                       :: Bits 3   -- LEC
+      _                         :: Bit      -- (Reserved)
+      BOFF                      :: Bit      -- BOFF
+      EPVF                      :: Bit      -- EPVF
+      EWGF                      :: Bit      -- EWGF
+
+    BTR 0x1c - bit timing register
+      SILM                      :: Bit      -- SILM
+      LBKM                      :: Bit      -- LBKM
+      _                         :: Bits 4   -- (Reserved)
+      SJW                       :: Bits 2   -- SJW
+      _                         :: Bit      -- (Reserved)
+      TS2                       :: Bits 3   -- TS2
+      TS1                       :: Bits 4   -- TS1
+      _                         :: Bits 6   -- (Reserved)
+      BRP                       :: Bits 10  -- BRP
+
+    TIR 0x180 - TX mailbox identifier register
+      STID                      :: Bits 11  -- STID
+      EXID                      :: Bits 18  -- EXID
+      IDE                       :: Bit      -- IDE
+      RTR                       :: Bit      -- RTR
+      TXRQ                      :: Bit      -- TXRQ
+
+    TDTR 0x184 - mailbox data length control and time stamp register
+      TIME                      :: Bits 16  -- TIME
+      _                         :: Bits 7   -- (Reserved)
+      TGT                       :: Bit      -- TGT
+      _                         :: Bits 4   -- (Reserved)
+      DLC                       :: Bits 4   -- DLC
+
+    TDLR 0x188 - mailbox data low register
+      DATA3                     :: Bits 8   -- DATA3
+      DATA2                     :: Bits 8   -- DATA2
+      DATA1                     :: Bits 8   -- DATA1
+      DATA0                     :: Bits 8   -- DATA0
+
+    TDHR 0x18c - mailbox data high register
+      DATA7                     :: Bits 8   -- DATA7
+      DATA6                     :: Bits 8   -- DATA6
+      DATA5                     :: Bits 8   -- DATA5
+      DATA4                     :: Bits 8   -- DATA4
+
+    TIR 0x190 - TX mailbox identifier register
+      STID                      :: Bits 11  -- STID
+      EXID                      :: Bits 18  -- EXID
+      IDE                       :: Bit      -- IDE
+      RTR                       :: Bit      -- RTR
+      TXRQ                      :: Bit      -- TXRQ
+
+    TDTR 0x194 - mailbox data length control and time stamp register
+      TIME                      :: Bits 16  -- TIME
+      _                         :: Bits 7   -- (Reserved)
+      TGT                       :: Bit      -- TGT
+      _                         :: Bits 4   -- (Reserved)
+      DLC                       :: Bits 4   -- DLC
+
+    TDLR 0x198 - mailbox data low register
+      DATA3                     :: Bits 8   -- DATA3
+      DATA2                     :: Bits 8   -- DATA2
+      DATA1                     :: Bits 8   -- DATA1
+      DATA0                     :: Bits 8   -- DATA0
+
+    TDHR 0x19c - mailbox data high register
+      DATA7                     :: Bits 8   -- DATA7
+      DATA6                     :: Bits 8   -- DATA6
+      DATA5                     :: Bits 8   -- DATA5
+      DATA4                     :: Bits 8   -- DATA4
+
+    TIR 0x1a0 - TX mailbox identifier register
+      STID                      :: Bits 11  -- STID
+      EXID                      :: Bits 18  -- EXID
+      IDE                       :: Bit      -- IDE
+      RTR                       :: Bit      -- RTR
+      TXRQ                      :: Bit      -- TXRQ
+
+    TDTR 0x1a4 - mailbox data length control and time stamp register
+      TIME                      :: Bits 16  -- TIME
+      _                         :: Bits 7   -- (Reserved)
+      TGT                       :: Bit      -- TGT
+      _                         :: Bits 4   -- (Reserved)
+      DLC                       :: Bits 4   -- DLC
+
+    TDLR 0x1a8 - mailbox data low register
+      DATA3                     :: Bits 8   -- DATA3
+      DATA2                     :: Bits 8   -- DATA2
+      DATA1                     :: Bits 8   -- DATA1
+      DATA0                     :: Bits 8   -- DATA0
+
+    TDHR 0x1ac - mailbox data high register
+      DATA7                     :: Bits 8   -- DATA7
+      DATA6                     :: Bits 8   -- DATA6
+      DATA5                     :: Bits 8   -- DATA5
+      DATA4                     :: Bits 8   -- DATA4
+
+    RIR 0x1b0 - receive FIFO mailbox identifier register
+      STID                      :: Bits 11  -- STID
+      EXID                      :: Bits 18  -- EXID
+      IDE                       :: Bit      -- IDE
+      RTR                       :: Bit      -- RTR
+      _                         :: Bit      -- (Reserved)
+
+    RDTR 0x1b4 - mailbox data high register
+      TIME                      :: Bits 16  -- TIME
+      FMI                       :: Bits 8   -- FMI
+      _                         :: Bits 4   -- (Reserved)
+      DLC                       :: Bits 4   -- DLC
+
+    RDLR 0x1b8 - mailbox data high register
+      DATA3                     :: Bits 8   -- DATA3
+      DATA2                     :: Bits 8   -- DATA2
+      DATA1                     :: Bits 8   -- DATA1
+      DATA0                     :: Bits 8   -- DATA0
+
+    RDHR 0x1bc - receive FIFO mailbox data high register
+      DATA7                     :: Bits 8   -- DATA7
+      DATA6                     :: Bits 8   -- DATA6
+      DATA5                     :: Bits 8   -- DATA5
+      DATA4                     :: Bits 8   -- DATA4
+
+    RIR 0x1c0 - receive FIFO mailbox identifier register
+      STID                      :: Bits 11  -- STID
+      EXID                      :: Bits 18  -- EXID
+      IDE                       :: Bit      -- IDE
+      RTR                       :: Bit      -- RTR
+      _                         :: Bit      -- (Reserved)
+
+    RDTR 0x1c4 - mailbox data high register
+      TIME                      :: Bits 16  -- TIME
+      FMI                       :: Bits 8   -- FMI
+      _                         :: Bits 4   -- (Reserved)
+      DLC                       :: Bits 4   -- DLC
+
+    RDLR 0x1c8 - mailbox data high register
+      DATA3                     :: Bits 8   -- DATA3
+      DATA2                     :: Bits 8   -- DATA2
+      DATA1                     :: Bits 8   -- DATA1
+      DATA0                     :: Bits 8   -- DATA0
+
+    RDHR 0x1cc - receive FIFO mailbox data high register
+      DATA7                     :: Bits 8   -- DATA7
+      DATA6                     :: Bits 8   -- DATA6
+      DATA5                     :: Bits 8   -- DATA5
+      DATA4                     :: Bits 8   -- DATA4
+
+    FMR 0x200 - filter master register
+      _                         :: Bits 18  -- (Reserved)
+      CAN2SB                    :: Bits 6   -- CAN2SB
+      _                         :: Bits 7   -- (Reserved)
+      FINIT                     :: Bit      -- FINIT
+
+    FM1R 0x204 - filter mode register
+      _                         :: Bits 4   -- (Reserved)
+      FBM27                     :: Bit      -- Filter mode
+      FBM26                     :: Bit      -- Filter mode
+      FBM25                     :: Bit      -- Filter mode
+      FBM24                     :: Bit      -- Filter mode
+      FBM23                     :: Bit      -- Filter mode
+      FBM22                     :: Bit      -- Filter mode
+      FBM21                     :: Bit      -- Filter mode
+      FBM20                     :: Bit      -- Filter mode
+      FBM19                     :: Bit      -- Filter mode
+      FBM18                     :: Bit      -- Filter mode
+      FBM17                     :: Bit      -- Filter mode
+      FBM16                     :: Bit      -- Filter mode
+      FBM15                     :: Bit      -- Filter mode
+      FBM14                     :: Bit      -- Filter mode
+      FBM13                     :: Bit      -- Filter mode
+      FBM12                     :: Bit      -- Filter mode
+      FBM11                     :: Bit      -- Filter mode
+      FBM10                     :: Bit      -- Filter mode
+      FBM9                      :: Bit      -- Filter mode
+      FBM8                      :: Bit      -- Filter mode
+      FBM7                      :: Bit      -- Filter mode
+      FBM6                      :: Bit      -- Filter mode
+      FBM5                      :: Bit      -- Filter mode
+      FBM4                      :: Bit      -- Filter mode
+      FBM3                      :: Bit      -- Filter mode
+      FBM2                      :: Bit      -- Filter mode
+      FBM1                      :: Bit      -- Filter mode
+      FBM0                      :: Bit      -- Filter mode
+
+    FS1R 0x20c - filter scale register
+      _                         :: Bits 4   -- (Reserved)
+      FSC27                     :: Bit      -- Filter scale configuration
+      FSC26                     :: Bit      -- Filter scale configuration
+      FSC25                     :: Bit      -- Filter scale configuration
+      FSC24                     :: Bit      -- Filter scale configuration
+      FSC23                     :: Bit      -- Filter scale configuration
+      FSC22                     :: Bit      -- Filter scale configuration
+      FSC21                     :: Bit      -- Filter scale configuration
+      FSC20                     :: Bit      -- Filter scale configuration
+      FSC19                     :: Bit      -- Filter scale configuration
+      FSC18                     :: Bit      -- Filter scale configuration
+      FSC17                     :: Bit      -- Filter scale configuration
+      FSC16                     :: Bit      -- Filter scale configuration
+      FSC15                     :: Bit      -- Filter scale configuration
+      FSC14                     :: Bit      -- Filter scale configuration
+      FSC13                     :: Bit      -- Filter scale configuration
+      FSC12                     :: Bit      -- Filter scale configuration
+      FSC11                     :: Bit      -- Filter scale configuration
+      FSC10                     :: Bit      -- Filter scale configuration
+      FSC9                      :: Bit      -- Filter scale configuration
+      FSC8                      :: Bit      -- Filter scale configuration
+      FSC7                      :: Bit      -- Filter scale configuration
+      FSC6                      :: Bit      -- Filter scale configuration
+      FSC5                      :: Bit      -- Filter scale configuration
+      FSC4                      :: Bit      -- Filter scale configuration
+      FSC3                      :: Bit      -- Filter scale configuration
+      FSC2                      :: Bit      -- Filter scale configuration
+      FSC1                      :: Bit      -- Filter scale configuration
+      FSC0                      :: Bit      -- Filter scale configuration
+
+    FFA1R 0x214 - filter FIFO assignment register
+      _                         :: Bits 4   -- (Reserved)
+      FFA27                     :: Bit      -- Filter FIFO assignment for filter 27
+      FFA26                     :: Bit      -- Filter FIFO assignment for filter 26
+      FFA25                     :: Bit      -- Filter FIFO assignment for filter 25
+      FFA24                     :: Bit      -- Filter FIFO assignment for filter 24
+      FFA23                     :: Bit      -- Filter FIFO assignment for filter 23
+      FFA22                     :: Bit      -- Filter FIFO assignment for filter 22
+      FFA21                     :: Bit      -- Filter FIFO assignment for filter 21
+      FFA20                     :: Bit      -- Filter FIFO assignment for filter 20
+      FFA19                     :: Bit      -- Filter FIFO assignment for filter 19
+      FFA18                     :: Bit      -- Filter FIFO assignment for filter 18
+      FFA17                     :: Bit      -- Filter FIFO assignment for filter 17
+      FFA16                     :: Bit      -- Filter FIFO assignment for filter 16
+      FFA15                     :: Bit      -- Filter FIFO assignment for filter 15
+      FFA14                     :: Bit      -- Filter FIFO assignment for filter 14
+      FFA13                     :: Bit      -- Filter FIFO assignment for filter 13
+      FFA12                     :: Bit      -- Filter FIFO assignment for filter 12
+      FFA11                     :: Bit      -- Filter FIFO assignment for filter 11
+      FFA10                     :: Bit      -- Filter FIFO assignment for filter 10
+      FFA9                      :: Bit      -- Filter FIFO assignment for filter 9
+      FFA8                      :: Bit      -- Filter FIFO assignment for filter 8
+      FFA7                      :: Bit      -- Filter FIFO assignment for filter 7
+      FFA6                      :: Bit      -- Filter FIFO assignment for filter 6
+      FFA5                      :: Bit      -- Filter FIFO assignment for filter 5
+      FFA4                      :: Bit      -- Filter FIFO assignment for filter 4
+      FFA3                      :: Bit      -- Filter FIFO assignment for filter 3
+      FFA2                      :: Bit      -- Filter FIFO assignment for filter 2
+      FFA1                      :: Bit      -- Filter FIFO assignment for filter 1
+      FFA0                      :: Bit      -- Filter FIFO assignment for filter 0
+
+    FA1R 0x21c - filter activation register
+      _                         :: Bits 4   -- (Reserved)
+      FACT27                    :: Bit      -- Filter active
+      FACT26                    :: Bit      -- Filter active
+      FACT25                    :: Bit      -- Filter active
+      FACT24                    :: Bit      -- Filter active
+      FACT23                    :: Bit      -- Filter active
+      FACT22                    :: Bit      -- Filter active
+      FACT21                    :: Bit      -- Filter active
+      FACT20                    :: Bit      -- Filter active
+      FACT19                    :: Bit      -- Filter active
+      FACT18                    :: Bit      -- Filter active
+      FACT17                    :: Bit      -- Filter active
+      FACT16                    :: Bit      -- Filter active
+      FACT15                    :: Bit      -- Filter active
+      FACT14                    :: Bit      -- Filter active
+      FACT13                    :: Bit      -- Filter active
+      FACT12                    :: Bit      -- Filter active
+      FACT11                    :: Bit      -- Filter active
+      FACT10                    :: Bit      -- Filter active
+      FACT9                     :: Bit      -- Filter active
+      FACT8                     :: Bit      -- Filter active
+      FACT7                     :: Bit      -- Filter active
+      FACT6                     :: Bit      -- Filter active
+      FACT5                     :: Bit      -- Filter active
+      FACT4                     :: Bit      -- Filter active
+      FACT3                     :: Bit      -- Filter active
+      FACT2                     :: Bit      -- Filter active
+      FACT1                     :: Bit      -- Filter active
+      FACT0                     :: Bit      -- Filter active
+
+    FR1 0x240 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x244 - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x248 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x24c - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x250 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x254 - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x258 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x25c - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x260 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x264 - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x268 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x26c - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x270 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x274 - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x278 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x27c - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x280 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x284 - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x288 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x28c - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x290 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x294 - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x298 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x29c - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x2a0 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x2a4 - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x2a8 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x2ac - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x2b0 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x2b4 - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x2b8 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x2bc - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x2c0 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x2c4 - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x2c8 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x2cc - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x2d0 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x2d4 - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x2d8 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x2dc - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x2e0 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x2e4 - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x2e8 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x2ec - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x2f0 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x2f4 - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x2f8 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x2fc - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x300 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x304 - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x308 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x30c - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x310 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x314 - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+    FR1 0x318 - Filter bank x register 1
+      FB                        :: Bits 32  -- Filter bits
+
+    FR2 0x31c - Filter bank x register 2
+      FB                        :: Bits 32  -- Filter bits
+
+  CAN2 0x40006800 
+      
+      Derived from CAN1
+
+  PWR 0x40007000 Power control
+    
+    CR 0x0 - power control register
+      _                         :: Bits 22  -- (Reserved)
+      FPDS                      :: Bit      -- Flash power down in Stop mode
+      DBP                       :: Bit      -- Disable backup domain write protection
+      PLS                       :: Bits 3   -- PVD level selection
+      PVDE                      :: Bit      -- Power voltage detector enable
+      CSBF                      :: Bit      -- Clear standby flag
+      CWUF                      :: Bit      -- Clear wakeup flag
+      PDDS                      :: Bit      -- Power down deepsleep
+      LPDS                      :: Bit      -- Low-power deep sleep
+
+    CSR 0x4 - power control/status register
+      _                         :: Bits 17  -- (Reserved)
+      VOSRDY                    :: Bit      -- Regulator voltage scaling output selection ready bit
+      _                         :: Bits 4   -- (Reserved)
+      BRE                       :: Bit      -- Backup regulator enable
+      EWUP                      :: Bit      -- Enable WKUP pin
+      _                         :: Bits 4   -- (Reserved)
+      BRR                       :: Bit      -- Backup regulator ready
+      PVDO                      :: Bit      -- PVD output
+      SBF                       :: Bit      -- Standby flag
+      WUF                       :: Bit      -- Wakeup flag
+
+  DAC 0x40007400 Digital-to-analog converter
+    
+    CR 0x0 - control register
+      _                         :: Bits 2   -- (Reserved)
+      DMAUDRIE2                 :: Bit      -- DAC channel2 DMA underrun interrupt enable
+      DMAEN2                    :: Bit      -- DAC channel2 DMA enable
+      MAMP2                     :: Bits 4   -- DAC channel2 mask/amplitude selector
+      WAVE2                     :: Bits 2   -- DAC channel2 noise/triangle wave generation enable
+      TSEL2                     :: Bits 3   -- DAC channel2 trigger selection
+      TEN2                      :: Bit      -- DAC channel2 trigger enable
+      BOFF2                     :: Bit      -- DAC channel2 output buffer disable
+      EN2                       :: Bit      -- DAC channel2 enable
+      _                         :: Bits 2   -- (Reserved)
+      DMAUDRIE1                 :: Bit      -- DAC channel1 DMA Underrun Interrupt enable
+      DMAEN1                    :: Bit      -- DAC channel1 DMA enable
+      MAMP1                     :: Bits 4   -- DAC channel1 mask/amplitude selector
+      WAVE1                     :: Bits 2   -- DAC channel1 noise/triangle wave generation enable
+      TSEL1                     :: Bits 3   -- DAC channel1 trigger selection
+      TEN1                      :: Bit      -- DAC channel1 trigger enable
+      BOFF1                     :: Bit      -- DAC channel1 output buffer disable
+      EN1                       :: Bit      -- DAC channel1 enable
+
+    SWTRIGR 0x4 - software trigger register
+      _                         :: Bits 30  -- (Reserved)
+      SWTRIG2                   :: Bit      -- DAC channel2 software trigger
+      SWTRIG1                   :: Bit      -- DAC channel1 software trigger
+
+    DHR12R1 0x8 - channel1 12-bit right-aligned data holding register
+      _                         :: Bits 20  -- (Reserved)
+      DACC1DHR                  :: Bits 12  -- DAC channel1 12-bit right-aligned data
+
+    DHR12L1 0xc - channel1 12-bit left aligned data holding register
+      _                         :: Bits 16  -- (Reserved)
+      DACC1DHR                  :: Bits 12  -- DAC channel1 12-bit left-aligned data
+      _                         :: Bits 4   -- (Reserved)
+
+    DHR8R1 0x10 - channel1 8-bit right aligned data holding register
+      _                         :: Bits 24  -- (Reserved)
+      DACC1DHR                  :: Bits 8   -- DAC channel1 8-bit right-aligned data
+
+    DHR12R2 0x14 - channel2 12-bit right aligned data holding register
+      _                         :: Bits 20  -- (Reserved)
+      DACC2DHR                  :: Bits 12  -- DAC channel2 12-bit right-aligned data
+
+    DHR12L2 0x18 - channel2 12-bit left aligned data holding register
+      _                         :: Bits 16  -- (Reserved)
+      DACC2DHR                  :: Bits 12  -- DAC channel2 12-bit left-aligned data
+      _                         :: Bits 4   -- (Reserved)
+
+    DHR8R2 0x1c - channel2 8-bit right-aligned data holding register
+      _                         :: Bits 24  -- (Reserved)
+      DACC2DHR                  :: Bits 8   -- DAC channel2 8-bit right-aligned data
+
+    DHR12RD 0x20 - Dual DAC 12-bit right-aligned data holding register
+      _                         :: Bits 4   -- (Reserved)
+      DACC2DHR                  :: Bits 12  -- DAC channel2 12-bit right-aligned data
+      _                         :: Bits 4   -- (Reserved)
+      DACC1DHR                  :: Bits 12  -- DAC channel1 12-bit right-aligned data
+
+    DHR12LD 0x24 - DUAL DAC 12-bit left aligned data holding register
+      DACC2DHR                  :: Bits 12  -- DAC channel2 12-bit left-aligned data
+      _                         :: Bits 4   -- (Reserved)
+      DACC1DHR                  :: Bits 12  -- DAC channel1 12-bit left-aligned data
+      _                         :: Bits 4   -- (Reserved)
+
+    DHR8RD 0x28 - DUAL DAC 8-bit right aligned data holding register
+      _                         :: Bits 16  -- (Reserved)
+      DACC2DHR                  :: Bits 8   -- DAC channel2 8-bit right-aligned data
+      DACC1DHR                  :: Bits 8   -- DAC channel1 8-bit right-aligned data
+
+    DOR1 0x2c - channel1 data output register
+      _                         :: Bits 20  -- (Reserved)
+      DACC1DOR                  :: Bits 12  -- DAC channel1 data output
+
+    DOR2 0x30 - channel2 data output register
+      _                         :: Bits 20  -- (Reserved)
+      DACC2DOR                  :: Bits 12  -- DAC channel2 data output
+
+    SR 0x34 - status register
+      _                         :: Bits 2   -- (Reserved)
+      DMAUDR2                   :: Bit      -- DAC channel2 DMA underrun flag
+      _                         :: Bits 15  -- (Reserved)
+      DMAUDR1                   :: Bit      -- DAC channel1 DMA underrun flag
+      _                         :: Bits 13  -- (Reserved)
+
+  TIM1 0x40010000 Advanced-timers
+    
+    CR1 0x0 - control register 1
+      _                         :: Bits 22  -- (Reserved)
+      CKD                       :: Bits 2   -- Clock division
+      ARPE                      :: Bit      -- Auto-reload preload enable
+      CMS                       :: Bits 2   -- Center-aligned mode selection
+      DIR                       :: Bit      -- Direction
+      OPM                       :: Bit      -- One-pulse mode
+      URS                       :: Bit      -- Update request source
+      UDIS                      :: Bit      -- Update disable
+      CEN                       :: Bit      -- Counter enable
+
+    CR2 0x4 - control register 2
+      _                         :: Bits 17  -- (Reserved)
+      OIS4                      :: Bit      -- Output Idle state 4
+      OIS3N                     :: Bit      -- Output Idle state 3
+      OIS3                      :: Bit      -- Output Idle state 3
+      OIS2N                     :: Bit      -- Output Idle state 2
+      OIS2                      :: Bit      -- Output Idle state 2
+      OIS1N                     :: Bit      -- Output Idle state 1
+      OIS1                      :: Bit      -- Output Idle state 1
+      TI1S                      :: Bit      -- TI1 selection
+      MMS                       :: Bits 3   -- Master mode selection
+      CCDS                      :: Bit      -- Capture/compare DMA selection
+      CCUS                      :: Bit      -- Capture/compare control update selection
+      _                         :: Bit      -- (Reserved)
+      CCPC                      :: Bit      -- Capture/compare preloaded control
+
+    SMCR 0x8 - slave mode control register
+      _                         :: Bits 16  -- (Reserved)
+      ETP                       :: Bit      -- External trigger polarity
+      ECE                       :: Bit      -- External clock enable
+      ETPS                      :: Bits 2   -- External trigger prescaler
+      ETF                       :: Bits 4   -- External trigger filter
+      MSM                       :: Bit      -- Master/Slave mode
+      TS                        :: Bits 3   -- Trigger selection
+      _                         :: Bit      -- (Reserved)
+      SMS                       :: Bits 3   -- Slave mode selection
+
+    DIER 0xc - DMA/Interrupt enable register
+      _                         :: Bits 17  -- (Reserved)
+      TDE                       :: Bit      -- Trigger DMA request enable
+      COMDE                     :: Bit      -- COM DMA request enable
+      CC4DE                     :: Bit      -- Capture/Compare 4 DMA request enable
+      CC3DE                     :: Bit      -- Capture/Compare 3 DMA request enable
+      CC2DE                     :: Bit      -- Capture/Compare 2 DMA request enable
+      CC1DE                     :: Bit      -- Capture/Compare 1 DMA request enable
+      UDE                       :: Bit      -- Update DMA request enable
+      BIE                       :: Bit      -- Break interrupt enable
+      TIE                       :: Bit      -- Trigger interrupt enable
+      COMIE                     :: Bit      -- COM interrupt enable
+      CC4IE                     :: Bit      -- Capture/Compare 4 interrupt enable
+      CC3IE                     :: Bit      -- Capture/Compare 3 interrupt enable
+      CC2IE                     :: Bit      -- Capture/Compare 2 interrupt enable
+      CC1IE                     :: Bit      -- Capture/Compare 1 interrupt enable
+      UIE                       :: Bit      -- Update interrupt enable
+
+    SR 0x10 - status register
+      _                         :: Bits 19  -- (Reserved)
+      CC4OF                     :: Bit      -- Capture/Compare 4 overcapture flag
+      CC3OF                     :: Bit      -- Capture/Compare 3 overcapture flag
+      CC2OF                     :: Bit      -- Capture/compare 2 overcapture flag
+      CC1OF                     :: Bit      -- Capture/Compare 1 overcapture flag
+      _                         :: Bit      -- (Reserved)
+      BIF                       :: Bit      -- Break interrupt flag
+      TIF                       :: Bit      -- Trigger interrupt flag
+      COMIF                     :: Bit      -- COM interrupt flag
+      CC4IF                     :: Bit      -- Capture/Compare 4 interrupt flag
+      CC3IF                     :: Bit      -- Capture/Compare 3 interrupt flag
+      CC2IF                     :: Bit      -- Capture/Compare 2 interrupt flag
+      CC1IF                     :: Bit      -- Capture/compare 1 interrupt flag
+      UIF                       :: Bit      -- Update interrupt flag
+
+    EGR 0x14 - event generation register
+      _                         :: Bits 24  -- (Reserved)
+      BG                        :: Bit      -- Break generation
+      TG                        :: Bit      -- Trigger generation
+      COMG                      :: Bit      -- Capture/Compare control update generation
+      CC4G                      :: Bit      -- Capture/compare 4 generation
+      CC3G                      :: Bit      -- Capture/compare 3 generation
+      CC2G                      :: Bit      -- Capture/compare 2 generation
+      CC1G                      :: Bit      -- Capture/compare 1 generation
+      UG                        :: Bit      -- Update generation
+
+    CCMR1_Output 0x18 - capture/compare mode register 1 (output mode)
+      _                         :: Bits 16  -- (Reserved)
+      OC2CE                     :: Bit      -- Output Compare 2 clear enable
+      OC2M                      :: Bits 3   -- Output Compare 2 mode
+      OC2PE                     :: Bit      -- Output Compare 2 preload enable
+      OC2FE                     :: Bit      -- Output Compare 2 fast enable
+      CC2S                      :: Bits 2   -- Capture/Compare 2 selection
+      OC1CE                     :: Bit      -- Output Compare 1 clear enable
+      OC1M                      :: Bits 3   -- Output Compare 1 mode
+      OC1PE                     :: Bit      -- Output Compare 1 preload enable
+      OC1FE                     :: Bit      -- Output Compare 1 fast enable
+      CC1S                      :: Bits 2   -- Capture/Compare 1 selection
+
+    CCMR1_Input 0x18 - capture/compare mode register 1 (input mode)
+      _                         :: Bits 16  -- (Reserved)
+      IC2F                      :: Bits 4   -- Input capture 2 filter
+      IC2PSC                    :: Bits 2   -- Input capture 2 prescaler
+      CC2S                      :: Bits 2   -- Capture/Compare 2 selection
+      IC1F                      :: Bits 4   -- Input capture 1 filter
+      IC1PSC                    :: Bits 2   -- Input capture 1 prescaler
+      CC1S                      :: Bits 2   -- Capture/Compare 1 selection
+
+    CCMR2_Output 0x1c - capture/compare mode register 2 (output mode)
+      _                         :: Bits 16  -- (Reserved)
+      OC4CE                     :: Bit      -- Output compare 4 clear enable
+      OC4M                      :: Bits 3   -- Output compare 4 mode
+      OC4PE                     :: Bit      -- Output compare 4 preload enable
+      OC4FE                     :: Bit      -- Output compare 4 fast enable
+      CC4S                      :: Bits 2   -- Capture/Compare 4 selection
+      OC3CE                     :: Bit      -- Output compare 3 clear enable
+      OC3M                      :: Bits 3   -- Output compare 3 mode
+      OC3PE                     :: Bit      -- Output compare 3 preload enable
+      OC3FE                     :: Bit      -- Output compare 3 fast enable
+      CC3S                      :: Bits 2   -- Capture/Compare 3 selection
+
+    CCMR2_Input 0x1c - capture/compare mode register 2 (input mode)
+      _                         :: Bits 16  -- (Reserved)
+      IC4F                      :: Bits 4   -- Input capture 4 filter
+      IC4PSC                    :: Bits 2   -- Input capture 4 prescaler
+      CC4S                      :: Bits 2   -- Capture/Compare 4 selection
+      IC3F                      :: Bits 4   -- Input capture 3 filter
+      IC3PSC                    :: Bits 2   -- Input capture 3 prescaler
+      CC3S                      :: Bits 2   -- Capture/compare 3 selection
+
+    CCER 0x20 - capture/compare enable register
+      _                         :: Bits 18  -- (Reserved)
+      CC4P                      :: Bit      -- Capture/Compare 3 output Polarity
+      CC4E                      :: Bit      -- Capture/Compare 4 output enable
+      CC3NP                     :: Bit      -- Capture/Compare 3 output Polarity
+      CC3NE                     :: Bit      -- Capture/Compare 3 complementary output enable
+      CC3P                      :: Bit      -- Capture/Compare 3 output Polarity
+      CC3E                      :: Bit      -- Capture/Compare 3 output enable
+      CC2NP                     :: Bit      -- Capture/Compare 2 output Polarity
+      CC2NE                     :: Bit      -- Capture/Compare 2 complementary output enable
+      CC2P                      :: Bit      -- Capture/Compare 2 output Polarity
+      CC2E                      :: Bit      -- Capture/Compare 2 output enable
+      CC1NP                     :: Bit      -- Capture/Compare 1 output Polarity
+      CC1NE                     :: Bit      -- Capture/Compare 1 complementary output enable
+      CC1P                      :: Bit      -- Capture/Compare 1 output Polarity
+      CC1E                      :: Bit      -- Capture/Compare 1 output enable
+
+    CNT 0x24 - counter
+      _                         :: Bits 16  -- (Reserved)
+      CNT                       :: Bits 16  -- counter value
+
+    PSC 0x28 - prescaler
+      _                         :: Bits 16  -- (Reserved)
+      PSC                       :: Bits 16  -- Prescaler value
+
+    ARR 0x2c - auto-reload register
+      _                         :: Bits 16  -- (Reserved)
+      ARR                       :: Bits 16  -- Auto-reload value
+
+    RCR 0x30 - repetition counter register
+      _                         :: Bits 24  -- (Reserved)
+      REP                       :: Bits 8   -- Repetition counter value
+
+    CCR1 0x34 - capture/compare register
+      _                         :: Bits 16  -- (Reserved)
+      CCR                       :: Bits 16  -- Capture/Compare value
+
+    CCR2 0x38 - capture/compare register
+      _                         :: Bits 16  -- (Reserved)
+      CCR                       :: Bits 16  -- Capture/Compare value
+
+    CCR3 0x3c - capture/compare register
+      _                         :: Bits 16  -- (Reserved)
+      CCR                       :: Bits 16  -- Capture/Compare value
+
+    CCR4 0x40 - capture/compare register
+      _                         :: Bits 16  -- (Reserved)
+      CCR                       :: Bits 16  -- Capture/Compare value
+
+    BDTR 0x44 - break and dead-time register
+      _                         :: Bits 16  -- (Reserved)
+      MOE                       :: Bit      -- Main output enable
+      AOE                       :: Bit      -- Automatic output enable
+      BKP                       :: Bit      -- Break polarity
+      BKE                       :: Bit      -- Break enable
+      OSSR                      :: Bit      -- Off-state selection for Run mode
+      OSSI                      :: Bit      -- Off-state selection for Idle mode
+      LOCK                      :: Bits 2   -- Lock configuration
+      DTG                       :: Bits 8   -- Dead-time generator setup
+
+    DCR 0x48 - DMA control register
+      _                         :: Bits 19  -- (Reserved)
+      DBL                       :: Bits 5   -- DMA burst length
+      _                         :: Bits 3   -- (Reserved)
+      DBA                       :: Bits 5   -- DMA base address
+
+    DMAR 0x4c - DMA address for full transfer
+      _                         :: Bits 16  -- (Reserved)
+      DMAB                      :: Bits 16  -- DMA register for burst accesses
+
+  TIM8 0x40010400 
+      
+      Derived from TIM1
+
+  USART1 0x40011000 Universal synchronous asynchronous receiver transmitter
+    
+    SR 0x0 - Status register
+      _                         :: Bits 22  -- (Reserved)
+      CTS                       :: Bit      -- CTS flag
+      LBD                       :: Bit      -- LIN break detection flag
+      TXE                       :: Bit      -- Transmit data register empty
+      TC                        :: Bit      -- Transmission complete
+      RXNE                      :: Bit      -- Read data register not empty
+      IDLE                      :: Bit      -- IDLE line detected
+      ORE                       :: Bit      -- Overrun error
+      NF                        :: Bit      -- Noise detected flag
+      FE                        :: Bit      -- Framing error
+      PE                        :: Bit      -- Parity error
+
+    DR 0x4 - Data register
+      _                         :: Bits 23  -- (Reserved)
+      DR                        :: Bits 9   -- Data value
+
+    BRR 0x8 - Baud rate register
+      _                         :: Bits 16  -- (Reserved)
+      DIV_Mantissa              :: Bits 12  -- mantissa of USARTDIV
+      DIV_Fraction              :: Bits 4   -- fraction of USARTDIV
+
+    CR1 0xc - Control register 1
+      _                         :: Bits 16  -- (Reserved)
+      OVER8                     :: Bit      -- Oversampling mode
+      _                         :: Bit      -- (Reserved)
+      UE                        :: Bit      -- USART enable
+      M                         :: Bit      -- Word length
+      WAKE                      :: Bit      -- Wakeup method
+      PCE                       :: Bit      -- Parity control enable
+      PS                        :: Bit      -- Parity selection
+      PEIE                      :: Bit      -- PE interrupt enable
+      TXEIE                     :: Bit      -- TXE interrupt enable
+      TCIE                      :: Bit      -- Transmission complete interrupt enable
+      RXNEIE                    :: Bit      -- RXNE interrupt enable
+      IDLEIE                    :: Bit      -- IDLE interrupt enable
+      TE                        :: Bit      -- Transmitter enable
+      RE                        :: Bit      -- Receiver enable
+      RWU                       :: Bit      -- Receiver wakeup
+      SBK                       :: Bit      -- Send break
+
+    CR2 0x10 - Control register 2
+      _                         :: Bits 17  -- (Reserved)
+      LINEN                     :: Bit      -- LIN mode enable
+      STOP                      :: Bits 2   -- STOP bits
+      CLKEN                     :: Bit      -- Clock enable
+      CPOL                      :: Bit      -- Clock polarity
+      CPHA                      :: Bit      -- Clock phase
+      LBCL                      :: Bit      -- Last bit clock pulse
+      _                         :: Bit      -- (Reserved)
+      LBDIE                     :: Bit      -- LIN break detection interrupt enable
+      LBDL                      :: Bit      -- lin break detection length
+      _                         :: Bit      -- (Reserved)
+      ADD                       :: Bits 4   -- Address of the USART node
+
+    CR3 0x14 - Control register 3
+      _                         :: Bits 20  -- (Reserved)
+      ONEBIT                    :: Bit      -- One sample bit method enable
+      CTSIE                     :: Bit      -- CTS interrupt enable
+      CTSE                      :: Bit      -- CTS enable
+      RTSE                      :: Bit      -- RTS enable
+      DMAT                      :: Bit      -- DMA enable transmitter
+      DMAR                      :: Bit      -- DMA enable receiver
+      SCEN                      :: Bit      -- Smartcard mode enable
+      NACK                      :: Bit      -- Smartcard NACK enable
+      HDSEL                     :: Bit      -- Half-duplex selection
+      IRLP                      :: Bit      -- IrDA low-power
+      IREN                      :: Bit      -- IrDA mode enable
+      EIE                       :: Bit      -- Error interrupt enable
+
+    GTPR 0x18 - Guard time and prescaler register
+      _                         :: Bits 16  -- (Reserved)
+      GT                        :: Bits 8   -- Guard time value
+      PSC                       :: Bits 8   -- Prescaler value
+
+  USART6 0x40011400 
+      
+      Derived from USART1
+
+  ADC1 0x40012000 Analog-to-digital converter
+    
+    SR 0x0 - status register
+      _                         :: Bits 26  -- (Reserved)
+      OVR                       :: Bit      -- Overrun
+      STRT                      :: Bit      -- Regular channel start flag
+      JSTRT                     :: Bit      -- Injected channel start flag
+      JEOC                      :: Bit      -- Injected channel end of conversion
+      EOC                       :: Bit      -- Regular channel end of conversion
+      AWD                       :: Bit      -- Analog watchdog flag
+
+    CR1 0x4 - control register 1
+      _                         :: Bits 5   -- (Reserved)
+      OVRIE                     :: Bit      -- Overrun interrupt enable
+      RES                       :: Bits 2   -- Resolution
+      AWDEN                     :: Bit      -- Analog watchdog enable on regular channels
+      JAWDEN                    :: Bit      -- Analog watchdog enable on injected channels
+      _                         :: Bits 6   -- (Reserved)
+      DISCNUM                   :: Bits 3   -- Discontinuous mode channel count
+      JDISCEN                   :: Bit      -- Discontinuous mode on injected channels
+      DISCEN                    :: Bit      -- Discontinuous mode on regular channels
+      JAUTO                     :: Bit      -- Automatic injected group conversion
+      AWDSGL                    :: Bit      -- Enable the watchdog on a single channel in scan mode
+      SCAN                      :: Bit      -- Scan mode
+      JEOCIE                    :: Bit      -- Interrupt enable for injected channels
+      AWDIE                     :: Bit      -- Analog watchdog interrupt enable
+      EOCIE                     :: Bit      -- Interrupt enable for EOC
+      AWDCH                     :: Bits 5   -- Analog watchdog channel select bits
+
+    CR2 0x8 - control register 2
+      _                         :: Bit      -- (Reserved)
+      SWSTART                   :: Bit      -- Start conversion of regular channels
+      EXTEN                     :: Bits 2   -- External trigger enable for regular channels
+      EXTSEL                    :: Bits 4   -- External event select for regular group
+      _                         :: Bit      -- (Reserved)
+      JSWSTART                  :: Bit      -- Start conversion of injected channels
+      JEXTEN                    :: Bits 2   -- External trigger enable for injected channels
+      JEXTSEL                   :: Bits 4   -- External event select for injected group
+      _                         :: Bits 4   -- (Reserved)
+      ALIGN                     :: Bit      -- Data alignment
+      EOCS                      :: Bit      -- End of conversion selection
+      DDS                       :: Bit      -- DMA disable selection (for single ADC mode)
+      DMA                       :: Bit      -- Direct memory access mode (for single ADC mode)
+      _                         :: Bits 6   -- (Reserved)
+      CONT                      :: Bit      -- Continuous conversion
+      ADON                      :: Bit      -- A/D Converter ON / OFF
+
+    SMPR1 0xc - sample time register 1
+      _                         :: Bits 5   -- (Reserved)
+      SMP18                     :: Bits 3   -- Channel 18 sampling time selection
+      SMP17                     :: Bits 3   -- Channel 17 sampling time selection
+      SMP16                     :: Bits 3   -- Channel 16 sampling time selection
+      SMP15                     :: Bits 3   -- Channel 15 sampling time selection
+      SMP14                     :: Bits 3   -- Channel 14 sampling time selection
+      SMP13                     :: Bits 3   -- Channel 13 sampling time selection
+      SMP12                     :: Bits 3   -- Channel 12 sampling time selection
+      SMP11                     :: Bits 3   -- Channel 11 sampling time selection
+      SMP10                     :: Bits 3   -- Channel 10 sampling time selection
+
+    SMPR2 0x10 - sample time register 2
+      _                         :: Bits 2   -- (Reserved)
+      SMP9                      :: Bits 3   -- Channel 9 sampling time selection
+      SMP8                      :: Bits 3   -- Channel 8 sampling time selection
+      SMP7                      :: Bits 3   -- Channel 7 sampling time selection
+      SMP6                      :: Bits 3   -- Channel 6 sampling time selection
+      SMP5                      :: Bits 3   -- Channel 5 sampling time selection
+      SMP4                      :: Bits 3   -- Channel 4 sampling time selection
+      SMP3                      :: Bits 3   -- Channel 3 sampling time selection
+      SMP2                      :: Bits 3   -- Channel 2 sampling time selection
+      SMP1                      :: Bits 3   -- Channel 1 sampling time selection
+      SMP0                      :: Bits 3   -- Channel 0 sampling time selection
+
+    JOFR1 0x14 - injected channel data offset register x
+      _                         :: Bits 20  -- (Reserved)
+      JOFFSET                   :: Bits 12  -- Data offset for injected channel x
+
+    JOFR2 0x18 - injected channel data offset register x
+      _                         :: Bits 20  -- (Reserved)
+      JOFFSET                   :: Bits 12  -- Data offset for injected channel x
+
+    JOFR3 0x1c - injected channel data offset register x
+      _                         :: Bits 20  -- (Reserved)
+      JOFFSET                   :: Bits 12  -- Data offset for injected channel x
+
+    JOFR4 0x20 - injected channel data offset register x
+      _                         :: Bits 20  -- (Reserved)
+      JOFFSET                   :: Bits 12  -- Data offset for injected channel x
+
+    HTR 0x24 - watchdog higher threshold register
+      _                         :: Bits 20  -- (Reserved)
+      HT                        :: Bits 12  -- Analog watchdog higher threshold
+
+    LTR 0x28 - watchdog lower threshold register
+      _                         :: Bits 20  -- (Reserved)
+      LT                        :: Bits 12  -- Analog watchdog lower threshold
+
+    SQR1 0x2c - regular sequence register 1
+      _                         :: Bits 8   -- (Reserved)
+      L                         :: Bits 4   -- Regular channel sequence length
+      SQ16                      :: Bits 5   -- 16th conversion in regular sequence
+      SQ15                      :: Bits 5   -- 15th conversion in regular sequence
+      SQ14                      :: Bits 5   -- 14th conversion in regular sequence
+      SQ13                      :: Bits 5   -- 13th conversion in regular sequence
+
+    SQR2 0x30 - regular sequence register 2
+      _                         :: Bits 2   -- (Reserved)
+      SQ12                      :: Bits 5   -- 12th conversion in regular sequence
+      SQ11                      :: Bits 5   -- 11th conversion in regular sequence
+      SQ10                      :: Bits 5   -- 10th conversion in regular sequence
+      SQ9                       :: Bits 5   -- 9th conversion in regular sequence
+      SQ8                       :: Bits 5   -- 8th conversion in regular sequence
+      SQ7                       :: Bits 5   -- 7th conversion in regular sequence
+
+    SQR3 0x34 - regular sequence register 3
+      _                         :: Bits 2   -- (Reserved)
+      SQ6                       :: Bits 5   -- 6th conversion in regular sequence
+      SQ5                       :: Bits 5   -- 5th conversion in regular sequence
+      SQ4                       :: Bits 5   -- 4th conversion in regular sequence
+      SQ3                       :: Bits 5   -- 3rd conversion in regular sequence
+      SQ2                       :: Bits 5   -- 2nd conversion in regular sequence
+      SQ1                       :: Bits 5   -- 1st conversion in regular sequence
+
+    JSQR 0x38 - injected sequence register
+      _                         :: Bits 10  -- (Reserved)
+      JL                        :: Bits 2   -- Injected sequence length
+      JSQ4                      :: Bits 5   -- 4th conversion in injected sequence
+      JSQ3                      :: Bits 5   -- 3rd conversion in injected sequence
+      JSQ2                      :: Bits 5   -- 2nd conversion in injected sequence
+      JSQ1                      :: Bits 5   -- 1st conversion in injected sequence
+
+    JDR1 0x3c - injected data register x
+      _                         :: Bits 16  -- (Reserved)
+      JDATA                     :: Bits 16  -- Injected data
+
+    JDR2 0x40 - injected data register x
+      _                         :: Bits 16  -- (Reserved)
+      JDATA                     :: Bits 16  -- Injected data
+
+    JDR3 0x44 - injected data register x
+      _                         :: Bits 16  -- (Reserved)
+      JDATA                     :: Bits 16  -- Injected data
+
+    JDR4 0x48 - injected data register x
+      _                         :: Bits 16  -- (Reserved)
+      JDATA                     :: Bits 16  -- Injected data
+
+    DR 0x4c - regular data register
+      _                         :: Bits 16  -- (Reserved)
+      DATA                      :: Bits 16  -- Regular data
+
+  ADC2 0x40012100 
+      
+      Derived from ADC1
+
+  ADC3 0x40012200 
+      
+      Derived from ADC1
+
+  ADC_Common 0x40012300 Common ADC registers
+    
+    CSR 0x0 - ADC Common status register
+      _                         :: Bits 10  -- (Reserved)
+      OVR3                      :: Bit      -- Overrun flag of ADC3
+      STRT3                     :: Bit      -- Regular channel Start flag of ADC 3
+      JSTRT3                    :: Bit      -- Injected channel Start flag of ADC 3
+      JEOC3                     :: Bit      -- Injected channel end of conversion of ADC 3
+      EOC3                      :: Bit      -- End of conversion of ADC 3
+      AWD3                      :: Bit      -- Analog watchdog flag of ADC 3
+      _                         :: Bits 2   -- (Reserved)
+      OVR2                      :: Bit      -- Overrun flag of ADC 2
+      STRT2                     :: Bit      -- Regular channel Start flag of ADC 2
+      JSTRT2                    :: Bit      -- Injected channel Start flag of ADC 2
+      JEOC2                     :: Bit      -- Injected channel end of conversion of ADC 2
+      EOC2                      :: Bit      -- End of conversion of ADC 2
+      AWD2                      :: Bit      -- Analog watchdog flag of ADC 2
+      _                         :: Bits 2   -- (Reserved)
+      OVR1                      :: Bit      -- Overrun flag of ADC 1
+      STRT1                     :: Bit      -- Regular channel Start flag of ADC 1
+      JSTRT1                    :: Bit      -- Injected channel Start flag of ADC 1
+      JEOC1                     :: Bit      -- Injected channel end of conversion of ADC 1
+      EOC1                      :: Bit      -- End of conversion of ADC 1
+      AWD1                      :: Bit      -- Analog watchdog flag of ADC 1
+
+    CCR 0x4 - ADC common control register
+      _                         :: Bits 8   -- (Reserved)
+      TSVREFE                   :: Bit      -- Temperature sensor and VREFINT enable
+      VBATE                     :: Bit      -- VBAT enable
+      _                         :: Bits 4   -- (Reserved)
+      ADCPRE                    :: Bits 2   -- ADC prescaler
+      DMA                       :: Bits 2   -- Direct memory access mode for multi ADC mode
+      DDS                       :: Bit      -- DMA disable selection for multi-ADC mode
+      _                         :: Bit      -- (Reserved)
+      DELAY                     :: Bits 4   -- Delay between 2 sampling phases
+      _                         :: Bits 3   -- (Reserved)
+      MULTI                     :: Bits 5   -- Multi ADC mode selection
+
+    CDR 0x8 - ADC common regular data register for dual and triple modes
+      DATA2                     :: Bits 16  -- 2nd data item of a pair of regular conversions
+      DATA1                     :: Bits 16  -- 1st data item of a pair of regular conversions
+
+  SDIO 0x40012c00 Secure digital input/output interface
+    
+    POWER 0x0 - power control register
+      _                         :: Bits 30  -- (Reserved)
+      PWRCTRL                   :: Bits 2   -- PWRCTRL
+
+    CLKCR 0x4 - SDI clock control register
+      _                         :: Bits 17  -- (Reserved)
+      HWFC_EN                   :: Bit      -- HW Flow Control enable
+      NEGEDGE                   :: Bit      -- SDIO_CK dephasing selection bit
+      WIDBUS                    :: Bits 2   -- Wide bus mode enable bit
+      BYPASS                    :: Bit      -- Clock divider bypass enable bit
+      PWRSAV                    :: Bit      -- Power saving configuration bit
+      CLKEN                     :: Bit      -- Clock enable bit
+      CLKDIV                    :: Bits 8   -- Clock divide factor
+
+    ARG 0x8 - argument register
+      CMDARG                    :: Bits 32  -- Command argument
+
+    CMD 0xc - command register
+      _                         :: Bits 17  -- (Reserved)
+      CE_ATACMD                 :: Bit      -- CE-ATA command
+      nIEN                      :: Bit      -- not Interrupt Enable
+      ENCMDcompl                :: Bit      -- Enable CMD completion
+      SDIOSuspend               :: Bit      -- SD I/O suspend command
+      CPSMEN                    :: Bit      -- Command path state machine (CPSM) Enable bit
+      WAITPEND                  :: Bit      -- CPSM Waits for ends of data transfer (CmdPend internal signal).
+      WAITINT                   :: Bit      -- CPSM waits for interrupt request
+      WAITRESP                  :: Bits 2   -- Wait for response bits
+      CMDINDEX                  :: Bits 6   -- Command index
+
+    RESPCMD 0x10 - command response register
+      _                         :: Bits 26  -- (Reserved)
+      RESPCMD                   :: Bits 6   -- Response command index
+
+    RESP1 0x14 - SDIO response 1 register
+      CARDSTATUS                :: Bits 32  -- Status of a card, which is part of the received response
+
+    RESP2 0x18 - SDIO response 2 register
+      CARDSTATUS                :: Bits 32  -- Status of a card, which is part of the received response
+
+    RESP3 0x1c - SDIO response 3 register
+      CARDSTATUS                :: Bits 32  -- Status of a card, which is part of the received response
+
+    RESP4 0x20 - SDIO response 4 register
+      CARDSTATUS                :: Bits 32  -- Status of a card, which is part of the received response
+
+    DTIMER 0x24 - data timer register
+      DATATIME                  :: Bits 32  -- Data timeout period
+
+    DLEN 0x28 - data length register
+      _                         :: Bits 7   -- (Reserved)
+      DATALENGTH                :: Bits 25  -- Data length value
+
+    DCTRL 0x2c - data control register
+      _                         :: Bits 20  -- (Reserved)
+      SDIOEN                    :: Bit      -- SD I/O enable functions
+      RWMOD                     :: Bit      -- Read wait mode
+      RWSTOP                    :: Bit      -- Read wait stop
+      RWSTART                   :: Bit      -- Read wait start
+      DBLOCKSIZE                :: Bits 4   -- Data block size
+      DMAEN                     :: Bit      -- DMA enable bit
+      DTMODE                    :: Bit      -- Data transfer mode selection 1: Stream or SDIO multibyte data transfer.
+      DTDIR                     :: Bit      -- Data transfer direction selection
+      DTEN                      :: Bit      -- DTEN
+
+    DCOUNT 0x30 - data counter register
+      _                         :: Bits 7   -- (Reserved)
+      DATACOUNT                 :: Bits 25  -- Data count value
+
+    STA 0x34 - status register
+      _                         :: Bits 8   -- (Reserved)
+      CEATAEND                  :: Bit      -- CE-ATA command completion signal received for CMD61
+      SDIOIT                    :: Bit      -- SDIO interrupt received
+      RXDAVL                    :: Bit      -- Data available in receive FIFO
+      TXDAVL                    :: Bit      -- Data available in transmit FIFO
+      RXFIFOE                   :: Bit      -- Receive FIFO empty
+      TXFIFOE                   :: Bit      -- Transmit FIFO empty
+      RXFIFOF                   :: Bit      -- Receive FIFO full
+      TXFIFOF                   :: Bit      -- Transmit FIFO full
+      RXFIFOHF                  :: Bit      -- Receive FIFO half full: there are at least 8 words in the FIFO
+      TXFIFOHE                  :: Bit      -- Transmit FIFO half empty: at least 8 words can be written into the FIFO
+      RXACT                     :: Bit      -- Data receive in progress
+      TXACT                     :: Bit      -- Data transmit in progress
+      CMDACT                    :: Bit      -- Command transfer in progress
+      DBCKEND                   :: Bit      -- Data block sent/received (CRC check passed)
+      STBITERR                  :: Bit      -- Start bit not detected on all data signals in wide bus mode
+      DATAEND                   :: Bit      -- Data end (data counter, SDIDCOUNT, is zero)
+      CMDSENT                   :: Bit      -- Command sent (no response required)
+      CMDREND                   :: Bit      -- Command response received (CRC check passed)
+      RXOVERR                   :: Bit      -- Received FIFO overrun error
+      TXUNDERR                  :: Bit      -- Transmit FIFO underrun error
+      DTIMEOUT                  :: Bit      -- Data timeout
+      CTIMEOUT                  :: Bit      -- Command response timeout
+      DCRCFAIL                  :: Bit      -- Data block sent/received (CRC check failed)
+      CCRCFAIL                  :: Bit      -- Command response received (CRC check failed)
+
+    ICR 0x38 - interrupt clear register
+      _                         :: Bits 8   -- (Reserved)
+      CEATAENDC                 :: Bit      -- CEATAEND flag clear bit
+      SDIOITC                   :: Bit      -- SDIOIT flag clear bit
+      _                         :: Bits 11  -- (Reserved)
+      DBCKENDC                  :: Bit      -- DBCKEND flag clear bit
+      STBITERRC                 :: Bit      -- STBITERR flag clear bit
+      DATAENDC                  :: Bit      -- DATAEND flag clear bit
+      CMDSENTC                  :: Bit      -- CMDSENT flag clear bit
+      CMDRENDC                  :: Bit      -- CMDREND flag clear bit
+      RXOVERRC                  :: Bit      -- RXOVERR flag clear bit
+      TXUNDERRC                 :: Bit      -- TXUNDERR flag clear bit
+      DTIMEOUTC                 :: Bit      -- DTIMEOUT flag clear bit
+      CTIMEOUTC                 :: Bit      -- CTIMEOUT flag clear bit
+      DCRCFAILC                 :: Bit      -- DCRCFAIL flag clear bit
+      CCRCFAILC                 :: Bit      -- CCRCFAIL flag clear bit
+
+    MASK 0x3c - mask register
+      _                         :: Bits 8   -- (Reserved)
+      CEATAENDIE                :: Bit      -- CE-ATA command completion signal received interrupt enable
+      SDIOITIE                  :: Bit      -- SDIO mode interrupt received interrupt enable
+      RXDAVLIE                  :: Bit      -- Data available in Rx FIFO interrupt enable
+      TXDAVLIE                  :: Bit      -- Data available in Tx FIFO interrupt enable
+      RXFIFOEIE                 :: Bit      -- Rx FIFO empty interrupt enable
+      TXFIFOEIE                 :: Bit      -- Tx FIFO empty interrupt enable
+      RXFIFOFIE                 :: Bit      -- Rx FIFO full interrupt enable
+      TXFIFOFIE                 :: Bit      -- Tx FIFO full interrupt enable
+      RXFIFOHFIE                :: Bit      -- Rx FIFO half full interrupt enable
+      TXFIFOHEIE                :: Bit      -- Tx FIFO half empty interrupt enable
+      RXACTIE                   :: Bit      -- Data receive acting interrupt enable
+      TXACTIE                   :: Bit      -- Data transmit acting interrupt enable
+      CMDACTIE                  :: Bit      -- Command acting interrupt enable
+      DBCKENDIE                 :: Bit      -- Data block end interrupt enable
+      STBITERRIE                :: Bit      -- Start bit error interrupt enable
+      DATAENDIE                 :: Bit      -- Data end interrupt enable
+      CMDSENTIE                 :: Bit      -- Command sent interrupt enable
+      CMDRENDIE                 :: Bit      -- Command response received interrupt enable
+      RXOVERRIE                 :: Bit      -- Rx FIFO overrun error interrupt enable
+      TXUNDERRIE                :: Bit      -- Tx FIFO underrun error interrupt enable
+      DTIMEOUTIE                :: Bit      -- Data timeout interrupt enable
+      CTIMEOUTIE                :: Bit      -- Command timeout interrupt enable
+      DCRCFAILIE                :: Bit      -- Data CRC fail interrupt enable
+      CCRCFAILIE                :: Bit      -- Command CRC fail interrupt enable
+
+    FIFOCNT 0x48 - FIFO counter register
+      _                         :: Bits 8   -- (Reserved)
+      FIFOCOUNT                 :: Bits 24  -- Remaining number of words to be written to or read from the FIFO.
+
+    FIFO 0x80 - data FIFO register
+      FIFOData                  :: Bits 32  -- Receive and transmit FIFO data
+
+  SPI1 0x40013000 Serial peripheral interface
+    
+    CR1 0x0 - control register 1
+      _                         :: Bits 16  -- (Reserved)
+      BIDIMODE                  :: Bit      -- Bidirectional data mode enable
+      BIDIOE                    :: Bit      -- Output enable in bidirectional mode
+      CRCEN                     :: Bit      -- Hardware CRC calculation enable
+      CRCNEXT                   :: Bit      -- CRC transfer next
+      DFF                       :: Bit      -- Data frame format
+      RXONLY                    :: Bit      -- Receive only
+      SSM                       :: Bit      -- Software slave management
+      SSI                       :: Bit      -- Internal slave select
+      LSBFIRST                  :: Bit      -- Frame format
+      SPE                       :: Bit      -- SPI enable
+      BR                        :: Bits 3   -- Baud rate control
+      MSTR                      :: Bit      -- Master selection
+      CPOL                      :: Bit      -- Clock polarity
+      CPHA                      :: Bit      -- Clock phase
+
+    CR2 0x4 - control register 2
+      _                         :: Bits 24  -- (Reserved)
+      TXEIE                     :: Bit      -- Tx buffer empty interrupt enable
+      RXNEIE                    :: Bit      -- RX buffer not empty interrupt enable
+      ERRIE                     :: Bit      -- Error interrupt enable
+      FRF                       :: Bit      -- Frame format
+      _                         :: Bit      -- (Reserved)
+      SSOE                      :: Bit      -- SS output enable
+      TXDMAEN                   :: Bit      -- Tx buffer DMA enable
+      RXDMAEN                   :: Bit      -- Rx buffer DMA enable
+
+    SR 0x8 - status register
+      _                         :: Bits 23  -- (Reserved)
+      FRE                       :: Bit      -- TI frame format error
+      BSY                       :: Bit      -- Busy flag
+      OVR                       :: Bit      -- Overrun flag
+      MODF                      :: Bit      -- Mode fault
+      CRCERR                    :: Bit      -- CRC error flag
+      UDR                       :: Bit      -- Underrun flag
+      CHSIDE                    :: Bit      -- Channel side
+      TXE                       :: Bit      -- Transmit buffer empty
+      RXNE                      :: Bit      -- Receive buffer not empty
+
+    DR 0xc - data register
+      _                         :: Bits 16  -- (Reserved)
+      DR                        :: Bits 16  -- Data register
+
+    CRCPR 0x10 - CRC polynomial register
+      _                         :: Bits 16  -- (Reserved)
+      CRCPOLY                   :: Bits 16  -- CRC polynomial register
+
+    RXCRCR 0x14 - RX CRC register
+      _                         :: Bits 16  -- (Reserved)
+      RxCRC                     :: Bits 16  -- Rx CRC register
+
+    TXCRCR 0x18 - TX CRC register
+      _                         :: Bits 16  -- (Reserved)
+      TxCRC                     :: Bits 16  -- Tx CRC register
+
+    I2SCFGR 0x1c - I2S configuration register
+      _                         :: Bits 20  -- (Reserved)
+      I2SMOD                    :: Bit      -- I2S mode selection
+      I2SE                      :: Bit      -- I2S Enable
+      I2SCFG                    :: Bits 2   -- I2S configuration mode
+      PCMSYNC                   :: Bit      -- PCM frame synchronization
+      _                         :: Bit      -- (Reserved)
+      I2SSTD                    :: Bits 2   -- I2S standard selection
+      CKPOL                     :: Bit      -- Steady state clock polarity
+      DATLEN                    :: Bits 2   -- Data length to be transferred
+      CHLEN                     :: Bit      -- Channel length (number of bits per audio channel)
+
+    I2SPR 0x20 - I2S prescaler register
+      _                         :: Bits 22  -- (Reserved)
+      MCKOE                     :: Bit      -- Master clock output enable
+      ODD                       :: Bit      -- Odd factor for the prescaler
+      I2SDIV                    :: Bits 8   -- I2S Linear prescaler
+
+  SPI4 0x40013400 
+      
+      Derived from SPI1
+
+  SYSCFG 0x40013800 System configuration controller
+    
+    MEMRM 0x0 - memory remap register
+      _                         :: Bits 30  -- (Reserved)
+      MEM_MODE                  :: Bits 2   -- MEM_MODE
+
+    EXTICR1 0x8 - external interrupt configuration register 1
+      _                         :: Bits 16  -- (Reserved)
+      EXTI3                     :: Bits 4   -- EXTI x configuration (x = 0 to 3)
+      EXTI2                     :: Bits 4   -- EXTI x configuration (x = 0 to 3)
+      EXTI1                     :: Bits 4   -- EXTI x configuration (x = 0 to 3)
+      EXTI0                     :: Bits 4   -- EXTI x configuration (x = 0 to 3)
+
+    EXTICR2 0xc - external interrupt configuration register 2
+      _                         :: Bits 16  -- (Reserved)
+      EXTI7                     :: Bits 4   -- EXTI x configuration (x = 4 to 7)
+      EXTI6                     :: Bits 4   -- EXTI x configuration (x = 4 to 7)
+      EXTI5                     :: Bits 4   -- EXTI x configuration (x = 4 to 7)
+      EXTI4                     :: Bits 4   -- EXTI x configuration (x = 4 to 7)
+
+    EXTICR3 0x10 - external interrupt configuration register 3
+      _                         :: Bits 16  -- (Reserved)
+      EXTI11                    :: Bits 4   -- EXTI x configuration (x = 8 to 11)
+      EXTI10                    :: Bits 4   -- EXTI10
+      EXTI9                     :: Bits 4   -- EXTI x configuration (x = 8 to 11)
+      EXTI8                     :: Bits 4   -- EXTI x configuration (x = 8 to 11)
+
+    EXTICR4 0x14 - external interrupt configuration register 4
+      _                         :: Bits 16  -- (Reserved)
+      EXTI15                    :: Bits 4   -- EXTI x configuration (x = 12 to 15)
+      EXTI14                    :: Bits 4   -- EXTI x configuration (x = 12 to 15)
+      EXTI13                    :: Bits 4   -- EXTI x configuration (x = 12 to 15)
+      EXTI12                    :: Bits 4   -- EXTI x configuration (x = 12 to 15)
+
+    CMPCR 0x20 - Compensation cell control register
+      _                         :: Bits 23  -- (Reserved)
+      READY                     :: Bit      -- READY
+      _                         :: Bits 7   -- (Reserved)
+      CMP_PD                    :: Bit      -- Compensation cell power-down
+
+  EXTI 0x40013c00 External interrupt/event controller
+    
+    IMR 0x0 - Interrupt mask register (EXTI_IMR)
+      _                         :: Bits 9   -- (Reserved)
+      MR22                      :: Bit      -- Interrupt Mask on line 22
+      MR21                      :: Bit      -- Interrupt Mask on line 21
+      MR20                      :: Bit      -- Interrupt Mask on line 20
+      MR19                      :: Bit      -- Interrupt Mask on line 19
+      MR18                      :: Bit      -- Interrupt Mask on line 18
+      MR17                      :: Bit      -- Interrupt Mask on line 17
+      MR16                      :: Bit      -- Interrupt Mask on line 16
+      MR15                      :: Bit      -- Interrupt Mask on line 15
+      MR14                      :: Bit      -- Interrupt Mask on line 14
+      MR13                      :: Bit      -- Interrupt Mask on line 13
+      MR12                      :: Bit      -- Interrupt Mask on line 12
+      MR11                      :: Bit      -- Interrupt Mask on line 11
+      MR10                      :: Bit      -- Interrupt Mask on line 10
+      MR9                       :: Bit      -- Interrupt Mask on line 9
+      MR8                       :: Bit      -- Interrupt Mask on line 8
+      MR7                       :: Bit      -- Interrupt Mask on line 7
+      MR6                       :: Bit      -- Interrupt Mask on line 6
+      MR5                       :: Bit      -- Interrupt Mask on line 5
+      MR4                       :: Bit      -- Interrupt Mask on line 4
+      MR3                       :: Bit      -- Interrupt Mask on line 3
+      MR2                       :: Bit      -- Interrupt Mask on line 2
+      MR1                       :: Bit      -- Interrupt Mask on line 1
+      MR0                       :: Bit      -- Interrupt Mask on line 0
+
+    EMR 0x4 - Event mask register (EXTI_EMR)
+      _                         :: Bits 9   -- (Reserved)
+      MR22                      :: Bit      -- Event Mask on line 22
+      MR21                      :: Bit      -- Event Mask on line 21
+      MR20                      :: Bit      -- Event Mask on line 20
+      MR19                      :: Bit      -- Event Mask on line 19
+      MR18                      :: Bit      -- Event Mask on line 18
+      MR17                      :: Bit      -- Event Mask on line 17
+      MR16                      :: Bit      -- Event Mask on line 16
+      MR15                      :: Bit      -- Event Mask on line 15
+      MR14                      :: Bit      -- Event Mask on line 14
+      MR13                      :: Bit      -- Event Mask on line 13
+      MR12                      :: Bit      -- Event Mask on line 12
+      MR11                      :: Bit      -- Event Mask on line 11
+      MR10                      :: Bit      -- Event Mask on line 10
+      MR9                       :: Bit      -- Event Mask on line 9
+      MR8                       :: Bit      -- Event Mask on line 8
+      MR7                       :: Bit      -- Event Mask on line 7
+      MR6                       :: Bit      -- Event Mask on line 6
+      MR5                       :: Bit      -- Event Mask on line 5
+      MR4                       :: Bit      -- Event Mask on line 4
+      MR3                       :: Bit      -- Event Mask on line 3
+      MR2                       :: Bit      -- Event Mask on line 2
+      MR1                       :: Bit      -- Event Mask on line 1
+      MR0                       :: Bit      -- Event Mask on line 0
+
+    RTSR 0x8 - Rising Trigger selection register (EXTI_RTSR)
+      _                         :: Bits 9   -- (Reserved)
+      TR22                      :: Bit      -- Rising trigger event configuration of line 22
+      TR21                      :: Bit      -- Rising trigger event configuration of line 21
+      TR20                      :: Bit      -- Rising trigger event configuration of line 20
+      TR19                      :: Bit      -- Rising trigger event configuration of line 19
+      TR18                      :: Bit      -- Rising trigger event configuration of line 18
+      TR17                      :: Bit      -- Rising trigger event configuration of line 17
+      TR16                      :: Bit      -- Rising trigger event configuration of line 16
+      TR15                      :: Bit      -- Rising trigger event configuration of line 15
+      TR14                      :: Bit      -- Rising trigger event configuration of line 14
+      TR13                      :: Bit      -- Rising trigger event configuration of line 13
+      TR12                      :: Bit      -- Rising trigger event configuration of line 12
+      TR11                      :: Bit      -- Rising trigger event configuration of line 11
+      TR10                      :: Bit      -- Rising trigger event configuration of line 10
+      TR9                       :: Bit      -- Rising trigger event configuration of line 9
+      TR8                       :: Bit      -- Rising trigger event configuration of line 8
+      TR7                       :: Bit      -- Rising trigger event configuration of line 7
+      TR6                       :: Bit      -- Rising trigger event configuration of line 6
+      TR5                       :: Bit      -- Rising trigger event configuration of line 5
+      TR4                       :: Bit      -- Rising trigger event configuration of line 4
+      TR3                       :: Bit      -- Rising trigger event configuration of line 3
+      TR2                       :: Bit      -- Rising trigger event configuration of line 2
+      TR1                       :: Bit      -- Rising trigger event configuration of line 1
+      TR0                       :: Bit      -- Rising trigger event configuration of line 0
+
+    FTSR 0xc - Falling Trigger selection register (EXTI_FTSR)
+      _                         :: Bits 9   -- (Reserved)
+      TR22                      :: Bit      -- Falling trigger event configuration of line 22
+      TR21                      :: Bit      -- Falling trigger event configuration of line 21
+      TR20                      :: Bit      -- Falling trigger event configuration of line 20
+      TR19                      :: Bit      -- Falling trigger event configuration of line 19
+      TR18                      :: Bit      -- Falling trigger event configuration of line 18
+      TR17                      :: Bit      -- Falling trigger event configuration of line 17
+      TR16                      :: Bit      -- Falling trigger event configuration of line 16
+      TR15                      :: Bit      -- Falling trigger event configuration of line 15
+      TR14                      :: Bit      -- Falling trigger event configuration of line 14
+      TR13                      :: Bit      -- Falling trigger event configuration of line 13
+      TR12                      :: Bit      -- Falling trigger event configuration of line 12
+      TR11                      :: Bit      -- Falling trigger event configuration of line 11
+      TR10                      :: Bit      -- Falling trigger event configuration of line 10
+      TR9                       :: Bit      -- Falling trigger event configuration of line 9
+      TR8                       :: Bit      -- Falling trigger event configuration of line 8
+      TR7                       :: Bit      -- Falling trigger event configuration of line 7
+      TR6                       :: Bit      -- Falling trigger event configuration of line 6
+      TR5                       :: Bit      -- Falling trigger event configuration of line 5
+      TR4                       :: Bit      -- Falling trigger event configuration of line 4
+      TR3                       :: Bit      -- Falling trigger event configuration of line 3
+      TR2                       :: Bit      -- Falling trigger event configuration of line 2
+      TR1                       :: Bit      -- Falling trigger event configuration of line 1
+      TR0                       :: Bit      -- Falling trigger event configuration of line 0
+
+    SWIER 0x10 - Software interrupt event register (EXTI_SWIER)
+      _                         :: Bits 9   -- (Reserved)
+      SWIER22                   :: Bit      -- Software Interrupt on line 22
+      SWIER21                   :: Bit      -- Software Interrupt on line 21
+      SWIER20                   :: Bit      -- Software Interrupt on line 20
+      SWIER19                   :: Bit      -- Software Interrupt on line 19
+      SWIER18                   :: Bit      -- Software Interrupt on line 18
+      SWIER17                   :: Bit      -- Software Interrupt on line 17
+      SWIER16                   :: Bit      -- Software Interrupt on line 16
+      SWIER15                   :: Bit      -- Software Interrupt on line 15
+      SWIER14                   :: Bit      -- Software Interrupt on line 14
+      SWIER13                   :: Bit      -- Software Interrupt on line 13
+      SWIER12                   :: Bit      -- Software Interrupt on line 12
+      SWIER11                   :: Bit      -- Software Interrupt on line 11
+      SWIER10                   :: Bit      -- Software Interrupt on line 10
+      SWIER9                    :: Bit      -- Software Interrupt on line 9
+      SWIER8                    :: Bit      -- Software Interrupt on line 8
+      SWIER7                    :: Bit      -- Software Interrupt on line 7
+      SWIER6                    :: Bit      -- Software Interrupt on line 6
+      SWIER5                    :: Bit      -- Software Interrupt on line 5
+      SWIER4                    :: Bit      -- Software Interrupt on line 4
+      SWIER3                    :: Bit      -- Software Interrupt on line 3
+      SWIER2                    :: Bit      -- Software Interrupt on line 2
+      SWIER1                    :: Bit      -- Software Interrupt on line 1
+      SWIER0                    :: Bit      -- Software Interrupt on line 0
+
+    PR 0x14 - Pending register (EXTI_PR)
+      _                         :: Bits 9   -- (Reserved)
+      PR22                      :: Bit      -- Pending bit 22
+      PR21                      :: Bit      -- Pending bit 21
+      PR20                      :: Bit      -- Pending bit 20
+      PR19                      :: Bit      -- Pending bit 19
+      PR18                      :: Bit      -- Pending bit 18
+      PR17                      :: Bit      -- Pending bit 17
+      PR16                      :: Bit      -- Pending bit 16
+      PR15                      :: Bit      -- Pending bit 15
+      PR14                      :: Bit      -- Pending bit 14
+      PR13                      :: Bit      -- Pending bit 13
+      PR12                      :: Bit      -- Pending bit 12
+      PR11                      :: Bit      -- Pending bit 11
+      PR10                      :: Bit      -- Pending bit 10
+      PR9                       :: Bit      -- Pending bit 9
+      PR8                       :: Bit      -- Pending bit 8
+      PR7                       :: Bit      -- Pending bit 7
+      PR6                       :: Bit      -- Pending bit 6
+      PR5                       :: Bit      -- Pending bit 5
+      PR4                       :: Bit      -- Pending bit 4
+      PR3                       :: Bit      -- Pending bit 3
+      PR2                       :: Bit      -- Pending bit 2
+      PR1                       :: Bit      -- Pending bit 1
+      PR0                       :: Bit      -- Pending bit 0
+
+  TIM9 0x40014000 General purpose timers
+    
+    CR1 0x0 - control register 1
+      _                         :: Bits 22  -- (Reserved)
+      CKD                       :: Bits 2   -- Clock division
+      ARPE                      :: Bit      -- Auto-reload preload enable
+      _                         :: Bits 3   -- (Reserved)
+      OPM                       :: Bit      -- One-pulse mode
+      URS                       :: Bit      -- Update request source
+      UDIS                      :: Bit      -- Update disable
+      CEN                       :: Bit      -- Counter enable
+
+    CR2 0x4 - control register 2
+      _                         :: Bits 25  -- (Reserved)
+      MMS                       :: Bits 3   -- Master mode selection
+      _                         :: Bits 4   -- (Reserved)
+
+    SMCR 0x8 - slave mode control register
+      _                         :: Bits 24  -- (Reserved)
+      MSM                       :: Bit      -- Master/Slave mode
+      TS                        :: Bits 3   -- Trigger selection
+      _                         :: Bit      -- (Reserved)
+      SMS                       :: Bits 3   -- Slave mode selection
+
+    DIER 0xc - DMA/Interrupt enable register
+      _                         :: Bits 25  -- (Reserved)
+      TIE                       :: Bit      -- Trigger interrupt enable
+      _                         :: Bits 3   -- (Reserved)
+      CC2IE                     :: Bit      -- Capture/Compare 2 interrupt enable
+      CC1IE                     :: Bit      -- Capture/Compare 1 interrupt enable
+      UIE                       :: Bit      -- Update interrupt enable
+
+    SR 0x10 - status register
+      _                         :: Bits 21  -- (Reserved)
+      CC2OF                     :: Bit      -- Capture/compare 2 overcapture flag
+      CC1OF                     :: Bit      -- Capture/Compare 1 overcapture flag
+      _                         :: Bits 2   -- (Reserved)
+      TIF                       :: Bit      -- Trigger interrupt flag
+      _                         :: Bits 3   -- (Reserved)
+      CC2IF                     :: Bit      -- Capture/Compare 2 interrupt flag
+      CC1IF                     :: Bit      -- Capture/compare 1 interrupt flag
+      UIF                       :: Bit      -- Update interrupt flag
+
+    EGR 0x14 - event generation register
+      _                         :: Bits 25  -- (Reserved)
+      TG                        :: Bit      -- Trigger generation
+      _                         :: Bits 3   -- (Reserved)
+      CC2G                      :: Bit      -- Capture/compare 2 generation
+      CC1G                      :: Bit      -- Capture/compare 1 generation
+      UG                        :: Bit      -- Update generation
+
+    CCMR1_Output 0x18 - capture/compare mode register 1 (output mode)
+      _                         :: Bits 17  -- (Reserved)
+      OC2M                      :: Bits 3   -- Output Compare 2 mode
+      OC2PE                     :: Bit      -- Output Compare 2 preload enable
+      OC2FE                     :: Bit      -- Output Compare 2 fast enable
+      CC2S                      :: Bits 2   -- Capture/Compare 2 selection
+      _                         :: Bit      -- (Reserved)
+      OC1M                      :: Bits 3   -- Output Compare 1 mode
+      OC1PE                     :: Bit      -- Output Compare 1 preload enable
+      OC1FE                     :: Bit      -- Output Compare 1 fast enable
+      CC1S                      :: Bits 2   -- Capture/Compare 1 selection
+
+    CCMR1_Input 0x18 - capture/compare mode register 1 (input mode)
+      _                         :: Bits 17  -- (Reserved)
+      IC2F                      :: Bits 3   -- Input capture 2 filter
+      IC2PSC                    :: Bits 2   -- Input capture 2 prescaler
+      CC2S                      :: Bits 2   -- Capture/Compare 2 selection
+      _                         :: Bit      -- (Reserved)
+      IC1F                      :: Bits 3   -- Input capture 1 filter
+      IC1PSC                    :: Bits 2   -- Input capture 1 prescaler
+      CC1S                      :: Bits 2   -- Capture/Compare 1 selection
+
+    CCER 0x20 - capture/compare enable register
+      _                         :: Bits 24  -- (Reserved)
+      CC2NP                     :: Bit      -- Capture/Compare 2 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC2P                      :: Bit      -- Capture/Compare 2 output Polarity
+      CC2E                      :: Bit      -- Capture/Compare 2 output enable
+      CC1NP                     :: Bit      -- Capture/Compare 1 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC1P                      :: Bit      -- Capture/Compare 1 output Polarity
+      CC1E                      :: Bit      -- Capture/Compare 1 output enable
+
+    CNT 0x24 - counter
+      _                         :: Bits 16  -- (Reserved)
+      CNT                       :: Bits 16  -- counter value
+
+    PSC 0x28 - prescaler
+      _                         :: Bits 16  -- (Reserved)
+      PSC                       :: Bits 16  -- Prescaler value
+
+    ARR 0x2c - auto-reload register
+      _                         :: Bits 16  -- (Reserved)
+      ARR                       :: Bits 16  -- Auto-reload value
+
+    CCR1 0x34 - capture/compare register
+      _                         :: Bits 16  -- (Reserved)
+      CCR                       :: Bits 16  -- Capture/Compare value
+
+    CCR2 0x38 - capture/compare register
+      _                         :: Bits 16  -- (Reserved)
+      CCR                       :: Bits 16  -- Capture/Compare value
+
+  TIM10 0x40014400 General-purpose-timers
+    
+    CR1 0x0 - control register 1
+      _                         :: Bits 22  -- (Reserved)
+      CKD                       :: Bits 2   -- Clock division
+      ARPE                      :: Bit      -- Auto-reload preload enable
+      _                         :: Bits 3   -- (Reserved)
+      OPM                       :: Bit      -- One-pulse mode
+      URS                       :: Bit      -- Update request source
+      UDIS                      :: Bit      -- Update disable
+      CEN                       :: Bit      -- Counter enable
+
+    DIER 0xc - DMA/Interrupt enable register
+      _                         :: Bits 30  -- (Reserved)
+      CC1IE                     :: Bit      -- Capture/Compare 1 interrupt enable
+      UIE                       :: Bit      -- Update interrupt enable
+
+    SR 0x10 - status register
+      _                         :: Bits 22  -- (Reserved)
+      CC1OF                     :: Bit      -- Capture/Compare 1 overcapture flag
+      _                         :: Bits 7   -- (Reserved)
+      CC1IF                     :: Bit      -- Capture/compare 1 interrupt flag
+      UIF                       :: Bit      -- Update interrupt flag
+
+    EGR 0x14 - event generation register
+      _                         :: Bits 30  -- (Reserved)
+      CC1G                      :: Bit      -- Capture/compare 1 generation
+      UG                        :: Bit      -- Update generation
+
+    CCMR1_Output 0x18 - capture/compare mode register 1 (output mode)
+      _                         :: Bits 25  -- (Reserved)
+      OC1M                      :: Bits 3   -- Output Compare 1 mode
+      OC1PE                     :: Bit      -- Output Compare 1 preload enable
+      OC1FE                     :: Bit      -- Output Compare 1 fast enable
+      CC1S                      :: Bits 2   -- Capture/Compare 1 selection
+
+    CCMR1_Input 0x18 - capture/compare mode register 1 (input mode)
+      _                         :: Bits 24  -- (Reserved)
+      IC1F                      :: Bits 4   -- Input capture 1 filter
+      IC1PSC                    :: Bits 2   -- Input capture 1 prescaler
+      CC1S                      :: Bits 2   -- Capture/Compare 1 selection
+
+    CCER 0x20 - capture/compare enable register
+      _                         :: Bits 28  -- (Reserved)
+      CC1NP                     :: Bit      -- Capture/Compare 1 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC1P                      :: Bit      -- Capture/Compare 1 output Polarity
+      CC1E                      :: Bit      -- Capture/Compare 1 output enable
+
+    CNT 0x24 - counter
+      _                         :: Bits 16  -- (Reserved)
+      CNT                       :: Bits 16  -- counter value
+
+    PSC 0x28 - prescaler
+      _                         :: Bits 16  -- (Reserved)
+      PSC                       :: Bits 16  -- Prescaler value
+
+    ARR 0x2c - auto-reload register
+      _                         :: Bits 16  -- (Reserved)
+      ARR                       :: Bits 16  -- Auto-reload value
+
+    CCR1 0x34 - capture/compare register
+      _                         :: Bits 16  -- (Reserved)
+      CCR                       :: Bits 16  -- Capture/Compare value
+
+  TIM11 0x40014800 General-purpose-timers
+    
+    CR1 0x0 - control register 1
+      _                         :: Bits 22  -- (Reserved)
+      CKD                       :: Bits 2   -- Clock division
+      ARPE                      :: Bit      -- Auto-reload preload enable
+      _                         :: Bits 3   -- (Reserved)
+      OPM                       :: Bit      -- One-pulse mode
+      URS                       :: Bit      -- Update request source
+      UDIS                      :: Bit      -- Update disable
+      CEN                       :: Bit      -- Counter enable
+
+    DIER 0xc - DMA/Interrupt enable register
+      _                         :: Bits 30  -- (Reserved)
+      CC1IE                     :: Bit      -- Capture/Compare 1 interrupt enable
+      UIE                       :: Bit      -- Update interrupt enable
+
+    SR 0x10 - status register
+      _                         :: Bits 22  -- (Reserved)
+      CC1OF                     :: Bit      -- Capture/Compare 1 overcapture flag
+      _                         :: Bits 7   -- (Reserved)
+      CC1IF                     :: Bit      -- Capture/compare 1 interrupt flag
+      UIF                       :: Bit      -- Update interrupt flag
+
+    EGR 0x14 - event generation register
+      _                         :: Bits 30  -- (Reserved)
+      CC1G                      :: Bit      -- Capture/compare 1 generation
+      UG                        :: Bit      -- Update generation
+
+    CCMR1_Output 0x18 - capture/compare mode register 1 (output mode)
+      _                         :: Bits 25  -- (Reserved)
+      OC1M                      :: Bits 3   -- Output Compare 1 mode
+      OC1PE                     :: Bit      -- Output Compare 1 preload enable
+      OC1FE                     :: Bit      -- Output Compare 1 fast enable
+      CC1S                      :: Bits 2   -- Capture/Compare 1 selection
+
+    CCMR1_Input 0x18 - capture/compare mode register 1 (input mode)
+      _                         :: Bits 24  -- (Reserved)
+      IC1F                      :: Bits 4   -- Input capture 1 filter
+      IC1PSC                    :: Bits 2   -- Input capture 1 prescaler
+      CC1S                      :: Bits 2   -- Capture/Compare 1 selection
+
+    CCER 0x20 - capture/compare enable register
+      _                         :: Bits 28  -- (Reserved)
+      CC1NP                     :: Bit      -- Capture/Compare 1 output Polarity
+      _                         :: Bit      -- (Reserved)
+      CC1P                      :: Bit      -- Capture/Compare 1 output Polarity
+      CC1E                      :: Bit      -- Capture/Compare 1 output enable
+
+    CNT 0x24 - counter
+      _                         :: Bits 16  -- (Reserved)
+      CNT                       :: Bits 16  -- counter value
+
+    PSC 0x28 - prescaler
+      _                         :: Bits 16  -- (Reserved)
+      PSC                       :: Bits 16  -- Prescaler value
+
+    ARR 0x2c - auto-reload register
+      _                         :: Bits 16  -- (Reserved)
+      ARR                       :: Bits 16  -- Auto-reload value
+
+    CCR1 0x34 - capture/compare register
+      _                         :: Bits 16  -- (Reserved)
+      CCR                       :: Bits 16  -- Capture/Compare value
+
+    OR 0x50 - option register
+      _                         :: Bits 30  -- (Reserved)
+      RMP                       :: Bits 2   -- Input 1 remapping capability
+
+  SPI5 0x40015000 
+      
+      Derived from SPI1
+
+  SPI6 0x40015400 
+      
+      Derived from SPI1
+
+  SAI1 0x40015800 Serial audio interface
+    
+    CR1 0x4 - SAI AConfiguration register 1
+      _                         :: Bits 8   -- (Reserved)
+      MCKDIV                    :: Bits 4   -- Master clock divider
+      NODIV                     :: Bit      -- No divider
+      _                         :: Bit      -- (Reserved)
+      DMAEN                     :: Bit      -- DMA enable
+      SAIEN                     :: Bit      -- Audio block enable
+      _                         :: Bits 2   -- (Reserved)
+      OUTDRIV                   :: Bit      -- Output drive
+      MONO                      :: Bit      -- Mono mode
+      SYNCEN                    :: Bits 2   -- Synchronization enable
+      CKSTR                     :: Bit      -- Clock strobing edge
+      LSBFIRST                  :: Bit      -- Least significant bit first
+      DS                        :: Bits 3   -- Data size
+      _                         :: Bit      -- (Reserved)
+      PRTCFG                    :: Bits 2   -- Protocol configuration
+      MODE                      :: Bits 2   -- Audio block mode
+
+    CR2 0x8 - SAI AConfiguration register 2
+      _                         :: Bits 16  -- (Reserved)
+      COMP                      :: Bits 2   -- Companding mode
+      CPL                       :: Bit      -- Complement bit
+      MUTECNT                   :: Bits 6   -- Mute counter
+      MUTEVAL                   :: Bit      -- Mute value
+      MUTE                      :: Bit      -- Mute
+      TRIS                      :: Bit      -- Tristate management on data line
+      FFLUSH                    :: Bit      -- FIFO flush
+      FTH                       :: Bits 3   -- FIFO threshold
+
+    FRCR 0xc - SAI AFrame configuration register
+      _                         :: Bits 13  -- (Reserved)
+      FSOFF                     :: Bit      -- Frame synchronization offset
+      FSPOL                     :: Bit      -- Frame synchronization polarity
+      FSDEF                     :: Bit      -- Frame synchronization definition
+      _                         :: Bit      -- (Reserved)
+      FSALL                     :: Bits 7   -- Frame synchronization active level length
+      FRL                       :: Bits 8   -- Frame length
+
+    SLOTR 0x10 - SAI ASlot register
+      SLOTEN                    :: Bits 16  -- Slot enable
+      _                         :: Bits 4   -- (Reserved)
+      NBSLOT                    :: Bits 4   -- Number of slots in an audio frame
+      SLOTSZ                    :: Bits 2   -- Slot size
+      _                         :: Bit      -- (Reserved)
+      FBOFF                     :: Bits 5   -- First bit offset
+
+    IM 0x14 - SAI AInterrupt mask register2
+      _                         :: Bits 25  -- (Reserved)
+      LFSDETIE                  :: Bit      -- Late frame synchronization detection interrupt enable
+      AFSDETIE                  :: Bit      -- Anticipated frame synchronization detection interrupt enable
+      CNRDYIE                   :: Bit      -- Codec not ready interrupt enable
+      FREQIE                    :: Bit      -- FIFO request interrupt enable
+      WCKCFGIE                  :: Bit      -- Wrong clock configuration interrupt enable
+      MUTEDETIE                 :: Bit      -- Mute detection interrupt enable
+      OVRUDRIE                  :: Bit      -- Overrun/underrun interrupt enable
+
+    SR 0x18 - SAI AStatus register
+      _                         :: Bits 13  -- (Reserved)
+      FLVL                      :: Bits 3   -- FIFO level threshold
+      _                         :: Bits 9   -- (Reserved)
+      LFSDET                    :: Bit      -- Late frame synchronization detection
+      AFSDET                    :: Bit      -- Anticipated frame synchronization detection
+      CNRDY                     :: Bit      -- Codec not ready
+      FREQ                      :: Bit      -- FIFO request
+      WCKCFG                    :: Bit      -- Wrong clock configuration flag
+      MUTEDET                   :: Bit      -- Mute detection
+      OVRUDR                    :: Bit      -- Overrun / underrun
+
+    CLRFR 0x1c - SAI AClear flag register
+      _                         :: Bits 25  -- (Reserved)
+      CLFSDET                   :: Bit      -- Clear late frame synchronization detection flag
+      CAFSDET                   :: Bit      -- Clear anticipated frame synchronization detection flag
+      CCNRDY                    :: Bit      -- Clear codec not ready flag
+      _                         :: Bit      -- (Reserved)
+      CWCKCFG                   :: Bit      -- Clear wrong clock configuration flag
+      CMUTEDET                  :: Bit      -- Mute detection flag
+      COVRUDR                   :: Bit      -- Clear overrun / underrun
+
+    DR 0x20 - SAI AData register
+      DATA                      :: Bits 32  -- Data
+
+    CR1 0x24 - SAI AConfiguration register 1
+      _                         :: Bits 8   -- (Reserved)
+      MCKDIV                    :: Bits 4   -- Master clock divider
+      NODIV                     :: Bit      -- No divider
+      _                         :: Bit      -- (Reserved)
+      DMAEN                     :: Bit      -- DMA enable
+      SAIEN                     :: Bit      -- Audio block enable
+      _                         :: Bits 2   -- (Reserved)
+      OUTDRIV                   :: Bit      -- Output drive
+      MONO                      :: Bit      -- Mono mode
+      SYNCEN                    :: Bits 2   -- Synchronization enable
+      CKSTR                     :: Bit      -- Clock strobing edge
+      LSBFIRST                  :: Bit      -- Least significant bit first
+      DS                        :: Bits 3   -- Data size
+      _                         :: Bit      -- (Reserved)
+      PRTCFG                    :: Bits 2   -- Protocol configuration
+      MODE                      :: Bits 2   -- Audio block mode
+
+    CR2 0x28 - SAI AConfiguration register 2
+      _                         :: Bits 16  -- (Reserved)
+      COMP                      :: Bits 2   -- Companding mode
+      CPL                       :: Bit      -- Complement bit
+      MUTECNT                   :: Bits 6   -- Mute counter
+      MUTEVAL                   :: Bit      -- Mute value
+      MUTE                      :: Bit      -- Mute
+      TRIS                      :: Bit      -- Tristate management on data line
+      FFLUSH                    :: Bit      -- FIFO flush
+      FTH                       :: Bits 3   -- FIFO threshold
+
+    FRCR 0x2c - SAI AFrame configuration register
+      _                         :: Bits 13  -- (Reserved)
+      FSOFF                     :: Bit      -- Frame synchronization offset
+      FSPOL                     :: Bit      -- Frame synchronization polarity
+      FSDEF                     :: Bit      -- Frame synchronization definition
+      _                         :: Bit      -- (Reserved)
+      FSALL                     :: Bits 7   -- Frame synchronization active level length
+      FRL                       :: Bits 8   -- Frame length
+
+    SLOTR 0x30 - SAI ASlot register
+      SLOTEN                    :: Bits 16  -- Slot enable
+      _                         :: Bits 4   -- (Reserved)
+      NBSLOT                    :: Bits 4   -- Number of slots in an audio frame
+      SLOTSZ                    :: Bits 2   -- Slot size
+      _                         :: Bit      -- (Reserved)
+      FBOFF                     :: Bits 5   -- First bit offset
+
+    IM 0x34 - SAI AInterrupt mask register2
+      _                         :: Bits 25  -- (Reserved)
+      LFSDETIE                  :: Bit      -- Late frame synchronization detection interrupt enable
+      AFSDETIE                  :: Bit      -- Anticipated frame synchronization detection interrupt enable
+      CNRDYIE                   :: Bit      -- Codec not ready interrupt enable
+      FREQIE                    :: Bit      -- FIFO request interrupt enable
+      WCKCFGIE                  :: Bit      -- Wrong clock configuration interrupt enable
+      MUTEDETIE                 :: Bit      -- Mute detection interrupt enable
+      OVRUDRIE                  :: Bit      -- Overrun/underrun interrupt enable
+
+    SR 0x38 - SAI AStatus register
+      _                         :: Bits 13  -- (Reserved)
+      FLVL                      :: Bits 3   -- FIFO level threshold
+      _                         :: Bits 9   -- (Reserved)
+      LFSDET                    :: Bit      -- Late frame synchronization detection
+      AFSDET                    :: Bit      -- Anticipated frame synchronization detection
+      CNRDY                     :: Bit      -- Codec not ready
+      FREQ                      :: Bit      -- FIFO request
+      WCKCFG                    :: Bit      -- Wrong clock configuration flag
+      MUTEDET                   :: Bit      -- Mute detection
+      OVRUDR                    :: Bit      -- Overrun / underrun
+
+    CLRFR 0x3c - SAI AClear flag register
+      _                         :: Bits 25  -- (Reserved)
+      CLFSDET                   :: Bit      -- Clear late frame synchronization detection flag
+      CAFSDET                   :: Bit      -- Clear anticipated frame synchronization detection flag
+      CCNRDY                    :: Bit      -- Clear codec not ready flag
+      _                         :: Bit      -- (Reserved)
+      CWCKCFG                   :: Bit      -- Clear wrong clock configuration flag
+      CMUTEDET                  :: Bit      -- Mute detection flag
+      COVRUDR                   :: Bit      -- Clear overrun / underrun
+
+    DR 0x40 - SAI AData register
+      DATA                      :: Bits 32  -- Data
+
+  LTDC 0x40016800 LCD-TFT Controller
+    
+    SSCR 0x8 - Synchronization Size Configuration Register
+      _                         :: Bits 4   -- (Reserved)
+      HSW                       :: Bits 12  -- Horizontal Synchronization Width (in units of pixel clock period)
+      _                         :: Bits 5   -- (Reserved)
+      VSH                       :: Bits 11  -- Vertical Synchronization Height (in units of horizontal scan line)
+
+    BPCR 0xc - Back Porch Configuration Register
+      _                         :: Bits 4   -- (Reserved)
+      AHBP                      :: Bits 12  -- Accumulated Horizontal back porch (in units of pixel clock period)
+      _                         :: Bits 5   -- (Reserved)
+      AVBP                      :: Bits 11  -- Accumulated Vertical back porch (in units of horizontal scan line)
+
+    AWCR 0x10 - Active Width Configuration Register
+      _                         :: Bits 4   -- (Reserved)
+      AAW                       :: Bits 12  -- Accumulated Active Width (in units of pixel clock period)
+      _                         :: Bits 5   -- (Reserved)
+      AAH                       :: Bits 11  -- Accumulated Active Height (in units of horizontal scan line)
+
+    TWCR 0x14 - Total Width Configuration Register
+      _                         :: Bits 4   -- (Reserved)
+      TOTALW                    :: Bits 12  -- Total Width (in units of pixel clock period)
+      _                         :: Bits 5   -- (Reserved)
+      TOTALH                    :: Bits 11  -- Total Height (in units of horizontal scan line)
+
+    GCR 0x18 - Global Control Register
+      HSPOL                     :: Bit      -- Horizontal Synchronization Polarity
+      VSPOL                     :: Bit      -- Vertical Synchronization Polarity
+      DEPOL                     :: Bit      -- Data Enable Polarity
+      PCPOL                     :: Bit      -- Pixel Clock Polarity
+      _                         :: Bits 11  -- (Reserved)
+      DEN                       :: Bit      -- Dither Enable
+      _                         :: Bit      -- (Reserved)
+      DRW                       :: Bits 3   -- Dither Red Width
+      _                         :: Bit      -- (Reserved)
+      DGW                       :: Bits 3   -- Dither Green Width
+      _                         :: Bit      -- (Reserved)
+      DBW                       :: Bits 3   -- Dither Blue Width
+      _                         :: Bits 3   -- (Reserved)
+      LTDCEN                    :: Bit      -- LCD-TFT controller enable bit
+
+    SRCR 0x24 - Shadow Reload Configuration Register
+      _                         :: Bits 30  -- (Reserved)
+      VBR                       :: Bit      -- Vertical Blanking Reload
+      IMR                       :: Bit      -- Immediate Reload
+
+    BCCR 0x2c - Background Color Configuration Register
+      _                         :: Bits 8   -- (Reserved)
+      BCRED                     :: Bits 8   -- Background color red value
+      BCGREEN                   :: Bits 8   -- Background color green value
+      BCBLUE                    :: Bits 8   -- Background color blue value
+
+    IER 0x34 - Interrupt Enable Register
+      _                         :: Bits 28  -- (Reserved)
+      RRIE                      :: Bit      -- Register Reload interrupt enable
+      TERRIE                    :: Bit      -- Transfer Error Interrupt Enable
+      FUIE                      :: Bit      -- FIFO Underrun Interrupt Enable
+      LIE                       :: Bit      -- Line Interrupt Enable
+
+    ISR 0x38 - Interrupt Status Register
+      _                         :: Bits 28  -- (Reserved)
+      RRIF                      :: Bit      -- Register Reload Interrupt Flag
+      TERRIF                    :: Bit      -- Transfer Error interrupt flag
+      FUIF                      :: Bit      -- FIFO Underrun Interrupt flag
+      LIF                       :: Bit      -- Line Interrupt flag
+
+    ICR 0x3c - Interrupt Clear Register
+      _                         :: Bits 28  -- (Reserved)
+      CRRIF                     :: Bit      -- Clears Register Reload Interrupt Flag
+      CTERRIF                   :: Bit      -- Clears the Transfer Error Interrupt Flag
+      CFUIF                     :: Bit      -- Clears the FIFO Underrun Interrupt flag
+      CLIF                      :: Bit      -- Clears the Line Interrupt Flag
+
+    LIPCR 0x40 - Line Interrupt Position Configuration Register
+      _                         :: Bits 21  -- (Reserved)
+      LIPOS                     :: Bits 11  -- Line Interrupt Position
+
+    CPSR 0x44 - Current Position Status Register
+      CXPOS                     :: Bits 16  -- Current X Position
+      CYPOS                     :: Bits 16  -- Current Y Position
+
+    CDSR 0x48 - Current Display Status Register
+      _                         :: Bits 28  -- (Reserved)
+      HSYNCS                    :: Bit      -- Horizontal Synchronization display Status
+      VSYNCS                    :: Bit      -- Vertical Synchronization display Status
+      HDES                      :: Bit      -- Horizontal Data Enable display Status
+      VDES                      :: Bit      -- Vertical Data Enable display Status
+
+    CR 0x84 - Layerx Control Register
+      _                         :: Bits 27  -- (Reserved)
+      CLUTEN                    :: Bit      -- Color Look-Up Table Enable
+      _                         :: Bits 2   -- (Reserved)
+      COLKEN                    :: Bit      -- Color Keying Enable
+      LEN                       :: Bit      -- Layer Enable
+
+    WHPCR 0x88 - Layerx Window Horizontal Position Configuration Register
+      _                         :: Bits 4   -- (Reserved)
+      WHSPPOS                   :: Bits 12  -- Window Horizontal Stop Position
+      _                         :: Bits 4   -- (Reserved)
+      WHSTPOS                   :: Bits 12  -- Window Horizontal Start Position
+
+    WVPCR 0x8c - Layerx Window Vertical Position Configuration Register
+      _                         :: Bits 5   -- (Reserved)
+      WVSPPOS                   :: Bits 11  -- Window Vertical Stop Position
+      _                         :: Bits 5   -- (Reserved)
+      WVSTPOS                   :: Bits 11  -- Window Vertical Start Position
+
+    CKCR 0x90 - Layerx Color Keying Configuration Register
+      _                         :: Bits 8   -- (Reserved)
+      CKRED                     :: Bits 8   -- Color Key Red value
+      CKGREEN                   :: Bits 8   -- Color Key Green value
+      CKBLUE                    :: Bits 8   -- Color Key Blue value
+
+    PFCR 0x94 - Layerx Pixel Format Configuration Register
+      _                         :: Bits 29  -- (Reserved)
+      PF                        :: Bits 3   -- Pixel Format
+
+    CACR 0x98 - Layerx Constant Alpha Configuration Register
+      _                         :: Bits 24  -- (Reserved)
+      CONSTA                    :: Bits 8   -- Constant Alpha
+
+    DCCR 0x9c - Layerx Default Color Configuration Register
+      DCALPHA                   :: Bits 8   -- Default Color Alpha
+      DCRED                     :: Bits 8   -- Default Color Red
+      DCGREEN                   :: Bits 8   -- Default Color Green
+      DCBLUE                    :: Bits 8   -- Default Color Blue
+
+    BFCR 0xa0 - Layerx Blending Factors Configuration Register
+      _                         :: Bits 21  -- (Reserved)
+      BF1                       :: Bits 3   -- Blending Factor 1
+      _                         :: Bits 5   -- (Reserved)
+      BF2                       :: Bits 3   -- Blending Factor 2
+
+    CFBAR 0xac - Layerx Color Frame Buffer Address Register
+      CFBADD                    :: Bits 32  -- Color Frame Buffer Start Address
+
+    CFBLR 0xb0 - Layerx Color Frame Buffer Length Register
+      _                         :: Bits 3   -- (Reserved)
+      CFBP                      :: Bits 13  -- Color Frame Buffer Pitch in bytes
+      _                         :: Bits 3   -- (Reserved)
+      CFBLL                     :: Bits 13  -- Color Frame Buffer Line Length
+
+    CFBLNR 0xb4 - Layerx ColorFrame Buffer Line Number Register
+      _                         :: Bits 21  -- (Reserved)
+      CFBLNBR                   :: Bits 11  -- Frame Buffer Line Number
+
+    CLUTWR 0xc4 - Layerx CLUT Write Register
+      CLUTADD                   :: Bits 8   -- CLUT Address
+      RED                       :: Bits 8   -- Red value
+      GREEN                     :: Bits 8   -- Green value
+      BLUE                      :: Bits 8   -- Blue value
+
+    CR 0x104 - Layerx Control Register
+      _                         :: Bits 27  -- (Reserved)
+      CLUTEN                    :: Bit      -- Color Look-Up Table Enable
+      _                         :: Bits 2   -- (Reserved)
+      COLKEN                    :: Bit      -- Color Keying Enable
+      LEN                       :: Bit      -- Layer Enable
+
+    WHPCR 0x108 - Layerx Window Horizontal Position Configuration Register
+      _                         :: Bits 4   -- (Reserved)
+      WHSPPOS                   :: Bits 12  -- Window Horizontal Stop Position
+      _                         :: Bits 4   -- (Reserved)
+      WHSTPOS                   :: Bits 12  -- Window Horizontal Start Position
+
+    WVPCR 0x10c - Layerx Window Vertical Position Configuration Register
+      _                         :: Bits 5   -- (Reserved)
+      WVSPPOS                   :: Bits 11  -- Window Vertical Stop Position
+      _                         :: Bits 5   -- (Reserved)
+      WVSTPOS                   :: Bits 11  -- Window Vertical Start Position
+
+    CKCR 0x110 - Layerx Color Keying Configuration Register
+      _                         :: Bits 8   -- (Reserved)
+      CKRED                     :: Bits 8   -- Color Key Red value
+      CKGREEN                   :: Bits 8   -- Color Key Green value
+      CKBLUE                    :: Bits 8   -- Color Key Blue value
+
+    PFCR 0x114 - Layerx Pixel Format Configuration Register
+      _                         :: Bits 29  -- (Reserved)
+      PF                        :: Bits 3   -- Pixel Format
+
+    CACR 0x118 - Layerx Constant Alpha Configuration Register
+      _                         :: Bits 24  -- (Reserved)
+      CONSTA                    :: Bits 8   -- Constant Alpha
+
+    DCCR 0x11c - Layerx Default Color Configuration Register
+      DCALPHA                   :: Bits 8   -- Default Color Alpha
+      DCRED                     :: Bits 8   -- Default Color Red
+      DCGREEN                   :: Bits 8   -- Default Color Green
+      DCBLUE                    :: Bits 8   -- Default Color Blue
+
+    BFCR 0x120 - Layerx Blending Factors Configuration Register
+      _                         :: Bits 21  -- (Reserved)
+      BF1                       :: Bits 3   -- Blending Factor 1
+      _                         :: Bits 5   -- (Reserved)
+      BF2                       :: Bits 3   -- Blending Factor 2
+
+    CFBAR 0x12c - Layerx Color Frame Buffer Address Register
+      CFBADD                    :: Bits 32  -- Color Frame Buffer Start Address
+
+    CFBLR 0x130 - Layerx Color Frame Buffer Length Register
+      _                         :: Bits 3   -- (Reserved)
+      CFBP                      :: Bits 13  -- Color Frame Buffer Pitch in bytes
+      _                         :: Bits 3   -- (Reserved)
+      CFBLL                     :: Bits 13  -- Color Frame Buffer Line Length
+
+    CFBLNR 0x134 - Layerx ColorFrame Buffer Line Number Register
+      _                         :: Bits 21  -- (Reserved)
+      CFBLNBR                   :: Bits 11  -- Frame Buffer Line Number
+
+    CLUTWR 0x144 - Layerx CLUT Write Register
+      CLUTADD                   :: Bits 8   -- CLUT Address
+      RED                       :: Bits 8   -- Red value
+      GREEN                     :: Bits 8   -- Green value
+      BLUE                      :: Bits 8   -- Blue value
+
+  GPIOA 0x40020000 General-purpose I/Os
+    
+    MODER 0x0 - GPIO port mode register
+      MODER15                   :: Bits 2   -- Port x configuration pin 15
+      MODER14                   :: Bits 2   -- Port x configuration pin 14
+      MODER13                   :: Bits 2   -- Port x configuration pin 13
+      MODER12                   :: Bits 2   -- Port x configuration pin 12
+      MODER11                   :: Bits 2   -- Port x configuration pin 11
+      MODER10                   :: Bits 2   -- Port x configuration pin 10
+      MODER9                    :: Bits 2   -- Port x configuration pin 9
+      MODER8                    :: Bits 2   -- Port x configuration pin 8
+      MODER7                    :: Bits 2   -- Port x configuration pin 7
+      MODER6                    :: Bits 2   -- Port x configuration pin 6
+      MODER5                    :: Bits 2   -- Port x configuration pin 5
+      MODER4                    :: Bits 2   -- Port x configuration pin 4
+      MODER3                    :: Bits 2   -- Port x configuration pin 3
+      MODER2                    :: Bits 2   -- Port x configuration pin 2
+      MODER1                    :: Bits 2   -- Port x configuration pin 1
+      MODER0                    :: Bits 2   -- Port x configuration pin 0
+
+    OTYPER 0x4 - GPIO port output type register
+      _                         :: Bits 16  -- (Reserved)
+      OT15                      :: Bit      -- Port x configuration pin 15
+      OT14                      :: Bit      -- Port x configuration pin 14
+      OT13                      :: Bit      -- Port x configuration pin 13
+      OT12                      :: Bit      -- Port x configuration pin 12
+      OT11                      :: Bit      -- Port x configuration pin 11
+      OT10                      :: Bit      -- Port x configuration pin 10
+      OT9                       :: Bit      -- Port x configuration pin 9
+      OT8                       :: Bit      -- Port x configuration pin 8
+      OT7                       :: Bit      -- Port x configuration pin 7
+      OT6                       :: Bit      -- Port x configuration pin 6
+      OT5                       :: Bit      -- Port x configuration pin 5
+      OT4                       :: Bit      -- Port x configuration pin 4
+      OT3                       :: Bit      -- Port x configuration pin 3
+      OT2                       :: Bit      -- Port x configuration pin 2
+      OT1                       :: Bit      -- Port x configuration pin 1
+      OT0                       :: Bit      -- Port x configuration pin 0
+
+    OSPEEDR 0x8 - GPIO port output speed register
+      OSPEEDR15                 :: Bits 2   -- Port x configuration pin 15
+      OSPEEDR14                 :: Bits 2   -- Port x configuration pin 14
+      OSPEEDR13                 :: Bits 2   -- Port x configuration pin 13
+      OSPEEDR12                 :: Bits 2   -- Port x configuration pin 12
+      OSPEEDR11                 :: Bits 2   -- Port x configuration pin 11
+      OSPEEDR10                 :: Bits 2   -- Port x configuration pin 10
+      OSPEEDR9                  :: Bits 2   -- Port x configuration pin 9
+      OSPEEDR8                  :: Bits 2   -- Port x configuration pin 8
+      OSPEEDR7                  :: Bits 2   -- Port x configuration pin 7
+      OSPEEDR6                  :: Bits 2   -- Port x configuration pin 6
+      OSPEEDR5                  :: Bits 2   -- Port x configuration pin 5
+      OSPEEDR4                  :: Bits 2   -- Port x configuration pin 4
+      OSPEEDR3                  :: Bits 2   -- Port x configuration pin 3
+      OSPEEDR2                  :: Bits 2   -- Port x configuration pin 2
+      OSPEEDR1                  :: Bits 2   -- Port x configuration pin 1
+      OSPEEDR0                  :: Bits 2   -- Port x configuration pin 0
+
+    PUPDR 0xc - GPIO port pull-up/pull-down register
+      PUPDR15                   :: Bits 2   -- Port x configuration pin 15
+      PUPDR14                   :: Bits 2   -- Port x configuration pin 14
+      PUPDR13                   :: Bits 2   -- Port x configuration pin 13
+      PUPDR12                   :: Bits 2   -- Port x configuration pin 12
+      PUPDR11                   :: Bits 2   -- Port x configuration pin 11
+      PUPDR10                   :: Bits 2   -- Port x configuration pin 10
+      PUPDR9                    :: Bits 2   -- Port x configuration pin 9
+      PUPDR8                    :: Bits 2   -- Port x configuration pin 8
+      PUPDR7                    :: Bits 2   -- Port x configuration pin 7
+      PUPDR6                    :: Bits 2   -- Port x configuration pin 6
+      PUPDR5                    :: Bits 2   -- Port x configuration pin 5
+      PUPDR4                    :: Bits 2   -- Port x configuration pin 4
+      PUPDR3                    :: Bits 2   -- Port x configuration pin 3
+      PUPDR2                    :: Bits 2   -- Port x configuration pin 2
+      PUPDR1                    :: Bits 2   -- Port x configuration pin 1
+      PUPDR0                    :: Bits 2   -- Port x configuration pin 0
+
+    IDR 0x10 - GPIO port input data register
+      _                         :: Bits 16  -- (Reserved)
+      IDR15                     :: Bit      -- Port input data pin 15
+      IDR14                     :: Bit      -- Port input data pin 14
+      IDR13                     :: Bit      -- Port input data pin 13
+      IDR12                     :: Bit      -- Port input data pin 12
+      IDR11                     :: Bit      -- Port input data pin 11
+      IDR10                     :: Bit      -- Port input data pin 10
+      IDR9                      :: Bit      -- Port input data pin 9
+      IDR8                      :: Bit      -- Port input data pin 8
+      IDR7                      :: Bit      -- Port input data pin 7
+      IDR6                      :: Bit      -- Port input data pin 6
+      IDR5                      :: Bit      -- Port input data pin 5
+      IDR4                      :: Bit      -- Port input data pin 4
+      IDR3                      :: Bit      -- Port input data pin 3
+      IDR2                      :: Bit      -- Port input data pin 2
+      IDR1                      :: Bit      -- Port input data pin 1
+      IDR0                      :: Bit      -- Port input data pin 0
+
+    ODR 0x14 - GPIO port output data register
+      _                         :: Bits 16  -- (Reserved)
+      ODR15                     :: Bit      -- Port output data pin 15
+      ODR14                     :: Bit      -- Port output data pin 14
+      ODR13                     :: Bit      -- Port output data pin 13
+      ODR12                     :: Bit      -- Port output data pin 12
+      ODR11                     :: Bit      -- Port output data pin 11
+      ODR10                     :: Bit      -- Port output data pin 10
+      ODR9                      :: Bit      -- Port output data pin 9
+      ODR8                      :: Bit      -- Port output data pin 8
+      ODR7                      :: Bit      -- Port output data pin 7
+      ODR6                      :: Bit      -- Port output data pin 6
+      ODR5                      :: Bit      -- Port output data pin 5
+      ODR4                      :: Bit      -- Port output data pin 4
+      ODR3                      :: Bit      -- Port output data pin 3
+      ODR2                      :: Bit      -- Port output data pin 2
+      ODR1                      :: Bit      -- Port output data pin 1
+      ODR0                      :: Bit      -- Port output data pin 0
+
+    BSRR 0x18 - GPIO port bit set/reset register
+      BR15                      :: Bit      -- Port x reset pin 15
+      BR14                      :: Bit      -- Port x reset pin 14
+      BR13                      :: Bit      -- Port x reset pin 13
+      BR12                      :: Bit      -- Port x reset pin 12
+      BR11                      :: Bit      -- Port x reset pin 11
+      BR10                      :: Bit      -- Port x reset pin 10
+      BR9                       :: Bit      -- Port x reset pin 9
+      BR8                       :: Bit      -- Port x reset pin 8
+      BR7                       :: Bit      -- Port x reset pin 7
+      BR6                       :: Bit      -- Port x reset pin 6
+      BR5                       :: Bit      -- Port x reset pin 5
+      BR4                       :: Bit      -- Port x reset pin 4
+      BR3                       :: Bit      -- Port x reset pin 3
+      BR2                       :: Bit      -- Port x reset pin 2
+      BR1                       :: Bit      -- Port x reset pin 1
+      BR0                       :: Bit      -- Port x reset pin 0
+      BS15                      :: Bit      -- Port x set pin 15
+      BS14                      :: Bit      -- Port x set pin 14
+      BS13                      :: Bit      -- Port x set pin 13
+      BS12                      :: Bit      -- Port x set pin 12
+      BS11                      :: Bit      -- Port x set pin 11
+      BS10                      :: Bit      -- Port x set pin 10
+      BS9                       :: Bit      -- Port x set pin 9
+      BS8                       :: Bit      -- Port x set pin 8
+      BS7                       :: Bit      -- Port x set pin 7
+      BS6                       :: Bit      -- Port x set pin 6
+      BS5                       :: Bit      -- Port x set pin 5
+      BS4                       :: Bit      -- Port x set pin 4
+      BS3                       :: Bit      -- Port x set pin 3
+      BS2                       :: Bit      -- Port x set pin 2
+      BS1                       :: Bit      -- Port x set pin 1
+      BS0                       :: Bit      -- Port x set pin 0
+
+    LCKR 0x1c - GPIO port configuration lock register
+      _                         :: Bits 15  -- (Reserved)
+      LCKK                      :: Bit      -- Port x lock bit y (y= 0..15)
+      LCK15                     :: Bit      -- Port x lock pin 15
+      LCK14                     :: Bit      -- Port x lock pin 14
+      LCK13                     :: Bit      -- Port x lock pin 13
+      LCK12                     :: Bit      -- Port x lock pin 12
+      LCK11                     :: Bit      -- Port x lock pin 11
+      LCK10                     :: Bit      -- Port x lock pin 10
+      LCK9                      :: Bit      -- Port x lock pin 9
+      LCK8                      :: Bit      -- Port x lock pin 8
+      LCK7                      :: Bit      -- Port x lock pin 7
+      LCK6                      :: Bit      -- Port x lock pin 6
+      LCK5                      :: Bit      -- Port x lock pin 5
+      LCK4                      :: Bit      -- Port x lock pin 4
+      LCK3                      :: Bit      -- Port x lock pin 3
+      LCK2                      :: Bit      -- Port x lock pin 2
+      LCK1                      :: Bit      -- Port x lock pin 1
+      LCK0                      :: Bit      -- Port x lock pin 0
+
+    AFRL 0x20 - GPIO alternate function low register
+      AFRL7                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL6                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL5                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL4                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL3                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL2                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL1                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL0                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+
+    AFRH 0x24 - GPIO alternate function high register
+      AFRH15                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH14                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH13                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH12                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH11                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH10                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH9                     :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH8                     :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+
+  GPIOB 0x40020400 General-purpose I/Os
+    
+    MODER 0x0 - GPIO port mode register
+      MODER15                   :: Bits 2   -- Port x configuration pin 15
+      MODER14                   :: Bits 2   -- Port x configuration pin 14
+      MODER13                   :: Bits 2   -- Port x configuration pin 13
+      MODER12                   :: Bits 2   -- Port x configuration pin 12
+      MODER11                   :: Bits 2   -- Port x configuration pin 11
+      MODER10                   :: Bits 2   -- Port x configuration pin 10
+      MODER9                    :: Bits 2   -- Port x configuration pin 9
+      MODER8                    :: Bits 2   -- Port x configuration pin 8
+      MODER7                    :: Bits 2   -- Port x configuration pin 7
+      MODER6                    :: Bits 2   -- Port x configuration pin 6
+      MODER5                    :: Bits 2   -- Port x configuration pin 5
+      MODER4                    :: Bits 2   -- Port x configuration pin 4
+      MODER3                    :: Bits 2   -- Port x configuration pin 3
+      MODER2                    :: Bits 2   -- Port x configuration pin 2
+      MODER1                    :: Bits 2   -- Port x configuration pin 1
+      MODER0                    :: Bits 2   -- Port x configuration pin 0
+
+    OTYPER 0x4 - GPIO port output type register
+      _                         :: Bits 16  -- (Reserved)
+      OT15                      :: Bit      -- Port x configuration pin 15
+      OT14                      :: Bit      -- Port x configuration pin 14
+      OT13                      :: Bit      -- Port x configuration pin 13
+      OT12                      :: Bit      -- Port x configuration pin 12
+      OT11                      :: Bit      -- Port x configuration pin 11
+      OT10                      :: Bit      -- Port x configuration pin 10
+      OT9                       :: Bit      -- Port x configuration pin 9
+      OT8                       :: Bit      -- Port x configuration pin 8
+      OT7                       :: Bit      -- Port x configuration pin 7
+      OT6                       :: Bit      -- Port x configuration pin 6
+      OT5                       :: Bit      -- Port x configuration pin 5
+      OT4                       :: Bit      -- Port x configuration pin 4
+      OT3                       :: Bit      -- Port x configuration pin 3
+      OT2                       :: Bit      -- Port x configuration pin 2
+      OT1                       :: Bit      -- Port x configuration pin 1
+      OT0                       :: Bit      -- Port x configuration pin 0
+
+    OSPEEDR 0x8 - GPIO port output speed register
+      OSPEEDR15                 :: Bits 2   -- Port x configuration pin 15
+      OSPEEDR14                 :: Bits 2   -- Port x configuration pin 14
+      OSPEEDR13                 :: Bits 2   -- Port x configuration pin 13
+      OSPEEDR12                 :: Bits 2   -- Port x configuration pin 12
+      OSPEEDR11                 :: Bits 2   -- Port x configuration pin 11
+      OSPEEDR10                 :: Bits 2   -- Port x configuration pin 10
+      OSPEEDR9                  :: Bits 2   -- Port x configuration pin 9
+      OSPEEDR8                  :: Bits 2   -- Port x configuration pin 8
+      OSPEEDR7                  :: Bits 2   -- Port x configuration pin 7
+      OSPEEDR6                  :: Bits 2   -- Port x configuration pin 6
+      OSPEEDR5                  :: Bits 2   -- Port x configuration pin 5
+      OSPEEDR4                  :: Bits 2   -- Port x configuration pin 4
+      OSPEEDR3                  :: Bits 2   -- Port x configuration pin 3
+      OSPEEDR2                  :: Bits 2   -- Port x configuration pin 2
+      OSPEEDR1                  :: Bits 2   -- Port x configuration pin 1
+      OSPEEDR0                  :: Bits 2   -- Port x configuration pin 0
+
+    PUPDR 0xc - GPIO port pull-up/pull-down register
+      PUPDR15                   :: Bits 2   -- Port x configuration pin 15
+      PUPDR14                   :: Bits 2   -- Port x configuration pin 14
+      PUPDR13                   :: Bits 2   -- Port x configuration pin 13
+      PUPDR12                   :: Bits 2   -- Port x configuration pin 12
+      PUPDR11                   :: Bits 2   -- Port x configuration pin 11
+      PUPDR10                   :: Bits 2   -- Port x configuration pin 10
+      PUPDR9                    :: Bits 2   -- Port x configuration pin 9
+      PUPDR8                    :: Bits 2   -- Port x configuration pin 8
+      PUPDR7                    :: Bits 2   -- Port x configuration pin 7
+      PUPDR6                    :: Bits 2   -- Port x configuration pin 6
+      PUPDR5                    :: Bits 2   -- Port x configuration pin 5
+      PUPDR4                    :: Bits 2   -- Port x configuration pin 4
+      PUPDR3                    :: Bits 2   -- Port x configuration pin 3
+      PUPDR2                    :: Bits 2   -- Port x configuration pin 2
+      PUPDR1                    :: Bits 2   -- Port x configuration pin 1
+      PUPDR0                    :: Bits 2   -- Port x configuration pin 0
+
+    IDR 0x10 - GPIO port input data register
+      _                         :: Bits 16  -- (Reserved)
+      IDR15                     :: Bit      -- Port input data pin 15
+      IDR14                     :: Bit      -- Port input data pin 14
+      IDR13                     :: Bit      -- Port input data pin 13
+      IDR12                     :: Bit      -- Port input data pin 12
+      IDR11                     :: Bit      -- Port input data pin 11
+      IDR10                     :: Bit      -- Port input data pin 10
+      IDR9                      :: Bit      -- Port input data pin 9
+      IDR8                      :: Bit      -- Port input data pin 8
+      IDR7                      :: Bit      -- Port input data pin 7
+      IDR6                      :: Bit      -- Port input data pin 6
+      IDR5                      :: Bit      -- Port input data pin 5
+      IDR4                      :: Bit      -- Port input data pin 4
+      IDR3                      :: Bit      -- Port input data pin 3
+      IDR2                      :: Bit      -- Port input data pin 2
+      IDR1                      :: Bit      -- Port input data pin 1
+      IDR0                      :: Bit      -- Port input data pin 0
+
+    ODR 0x14 - GPIO port output data register
+      _                         :: Bits 16  -- (Reserved)
+      ODR15                     :: Bit      -- Port output data pin 15
+      ODR14                     :: Bit      -- Port output data pin 14
+      ODR13                     :: Bit      -- Port output data pin 13
+      ODR12                     :: Bit      -- Port output data pin 12
+      ODR11                     :: Bit      -- Port output data pin 11
+      ODR10                     :: Bit      -- Port output data pin 10
+      ODR9                      :: Bit      -- Port output data pin 9
+      ODR8                      :: Bit      -- Port output data pin 8
+      ODR7                      :: Bit      -- Port output data pin 7
+      ODR6                      :: Bit      -- Port output data pin 6
+      ODR5                      :: Bit      -- Port output data pin 5
+      ODR4                      :: Bit      -- Port output data pin 4
+      ODR3                      :: Bit      -- Port output data pin 3
+      ODR2                      :: Bit      -- Port output data pin 2
+      ODR1                      :: Bit      -- Port output data pin 1
+      ODR0                      :: Bit      -- Port output data pin 0
+
+    BSRR 0x18 - GPIO port bit set/reset register
+      BR15                      :: Bit      -- Port x reset pin 15
+      BR14                      :: Bit      -- Port x reset pin 14
+      BR13                      :: Bit      -- Port x reset pin 13
+      BR12                      :: Bit      -- Port x reset pin 12
+      BR11                      :: Bit      -- Port x reset pin 11
+      BR10                      :: Bit      -- Port x reset pin 10
+      BR9                       :: Bit      -- Port x reset pin 9
+      BR8                       :: Bit      -- Port x reset pin 8
+      BR7                       :: Bit      -- Port x reset pin 7
+      BR6                       :: Bit      -- Port x reset pin 6
+      BR5                       :: Bit      -- Port x reset pin 5
+      BR4                       :: Bit      -- Port x reset pin 4
+      BR3                       :: Bit      -- Port x reset pin 3
+      BR2                       :: Bit      -- Port x reset pin 2
+      BR1                       :: Bit      -- Port x reset pin 1
+      BR0                       :: Bit      -- Port x reset pin 0
+      BS15                      :: Bit      -- Port x set pin 15
+      BS14                      :: Bit      -- Port x set pin 14
+      BS13                      :: Bit      -- Port x set pin 13
+      BS12                      :: Bit      -- Port x set pin 12
+      BS11                      :: Bit      -- Port x set pin 11
+      BS10                      :: Bit      -- Port x set pin 10
+      BS9                       :: Bit      -- Port x set pin 9
+      BS8                       :: Bit      -- Port x set pin 8
+      BS7                       :: Bit      -- Port x set pin 7
+      BS6                       :: Bit      -- Port x set pin 6
+      BS5                       :: Bit      -- Port x set pin 5
+      BS4                       :: Bit      -- Port x set pin 4
+      BS3                       :: Bit      -- Port x set pin 3
+      BS2                       :: Bit      -- Port x set pin 2
+      BS1                       :: Bit      -- Port x set pin 1
+      BS0                       :: Bit      -- Port x set pin 0
+
+    LCKR 0x1c - GPIO port configuration lock register
+      _                         :: Bits 15  -- (Reserved)
+      LCKK                      :: Bit      -- Port x lock bit y (y= 0..15)
+      LCK15                     :: Bit      -- Port x lock pin 15
+      LCK14                     :: Bit      -- Port x lock pin 14
+      LCK13                     :: Bit      -- Port x lock pin 13
+      LCK12                     :: Bit      -- Port x lock pin 12
+      LCK11                     :: Bit      -- Port x lock pin 11
+      LCK10                     :: Bit      -- Port x lock pin 10
+      LCK9                      :: Bit      -- Port x lock pin 9
+      LCK8                      :: Bit      -- Port x lock pin 8
+      LCK7                      :: Bit      -- Port x lock pin 7
+      LCK6                      :: Bit      -- Port x lock pin 6
+      LCK5                      :: Bit      -- Port x lock pin 5
+      LCK4                      :: Bit      -- Port x lock pin 4
+      LCK3                      :: Bit      -- Port x lock pin 3
+      LCK2                      :: Bit      -- Port x lock pin 2
+      LCK1                      :: Bit      -- Port x lock pin 1
+      LCK0                      :: Bit      -- Port x lock pin 0
+
+    AFRL 0x20 - GPIO alternate function low register
+      AFRL7                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL6                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL5                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL4                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL3                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL2                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL1                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL0                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+
+    AFRH 0x24 - GPIO alternate function high register
+      AFRH15                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH14                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH13                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH12                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH11                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH10                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH9                     :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH8                     :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+
+  GPIOC 0x40020800 
+      
+      Derived from GPIOI
+
+  GPIOD 0x40020c00 
+      
+      Derived from GPIOI
+
+  GPIOE 0x40021000 
+      
+      Derived from GPIOI
+
+  GPIOF 0x40021400 
+      
+      Derived from GPIOI
+
+  GPIOG 0x40021800 
+      
+      Derived from GPIOI
+
+  GPIOH 0x40021c00 
+      
+      Derived from GPIOI
+
+  GPIOI 0x40022000 General-purpose I/Os
+    
+    MODER 0x0 - GPIO port mode register
+      MODER15                   :: Bits 2   -- Port x configuration pin 15
+      MODER14                   :: Bits 2   -- Port x configuration pin 14
+      MODER13                   :: Bits 2   -- Port x configuration pin 13
+      MODER12                   :: Bits 2   -- Port x configuration pin 12
+      MODER11                   :: Bits 2   -- Port x configuration pin 11
+      MODER10                   :: Bits 2   -- Port x configuration pin 10
+      MODER9                    :: Bits 2   -- Port x configuration pin 9
+      MODER8                    :: Bits 2   -- Port x configuration pin 8
+      MODER7                    :: Bits 2   -- Port x configuration pin 7
+      MODER6                    :: Bits 2   -- Port x configuration pin 6
+      MODER5                    :: Bits 2   -- Port x configuration pin 5
+      MODER4                    :: Bits 2   -- Port x configuration pin 4
+      MODER3                    :: Bits 2   -- Port x configuration pin 3
+      MODER2                    :: Bits 2   -- Port x configuration pin 2
+      MODER1                    :: Bits 2   -- Port x configuration pin 1
+      MODER0                    :: Bits 2   -- Port x configuration pin 0
+
+    OTYPER 0x4 - GPIO port output type register
+      _                         :: Bits 16  -- (Reserved)
+      OT15                      :: Bit      -- Port x configuration pin 15
+      OT14                      :: Bit      -- Port x configuration pin 14
+      OT13                      :: Bit      -- Port x configuration pin 13
+      OT12                      :: Bit      -- Port x configuration pin 12
+      OT11                      :: Bit      -- Port x configuration pin 11
+      OT10                      :: Bit      -- Port x configuration pin 10
+      OT9                       :: Bit      -- Port x configuration pin 9
+      OT8                       :: Bit      -- Port x configuration pin 8
+      OT7                       :: Bit      -- Port x configuration pin 7
+      OT6                       :: Bit      -- Port x configuration pin 6
+      OT5                       :: Bit      -- Port x configuration pin 5
+      OT4                       :: Bit      -- Port x configuration pin 4
+      OT3                       :: Bit      -- Port x configuration pin 3
+      OT2                       :: Bit      -- Port x configuration pin 2
+      OT1                       :: Bit      -- Port x configuration pin 1
+      OT0                       :: Bit      -- Port x configuration pin 0
+
+    OSPEEDR 0x8 - GPIO port output speed register
+      OSPEEDR15                 :: Bits 2   -- Port x configuration pin 15
+      OSPEEDR14                 :: Bits 2   -- Port x configuration pin 14
+      OSPEEDR13                 :: Bits 2   -- Port x configuration pin 13
+      OSPEEDR12                 :: Bits 2   -- Port x configuration pin 12
+      OSPEEDR11                 :: Bits 2   -- Port x configuration pin 11
+      OSPEEDR10                 :: Bits 2   -- Port x configuration pin 10
+      OSPEEDR9                  :: Bits 2   -- Port x configuration pin 9
+      OSPEEDR8                  :: Bits 2   -- Port x configuration pin 8
+      OSPEEDR7                  :: Bits 2   -- Port x configuration pin 7
+      OSPEEDR6                  :: Bits 2   -- Port x configuration pin 6
+      OSPEEDR5                  :: Bits 2   -- Port x configuration pin 5
+      OSPEEDR4                  :: Bits 2   -- Port x configuration pin 4
+      OSPEEDR3                  :: Bits 2   -- Port x configuration pin 3
+      OSPEEDR2                  :: Bits 2   -- Port x configuration pin 2
+      OSPEEDR1                  :: Bits 2   -- Port x configuration pin 1
+      OSPEEDR0                  :: Bits 2   -- Port x configuration pin 0
+
+    PUPDR 0xc - GPIO port pull-up/pull-down register
+      PUPDR15                   :: Bits 2   -- Port x configuration pin 15
+      PUPDR14                   :: Bits 2   -- Port x configuration pin 14
+      PUPDR13                   :: Bits 2   -- Port x configuration pin 13
+      PUPDR12                   :: Bits 2   -- Port x configuration pin 12
+      PUPDR11                   :: Bits 2   -- Port x configuration pin 11
+      PUPDR10                   :: Bits 2   -- Port x configuration pin 10
+      PUPDR9                    :: Bits 2   -- Port x configuration pin 9
+      PUPDR8                    :: Bits 2   -- Port x configuration pin 8
+      PUPDR7                    :: Bits 2   -- Port x configuration pin 7
+      PUPDR6                    :: Bits 2   -- Port x configuration pin 6
+      PUPDR5                    :: Bits 2   -- Port x configuration pin 5
+      PUPDR4                    :: Bits 2   -- Port x configuration pin 4
+      PUPDR3                    :: Bits 2   -- Port x configuration pin 3
+      PUPDR2                    :: Bits 2   -- Port x configuration pin 2
+      PUPDR1                    :: Bits 2   -- Port x configuration pin 1
+      PUPDR0                    :: Bits 2   -- Port x configuration pin 0
+
+    IDR 0x10 - GPIO port input data register
+      _                         :: Bits 16  -- (Reserved)
+      IDR15                     :: Bit      -- Port input data pin 15
+      IDR14                     :: Bit      -- Port input data pin 14
+      IDR13                     :: Bit      -- Port input data pin 13
+      IDR12                     :: Bit      -- Port input data pin 12
+      IDR11                     :: Bit      -- Port input data pin 11
+      IDR10                     :: Bit      -- Port input data pin 10
+      IDR9                      :: Bit      -- Port input data pin 9
+      IDR8                      :: Bit      -- Port input data pin 8
+      IDR7                      :: Bit      -- Port input data pin 7
+      IDR6                      :: Bit      -- Port input data pin 6
+      IDR5                      :: Bit      -- Port input data pin 5
+      IDR4                      :: Bit      -- Port input data pin 4
+      IDR3                      :: Bit      -- Port input data pin 3
+      IDR2                      :: Bit      -- Port input data pin 2
+      IDR1                      :: Bit      -- Port input data pin 1
+      IDR0                      :: Bit      -- Port input data pin 0
+
+    ODR 0x14 - GPIO port output data register
+      _                         :: Bits 16  -- (Reserved)
+      ODR15                     :: Bit      -- Port output data pin 15
+      ODR14                     :: Bit      -- Port output data pin 14
+      ODR13                     :: Bit      -- Port output data pin 13
+      ODR12                     :: Bit      -- Port output data pin 12
+      ODR11                     :: Bit      -- Port output data pin 11
+      ODR10                     :: Bit      -- Port output data pin 10
+      ODR9                      :: Bit      -- Port output data pin 9
+      ODR8                      :: Bit      -- Port output data pin 8
+      ODR7                      :: Bit      -- Port output data pin 7
+      ODR6                      :: Bit      -- Port output data pin 6
+      ODR5                      :: Bit      -- Port output data pin 5
+      ODR4                      :: Bit      -- Port output data pin 4
+      ODR3                      :: Bit      -- Port output data pin 3
+      ODR2                      :: Bit      -- Port output data pin 2
+      ODR1                      :: Bit      -- Port output data pin 1
+      ODR0                      :: Bit      -- Port output data pin 0
+
+    BSRR 0x18 - GPIO port bit set/reset register
+      BR15                      :: Bit      -- Port x reset pin 15
+      BR14                      :: Bit      -- Port x reset pin 14
+      BR13                      :: Bit      -- Port x reset pin 13
+      BR12                      :: Bit      -- Port x reset pin 12
+      BR11                      :: Bit      -- Port x reset pin 11
+      BR10                      :: Bit      -- Port x reset pin 10
+      BR9                       :: Bit      -- Port x reset pin 9
+      BR8                       :: Bit      -- Port x reset pin 8
+      BR7                       :: Bit      -- Port x reset pin 7
+      BR6                       :: Bit      -- Port x reset pin 6
+      BR5                       :: Bit      -- Port x reset pin 5
+      BR4                       :: Bit      -- Port x reset pin 4
+      BR3                       :: Bit      -- Port x reset pin 3
+      BR2                       :: Bit      -- Port x reset pin 2
+      BR1                       :: Bit      -- Port x reset pin 1
+      BR0                       :: Bit      -- Port x reset pin 0
+      BS15                      :: Bit      -- Port x set pin 15
+      BS14                      :: Bit      -- Port x set pin 14
+      BS13                      :: Bit      -- Port x set pin 13
+      BS12                      :: Bit      -- Port x set pin 12
+      BS11                      :: Bit      -- Port x set pin 11
+      BS10                      :: Bit      -- Port x set pin 10
+      BS9                       :: Bit      -- Port x set pin 9
+      BS8                       :: Bit      -- Port x set pin 8
+      BS7                       :: Bit      -- Port x set pin 7
+      BS6                       :: Bit      -- Port x set pin 6
+      BS5                       :: Bit      -- Port x set pin 5
+      BS4                       :: Bit      -- Port x set pin 4
+      BS3                       :: Bit      -- Port x set pin 3
+      BS2                       :: Bit      -- Port x set pin 2
+      BS1                       :: Bit      -- Port x set pin 1
+      BS0                       :: Bit      -- Port x set pin 0
+
+    LCKR 0x1c - GPIO port configuration lock register
+      _                         :: Bits 15  -- (Reserved)
+      LCKK                      :: Bit      -- Port x lock bit y (y= 0..15)
+      LCK15                     :: Bit      -- Port x lock pin 15
+      LCK14                     :: Bit      -- Port x lock pin 14
+      LCK13                     :: Bit      -- Port x lock pin 13
+      LCK12                     :: Bit      -- Port x lock pin 12
+      LCK11                     :: Bit      -- Port x lock pin 11
+      LCK10                     :: Bit      -- Port x lock pin 10
+      LCK9                      :: Bit      -- Port x lock pin 9
+      LCK8                      :: Bit      -- Port x lock pin 8
+      LCK7                      :: Bit      -- Port x lock pin 7
+      LCK6                      :: Bit      -- Port x lock pin 6
+      LCK5                      :: Bit      -- Port x lock pin 5
+      LCK4                      :: Bit      -- Port x lock pin 4
+      LCK3                      :: Bit      -- Port x lock pin 3
+      LCK2                      :: Bit      -- Port x lock pin 2
+      LCK1                      :: Bit      -- Port x lock pin 1
+      LCK0                      :: Bit      -- Port x lock pin 0
+
+    AFRL 0x20 - GPIO alternate function low register
+      AFRL7                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL6                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL5                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL4                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL3                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL2                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL1                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+      AFRL0                     :: Bits 4   -- Alternate function selection for port x bit y (y = 0..7)
+
+    AFRH 0x24 - GPIO alternate function high register
+      AFRH15                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH14                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH13                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH12                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH11                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH10                    :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH9                     :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+      AFRH8                     :: Bits 4   -- Alternate function selection for port x bit y (y = 8..15)
+
+  GPIOJ 0x40022400 
+      
+      Derived from GPIOI
+
+  GPIOK 0x40022800 
+      
+      Derived from GPIOI
+
+  CRC 0x40023000 Cryptographic processor
+    
+    DR 0x0 - Data register
+      DR                        :: Bits 32  -- Data Register
+
+    IDR 0x4 - Independent Data register
+      _                         :: Bits 24  -- (Reserved)
+      IDR                       :: Bits 8   -- Independent Data register
+
+    CR 0x8 - Control register
+      _                         :: Bits 31  -- (Reserved)
+      RESET                     :: Bit      -- Control regidter
+
+  RCC 0x40023800 Reset and clock control
+    
+    CR 0x0 - clock control register
+      _                         :: Bits 4   -- (Reserved)
+      PLLI2SRDY                 :: Bit      -- PLLI2S clock ready flag
+      PLLI2SON                  :: Bit      -- PLLI2S enable
+      PLLRDY                    :: Bit      -- Main PLL (PLL) clock ready flag
+      PLLON                     :: Bit      -- Main PLL (PLL) enable
+      _                         :: Bits 4   -- (Reserved)
+      CSSON                     :: Bit      -- Clock security system enable
+      HSEBYP                    :: Bit      -- HSE clock bypass
+      HSERDY                    :: Bit      -- HSE clock ready flag
+      HSEON                     :: Bit      -- HSE clock enable
+      HSICAL                    :: Bits 8   -- Internal high-speed clock calibration
+      HSITRIM                   :: Bits 5   -- Internal high-speed clock trimming
+      _                         :: Bit      -- (Reserved)
+      HSIRDY                    :: Bit      -- Internal high-speed clock ready flag
+      HSION                     :: Bit      -- Internal high-speed clock enable
+
+    PLLCFGR 0x4 - PLL configuration register
+      _                         :: Bits 4   -- (Reserved)
+      PLLQ                      :: Bits 4   -- Main PLL (PLL) division factor for USB OTG FS, SDIO and random number generator clocks
+      _                         :: Bit      -- (Reserved)
+      PLLSRC                    :: Bit      -- Main PLL(PLL) and audio PLL (PLLI2S) entry clock source
+      _                         :: Bits 4   -- (Reserved)
+      PLLP                      :: Bits 2   -- Main PLL (PLL) division factor for main system clock
+      _                         :: Bit      -- (Reserved)
+      PLLN                      :: Bits 9   -- Main PLL (PLL) multiplication factor for VCO
+      PLLM                      :: Bits 6   -- Division factor for the main PLL (PLL) and audio PLL (PLLI2S) input clock
+
+    CFGR 0x8 - clock configuration register
+      MCO2                      :: Bits 2   -- Microcontroller clock output 2
+      MCO2PRE                   :: Bits 3   -- MCO2 prescaler
+      MCO1PRE                   :: Bits 3   -- MCO1 prescaler
+      I2SSRC                    :: Bit      -- I2S clock selection
+      MCO1                      :: Bits 2   -- Microcontroller clock output 1
+      RTCPRE                    :: Bits 5   -- HSE division factor for RTC clock
+      PPRE2                     :: Bits 3   -- APB high-speed prescaler (APB2)
+      PPRE1                     :: Bits 3   -- APB Low speed prescaler (APB1)
+      _                         :: Bits 2   -- (Reserved)
+      HPRE                      :: Bits 4   -- AHB prescaler
+      SWS                       :: Bits 2   -- System clock switch status
+      SW                        :: Bits 2   -- System clock switch
+
+    CIR 0xc - clock interrupt register
+      _                         :: Bits 8   -- (Reserved)
+      CSSC                      :: Bit      -- Clock security system interrupt clear
+      _                         :: Bit      -- (Reserved)
+      PLLI2SRDYC                :: Bit      -- PLLI2S ready interrupt clear
+      PLLRDYC                   :: Bit      -- Main PLL(PLL) ready interrupt clear
+      HSERDYC                   :: Bit      -- HSE ready interrupt clear
+      HSIRDYC                   :: Bit      -- HSI ready interrupt clear
+      LSERDYC                   :: Bit      -- LSE ready interrupt clear
+      LSIRDYC                   :: Bit      -- LSI ready interrupt clear
+      _                         :: Bits 2   -- (Reserved)
+      PLLI2SRDYIE               :: Bit      -- PLLI2S ready interrupt enable
+      PLLRDYIE                  :: Bit      -- Main PLL (PLL) ready interrupt enable
+      HSERDYIE                  :: Bit      -- HSE ready interrupt enable
+      HSIRDYIE                  :: Bit      -- HSI ready interrupt enable
+      LSERDYIE                  :: Bit      -- LSE ready interrupt enable
+      LSIRDYIE                  :: Bit      -- LSI ready interrupt enable
+      CSSF                      :: Bit      -- Clock security system interrupt flag
+      _                         :: Bit      -- (Reserved)
+      PLLI2SRDYF                :: Bit      -- PLLI2S ready interrupt flag
+      PLLRDYF                   :: Bit      -- Main PLL (PLL) ready interrupt flag
+      HSERDYF                   :: Bit      -- HSE ready interrupt flag
+      HSIRDYF                   :: Bit      -- HSI ready interrupt flag
+      LSERDYF                   :: Bit      -- LSE ready interrupt flag
+      LSIRDYF                   :: Bit      -- LSI ready interrupt flag
+
+    AHB1RSTR 0x10 - AHB1 peripheral reset register
+      _                         :: Bits 2   -- (Reserved)
+      OTGHSRST                  :: Bit      -- USB OTG HS module reset
+      _                         :: Bits 6   -- (Reserved)
+      DMA2RST                   :: Bit      -- DMA2 reset
+      DMA1RST                   :: Bit      -- DMA2 reset
+      _                         :: Bits 8   -- (Reserved)
+      CRCRST                    :: Bit      -- CRC reset
+      _                         :: Bits 3   -- (Reserved)
+      GPIOIRST                  :: Bit      -- IO port I reset
+      GPIOHRST                  :: Bit      -- IO port H reset
+      GPIOGRST                  :: Bit      -- IO port G reset
+      GPIOFRST                  :: Bit      -- IO port F reset
+      GPIOERST                  :: Bit      -- IO port E reset
+      GPIODRST                  :: Bit      -- IO port D reset
+      GPIOCRST                  :: Bit      -- IO port C reset
+      GPIOBRST                  :: Bit      -- IO port B reset
+      GPIOARST                  :: Bit      -- IO port A reset
+
+    AHB2RSTR 0x14 - AHB2 peripheral reset register
+      _                         :: Bits 24  -- (Reserved)
+      OTGFSRST                  :: Bit      -- USB OTG FS module reset
+      RNGRST                    :: Bit      -- Random number generator module reset
+      _                         :: Bits 5   -- (Reserved)
+      DCMIRST                   :: Bit      -- Camera interface reset
+
+    AHB3RSTR 0x18 - AHB3 peripheral reset register
+      _                         :: Bits 31  -- (Reserved)
+      FSMCRST                   :: Bit      -- Flexible static memory controller module reset
+
+    APB1RSTR 0x20 - APB1 peripheral reset register
+      _                         :: Bits 2   -- (Reserved)
+      DACRST                    :: Bit      -- DAC reset
+      PWRRST                    :: Bit      -- Power interface reset
+      _                         :: Bit      -- (Reserved)
+      CAN2RST                   :: Bit      -- CAN2 reset
+      CAN1RST                   :: Bit      -- CAN1 reset
+      _                         :: Bit      -- (Reserved)
+      I2C3RST                   :: Bit      -- I2C3 reset
+      I2C2RST                   :: Bit      -- I2C 2 reset
+      I2C1RST                   :: Bit      -- I2C 1 reset
+      UART5RST                  :: Bit      -- USART 5 reset
+      UART4RST                  :: Bit      -- USART 4 reset
+      USART3RST                 :: Bit      -- USART 3 reset
+      USART2RST                 :: Bit      -- USART 2 reset
+      _                         :: Bit      -- (Reserved)
+      SPI3RST                   :: Bit      -- SPI 3 reset
+      SPI2RST                   :: Bit      -- SPI 2 reset
+      _                         :: Bits 2   -- (Reserved)
+      WWDGRST                   :: Bit      -- Window watchdog reset
+      _                         :: Bits 2   -- (Reserved)
+      TIM14RST                  :: Bit      -- TIM14 reset
+      TIM13RST                  :: Bit      -- TIM13 reset
+      TIM12RST                  :: Bit      -- TIM12 reset
+      TIM7RST                   :: Bit      -- TIM7 reset
+      TIM6RST                   :: Bit      -- TIM6 reset
+      TIM5RST                   :: Bit      -- TIM5 reset
+      TIM4RST                   :: Bit      -- TIM4 reset
+      TIM3RST                   :: Bit      -- TIM3 reset
+      TIM2RST                   :: Bit      -- TIM2 reset
+
+    APB2RSTR 0x24 - APB2 peripheral reset register
+      _                         :: Bits 13  -- (Reserved)
+      TIM11RST                  :: Bit      -- TIM11 reset
+      TIM10RST                  :: Bit      -- TIM10 reset
+      TIM9RST                   :: Bit      -- TIM9 reset
+      _                         :: Bit      -- (Reserved)
+      SYSCFGRST                 :: Bit      -- System configuration controller reset
+      _                         :: Bit      -- (Reserved)
+      SPI1RST                   :: Bit      -- SPI 1 reset
+      SDIORST                   :: Bit      -- SDIO reset
+      _                         :: Bits 2   -- (Reserved)
+      ADCRST                    :: Bit      -- ADC interface reset (common to all ADCs)
+      _                         :: Bits 2   -- (Reserved)
+      USART6RST                 :: Bit      -- USART6 reset
+      USART1RST                 :: Bit      -- USART1 reset
+      _                         :: Bits 2   -- (Reserved)
+      TIM8RST                   :: Bit      -- TIM8 reset
+      TIM1RST                   :: Bit      -- TIM1 reset
+
+    AHB1ENR 0x30 - AHB1 peripheral clock register
+      _                         :: Bit      -- (Reserved)
+      OTGHSULPIEN               :: Bit      -- USB OTG HSULPI clock enable
+      OTGHSEN                   :: Bit      -- USB OTG HS clock enable
+      _                         :: Bits 6   -- (Reserved)
+      DMA2EN                    :: Bit      -- DMA2 clock enable
+      DMA1EN                    :: Bit      -- DMA1 clock enable
+      _                         :: Bits 2   -- (Reserved)
+      BKPSRAMEN                 :: Bit      -- Backup SRAM interface clock enable
+      _                         :: Bits 5   -- (Reserved)
+      CRCEN                     :: Bit      -- CRC clock enable
+      _                         :: Bits 3   -- (Reserved)
+      GPIOIEN                   :: Bit      -- IO port I clock enable
+      GPIOHEN                   :: Bit      -- IO port H clock enable
+      GPIOGEN                   :: Bit      -- IO port G clock enable
+      GPIOFEN                   :: Bit      -- IO port F clock enable
+      GPIOEEN                   :: Bit      -- IO port E clock enable
+      GPIODEN                   :: Bit      -- IO port D clock enable
+      GPIOCEN                   :: Bit      -- IO port C clock enable
+      GPIOBEN                   :: Bit      -- IO port B clock enable
+      GPIOAEN                   :: Bit      -- IO port A clock enable
+
+    AHB2ENR 0x34 - AHB2 peripheral clock enable register
+      _                         :: Bits 24  -- (Reserved)
+      OTGFSEN                   :: Bit      -- USB OTG FS clock enable
+      RNGEN                     :: Bit      -- Random number generator clock enable
+      _                         :: Bits 5   -- (Reserved)
+      DCMIEN                    :: Bit      -- Camera interface enable
+
+    AHB3ENR 0x38 - AHB3 peripheral clock enable register
+      _                         :: Bits 31  -- (Reserved)
+      FSMCEN                    :: Bit      -- Flexible static memory controller module clock enable
+
+    APB1ENR 0x40 - APB1 peripheral clock enable register
+      _                         :: Bits 2   -- (Reserved)
+      DACEN                     :: Bit      -- DAC interface clock enable
+      PWREN                     :: Bit      -- Power interface clock enable
+      _                         :: Bit      -- (Reserved)
+      CAN2EN                    :: Bit      -- CAN 2 clock enable
+      CAN1EN                    :: Bit      -- CAN 1 clock enable
+      _                         :: Bit      -- (Reserved)
+      I2C3EN                    :: Bit      -- I2C3 clock enable
+      I2C2EN                    :: Bit      -- I2C2 clock enable
+      I2C1EN                    :: Bit      -- I2C1 clock enable
+      UART5EN                   :: Bit      -- UART5 clock enable
+      UART4EN                   :: Bit      -- UART4 clock enable
+      USART3EN                  :: Bit      -- USART3 clock enable
+      USART2EN                  :: Bit      -- USART 2 clock enable
+      _                         :: Bit      -- (Reserved)
+      SPI3EN                    :: Bit      -- SPI3 clock enable
+      SPI2EN                    :: Bit      -- SPI2 clock enable
+      _                         :: Bits 2   -- (Reserved)
+      WWDGEN                    :: Bit      -- Window watchdog clock enable
+      _                         :: Bits 2   -- (Reserved)
+      TIM14EN                   :: Bit      -- TIM14 clock enable
+      TIM13EN                   :: Bit      -- TIM13 clock enable
+      TIM12EN                   :: Bit      -- TIM12 clock enable
+      TIM7EN                    :: Bit      -- TIM7 clock enable
+      TIM6EN                    :: Bit      -- TIM6 clock enable
+      TIM5EN                    :: Bit      -- TIM5 clock enable
+      TIM4EN                    :: Bit      -- TIM4 clock enable
+      TIM3EN                    :: Bit      -- TIM3 clock enable
+      TIM2EN                    :: Bit      -- TIM2 clock enable
+
+    APB2ENR 0x44 - APB2 peripheral clock enable register
+      _                         :: Bits 13  -- (Reserved)
+      TIM11EN                   :: Bit      -- TIM11 clock enable
+      TIM10EN                   :: Bit      -- TIM10 clock enable
+      TIM9EN                    :: Bit      -- TIM9 clock enable
+      _                         :: Bit      -- (Reserved)
+      SYSCFGEN                  :: Bit      -- System configuration controller clock enable
+      _                         :: Bit      -- (Reserved)
+      SPI1EN                    :: Bit      -- SPI1 clock enable
+      SDIOEN                    :: Bit      -- SDIO clock enable
+      ADC3EN                    :: Bit      -- ADC3 clock enable
+      ADC2EN                    :: Bit      -- ADC2 clock enable
+      ADC1EN                    :: Bit      -- ADC1 clock enable
+      _                         :: Bits 2   -- (Reserved)
+      USART6EN                  :: Bit      -- USART6 clock enable
+      USART1EN                  :: Bit      -- USART1 clock enable
+      _                         :: Bits 2   -- (Reserved)
+      TIM8EN                    :: Bit      -- TIM8 clock enable
+      TIM1EN                    :: Bit      -- TIM1 clock enable
+
+    AHB1LPENR 0x50 - AHB1 peripheral clock enable in low power mode register
+      _                         :: Bit      -- (Reserved)
+      OTGHSULPILPEN             :: Bit      -- USB OTG HS ULPI clock enable during Sleep mode
+      OTGHSLPEN                 :: Bit      -- USB OTG HS clock enable during Sleep mode
+      _                         :: Bits 6   -- (Reserved)
+      DMA2LPEN                  :: Bit      -- DMA2 clock enable during Sleep mode
+      DMA1LPEN                  :: Bit      -- DMA1 clock enable during Sleep mode
+      _                         :: Bits 2   -- (Reserved)
+      BKPSRAMLPEN               :: Bit      -- Backup SRAM interface clock enable during Sleep mode
+      SRAM2LPEN                 :: Bit      -- SRAM 2 interface clock enable during Sleep mode
+      SRAM1LPEN                 :: Bit      -- SRAM 1interface clock enable during Sleep mode
+      FLITFLPEN                 :: Bit      -- Flash interface clock enable during Sleep mode
+      _                         :: Bits 2   -- (Reserved)
+      CRCLPEN                   :: Bit      -- CRC clock enable during Sleep mode
+      _                         :: Bits 3   -- (Reserved)
+      GPIOILPEN                 :: Bit      -- IO port I clock enable during Sleep mode
+      GPIOHLPEN                 :: Bit      -- IO port H clock enable during Sleep mode
+      GPIOGLPEN                 :: Bit      -- IO port G clock enable during Sleep mode
+      GPIOFLPEN                 :: Bit      -- IO port F clock enable during Sleep mode
+      GPIOELPEN                 :: Bit      -- IO port E clock enable during Sleep mode
+      GPIODLPEN                 :: Bit      -- IO port D clock enable during Sleep mode
+      GPIOCLPEN                 :: Bit      -- IO port C clock enable during Sleep mode
+      GPIOBLPEN                 :: Bit      -- IO port B clock enable during Sleep mode
+      GPIOALPEN                 :: Bit      -- IO port A clock enable during sleep mode
+
+    AHB2LPENR 0x54 - AHB2 peripheral clock enable in low power mode register
+      _                         :: Bits 24  -- (Reserved)
+      OTGFSLPEN                 :: Bit      -- USB OTG FS clock enable during Sleep mode
+      RNGLPEN                   :: Bit      -- Random number generator clock enable during Sleep mode
+      _                         :: Bits 5   -- (Reserved)
+      DCMILPEN                  :: Bit      -- Camera interface enable during Sleep mode
+
+    AHB3LPENR 0x58 - AHB3 peripheral clock enable in low power mode register
+      _                         :: Bits 31  -- (Reserved)
+      FSMCLPEN                  :: Bit      -- Flexible static memory controller module clock enable during Sleep mode
+
+    APB1LPENR 0x60 - APB1 peripheral clock enable in low power mode register
+      _                         :: Bits 2   -- (Reserved)
+      DACLPEN                   :: Bit      -- DAC interface clock enable during Sleep mode
+      PWRLPEN                   :: Bit      -- Power interface clock enable during Sleep mode
+      _                         :: Bit      -- (Reserved)
+      CAN2LPEN                  :: Bit      -- CAN 2 clock enable during Sleep mode
+      CAN1LPEN                  :: Bit      -- CAN 1 clock enable during Sleep mode
+      _                         :: Bit      -- (Reserved)
+      I2C3LPEN                  :: Bit      -- I2C3 clock enable during Sleep mode
+      I2C2LPEN                  :: Bit      -- I2C2 clock enable during Sleep mode
+      I2C1LPEN                  :: Bit      -- I2C1 clock enable during Sleep mode
+      UART5LPEN                 :: Bit      -- UART5 clock enable during Sleep mode
+      UART4LPEN                 :: Bit      -- UART4 clock enable during Sleep mode
+      USART3LPEN                :: Bit      -- USART3 clock enable during Sleep mode
+      USART2LPEN                :: Bit      -- USART2 clock enable during Sleep mode
+      _                         :: Bit      -- (Reserved)
+      SPI3LPEN                  :: Bit      -- SPI3 clock enable during Sleep mode
+      SPI2LPEN                  :: Bit      -- SPI2 clock enable during Sleep mode
+      _                         :: Bits 2   -- (Reserved)
+      WWDGLPEN                  :: Bit      -- Window watchdog clock enable during Sleep mode
+      _                         :: Bits 2   -- (Reserved)
+      TIM14LPEN                 :: Bit      -- TIM14 clock enable during Sleep mode
+      TIM13LPEN                 :: Bit      -- TIM13 clock enable during Sleep mode
+      TIM12LPEN                 :: Bit      -- TIM12 clock enable during Sleep mode
+      TIM7LPEN                  :: Bit      -- TIM7 clock enable during Sleep mode
+      TIM6LPEN                  :: Bit      -- TIM6 clock enable during Sleep mode
+      TIM5LPEN                  :: Bit      -- TIM5 clock enable during Sleep mode
+      TIM4LPEN                  :: Bit      -- TIM4 clock enable during Sleep mode
+      TIM3LPEN                  :: Bit      -- TIM3 clock enable during Sleep mode
+      TIM2LPEN                  :: Bit      -- TIM2 clock enable during Sleep mode
+
+    APB2LPENR 0x64 - APB2 peripheral clock enabled in low power mode register
+      _                         :: Bits 13  -- (Reserved)
+      TIM11LPEN                 :: Bit      -- TIM11 clock enable during Sleep mode
+      TIM10LPEN                 :: Bit      -- TIM10 clock enable during Sleep mode
+      TIM9LPEN                  :: Bit      -- TIM9 clock enable during sleep mode
+      _                         :: Bit      -- (Reserved)
+      SYSCFGLPEN                :: Bit      -- System configuration controller clock enable during Sleep mode
+      _                         :: Bit      -- (Reserved)
+      SPI1LPEN                  :: Bit      -- SPI 1 clock enable during Sleep mode
+      SDIOLPEN                  :: Bit      -- SDIO clock enable during Sleep mode
+      ADC3LPEN                  :: Bit      -- ADC 3 clock enable during Sleep mode
+      ADC2LPEN                  :: Bit      -- ADC2 clock enable during Sleep mode
+      ADC1LPEN                  :: Bit      -- ADC1 clock enable during Sleep mode
+      _                         :: Bits 2   -- (Reserved)
+      USART6LPEN                :: Bit      -- USART6 clock enable during Sleep mode
+      USART1LPEN                :: Bit      -- USART1 clock enable during Sleep mode
+      _                         :: Bits 2   -- (Reserved)
+      TIM8LPEN                  :: Bit      -- TIM8 clock enable during Sleep mode
+      TIM1LPEN                  :: Bit      -- TIM1 clock enable during Sleep mode
+
+    BDCR 0x70 - Backup domain control register
+      _                         :: Bits 15  -- (Reserved)
+      BDRST                     :: Bit      -- Backup domain software reset
+      RTCEN                     :: Bit      -- RTC clock enable
+      _                         :: Bits 5   -- (Reserved)
+      RTCSEL                    :: Bits 2   -- RTC clock source selection
+      _                         :: Bits 5   -- (Reserved)
+      LSEBYP                    :: Bit      -- External low-speed oscillator bypass
+      LSERDY                    :: Bit      -- External low-speed oscillator ready
+      LSEON                     :: Bit      -- External low-speed oscillator enable
+
+    CSR 0x74 - clock control & status register
+      LPWRRSTF                  :: Bit      -- Low-power reset flag
+      WWDGRSTF                  :: Bit      -- Window watchdog reset flag
+      WDGRSTF                   :: Bit      -- Independent watchdog reset flag
+      SFTRSTF                   :: Bit      -- Software reset flag
+      PORRSTF                   :: Bit      -- POR/PDR reset flag
+      PADRSTF                   :: Bit      -- PIN reset flag
+      BORRSTF                   :: Bit      -- BOR reset flag
+      RMVF                      :: Bit      -- Remove reset flag
+      _                         :: Bits 22  -- (Reserved)
+      LSIRDY                    :: Bit      -- Internal low-speed oscillator ready
+      LSION                     :: Bit      -- Internal low-speed oscillator enable
+
+    SSCGR 0x80 - spread spectrum clock generation register
+      SSCGEN                    :: Bit      -- Spread spectrum modulation enable
+      SPREADSEL                 :: Bit      -- Spread Select
+      _                         :: Bits 2   -- (Reserved)
+      INCSTEP                   :: Bits 15  -- Incrementation step
+      MODPER                    :: Bits 13  -- Modulation period
+
+    PLLI2SCFGR 0x84 - PLLI2S configuration register
+      _                         :: Bit      -- (Reserved)
+      PLLI2SR                   :: Bits 3   -- PLLI2S division factor for I2S clocks
+      _                         :: Bits 13  -- (Reserved)
+      PLLI2SN                   :: Bits 9   -- PLLI2S multiplication factor for VCO
+      _                         :: Bits 6   -- (Reserved)
+
+  FLASH 0x40023c00 FLASH
+    
+    ACR 0x0 - Flash access control register
+      _                         :: Bits 19  -- (Reserved)
+      DCRST                     :: Bit      -- Data cache reset
+      ICRST                     :: Bit      -- Instruction cache reset
+      DCEN                      :: Bit      -- Data cache enable
+      ICEN                      :: Bit      -- Instruction cache enable
+      PRFTEN                    :: Bit      -- Prefetch enable
+      _                         :: Bits 5   -- (Reserved)
+      LATENCY                   :: Bits 3   -- Latency
+
+    KEYR 0x4 - Flash key register
+      KEY                       :: Bits 32  -- FPEC key
+
+    OPTKEYR 0x8 - Flash option key register
+      OPTKEY                    :: Bits 32  -- Option byte key
+
+    SR 0xc - Status register
+      _                         :: Bits 15  -- (Reserved)
+      BSY                       :: Bit      -- Busy
+      _                         :: Bits 8   -- (Reserved)
+      PGSERR                    :: Bit      -- Programming sequence error
+      PGPERR                    :: Bit      -- Programming parallelism error
+      PGAERR                    :: Bit      -- Programming alignment error
+      WRPERR                    :: Bit      -- Write protection error
+      _                         :: Bits 2   -- (Reserved)
+      OPERR                     :: Bit      -- Operation error
+      EOP                       :: Bit      -- End of operation
+
+    CR 0x10 - Control register
+      LOCK                      :: Bit      -- Lock
+      _                         :: Bits 5   -- (Reserved)
+      ERRIE                     :: Bit      -- Error interrupt enable
+      EOPIE                     :: Bit      -- End of operation interrupt enable
+      _                         :: Bits 7   -- (Reserved)
+      STRT                      :: Bit      -- Start
+      _                         :: Bits 6   -- (Reserved)
+      PSIZE                     :: Bits 2   -- Program size
+      _                         :: Bit      -- (Reserved)
+      SNB                       :: Bits 4   -- Sector number
+      MER                       :: Bit      -- Mass Erase
+      SER                       :: Bit      -- Sector Erase
+      PG                        :: Bit      -- Programming
+
+    OPTCR 0x14 - Flash option control register
+      _                         :: Bits 4   -- (Reserved)
+      nWRP                      :: Bits 12  -- Not write protect
+      RDP                       :: Bits 8   -- Read protect
+      nRST_STDBY                :: Bit      -- nRST_STDBY User option bytes
+      nRST_STOP                 :: Bit      -- nRST_STOP User option bytes
+      WDG_SW                    :: Bit      -- WDG_SW User option bytes
+      _                         :: Bit      -- (Reserved)
+      BOR_LEV                   :: Bits 2   -- BOR reset Level
+      OPTSTRT                   :: Bit      -- Option start
+      OPTLOCK                   :: Bit      -- Option lock
+
+  DMA1 0x40026000 
+      
+      Derived from DMA2
+
+  DMA2 0x40026400 DMA controller
+    
+    LISR 0x0 - low interrupt status register
+      _                         :: Bits 4   -- (Reserved)
+      TCIF3                     :: Bit      -- Stream x transfer complete interrupt flag (x = 3..0)
+      HTIF3                     :: Bit      -- Stream x half transfer interrupt flag (x=3..0)
+      TEIF3                     :: Bit      -- Stream x transfer error interrupt flag (x=3..0)
+      DMEIF3                    :: Bit      -- Stream x direct mode error interrupt flag (x=3..0)
+      _                         :: Bit      -- (Reserved)
+      FEIF3                     :: Bit      -- Stream x FIFO error interrupt flag (x=3..0)
+      TCIF2                     :: Bit      -- Stream x transfer complete interrupt flag (x = 3..0)
+      HTIF2                     :: Bit      -- Stream x half transfer interrupt flag (x=3..0)
+      TEIF2                     :: Bit      -- Stream x transfer error interrupt flag (x=3..0)
+      DMEIF2                    :: Bit      -- Stream x direct mode error interrupt flag (x=3..0)
+      _                         :: Bit      -- (Reserved)
+      FEIF2                     :: Bit      -- Stream x FIFO error interrupt flag (x=3..0)
+      _                         :: Bits 4   -- (Reserved)
+      TCIF1                     :: Bit      -- Stream x transfer complete interrupt flag (x = 3..0)
+      HTIF1                     :: Bit      -- Stream x half transfer interrupt flag (x=3..0)
+      TEIF1                     :: Bit      -- Stream x transfer error interrupt flag (x=3..0)
+      DMEIF1                    :: Bit      -- Stream x direct mode error interrupt flag (x=3..0)
+      _                         :: Bit      -- (Reserved)
+      FEIF1                     :: Bit      -- Stream x FIFO error interrupt flag (x=3..0)
+      TCIF0                     :: Bit      -- Stream x transfer complete interrupt flag (x = 3..0)
+      HTIF0                     :: Bit      -- Stream x half transfer interrupt flag (x=3..0)
+      TEIF0                     :: Bit      -- Stream x transfer error interrupt flag (x=3..0)
+      DMEIF0                    :: Bit      -- Stream x direct mode error interrupt flag (x=3..0)
+      _                         :: Bit      -- (Reserved)
+      FEIF0                     :: Bit      -- Stream x FIFO error interrupt flag (x=3..0)
+
+    HISR 0x4 - high interrupt status register
+      _                         :: Bits 4   -- (Reserved)
+      TCIF7                     :: Bit      -- Stream x transfer complete interrupt flag (x=7..4)
+      HTIF7                     :: Bit      -- Stream x half transfer interrupt flag (x=7..4)
+      TEIF7                     :: Bit      -- Stream x transfer error interrupt flag (x=7..4)
+      DMEIF7                    :: Bit      -- Stream x direct mode error interrupt flag (x=7..4)
+      _                         :: Bit      -- (Reserved)
+      FEIF7                     :: Bit      -- Stream x FIFO error interrupt flag (x=7..4)
+      TCIF6                     :: Bit      -- Stream x transfer complete interrupt flag (x=7..4)
+      HTIF6                     :: Bit      -- Stream x half transfer interrupt flag (x=7..4)
+      TEIF6                     :: Bit      -- Stream x transfer error interrupt flag (x=7..4)
+      DMEIF6                    :: Bit      -- Stream x direct mode error interrupt flag (x=7..4)
+      _                         :: Bit      -- (Reserved)
+      FEIF6                     :: Bit      -- Stream x FIFO error interrupt flag (x=7..4)
+      _                         :: Bits 4   -- (Reserved)
+      TCIF5                     :: Bit      -- Stream x transfer complete interrupt flag (x=7..4)
+      HTIF5                     :: Bit      -- Stream x half transfer interrupt flag (x=7..4)
+      TEIF5                     :: Bit      -- Stream x transfer error interrupt flag (x=7..4)
+      DMEIF5                    :: Bit      -- Stream x direct mode error interrupt flag (x=7..4)
+      _                         :: Bit      -- (Reserved)
+      FEIF5                     :: Bit      -- Stream x FIFO error interrupt flag (x=7..4)
+      TCIF4                     :: Bit      -- Stream x transfer complete interrupt flag (x=7..4)
+      HTIF4                     :: Bit      -- Stream x half transfer interrupt flag (x=7..4)
+      TEIF4                     :: Bit      -- Stream x transfer error interrupt flag (x=7..4)
+      DMEIF4                    :: Bit      -- Stream x direct mode error interrupt flag (x=7..4)
+      _                         :: Bit      -- (Reserved)
+      FEIF4                     :: Bit      -- Stream x FIFO error interrupt flag (x=7..4)
+
+    LIFCR 0x8 - low interrupt flag clear register
+      _                         :: Bits 4   -- (Reserved)
+      CTCIF3                    :: Bit      -- Stream x clear transfer complete interrupt flag (x = 3..0)
+      CHTIF3                    :: Bit      -- Stream x clear half transfer interrupt flag (x = 3..0)
+      CTEIF3                    :: Bit      -- Stream x clear transfer error interrupt flag (x = 3..0)
+      CDMEIF3                   :: Bit      -- Stream x clear direct mode error interrupt flag (x = 3..0)
+      _                         :: Bit      -- (Reserved)
+      CFEIF3                    :: Bit      -- Stream x clear FIFO error interrupt flag (x = 3..0)
+      CTCIF2                    :: Bit      -- Stream x clear transfer complete interrupt flag (x = 3..0)
+      CHTIF2                    :: Bit      -- Stream x clear half transfer interrupt flag (x = 3..0)
+      CTEIF2                    :: Bit      -- Stream x clear transfer error interrupt flag (x = 3..0)
+      CDMEIF2                   :: Bit      -- Stream x clear direct mode error interrupt flag (x = 3..0)
+      _                         :: Bit      -- (Reserved)
+      CFEIF2                    :: Bit      -- Stream x clear FIFO error interrupt flag (x = 3..0)
+      _                         :: Bits 4   -- (Reserved)
+      CTCIF1                    :: Bit      -- Stream x clear transfer complete interrupt flag (x = 3..0)
+      CHTIF1                    :: Bit      -- Stream x clear half transfer interrupt flag (x = 3..0)
+      CTEIF1                    :: Bit      -- Stream x clear transfer error interrupt flag (x = 3..0)
+      CDMEIF1                   :: Bit      -- Stream x clear direct mode error interrupt flag (x = 3..0)
+      _                         :: Bit      -- (Reserved)
+      CFEIF1                    :: Bit      -- Stream x clear FIFO error interrupt flag (x = 3..0)
+      CTCIF0                    :: Bit      -- Stream x clear transfer complete interrupt flag (x = 3..0)
+      CHTIF0                    :: Bit      -- Stream x clear half transfer interrupt flag (x = 3..0)
+      CTEIF0                    :: Bit      -- Stream x clear transfer error interrupt flag (x = 3..0)
+      CDMEIF0                   :: Bit      -- Stream x clear direct mode error interrupt flag (x = 3..0)
+      _                         :: Bit      -- (Reserved)
+      CFEIF0                    :: Bit      -- Stream x clear FIFO error interrupt flag (x = 3..0)
+
+    HIFCR 0xc - high interrupt flag clear register
+      _                         :: Bits 4   -- (Reserved)
+      CTCIF7                    :: Bit      -- Stream x clear transfer complete interrupt flag (x = 7..4)
+      CHTIF7                    :: Bit      -- Stream x clear half transfer interrupt flag (x = 7..4)
+      CTEIF7                    :: Bit      -- Stream x clear transfer error interrupt flag (x = 7..4)
+      CDMEIF7                   :: Bit      -- Stream x clear direct mode error interrupt flag (x = 7..4)
+      _                         :: Bit      -- (Reserved)
+      CFEIF7                    :: Bit      -- Stream x clear FIFO error interrupt flag (x = 7..4)
+      CTCIF6                    :: Bit      -- Stream x clear transfer complete interrupt flag (x = 7..4)
+      CHTIF6                    :: Bit      -- Stream x clear half transfer interrupt flag (x = 7..4)
+      CTEIF6                    :: Bit      -- Stream x clear transfer error interrupt flag (x = 7..4)
+      CDMEIF6                   :: Bit      -- Stream x clear direct mode error interrupt flag (x = 7..4)
+      _                         :: Bit      -- (Reserved)
+      CFEIF6                    :: Bit      -- Stream x clear FIFO error interrupt flag (x = 7..4)
+      _                         :: Bits 4   -- (Reserved)
+      CTCIF5                    :: Bit      -- Stream x clear transfer complete interrupt flag (x = 7..4)
+      CHTIF5                    :: Bit      -- Stream x clear half transfer interrupt flag (x = 7..4)
+      CTEIF5                    :: Bit      -- Stream x clear transfer error interrupt flag (x = 7..4)
+      CDMEIF5                   :: Bit      -- Stream x clear direct mode error interrupt flag (x = 7..4)
+      _                         :: Bit      -- (Reserved)
+      CFEIF5                    :: Bit      -- Stream x clear FIFO error interrupt flag (x = 7..4)
+      CTCIF4                    :: Bit      -- Stream x clear transfer complete interrupt flag (x = 7..4)
+      CHTIF4                    :: Bit      -- Stream x clear half transfer interrupt flag (x = 7..4)
+      CTEIF4                    :: Bit      -- Stream x clear transfer error interrupt flag (x = 7..4)
+      CDMEIF4                   :: Bit      -- Stream x clear direct mode error interrupt flag (x = 7..4)
+      _                         :: Bit      -- (Reserved)
+      CFEIF4                    :: Bit      -- Stream x clear FIFO error interrupt flag (x = 7..4)
+
+    CR 0x10 - stream x configuration register
+      _                         :: Bits 4   -- (Reserved)
+      CHSEL                     :: Bits 3   -- Channel selection
+      MBURST                    :: Bits 2   -- Memory burst transfer configuration
+      PBURST                    :: Bits 2   -- Peripheral burst transfer configuration
+      _                         :: Bit      -- (Reserved)
+      CT                        :: Bit      -- Current target (only in double buffer mode)
+      DBM                       :: Bit      -- Double buffer mode
+      PL                        :: Bits 2   -- Priority level
+      PINCOS                    :: Bit      -- Peripheral increment offset size
+      MSIZE                     :: Bits 2   -- Memory data size
+      PSIZE                     :: Bits 2   -- Peripheral data size
+      MINC                      :: Bit      -- Memory increment mode
+      PINC                      :: Bit      -- Peripheral increment mode
+      CIRC                      :: Bit      -- Circular mode
+      DIR                       :: Bits 2   -- Data transfer direction
+      PFCTRL                    :: Bit      -- Peripheral flow controller
+      TCIE                      :: Bit      -- Transfer complete interrupt enable
+      HTIE                      :: Bit      -- Half transfer interrupt enable
+      TEIE                      :: Bit      -- Transfer error interrupt enable
+      DMEIE                     :: Bit      -- Direct mode error interrupt enable
+      EN                        :: Bit      -- Stream enable / flag stream ready when read low
+
+    NDTR 0x14 - stream x number of data register
+      _                         :: Bits 16  -- (Reserved)
+      NDT                       :: Bits 16  -- Number of data items to transfer
+
+    PAR 0x18 - stream x peripheral address register
+      PA                        :: Bits 32  -- Peripheral address
+
+    M0AR 0x1c - stream x memory 0 address register
+      M0A                       :: Bits 32  -- Memory 0 address
+
+    M1AR 0x20 - stream x memory 1 address register
+      M1A                       :: Bits 32  -- Memory 1 address (used in case of Double buffer mode)
+
+    FCR 0x24 - stream x FIFO control register
+      _                         :: Bits 24  -- (Reserved)
+      FEIE                      :: Bit      -- FIFO error interrupt enable
+      _                         :: Bit      -- (Reserved)
+      FS                        :: Bits 3   -- FIFO status
+      DMDIS                     :: Bit      -- Direct mode disable
+      FTH                       :: Bits 2   -- FIFO threshold selection
+
+    CR 0x28 - stream x configuration register
+      _                         :: Bits 4   -- (Reserved)
+      CHSEL                     :: Bits 3   -- Channel selection
+      MBURST                    :: Bits 2   -- Memory burst transfer configuration
+      PBURST                    :: Bits 2   -- Peripheral burst transfer configuration
+      _                         :: Bit      -- (Reserved)
+      CT                        :: Bit      -- Current target (only in double buffer mode)
+      DBM                       :: Bit      -- Double buffer mode
+      PL                        :: Bits 2   -- Priority level
+      PINCOS                    :: Bit      -- Peripheral increment offset size
+      MSIZE                     :: Bits 2   -- Memory data size
+      PSIZE                     :: Bits 2   -- Peripheral data size
+      MINC                      :: Bit      -- Memory increment mode
+      PINC                      :: Bit      -- Peripheral increment mode
+      CIRC                      :: Bit      -- Circular mode
+      DIR                       :: Bits 2   -- Data transfer direction
+      PFCTRL                    :: Bit      -- Peripheral flow controller
+      TCIE                      :: Bit      -- Transfer complete interrupt enable
+      HTIE                      :: Bit      -- Half transfer interrupt enable
+      TEIE                      :: Bit      -- Transfer error interrupt enable
+      DMEIE                     :: Bit      -- Direct mode error interrupt enable
+      EN                        :: Bit      -- Stream enable / flag stream ready when read low
+
+    NDTR 0x2c - stream x number of data register
+      _                         :: Bits 16  -- (Reserved)
+      NDT                       :: Bits 16  -- Number of data items to transfer
+
+    PAR 0x30 - stream x peripheral address register
+      PA                        :: Bits 32  -- Peripheral address
+
+    M0AR 0x34 - stream x memory 0 address register
+      M0A                       :: Bits 32  -- Memory 0 address
+
+    M1AR 0x38 - stream x memory 1 address register
+      M1A                       :: Bits 32  -- Memory 1 address (used in case of Double buffer mode)
+
+    FCR 0x3c - stream x FIFO control register
+      _                         :: Bits 24  -- (Reserved)
+      FEIE                      :: Bit      -- FIFO error interrupt enable
+      _                         :: Bit      -- (Reserved)
+      FS                        :: Bits 3   -- FIFO status
+      DMDIS                     :: Bit      -- Direct mode disable
+      FTH                       :: Bits 2   -- FIFO threshold selection
+
+    CR 0x40 - stream x configuration register
+      _                         :: Bits 4   -- (Reserved)
+      CHSEL                     :: Bits 3   -- Channel selection
+      MBURST                    :: Bits 2   -- Memory burst transfer configuration
+      PBURST                    :: Bits 2   -- Peripheral burst transfer configuration
+      _                         :: Bit      -- (Reserved)
+      CT                        :: Bit      -- Current target (only in double buffer mode)
+      DBM                       :: Bit      -- Double buffer mode
+      PL                        :: Bits 2   -- Priority level
+      PINCOS                    :: Bit      -- Peripheral increment offset size
+      MSIZE                     :: Bits 2   -- Memory data size
+      PSIZE                     :: Bits 2   -- Peripheral data size
+      MINC                      :: Bit      -- Memory increment mode
+      PINC                      :: Bit      -- Peripheral increment mode
+      CIRC                      :: Bit      -- Circular mode
+      DIR                       :: Bits 2   -- Data transfer direction
+      PFCTRL                    :: Bit      -- Peripheral flow controller
+      TCIE                      :: Bit      -- Transfer complete interrupt enable
+      HTIE                      :: Bit      -- Half transfer interrupt enable
+      TEIE                      :: Bit      -- Transfer error interrupt enable
+      DMEIE                     :: Bit      -- Direct mode error interrupt enable
+      EN                        :: Bit      -- Stream enable / flag stream ready when read low
+
+    NDTR 0x44 - stream x number of data register
+      _                         :: Bits 16  -- (Reserved)
+      NDT                       :: Bits 16  -- Number of data items to transfer
+
+    PAR 0x48 - stream x peripheral address register
+      PA                        :: Bits 32  -- Peripheral address
+
+    M0AR 0x4c - stream x memory 0 address register
+      M0A                       :: Bits 32  -- Memory 0 address
+
+    M1AR 0x50 - stream x memory 1 address register
+      M1A                       :: Bits 32  -- Memory 1 address (used in case of Double buffer mode)
+
+    FCR 0x54 - stream x FIFO control register
+      _                         :: Bits 24  -- (Reserved)
+      FEIE                      :: Bit      -- FIFO error interrupt enable
+      _                         :: Bit      -- (Reserved)
+      FS                        :: Bits 3   -- FIFO status
+      DMDIS                     :: Bit      -- Direct mode disable
+      FTH                       :: Bits 2   -- FIFO threshold selection
+
+    CR 0x58 - stream x configuration register
+      _                         :: Bits 4   -- (Reserved)
+      CHSEL                     :: Bits 3   -- Channel selection
+      MBURST                    :: Bits 2   -- Memory burst transfer configuration
+      PBURST                    :: Bits 2   -- Peripheral burst transfer configuration
+      _                         :: Bit      -- (Reserved)
+      CT                        :: Bit      -- Current target (only in double buffer mode)
+      DBM                       :: Bit      -- Double buffer mode
+      PL                        :: Bits 2   -- Priority level
+      PINCOS                    :: Bit      -- Peripheral increment offset size
+      MSIZE                     :: Bits 2   -- Memory data size
+      PSIZE                     :: Bits 2   -- Peripheral data size
+      MINC                      :: Bit      -- Memory increment mode
+      PINC                      :: Bit      -- Peripheral increment mode
+      CIRC                      :: Bit      -- Circular mode
+      DIR                       :: Bits 2   -- Data transfer direction
+      PFCTRL                    :: Bit      -- Peripheral flow controller
+      TCIE                      :: Bit      -- Transfer complete interrupt enable
+      HTIE                      :: Bit      -- Half transfer interrupt enable
+      TEIE                      :: Bit      -- Transfer error interrupt enable
+      DMEIE                     :: Bit      -- Direct mode error interrupt enable
+      EN                        :: Bit      -- Stream enable / flag stream ready when read low
+
+    NDTR 0x5c - stream x number of data register
+      _                         :: Bits 16  -- (Reserved)
+      NDT                       :: Bits 16  -- Number of data items to transfer
+
+    PAR 0x60 - stream x peripheral address register
+      PA                        :: Bits 32  -- Peripheral address
+
+    M0AR 0x64 - stream x memory 0 address register
+      M0A                       :: Bits 32  -- Memory 0 address
+
+    M1AR 0x68 - stream x memory 1 address register
+      M1A                       :: Bits 32  -- Memory 1 address (used in case of Double buffer mode)
+
+    FCR 0x6c - stream x FIFO control register
+      _                         :: Bits 24  -- (Reserved)
+      FEIE                      :: Bit      -- FIFO error interrupt enable
+      _                         :: Bit      -- (Reserved)
+      FS                        :: Bits 3   -- FIFO status
+      DMDIS                     :: Bit      -- Direct mode disable
+      FTH                       :: Bits 2   -- FIFO threshold selection
+
+    CR 0x70 - stream x configuration register
+      _                         :: Bits 4   -- (Reserved)
+      CHSEL                     :: Bits 3   -- Channel selection
+      MBURST                    :: Bits 2   -- Memory burst transfer configuration
+      PBURST                    :: Bits 2   -- Peripheral burst transfer configuration
+      _                         :: Bit      -- (Reserved)
+      CT                        :: Bit      -- Current target (only in double buffer mode)
+      DBM                       :: Bit      -- Double buffer mode
+      PL                        :: Bits 2   -- Priority level
+      PINCOS                    :: Bit      -- Peripheral increment offset size
+      MSIZE                     :: Bits 2   -- Memory data size
+      PSIZE                     :: Bits 2   -- Peripheral data size
+      MINC                      :: Bit      -- Memory increment mode
+      PINC                      :: Bit      -- Peripheral increment mode
+      CIRC                      :: Bit      -- Circular mode
+      DIR                       :: Bits 2   -- Data transfer direction
+      PFCTRL                    :: Bit      -- Peripheral flow controller
+      TCIE                      :: Bit      -- Transfer complete interrupt enable
+      HTIE                      :: Bit      -- Half transfer interrupt enable
+      TEIE                      :: Bit      -- Transfer error interrupt enable
+      DMEIE                     :: Bit      -- Direct mode error interrupt enable
+      EN                        :: Bit      -- Stream enable / flag stream ready when read low
+
+    NDTR 0x74 - stream x number of data register
+      _                         :: Bits 16  -- (Reserved)
+      NDT                       :: Bits 16  -- Number of data items to transfer
+
+    PAR 0x78 - stream x peripheral address register
+      PA                        :: Bits 32  -- Peripheral address
+
+    M0AR 0x7c - stream x memory 0 address register
+      M0A                       :: Bits 32  -- Memory 0 address
+
+    M1AR 0x80 - stream x memory 1 address register
+      M1A                       :: Bits 32  -- Memory 1 address (used in case of Double buffer mode)
+
+    FCR 0x84 - stream x FIFO control register
+      _                         :: Bits 24  -- (Reserved)
+      FEIE                      :: Bit      -- FIFO error interrupt enable
+      _                         :: Bit      -- (Reserved)
+      FS                        :: Bits 3   -- FIFO status
+      DMDIS                     :: Bit      -- Direct mode disable
+      FTH                       :: Bits 2   -- FIFO threshold selection
+
+    CR 0x88 - stream x configuration register
+      _                         :: Bits 4   -- (Reserved)
+      CHSEL                     :: Bits 3   -- Channel selection
+      MBURST                    :: Bits 2   -- Memory burst transfer configuration
+      PBURST                    :: Bits 2   -- Peripheral burst transfer configuration
+      _                         :: Bit      -- (Reserved)
+      CT                        :: Bit      -- Current target (only in double buffer mode)
+      DBM                       :: Bit      -- Double buffer mode
+      PL                        :: Bits 2   -- Priority level
+      PINCOS                    :: Bit      -- Peripheral increment offset size
+      MSIZE                     :: Bits 2   -- Memory data size
+      PSIZE                     :: Bits 2   -- Peripheral data size
+      MINC                      :: Bit      -- Memory increment mode
+      PINC                      :: Bit      -- Peripheral increment mode
+      CIRC                      :: Bit      -- Circular mode
+      DIR                       :: Bits 2   -- Data transfer direction
+      PFCTRL                    :: Bit      -- Peripheral flow controller
+      TCIE                      :: Bit      -- Transfer complete interrupt enable
+      HTIE                      :: Bit      -- Half transfer interrupt enable
+      TEIE                      :: Bit      -- Transfer error interrupt enable
+      DMEIE                     :: Bit      -- Direct mode error interrupt enable
+      EN                        :: Bit      -- Stream enable / flag stream ready when read low
+
+    NDTR 0x8c - stream x number of data register
+      _                         :: Bits 16  -- (Reserved)
+      NDT                       :: Bits 16  -- Number of data items to transfer
+
+    PAR 0x90 - stream x peripheral address register
+      PA                        :: Bits 32  -- Peripheral address
+
+    M0AR 0x94 - stream x memory 0 address register
+      M0A                       :: Bits 32  -- Memory 0 address
+
+    M1AR 0x98 - stream x memory 1 address register
+      M1A                       :: Bits 32  -- Memory 1 address (used in case of Double buffer mode)
+
+    FCR 0x9c - stream x FIFO control register
+      _                         :: Bits 24  -- (Reserved)
+      FEIE                      :: Bit      -- FIFO error interrupt enable
+      _                         :: Bit      -- (Reserved)
+      FS                        :: Bits 3   -- FIFO status
+      DMDIS                     :: Bit      -- Direct mode disable
+      FTH                       :: Bits 2   -- FIFO threshold selection
+
+    CR 0xa0 - stream x configuration register
+      _                         :: Bits 4   -- (Reserved)
+      CHSEL                     :: Bits 3   -- Channel selection
+      MBURST                    :: Bits 2   -- Memory burst transfer configuration
+      PBURST                    :: Bits 2   -- Peripheral burst transfer configuration
+      _                         :: Bit      -- (Reserved)
+      CT                        :: Bit      -- Current target (only in double buffer mode)
+      DBM                       :: Bit      -- Double buffer mode
+      PL                        :: Bits 2   -- Priority level
+      PINCOS                    :: Bit      -- Peripheral increment offset size
+      MSIZE                     :: Bits 2   -- Memory data size
+      PSIZE                     :: Bits 2   -- Peripheral data size
+      MINC                      :: Bit      -- Memory increment mode
+      PINC                      :: Bit      -- Peripheral increment mode
+      CIRC                      :: Bit      -- Circular mode
+      DIR                       :: Bits 2   -- Data transfer direction
+      PFCTRL                    :: Bit      -- Peripheral flow controller
+      TCIE                      :: Bit      -- Transfer complete interrupt enable
+      HTIE                      :: Bit      -- Half transfer interrupt enable
+      TEIE                      :: Bit      -- Transfer error interrupt enable
+      DMEIE                     :: Bit      -- Direct mode error interrupt enable
+      EN                        :: Bit      -- Stream enable / flag stream ready when read low
+
+    NDTR 0xa4 - stream x number of data register
+      _                         :: Bits 16  -- (Reserved)
+      NDT                       :: Bits 16  -- Number of data items to transfer
+
+    PAR 0xa8 - stream x peripheral address register
+      PA                        :: Bits 32  -- Peripheral address
+
+    M0AR 0xac - stream x memory 0 address register
+      M0A                       :: Bits 32  -- Memory 0 address
+
+    M1AR 0xb0 - stream x memory 1 address register
+      M1A                       :: Bits 32  -- Memory 1 address (used in case of Double buffer mode)
+
+    FCR 0xb4 - stream x FIFO control register
+      _                         :: Bits 24  -- (Reserved)
+      FEIE                      :: Bit      -- FIFO error interrupt enable
+      _                         :: Bit      -- (Reserved)
+      FS                        :: Bits 3   -- FIFO status
+      DMDIS                     :: Bit      -- Direct mode disable
+      FTH                       :: Bits 2   -- FIFO threshold selection
+
+    CR 0xb8 - stream x configuration register
+      _                         :: Bits 4   -- (Reserved)
+      CHSEL                     :: Bits 3   -- Channel selection
+      MBURST                    :: Bits 2   -- Memory burst transfer configuration
+      PBURST                    :: Bits 2   -- Peripheral burst transfer configuration
+      _                         :: Bit      -- (Reserved)
+      CT                        :: Bit      -- Current target (only in double buffer mode)
+      DBM                       :: Bit      -- Double buffer mode
+      PL                        :: Bits 2   -- Priority level
+      PINCOS                    :: Bit      -- Peripheral increment offset size
+      MSIZE                     :: Bits 2   -- Memory data size
+      PSIZE                     :: Bits 2   -- Peripheral data size
+      MINC                      :: Bit      -- Memory increment mode
+      PINC                      :: Bit      -- Peripheral increment mode
+      CIRC                      :: Bit      -- Circular mode
+      DIR                       :: Bits 2   -- Data transfer direction
+      PFCTRL                    :: Bit      -- Peripheral flow controller
+      TCIE                      :: Bit      -- Transfer complete interrupt enable
+      HTIE                      :: Bit      -- Half transfer interrupt enable
+      TEIE                      :: Bit      -- Transfer error interrupt enable
+      DMEIE                     :: Bit      -- Direct mode error interrupt enable
+      EN                        :: Bit      -- Stream enable / flag stream ready when read low
+
+    NDTR 0xbc - stream x number of data register
+      _                         :: Bits 16  -- (Reserved)
+      NDT                       :: Bits 16  -- Number of data items to transfer
+
+    PAR 0xc0 - stream x peripheral address register
+      PA                        :: Bits 32  -- Peripheral address
+
+    M0AR 0xc4 - stream x memory 0 address register
+      M0A                       :: Bits 32  -- Memory 0 address
+
+    M1AR 0xc8 - stream x memory 1 address register
+      M1A                       :: Bits 32  -- Memory 1 address (used in case of Double buffer mode)
+
+    FCR 0xcc - stream x FIFO control register
+      _                         :: Bits 24  -- (Reserved)
+      FEIE                      :: Bit      -- FIFO error interrupt enable
+      _                         :: Bit      -- (Reserved)
+      FS                        :: Bits 3   -- FIFO status
+      DMDIS                     :: Bit      -- Direct mode disable
+      FTH                       :: Bits 2   -- FIFO threshold selection
+
+  OTG_HS_GLOBAL 0x40040000 USB on the go high speed
+    
+    GOTGCTL 0x0 - OTG_HS control and status register
+      _                         :: Bits 12  -- (Reserved)
+      BSVLD                     :: Bit      -- B-session valid
+      ASVLD                     :: Bit      -- A-session valid
+      DBCT                      :: Bit      -- Long/short debounce time
+      CIDSTS                    :: Bit      -- Connector ID status
+      _                         :: Bits 4   -- (Reserved)
+      DHNPEN                    :: Bit      -- Device HNP enabled
+      HSHNPEN                   :: Bit      -- Host set HNP enable
+      HNPRQ                     :: Bit      -- HNP request
+      HNGSCS                    :: Bit      -- Host negotiation success
+      _                         :: Bits 6   -- (Reserved)
+      SRQ                       :: Bit      -- Session request
+      SRQSCS                    :: Bit      -- Session request success
+
+    GOTGINT 0x4 - OTG_HS interrupt register
+      _                         :: Bits 12  -- (Reserved)
+      DBCDNE                    :: Bit      -- Debounce done
+      ADTOCHG                   :: Bit      -- A-device timeout change
+      HNGDET                    :: Bit      -- Host negotiation detected
+      _                         :: Bits 7   -- (Reserved)
+      HNSSCHG                   :: Bit      -- Host negotiation success status change
+      SRSSCHG                   :: Bit      -- Session request success status change
+      _                         :: Bits 5   -- (Reserved)
+      SEDET                     :: Bit      -- Session end detected
+      _                         :: Bits 2   -- (Reserved)
+
+    GAHBCFG 0x8 - OTG_HS AHB configuration register
+      _                         :: Bits 23  -- (Reserved)
+      PTXFELVL                  :: Bit      -- Periodic TxFIFO empty level
+      TXFELVL                   :: Bit      -- TxFIFO empty level
+      _                         :: Bit      -- (Reserved)
+      DMAEN                     :: Bit      -- DMA enable
+      HBSTLEN                   :: Bits 4   -- Burst length/type
+      GINT                      :: Bit      -- Global interrupt mask
+
+    GUSBCFG 0xc - OTG_HS USB configuration register
+      CTXPKT                    :: Bit      -- Corrupt Tx packet
+      FDMOD                     :: Bit      -- Forced peripheral mode
+      FHMOD                     :: Bit      -- Forced host mode
+      _                         :: Bits 3   -- (Reserved)
+      ULPIIPD                   :: Bit      -- ULPI interface protect disable
+      PTCI                      :: Bit      -- Indicator pass through
+      PCCI                      :: Bit      -- Indicator complement
+      TSDPS                     :: Bit      -- TermSel DLine pulsing selection
+      ULPIEVBUSI                :: Bit      -- ULPI external VBUS indicator
+      ULPIEVBUSD                :: Bit      -- ULPI External VBUS Drive
+      ULPICSM                   :: Bit      -- ULPI Clock SuspendM
+      ULPIAR                    :: Bit      -- ULPI Auto-resume
+      ULPIFSLS                  :: Bit      -- ULPI FS/LS select
+      _                         :: Bit      -- (Reserved)
+      PHYLPCS                   :: Bit      -- PHY Low-power clock select
+      _                         :: Bit      -- (Reserved)
+      TRDT                      :: Bits 4   -- USB turnaround time
+      HNPCAP                    :: Bit      -- HNP-capable
+      SRPCAP                    :: Bit      -- SRP-capable
+      _                         :: Bit      -- (Reserved)
+      PHYSEL                    :: Bit      -- USB 2.0 high-speed ULPI PHY or USB 1.1 full-speed serial transceiver select
+      _                         :: Bits 3   -- (Reserved)
+      TOCAL                     :: Bits 3   -- FS timeout calibration
+
+    GRSTCTL 0x10 - OTG_HS reset register
+      AHBIDL                    :: Bit      -- AHB master idle
+      DMAREQ                    :: Bit      -- DMA request signal
+      _                         :: Bits 19  -- (Reserved)
+      TXFNUM                    :: Bits 5   -- TxFIFO number
+      TXFFLSH                   :: Bit      -- TxFIFO flush
+      RXFFLSH                   :: Bit      -- RxFIFO flush
+      _                         :: Bit      -- (Reserved)
+      FCRST                     :: Bit      -- Host frame counter reset
+      HSRST                     :: Bit      -- HCLK soft reset
+      CSRST                     :: Bit      -- Core soft reset
+
+    GINTSTS 0x14 - OTG_HS core interrupt register
+      WKUINT                    :: Bit      -- Resume/remote wakeup detected interrupt
+      SRQINT                    :: Bit      -- Session request/new session detected interrupt
+      DISCINT                   :: Bit      -- Disconnect detected interrupt
+      CIDSCHG                   :: Bit      -- Connector ID status change
+      _                         :: Bit      -- (Reserved)
+      PTXFE                     :: Bit      -- Periodic TxFIFO empty
+      HCINT                     :: Bit      -- Host channels interrupt
+      HPRTINT                   :: Bit      -- Host port interrupt
+      _                         :: Bit      -- (Reserved)
+      DATAFSUSP                 :: Bit      -- Data fetch suspended
+      PXFR_INCOMPISOOUT         :: Bit      -- Incomplete periodic transfer
+      IISOIXFR                  :: Bit      -- Incomplete isochronous IN transfer
+      OEPINT                    :: Bit      -- OUT endpoint interrupt
+      IEPINT                    :: Bit      -- IN endpoint interrupt
+      _                         :: Bits 2   -- (Reserved)
+      EOPF                      :: Bit      -- End of periodic frame interrupt
+      ISOODRP                   :: Bit      -- Isochronous OUT packet dropped interrupt
+      ENUMDNE                   :: Bit      -- Enumeration done
+      USBRST                    :: Bit      -- USB reset
+      USBSUSP                   :: Bit      -- USB suspend
+      ESUSP                     :: Bit      -- Early suspend
+      _                         :: Bits 2   -- (Reserved)
+      BOUTNAKEFF                :: Bit      -- Global OUT NAK effective
+      GINAKEFF                  :: Bit      -- Global IN nonperiodic NAK effective
+      NPTXFE                    :: Bit      -- Nonperiodic TxFIFO empty
+      RXFLVL                    :: Bit      -- RxFIFO nonempty
+      SOF                       :: Bit      -- Start of frame
+      OTGINT                    :: Bit      -- OTG interrupt
+      MMIS                      :: Bit      -- Mode mismatch interrupt
+      CMOD                      :: Bit      -- Current mode of operation
+
+    GINTMSK 0x18 - OTG_HS interrupt mask register
+      WUIM                      :: Bit      -- Resume/remote wakeup detected interrupt mask
+      SRQIM                     :: Bit      -- Session request/new session detected interrupt mask
+      DISCINT                   :: Bit      -- Disconnect detected interrupt mask
+      CIDSCHGM                  :: Bit      -- Connector ID status change mask
+      _                         :: Bit      -- (Reserved)
+      PTXFEM                    :: Bit      -- Periodic TxFIFO empty mask
+      HCIM                      :: Bit      -- Host channels interrupt mask
+      PRTIM                     :: Bit      -- Host port interrupt mask
+      _                         :: Bit      -- (Reserved)
+      FSUSPM                    :: Bit      -- Data fetch suspended mask
+      PXFRM_IISOOXFRM           :: Bit      -- Incomplete periodic transfer mask
+      IISOIXFRM                 :: Bit      -- Incomplete isochronous IN transfer mask
+      OEPINT                    :: Bit      -- OUT endpoints interrupt mask
+      IEPINT                    :: Bit      -- IN endpoints interrupt mask
+      EPMISM                    :: Bit      -- Endpoint mismatch interrupt mask
+      _                         :: Bit      -- (Reserved)
+      EOPFM                     :: Bit      -- End of periodic frame interrupt mask
+      ISOODRPM                  :: Bit      -- Isochronous OUT packet dropped interrupt mask
+      ENUMDNEM                  :: Bit      -- Enumeration done mask
+      USBRST                    :: Bit      -- USB reset mask
+      USBSUSPM                  :: Bit      -- USB suspend mask
+      ESUSPM                    :: Bit      -- Early suspend mask
+      _                         :: Bits 2   -- (Reserved)
+      GONAKEFFM                 :: Bit      -- Global OUT NAK effective mask
+      GINAKEFFM                 :: Bit      -- Global nonperiodic IN NAK effective mask
+      NPTXFEM                   :: Bit      -- Nonperiodic TxFIFO empty mask
+      RXFLVLM                   :: Bit      -- Receive FIFO nonempty mask
+      SOFM                      :: Bit      -- Start of frame mask
+      OTGINT                    :: Bit      -- OTG interrupt mask
+      MMISM                     :: Bit      -- Mode mismatch interrupt mask
+      _                         :: Bit      -- (Reserved)
+
+    GRXSTSR_Host 0x1c - OTG_HS Receive status debug read register (host mode)
+      _                         :: Bits 11  -- (Reserved)
+      PKTSTS                    :: Bits 4   -- Packet status
+      DPID                      :: Bits 2   -- Data PID
+      BCNT                      :: Bits 11  -- Byte count
+      CHNUM                     :: Bits 4   -- Channel number
+
+    GRXSTSR_Device 0x1c - OTG_HS Receive status debug read register (peripheral mode mode)
+      _                         :: Bits 7   -- (Reserved)
+      FRMNUM                    :: Bits 4   -- Frame number
+      PKTSTS                    :: Bits 4   -- Packet status
+      DPID                      :: Bits 2   -- Data PID
+      BCNT                      :: Bits 11  -- Byte count
+      EPNUM                     :: Bits 4   -- Endpoint number
+
+    GRXSTSP_Host 0x20 - OTG_HS status read and pop register (host mode)
+      _                         :: Bits 11  -- (Reserved)
+      PKTSTS                    :: Bits 4   -- Packet status
+      DPID                      :: Bits 2   -- Data PID
+      BCNT                      :: Bits 11  -- Byte count
+      CHNUM                     :: Bits 4   -- Channel number
+
+    GRXSTSP_Device 0x20 - OTG_HS status read and pop register (peripheral mode)
+      _                         :: Bits 7   -- (Reserved)
+      FRMNUM                    :: Bits 4   -- Frame number
+      PKTSTS                    :: Bits 4   -- Packet status
+      DPID                      :: Bits 2   -- Data PID
+      BCNT                      :: Bits 11  -- Byte count
+      EPNUM                     :: Bits 4   -- Endpoint number
+
+    GRXFSIZ 0x24 - OTG_HS Receive FIFO size register
+      _                         :: Bits 16  -- (Reserved)
+      RXFD                      :: Bits 16  -- RxFIFO depth
+
+    HNPTXFSIZ 0x28 - OTG_HS nonperiodic transmit FIFO size register (host mode)
+      NPTXFD                    :: Bits 16  -- Nonperiodic TxFIFO depth
+      NPTXFSA                   :: Bits 16  -- Nonperiodic transmit RAM start address
+
+    DIEPTXF0 0x28 - Endpoint 0 transmit FIFO size (peripheral mode)
+      TX0FD                     :: Bits 16  -- Endpoint 0 TxFIFO depth
+      TX0FSA                    :: Bits 16  -- Endpoint 0 transmit RAM start address
+
+    HNPTXSTS 0x2c - OTG_HS nonperiodic transmit FIFO/queue status register
+      _                         :: Bit      -- (Reserved)
+      NPTXQTOP                  :: Bits 7   -- Top of the nonperiodic transmit request queue
+      NPTQXSAV                  :: Bits 8   -- Nonperiodic transmit request queue space available
+      NPTXFSAV                  :: Bits 16  -- Nonperiodic TxFIFO space available
+
+    GCCFG 0x38 - OTG_HS general core configuration register
+      _                         :: Bits 10  -- (Reserved)
+      NOVBUSSENS                :: Bit      -- VBUS sensing disable option
+      SOFOUTEN                  :: Bit      -- SOF output enable
+      VBUSBSEN                  :: Bit      -- Enable the VBUS sensing device
+      VBUSASEN                  :: Bit      -- Enable the VBUS sensing device
+      I2CPADEN                  :: Bit      -- Enable I2C bus connection for the external I2C PHY interface
+      PWRDWN                    :: Bit      -- Power down
+      _                         :: Bits 16  -- (Reserved)
+
+    CID 0x3c - OTG_HS core ID register
+      PRODUCT_ID                :: Bits 32  -- Product ID field
+
+    HPTXFSIZ 0x100 - OTG_HS Host periodic transmit FIFO size register
+      PTXFD                     :: Bits 16  -- Host periodic TxFIFO depth
+      PTXSA                     :: Bits 16  -- Host periodic TxFIFO start address
+
+    DIEPTXF1 0x104 - OTG_HS device IN endpoint transmit FIFO size register
+      INEPTXFD                  :: Bits 16  -- IN endpoint TxFIFO depth
+      INEPTXSA                  :: Bits 16  -- IN endpoint FIFOx transmit RAM start address
+
+    DIEPTXF2 0x108 - OTG_HS device IN endpoint transmit FIFO size register
+      INEPTXFD                  :: Bits 16  -- IN endpoint TxFIFO depth
+      INEPTXSA                  :: Bits 16  -- IN endpoint FIFOx transmit RAM start address
+
+    DIEPTXF3 0x10c - OTG_HS device IN endpoint transmit FIFO size register
+      INEPTXFD                  :: Bits 16  -- IN endpoint TxFIFO depth
+      INEPTXSA                  :: Bits 16  -- IN endpoint FIFOx transmit RAM start address
+
+    DIEPTXF4 0x110 - OTG_HS device IN endpoint transmit FIFO size register
+      INEPTXFD                  :: Bits 16  -- IN endpoint TxFIFO depth
+      INEPTXSA                  :: Bits 16  -- IN endpoint FIFOx transmit RAM start address
+
+    DIEPTXF5 0x114 - OTG_HS device IN endpoint transmit FIFO size register
+      INEPTXFD                  :: Bits 16  -- IN endpoint TxFIFO depth
+      INEPTXSA                  :: Bits 16  -- IN endpoint FIFOx transmit RAM start address
+
+  OTG_HS_HOST 0x40040400 USB on the go high speed
+    
+    HCFG 0x0 - OTG_HS host configuration register
+      _                         :: Bits 29  -- (Reserved)
+      FSLSS                     :: Bit      -- FS- and LS-only support
+      FSLSPCS                   :: Bits 2   -- FS/LS PHY clock select
+
+    HFIR 0x4 - OTG_HS Host frame interval register
+      _                         :: Bits 16  -- (Reserved)
+      FRIVL                     :: Bits 16  -- Frame interval
+
+    HFNUM 0x8 - OTG_HS host frame number/frame time remaining register
+      FTREM                     :: Bits 16  -- Frame time remaining
+      FRNUM                     :: Bits 16  -- Frame number
+
+    HPTXSTS 0x10 - OTG_HS_Host periodic transmit FIFO/queue status register
+      PTXQTOP                   :: Bits 8   -- Top of the periodic transmit request queue
+      PTXQSAV                   :: Bits 8   -- Periodic transmit request queue space available
+      PTXFSAVL                  :: Bits 16  -- Periodic transmit data FIFO space available
+
+    HAINT 0x14 - OTG_HS Host all channels interrupt register
+      _                         :: Bits 16  -- (Reserved)
+      HAINT                     :: Bits 16  -- Channel interrupts
+
+    HAINTMSK 0x18 - OTG_HS host all channels interrupt mask register
+      _                         :: Bits 16  -- (Reserved)
+      HAINTM                    :: Bits 16  -- Channel interrupt mask
+
+    HPRT 0x40 - OTG_HS host port control and status register
+      _                         :: Bits 13  -- (Reserved)
+      PSPD                      :: Bits 2   -- Port speed
+      PTCTL                     :: Bits 4   -- Port test control
+      PPWR                      :: Bit      -- Port power
+      PLSTS                     :: Bits 2   -- Port line status
+      _                         :: Bit      -- (Reserved)
+      PRST                      :: Bit      -- Port reset
+      PSUSP                     :: Bit      -- Port suspend
+      PRES                      :: Bit      -- Port resume
+      POCCHNG                   :: Bit      -- Port overcurrent change
+      POCA                      :: Bit      -- Port overcurrent active
+      PENCHNG                   :: Bit      -- Port enable/disable change
+      PENA                      :: Bit      -- Port enable
+      PCDET                     :: Bit      -- Port connect detected
+      PCSTS                     :: Bit      -- Port connect status
+
+    CHAR 0x100 - OTG_HS host channel-0 characteristics register
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MC                        :: Bits 2   -- Multi Count (MC) / Error Count (EC)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    SPLT 0x104 - OTG_HS host channel-0 split control register
+      SPLITEN                   :: Bit      -- Split enable
+      _                         :: Bits 14  -- (Reserved)
+      COMPLSPLT                 :: Bit      -- Do complete split
+      XACTPOS                   :: Bits 2   -- XACTPOS
+      HUBADDR                   :: Bits 7   -- Hub address
+      PRTADDR                   :: Bits 7   -- Port address
+
+    INT 0x108 - OTG_HS host channel-11 interrupt register
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      NYET                      :: Bit      -- Response received interrupt
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      AHBERR                    :: Bit      -- AHB error
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x10c - OTG_HS host channel-11 interrupt mask register
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      AHBERR                    :: Bit      -- AHB error
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x110 - OTG_HS host channel-11 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x114 - OTG_HS host channel-0 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CHAR 0x120 - OTG_HS host channel-0 characteristics register
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MC                        :: Bits 2   -- Multi Count (MC) / Error Count (EC)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    SPLT 0x124 - OTG_HS host channel-0 split control register
+      SPLITEN                   :: Bit      -- Split enable
+      _                         :: Bits 14  -- (Reserved)
+      COMPLSPLT                 :: Bit      -- Do complete split
+      XACTPOS                   :: Bits 2   -- XACTPOS
+      HUBADDR                   :: Bits 7   -- Hub address
+      PRTADDR                   :: Bits 7   -- Port address
+
+    INT 0x128 - OTG_HS host channel-11 interrupt register
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      NYET                      :: Bit      -- Response received interrupt
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      AHBERR                    :: Bit      -- AHB error
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x12c - OTG_HS host channel-11 interrupt mask register
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      AHBERR                    :: Bit      -- AHB error
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x130 - OTG_HS host channel-11 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x134 - OTG_HS host channel-0 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CHAR 0x140 - OTG_HS host channel-0 characteristics register
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MC                        :: Bits 2   -- Multi Count (MC) / Error Count (EC)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    SPLT 0x144 - OTG_HS host channel-0 split control register
+      SPLITEN                   :: Bit      -- Split enable
+      _                         :: Bits 14  -- (Reserved)
+      COMPLSPLT                 :: Bit      -- Do complete split
+      XACTPOS                   :: Bits 2   -- XACTPOS
+      HUBADDR                   :: Bits 7   -- Hub address
+      PRTADDR                   :: Bits 7   -- Port address
+
+    INT 0x148 - OTG_HS host channel-11 interrupt register
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      NYET                      :: Bit      -- Response received interrupt
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      AHBERR                    :: Bit      -- AHB error
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x14c - OTG_HS host channel-11 interrupt mask register
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      AHBERR                    :: Bit      -- AHB error
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x150 - OTG_HS host channel-11 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x154 - OTG_HS host channel-0 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CHAR 0x160 - OTG_HS host channel-0 characteristics register
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MC                        :: Bits 2   -- Multi Count (MC) / Error Count (EC)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    SPLT 0x164 - OTG_HS host channel-0 split control register
+      SPLITEN                   :: Bit      -- Split enable
+      _                         :: Bits 14  -- (Reserved)
+      COMPLSPLT                 :: Bit      -- Do complete split
+      XACTPOS                   :: Bits 2   -- XACTPOS
+      HUBADDR                   :: Bits 7   -- Hub address
+      PRTADDR                   :: Bits 7   -- Port address
+
+    INT 0x168 - OTG_HS host channel-11 interrupt register
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      NYET                      :: Bit      -- Response received interrupt
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      AHBERR                    :: Bit      -- AHB error
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x16c - OTG_HS host channel-11 interrupt mask register
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      AHBERR                    :: Bit      -- AHB error
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x170 - OTG_HS host channel-11 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x174 - OTG_HS host channel-0 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CHAR 0x180 - OTG_HS host channel-0 characteristics register
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MC                        :: Bits 2   -- Multi Count (MC) / Error Count (EC)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    SPLT 0x184 - OTG_HS host channel-0 split control register
+      SPLITEN                   :: Bit      -- Split enable
+      _                         :: Bits 14  -- (Reserved)
+      COMPLSPLT                 :: Bit      -- Do complete split
+      XACTPOS                   :: Bits 2   -- XACTPOS
+      HUBADDR                   :: Bits 7   -- Hub address
+      PRTADDR                   :: Bits 7   -- Port address
+
+    INT 0x188 - OTG_HS host channel-11 interrupt register
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      NYET                      :: Bit      -- Response received interrupt
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      AHBERR                    :: Bit      -- AHB error
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x18c - OTG_HS host channel-11 interrupt mask register
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      AHBERR                    :: Bit      -- AHB error
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x190 - OTG_HS host channel-11 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x194 - OTG_HS host channel-0 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CHAR 0x1a0 - OTG_HS host channel-0 characteristics register
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MC                        :: Bits 2   -- Multi Count (MC) / Error Count (EC)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    SPLT 0x1a4 - OTG_HS host channel-0 split control register
+      SPLITEN                   :: Bit      -- Split enable
+      _                         :: Bits 14  -- (Reserved)
+      COMPLSPLT                 :: Bit      -- Do complete split
+      XACTPOS                   :: Bits 2   -- XACTPOS
+      HUBADDR                   :: Bits 7   -- Hub address
+      PRTADDR                   :: Bits 7   -- Port address
+
+    INT 0x1a8 - OTG_HS host channel-11 interrupt register
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      NYET                      :: Bit      -- Response received interrupt
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      AHBERR                    :: Bit      -- AHB error
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x1ac - OTG_HS host channel-11 interrupt mask register
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      AHBERR                    :: Bit      -- AHB error
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x1b0 - OTG_HS host channel-11 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x1b4 - OTG_HS host channel-0 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CHAR 0x1c0 - OTG_HS host channel-0 characteristics register
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MC                        :: Bits 2   -- Multi Count (MC) / Error Count (EC)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    SPLT 0x1c4 - OTG_HS host channel-0 split control register
+      SPLITEN                   :: Bit      -- Split enable
+      _                         :: Bits 14  -- (Reserved)
+      COMPLSPLT                 :: Bit      -- Do complete split
+      XACTPOS                   :: Bits 2   -- XACTPOS
+      HUBADDR                   :: Bits 7   -- Hub address
+      PRTADDR                   :: Bits 7   -- Port address
+
+    INT 0x1c8 - OTG_HS host channel-11 interrupt register
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      NYET                      :: Bit      -- Response received interrupt
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      AHBERR                    :: Bit      -- AHB error
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x1cc - OTG_HS host channel-11 interrupt mask register
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      AHBERR                    :: Bit      -- AHB error
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x1d0 - OTG_HS host channel-11 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x1d4 - OTG_HS host channel-0 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CHAR 0x1e0 - OTG_HS host channel-0 characteristics register
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MC                        :: Bits 2   -- Multi Count (MC) / Error Count (EC)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    SPLT 0x1e4 - OTG_HS host channel-0 split control register
+      SPLITEN                   :: Bit      -- Split enable
+      _                         :: Bits 14  -- (Reserved)
+      COMPLSPLT                 :: Bit      -- Do complete split
+      XACTPOS                   :: Bits 2   -- XACTPOS
+      HUBADDR                   :: Bits 7   -- Hub address
+      PRTADDR                   :: Bits 7   -- Port address
+
+    INT 0x1e8 - OTG_HS host channel-11 interrupt register
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      NYET                      :: Bit      -- Response received interrupt
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      AHBERR                    :: Bit      -- AHB error
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x1ec - OTG_HS host channel-11 interrupt mask register
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      AHBERR                    :: Bit      -- AHB error
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x1f0 - OTG_HS host channel-11 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x1f4 - OTG_HS host channel-0 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CHAR 0x200 - OTG_HS host channel-0 characteristics register
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MC                        :: Bits 2   -- Multi Count (MC) / Error Count (EC)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    SPLT 0x204 - OTG_HS host channel-0 split control register
+      SPLITEN                   :: Bit      -- Split enable
+      _                         :: Bits 14  -- (Reserved)
+      COMPLSPLT                 :: Bit      -- Do complete split
+      XACTPOS                   :: Bits 2   -- XACTPOS
+      HUBADDR                   :: Bits 7   -- Hub address
+      PRTADDR                   :: Bits 7   -- Port address
+
+    INT 0x208 - OTG_HS host channel-11 interrupt register
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      NYET                      :: Bit      -- Response received interrupt
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      AHBERR                    :: Bit      -- AHB error
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x20c - OTG_HS host channel-11 interrupt mask register
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      AHBERR                    :: Bit      -- AHB error
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x210 - OTG_HS host channel-11 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x214 - OTG_HS host channel-0 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CHAR 0x220 - OTG_HS host channel-0 characteristics register
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MC                        :: Bits 2   -- Multi Count (MC) / Error Count (EC)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    SPLT 0x224 - OTG_HS host channel-0 split control register
+      SPLITEN                   :: Bit      -- Split enable
+      _                         :: Bits 14  -- (Reserved)
+      COMPLSPLT                 :: Bit      -- Do complete split
+      XACTPOS                   :: Bits 2   -- XACTPOS
+      HUBADDR                   :: Bits 7   -- Hub address
+      PRTADDR                   :: Bits 7   -- Port address
+
+    INT 0x228 - OTG_HS host channel-11 interrupt register
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      NYET                      :: Bit      -- Response received interrupt
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      AHBERR                    :: Bit      -- AHB error
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x22c - OTG_HS host channel-11 interrupt mask register
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      AHBERR                    :: Bit      -- AHB error
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x230 - OTG_HS host channel-11 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x234 - OTG_HS host channel-0 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CHAR 0x240 - OTG_HS host channel-0 characteristics register
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MC                        :: Bits 2   -- Multi Count (MC) / Error Count (EC)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    SPLT 0x244 - OTG_HS host channel-0 split control register
+      SPLITEN                   :: Bit      -- Split enable
+      _                         :: Bits 14  -- (Reserved)
+      COMPLSPLT                 :: Bit      -- Do complete split
+      XACTPOS                   :: Bits 2   -- XACTPOS
+      HUBADDR                   :: Bits 7   -- Hub address
+      PRTADDR                   :: Bits 7   -- Port address
+
+    INT 0x248 - OTG_HS host channel-11 interrupt register
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      NYET                      :: Bit      -- Response received interrupt
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      AHBERR                    :: Bit      -- AHB error
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x24c - OTG_HS host channel-11 interrupt mask register
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      AHBERR                    :: Bit      -- AHB error
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x250 - OTG_HS host channel-11 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x254 - OTG_HS host channel-0 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CHAR 0x260 - OTG_HS host channel-0 characteristics register
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MC                        :: Bits 2   -- Multi Count (MC) / Error Count (EC)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    SPLT 0x264 - OTG_HS host channel-0 split control register
+      SPLITEN                   :: Bit      -- Split enable
+      _                         :: Bits 14  -- (Reserved)
+      COMPLSPLT                 :: Bit      -- Do complete split
+      XACTPOS                   :: Bits 2   -- XACTPOS
+      HUBADDR                   :: Bits 7   -- Hub address
+      PRTADDR                   :: Bits 7   -- Port address
+
+    INT 0x268 - OTG_HS host channel-11 interrupt register
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      NYET                      :: Bit      -- Response received interrupt
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      AHBERR                    :: Bit      -- AHB error
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x26c - OTG_HS host channel-11 interrupt mask register
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      AHBERR                    :: Bit      -- AHB error
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x270 - OTG_HS host channel-11 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x274 - OTG_HS host channel-0 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+  OTG_HS_DEVICE 0x40040800 USB on the go high speed
+    
+    DCFG 0x0 - OTG_HS device configuration register
+      _                         :: Bits 6   -- (Reserved)
+      PERSCHIVL                 :: Bits 2   -- Periodic scheduling interval
+      _                         :: Bits 11  -- (Reserved)
+      PFIVL                     :: Bits 2   -- Periodic (micro)frame interval
+      DAD                       :: Bits 7   -- Device address
+      _                         :: Bit      -- (Reserved)
+      NZLSOHSK                  :: Bit      -- Nonzero-length status OUT handshake
+      DSPD                      :: Bits 2   -- Device speed
+
+    DCTL 0x4 - OTG_HS device control register
+      _                         :: Bits 20  -- (Reserved)
+      POPRGDNE                  :: Bit      -- Power-on programming done
+      CGONAK                    :: Bit      -- Clear global OUT NAK
+      SGONAK                    :: Bit      -- Set global OUT NAK
+      CGINAK                    :: Bit      -- Clear global IN NAK
+      SGINAK                    :: Bit      -- Set global IN NAK
+      TCTL                      :: Bits 3   -- Test control
+      GONSTS                    :: Bit      -- Global OUT NAK status
+      GINSTS                    :: Bit      -- Global IN NAK status
+      SDIS                      :: Bit      -- Soft disconnect
+      RWUSIG                    :: Bit      -- Remote wakeup signaling
+
+    DSTS 0x8 - OTG_HS device status register
+      _                         :: Bits 10  -- (Reserved)
+      FNSOF                     :: Bits 14  -- Frame number of the received SOF
+      _                         :: Bits 4   -- (Reserved)
+      EERR                      :: Bit      -- Erratic error
+      ENUMSPD                   :: Bits 2   -- Enumerated speed
+      SUSPSTS                   :: Bit      -- Suspend status
+
+    DIEPMSK 0x10 - OTG_HS device IN endpoint common interrupt mask register
+      _                         :: Bits 22  -- (Reserved)
+      BIM                       :: Bit      -- BNA interrupt mask
+      TXFURM                    :: Bit      -- FIFO underrun mask
+      _                         :: Bit      -- (Reserved)
+      INEPNEM                   :: Bit      -- IN endpoint NAK effective mask
+      INEPNMM                   :: Bit      -- IN token received with EP mismatch mask
+      ITTXFEMSK                 :: Bit      -- IN token received when TxFIFO empty mask
+      TOM                       :: Bit      -- Timeout condition mask (nonisochronous endpoints)
+      _                         :: Bit      -- (Reserved)
+      EPDM                      :: Bit      -- Endpoint disabled interrupt mask
+      XFRCM                     :: Bit      -- Transfer completed interrupt mask
+
+    DOEPMSK 0x14 - OTG_HS device OUT endpoint common interrupt mask register
+      _                         :: Bits 22  -- (Reserved)
+      BOIM                      :: Bit      -- BNA interrupt mask
+      OPEM                      :: Bit      -- OUT packet error mask
+      _                         :: Bit      -- (Reserved)
+      B2BSTUP                   :: Bit      -- Back-to-back SETUP packets received mask
+      _                         :: Bit      -- (Reserved)
+      OTEPDM                    :: Bit      -- OUT token received when endpoint disabled mask
+      STUPM                     :: Bit      -- SETUP phase done mask
+      _                         :: Bit      -- (Reserved)
+      EPDM                      :: Bit      -- Endpoint disabled interrupt mask
+      XFRCM                     :: Bit      -- Transfer completed interrupt mask
+
+    DAINT 0x18 - OTG_HS device all endpoints interrupt register
+      OEPINT                    :: Bits 16  -- OUT endpoint interrupt bits
+      IEPINT                    :: Bits 16  -- IN endpoint interrupt bits
+
+    DAINTMSK 0x1c - OTG_HS all endpoints interrupt mask register
+      OEPM                      :: Bits 16  -- OUT EP interrupt mask bits
+      IEPM                      :: Bits 16  -- IN EP interrupt mask bits
+
+    DVBUSDIS 0x28 - OTG_HS device VBUS discharge time register
+      _                         :: Bits 16  -- (Reserved)
+      VBUSDT                    :: Bits 16  -- Device VBUS discharge time
+
+    DVBUSPULSE 0x2c - OTG_HS device VBUS pulsing time register
+      _                         :: Bits 20  -- (Reserved)
+      DVBUSP                    :: Bits 12  -- Device VBUS pulsing time
+
+    DTHRCTL 0x30 - OTG_HS Device threshold control register
+      _                         :: Bits 4   -- (Reserved)
+      ARPEN                     :: Bit      -- Arbiter parking enable
+      _                         :: Bit      -- (Reserved)
+      RXTHRLEN                  :: Bits 9   -- Receive threshold length
+      RXTHREN                   :: Bit      -- Receive threshold enable
+      _                         :: Bits 5   -- (Reserved)
+      TXTHRLEN                  :: Bits 9   -- Transmit threshold length
+      ISOTHREN                  :: Bit      -- ISO IN endpoint threshold enable
+      NONISOTHREN               :: Bit      -- Nonisochronous IN endpoints threshold enable
+
+    DIEPEMPMSK 0x34 - OTG_HS device IN endpoint FIFO empty interrupt mask register
+      _                         :: Bits 16  -- (Reserved)
+      INEPTXFEM                 :: Bits 16  -- IN EP Tx FIFO empty interrupt mask bits
+
+    DEACHINT 0x38 - OTG_HS device each endpoint interrupt register
+      _                         :: Bits 14  -- (Reserved)
+      OEP1INT                   :: Bit      -- OUT endpoint 1 interrupt bit
+      _                         :: Bits 15  -- (Reserved)
+      IEP1INT                   :: Bit      -- IN endpoint 1interrupt bit
+      _                         :: Bit      -- (Reserved)
+
+    DEACHINTMSK 0x3c - OTG_HS device each endpoint interrupt register mask
+      _                         :: Bits 14  -- (Reserved)
+      OEP1INTM                  :: Bit      -- OUT Endpoint 1 interrupt mask bit
+      _                         :: Bits 15  -- (Reserved)
+      IEP1INTM                  :: Bit      -- IN Endpoint 1 interrupt mask bit
+      _                         :: Bit      -- (Reserved)
+
+    DIEPEACHMSK1 0x44 - OTG_HS device each in endpoint-1 interrupt register
+      _                         :: Bits 18  -- (Reserved)
+      NAKM                      :: Bit      -- NAK interrupt mask
+      _                         :: Bits 3   -- (Reserved)
+      BIM                       :: Bit      -- BNA interrupt mask
+      TXFURM                    :: Bit      -- FIFO underrun mask
+      _                         :: Bit      -- (Reserved)
+      INEPNEM                   :: Bit      -- IN endpoint NAK effective mask
+      INEPNMM                   :: Bit      -- IN token received with EP mismatch mask
+      ITTXFEMSK                 :: Bit      -- IN token received when TxFIFO empty mask
+      TOM                       :: Bit      -- Timeout condition mask (nonisochronous endpoints)
+      _                         :: Bit      -- (Reserved)
+      EPDM                      :: Bit      -- Endpoint disabled interrupt mask
+      XFRCM                     :: Bit      -- Transfer completed interrupt mask
+
+    DOEPEACHMSK1 0x84 - OTG_HS device each OUT endpoint-1 interrupt register
+      _                         :: Bits 17  -- (Reserved)
+      NYETM                     :: Bit      -- NYET interrupt mask
+      NAKM                      :: Bit      -- NAK interrupt mask
+      BERRM                     :: Bit      -- Bubble error interrupt mask
+      _                         :: Bits 2   -- (Reserved)
+      BIM                       :: Bit      -- BNA interrupt mask
+      TXFURM                    :: Bit      -- OUT packet error mask
+      _                         :: Bit      -- (Reserved)
+      INEPNEM                   :: Bit      -- IN endpoint NAK effective mask
+      INEPNMM                   :: Bit      -- IN token received with EP mismatch mask
+      ITTXFEMSK                 :: Bit      -- IN token received when TxFIFO empty mask
+      TOM                       :: Bit      -- Timeout condition mask
+      _                         :: Bit      -- (Reserved)
+      EPDM                      :: Bit      -- Endpoint disabled interrupt mask
+      XFRCM                     :: Bit      -- Transfer completed interrupt mask
+
+    CTL 0x100 - OTG device endpoint-0 control register
+      EPENA                     :: Bit      -- Endpoint enable
+      EPDIS                     :: Bit      -- Endpoint disable
+      SODDFRM                   :: Bit      -- Set odd frame
+      SD0PID_SEVNFRM            :: Bit      -- Set DATA0 PID
+      SNAK                      :: Bit      -- Set NAK
+      CNAK                      :: Bit      -- Clear NAK
+      TXFNUM                    :: Bits 4   -- TxFIFO number
+      STALL                     :: Bit      -- STALL handshake
+      _                         :: Bit      -- (Reserved)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      NAKSTS                    :: Bit      -- NAK status
+      EONUM_DPID                :: Bit      -- Even/odd frame
+      USBAEP                    :: Bit      -- USB active endpoint
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x108 - OTG device endpoint-0 interrupt register
+      _                         :: Bits 18  -- (Reserved)
+      NAK                       :: Bit      -- NAK interrupt
+      BERR                      :: Bit      -- Babble error interrupt
+      PKTDRPSTS                 :: Bit      -- Packet dropped status
+      _                         :: Bit      -- (Reserved)
+      BNA                       :: Bit      -- Buffer not available interrupt
+      TXFIFOUDRN                :: Bit      -- Transmit Fifo Underrun
+      TXFE                      :: Bit      -- Transmit FIFO empty
+      INEPNE                    :: Bit      -- IN endpoint NAK effective
+      _                         :: Bit      -- (Reserved)
+      ITTXFE                    :: Bit      -- IN token received when TxFIFO is empty
+      TOC                       :: Bit      -- Timeout condition
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- Endpoint disabled interrupt
+      XFRC                      :: Bit      -- Transfer completed interrupt
+
+    TSIZ 0x110 - OTG_HS device IN endpoint 0 transfer size register
+      _                         :: Bits 11  -- (Reserved)
+      PKTCNT                    :: Bits 2   -- Packet count
+      _                         :: Bits 12  -- (Reserved)
+      XFRSIZ                    :: Bits 7   -- Transfer size
+
+    DMA 0x114 - OTG_HS device endpoint-0 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    TXFSTS 0x118 - OTG_HS device IN endpoint transmit FIFO status register
+      _                         :: Bits 16  -- (Reserved)
+      INEPTFSAV                 :: Bits 16  -- IN endpoint TxFIFO space avail
+
+    CTL 0x120 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- Endpoint enable
+      EPDIS                     :: Bit      -- Endpoint disable
+      SODDFRM                   :: Bit      -- Set odd frame
+      SD0PID_SEVNFRM            :: Bit      -- Set DATA0 PID
+      SNAK                      :: Bit      -- Set NAK
+      CNAK                      :: Bit      -- Clear NAK
+      TXFNUM                    :: Bits 4   -- TxFIFO number
+      STALL                     :: Bit      -- STALL handshake
+      _                         :: Bit      -- (Reserved)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      NAKSTS                    :: Bit      -- NAK status
+      EONUM_DPID                :: Bit      -- Even/odd frame
+      USBAEP                    :: Bit      -- USB active endpoint
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x128 - OTG device endpoint-1 interrupt register
+      _                         :: Bits 18  -- (Reserved)
+      NAK                       :: Bit      -- NAK interrupt
+      BERR                      :: Bit      -- Babble error interrupt
+      PKTDRPSTS                 :: Bit      -- Packet dropped status
+      _                         :: Bit      -- (Reserved)
+      BNA                       :: Bit      -- Buffer not available interrupt
+      TXFIFOUDRN                :: Bit      -- Transmit Fifo Underrun
+      TXFE                      :: Bit      -- Transmit FIFO empty
+      INEPNE                    :: Bit      -- IN endpoint NAK effective
+      _                         :: Bit      -- (Reserved)
+      ITTXFE                    :: Bit      -- IN token received when TxFIFO is empty
+      TOC                       :: Bit      -- Timeout condition
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- Endpoint disabled interrupt
+      XFRC                      :: Bit      -- Transfer completed interrupt
+
+    TSIZ 0x130 - OTG_HS device endpoint transfer size register
+      _                         :: Bit      -- (Reserved)
+      MCNT                      :: Bits 2   -- Multi count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x134 - OTG_HS device endpoint-1 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    TXFSTS 0x138 - OTG_HS device IN endpoint transmit FIFO status register
+      _                         :: Bits 16  -- (Reserved)
+      INEPTFSAV                 :: Bits 16  -- IN endpoint TxFIFO space avail
+
+    CTL 0x140 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- Endpoint enable
+      EPDIS                     :: Bit      -- Endpoint disable
+      SODDFRM                   :: Bit      -- Set odd frame
+      SD0PID_SEVNFRM            :: Bit      -- Set DATA0 PID
+      SNAK                      :: Bit      -- Set NAK
+      CNAK                      :: Bit      -- Clear NAK
+      TXFNUM                    :: Bits 4   -- TxFIFO number
+      STALL                     :: Bit      -- STALL handshake
+      _                         :: Bit      -- (Reserved)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      NAKSTS                    :: Bit      -- NAK status
+      EONUM_DPID                :: Bit      -- Even/odd frame
+      USBAEP                    :: Bit      -- USB active endpoint
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x148 - OTG device endpoint-1 interrupt register
+      _                         :: Bits 18  -- (Reserved)
+      NAK                       :: Bit      -- NAK interrupt
+      BERR                      :: Bit      -- Babble error interrupt
+      PKTDRPSTS                 :: Bit      -- Packet dropped status
+      _                         :: Bit      -- (Reserved)
+      BNA                       :: Bit      -- Buffer not available interrupt
+      TXFIFOUDRN                :: Bit      -- Transmit Fifo Underrun
+      TXFE                      :: Bit      -- Transmit FIFO empty
+      INEPNE                    :: Bit      -- IN endpoint NAK effective
+      _                         :: Bit      -- (Reserved)
+      ITTXFE                    :: Bit      -- IN token received when TxFIFO is empty
+      TOC                       :: Bit      -- Timeout condition
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- Endpoint disabled interrupt
+      XFRC                      :: Bit      -- Transfer completed interrupt
+
+    TSIZ 0x150 - OTG_HS device endpoint transfer size register
+      _                         :: Bit      -- (Reserved)
+      MCNT                      :: Bits 2   -- Multi count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x154 - OTG_HS device endpoint-1 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    TXFSTS 0x158 - OTG_HS device IN endpoint transmit FIFO status register
+      _                         :: Bits 16  -- (Reserved)
+      INEPTFSAV                 :: Bits 16  -- IN endpoint TxFIFO space avail
+
+    CTL 0x160 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- Endpoint enable
+      EPDIS                     :: Bit      -- Endpoint disable
+      SODDFRM                   :: Bit      -- Set odd frame
+      SD0PID_SEVNFRM            :: Bit      -- Set DATA0 PID
+      SNAK                      :: Bit      -- Set NAK
+      CNAK                      :: Bit      -- Clear NAK
+      TXFNUM                    :: Bits 4   -- TxFIFO number
+      STALL                     :: Bit      -- STALL handshake
+      _                         :: Bit      -- (Reserved)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      NAKSTS                    :: Bit      -- NAK status
+      EONUM_DPID                :: Bit      -- Even/odd frame
+      USBAEP                    :: Bit      -- USB active endpoint
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x168 - OTG device endpoint-1 interrupt register
+      _                         :: Bits 18  -- (Reserved)
+      NAK                       :: Bit      -- NAK interrupt
+      BERR                      :: Bit      -- Babble error interrupt
+      PKTDRPSTS                 :: Bit      -- Packet dropped status
+      _                         :: Bit      -- (Reserved)
+      BNA                       :: Bit      -- Buffer not available interrupt
+      TXFIFOUDRN                :: Bit      -- Transmit Fifo Underrun
+      TXFE                      :: Bit      -- Transmit FIFO empty
+      INEPNE                    :: Bit      -- IN endpoint NAK effective
+      _                         :: Bit      -- (Reserved)
+      ITTXFE                    :: Bit      -- IN token received when TxFIFO is empty
+      TOC                       :: Bit      -- Timeout condition
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- Endpoint disabled interrupt
+      XFRC                      :: Bit      -- Transfer completed interrupt
+
+    TSIZ 0x170 - OTG_HS device endpoint transfer size register
+      _                         :: Bit      -- (Reserved)
+      MCNT                      :: Bits 2   -- Multi count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x174 - OTG_HS device endpoint-1 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    TXFSTS 0x178 - OTG_HS device IN endpoint transmit FIFO status register
+      _                         :: Bits 16  -- (Reserved)
+      INEPTFSAV                 :: Bits 16  -- IN endpoint TxFIFO space avail
+
+    CTL 0x180 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- Endpoint enable
+      EPDIS                     :: Bit      -- Endpoint disable
+      SODDFRM                   :: Bit      -- Set odd frame
+      SD0PID_SEVNFRM            :: Bit      -- Set DATA0 PID
+      SNAK                      :: Bit      -- Set NAK
+      CNAK                      :: Bit      -- Clear NAK
+      TXFNUM                    :: Bits 4   -- TxFIFO number
+      STALL                     :: Bit      -- STALL handshake
+      _                         :: Bit      -- (Reserved)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      NAKSTS                    :: Bit      -- NAK status
+      EONUM_DPID                :: Bit      -- Even/odd frame
+      USBAEP                    :: Bit      -- USB active endpoint
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x188 - OTG device endpoint-1 interrupt register
+      _                         :: Bits 18  -- (Reserved)
+      NAK                       :: Bit      -- NAK interrupt
+      BERR                      :: Bit      -- Babble error interrupt
+      PKTDRPSTS                 :: Bit      -- Packet dropped status
+      _                         :: Bit      -- (Reserved)
+      BNA                       :: Bit      -- Buffer not available interrupt
+      TXFIFOUDRN                :: Bit      -- Transmit Fifo Underrun
+      TXFE                      :: Bit      -- Transmit FIFO empty
+      INEPNE                    :: Bit      -- IN endpoint NAK effective
+      _                         :: Bit      -- (Reserved)
+      ITTXFE                    :: Bit      -- IN token received when TxFIFO is empty
+      TOC                       :: Bit      -- Timeout condition
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- Endpoint disabled interrupt
+      XFRC                      :: Bit      -- Transfer completed interrupt
+
+    TSIZ 0x190 - OTG_HS device endpoint transfer size register
+      _                         :: Bit      -- (Reserved)
+      MCNT                      :: Bits 2   -- Multi count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x194 - OTG_HS device endpoint-1 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    TXFSTS 0x198 - OTG_HS device IN endpoint transmit FIFO status register
+      _                         :: Bits 16  -- (Reserved)
+      INEPTFSAV                 :: Bits 16  -- IN endpoint TxFIFO space avail
+
+    CTL 0x1a0 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- Endpoint enable
+      EPDIS                     :: Bit      -- Endpoint disable
+      SODDFRM                   :: Bit      -- Set odd frame
+      SD0PID_SEVNFRM            :: Bit      -- Set DATA0 PID
+      SNAK                      :: Bit      -- Set NAK
+      CNAK                      :: Bit      -- Clear NAK
+      TXFNUM                    :: Bits 4   -- TxFIFO number
+      STALL                     :: Bit      -- STALL handshake
+      _                         :: Bit      -- (Reserved)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      NAKSTS                    :: Bit      -- NAK status
+      EONUM_DPID                :: Bit      -- Even/odd frame
+      USBAEP                    :: Bit      -- USB active endpoint
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x1a8 - OTG device endpoint-1 interrupt register
+      _                         :: Bits 18  -- (Reserved)
+      NAK                       :: Bit      -- NAK interrupt
+      BERR                      :: Bit      -- Babble error interrupt
+      PKTDRPSTS                 :: Bit      -- Packet dropped status
+      _                         :: Bit      -- (Reserved)
+      BNA                       :: Bit      -- Buffer not available interrupt
+      TXFIFOUDRN                :: Bit      -- Transmit Fifo Underrun
+      TXFE                      :: Bit      -- Transmit FIFO empty
+      INEPNE                    :: Bit      -- IN endpoint NAK effective
+      _                         :: Bit      -- (Reserved)
+      ITTXFE                    :: Bit      -- IN token received when TxFIFO is empty
+      TOC                       :: Bit      -- Timeout condition
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- Endpoint disabled interrupt
+      XFRC                      :: Bit      -- Transfer completed interrupt
+
+    TSIZ 0x1b0 - OTG_HS device endpoint transfer size register
+      _                         :: Bit      -- (Reserved)
+      MCNT                      :: Bits 2   -- Multi count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x1b4 - OTG_HS device endpoint-1 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    TXFSTS 0x1b8 - OTG_HS device IN endpoint transmit FIFO status register
+      _                         :: Bits 16  -- (Reserved)
+      INEPTFSAV                 :: Bits 16  -- IN endpoint TxFIFO space avail
+
+    CTL 0x300 - OTG_HS device control OUT endpoint 0 control register
+      EPENA                     :: Bit      -- Endpoint enable
+      EPDIS                     :: Bit      -- Endpoint disable
+      _                         :: Bits 2   -- (Reserved)
+      SNAK                      :: Bit      -- Set NAK
+      CNAK                      :: Bit      -- Clear NAK
+      _                         :: Bits 4   -- (Reserved)
+      STALL                     :: Bit      -- STALL handshake
+      SNPM                      :: Bit      -- Snoop mode
+      EPTYP                     :: Bits 2   -- Endpoint type
+      NAKSTS                    :: Bit      -- NAK status
+      _                         :: Bit      -- (Reserved)
+      USBAEP                    :: Bit      -- USB active endpoint
+      _                         :: Bits 13  -- (Reserved)
+      MPSIZ                     :: Bits 2   -- Maximum packet size
+
+    INT 0x308 - OTG_HS device endpoint-0 interrupt register
+      _                         :: Bits 17  -- (Reserved)
+      NYET                      :: Bit      -- NYET interrupt
+      _                         :: Bits 7   -- (Reserved)
+      B2BSTUP                   :: Bit      -- Back-to-back SETUP packets received
+      _                         :: Bit      -- (Reserved)
+      OTEPDIS                   :: Bit      -- OUT token received when endpoint disabled
+      STUP                      :: Bit      -- SETUP phase done
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- Endpoint disabled interrupt
+      XFRC                      :: Bit      -- Transfer completed interrupt
+
+    TSIZ 0x310 - OTG_HS device endpoint-1 transfer size register
+      _                         :: Bit      -- (Reserved)
+      STUPCNT                   :: Bits 2   -- SETUP packet count
+      _                         :: Bits 9   -- (Reserved)
+      PKTCNT                    :: Bit      -- Packet count
+      _                         :: Bits 12  -- (Reserved)
+      XFRSIZ                    :: Bits 7   -- Transfer size
+
+    DMA 0x314 - OTG_HS device endpoint-0 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CTL 0x320 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- Endpoint enable
+      EPDIS                     :: Bit      -- Endpoint disable
+      SODDFRM                   :: Bit      -- Set odd frame
+      SD0PID_SEVNFRM            :: Bit      -- Set DATA0 PID/Set even frame
+      SNAK                      :: Bit      -- Set NAK
+      CNAK                      :: Bit      -- Clear NAK
+      _                         :: Bits 4   -- (Reserved)
+      STALL                     :: Bit      -- STALL handshake
+      SNPM                      :: Bit      -- Snoop mode
+      EPTYP                     :: Bits 2   -- Endpoint type
+      NAKSTS                    :: Bit      -- NAK status
+      EONUM_DPID                :: Bit      -- Even odd frame/Endpoint data PID
+      USBAEP                    :: Bit      -- USB active endpoint
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x328 - OTG_HS device endpoint-1 interrupt register
+      _                         :: Bits 17  -- (Reserved)
+      NYET                      :: Bit      -- NYET interrupt
+      _                         :: Bits 7   -- (Reserved)
+      B2BSTUP                   :: Bit      -- Back-to-back SETUP packets received
+      _                         :: Bit      -- (Reserved)
+      OTEPDIS                   :: Bit      -- OUT token received when endpoint disabled
+      STUP                      :: Bit      -- SETUP phase done
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- Endpoint disabled interrupt
+      XFRC                      :: Bit      -- Transfer completed interrupt
+
+    TSIZ 0x330 - OTG_HS device endpoint-2 transfer size register
+      _                         :: Bit      -- (Reserved)
+      RXDPID_STUPCNT            :: Bits 2   -- Received data PID/SETUP packet count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x334 - OTG_HS device endpoint-1 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CTL 0x340 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- Endpoint enable
+      EPDIS                     :: Bit      -- Endpoint disable
+      SODDFRM                   :: Bit      -- Set odd frame
+      SD0PID_SEVNFRM            :: Bit      -- Set DATA0 PID/Set even frame
+      SNAK                      :: Bit      -- Set NAK
+      CNAK                      :: Bit      -- Clear NAK
+      _                         :: Bits 4   -- (Reserved)
+      STALL                     :: Bit      -- STALL handshake
+      SNPM                      :: Bit      -- Snoop mode
+      EPTYP                     :: Bits 2   -- Endpoint type
+      NAKSTS                    :: Bit      -- NAK status
+      EONUM_DPID                :: Bit      -- Even odd frame/Endpoint data PID
+      USBAEP                    :: Bit      -- USB active endpoint
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x348 - OTG_HS device endpoint-1 interrupt register
+      _                         :: Bits 17  -- (Reserved)
+      NYET                      :: Bit      -- NYET interrupt
+      _                         :: Bits 7   -- (Reserved)
+      B2BSTUP                   :: Bit      -- Back-to-back SETUP packets received
+      _                         :: Bit      -- (Reserved)
+      OTEPDIS                   :: Bit      -- OUT token received when endpoint disabled
+      STUP                      :: Bit      -- SETUP phase done
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- Endpoint disabled interrupt
+      XFRC                      :: Bit      -- Transfer completed interrupt
+
+    TSIZ 0x350 - OTG_HS device endpoint-2 transfer size register
+      _                         :: Bit      -- (Reserved)
+      RXDPID_STUPCNT            :: Bits 2   -- Received data PID/SETUP packet count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x354 - OTG_HS device endpoint-1 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CTL 0x360 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- Endpoint enable
+      EPDIS                     :: Bit      -- Endpoint disable
+      SODDFRM                   :: Bit      -- Set odd frame
+      SD0PID_SEVNFRM            :: Bit      -- Set DATA0 PID/Set even frame
+      SNAK                      :: Bit      -- Set NAK
+      CNAK                      :: Bit      -- Clear NAK
+      _                         :: Bits 4   -- (Reserved)
+      STALL                     :: Bit      -- STALL handshake
+      SNPM                      :: Bit      -- Snoop mode
+      EPTYP                     :: Bits 2   -- Endpoint type
+      NAKSTS                    :: Bit      -- NAK status
+      EONUM_DPID                :: Bit      -- Even odd frame/Endpoint data PID
+      USBAEP                    :: Bit      -- USB active endpoint
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x368 - OTG_HS device endpoint-1 interrupt register
+      _                         :: Bits 17  -- (Reserved)
+      NYET                      :: Bit      -- NYET interrupt
+      _                         :: Bits 7   -- (Reserved)
+      B2BSTUP                   :: Bit      -- Back-to-back SETUP packets received
+      _                         :: Bit      -- (Reserved)
+      OTEPDIS                   :: Bit      -- OUT token received when endpoint disabled
+      STUP                      :: Bit      -- SETUP phase done
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- Endpoint disabled interrupt
+      XFRC                      :: Bit      -- Transfer completed interrupt
+
+    TSIZ 0x370 - OTG_HS device endpoint-2 transfer size register
+      _                         :: Bit      -- (Reserved)
+      RXDPID_STUPCNT            :: Bits 2   -- Received data PID/SETUP packet count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x374 - OTG_HS device endpoint-1 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CTL 0x380 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- Endpoint enable
+      EPDIS                     :: Bit      -- Endpoint disable
+      SODDFRM                   :: Bit      -- Set odd frame
+      SD0PID_SEVNFRM            :: Bit      -- Set DATA0 PID/Set even frame
+      SNAK                      :: Bit      -- Set NAK
+      CNAK                      :: Bit      -- Clear NAK
+      _                         :: Bits 4   -- (Reserved)
+      STALL                     :: Bit      -- STALL handshake
+      SNPM                      :: Bit      -- Snoop mode
+      EPTYP                     :: Bits 2   -- Endpoint type
+      NAKSTS                    :: Bit      -- NAK status
+      EONUM_DPID                :: Bit      -- Even odd frame/Endpoint data PID
+      USBAEP                    :: Bit      -- USB active endpoint
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x388 - OTG_HS device endpoint-1 interrupt register
+      _                         :: Bits 17  -- (Reserved)
+      NYET                      :: Bit      -- NYET interrupt
+      _                         :: Bits 7   -- (Reserved)
+      B2BSTUP                   :: Bit      -- Back-to-back SETUP packets received
+      _                         :: Bit      -- (Reserved)
+      OTEPDIS                   :: Bit      -- OUT token received when endpoint disabled
+      STUP                      :: Bit      -- SETUP phase done
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- Endpoint disabled interrupt
+      XFRC                      :: Bit      -- Transfer completed interrupt
+
+    TSIZ 0x390 - OTG_HS device endpoint-2 transfer size register
+      _                         :: Bit      -- (Reserved)
+      RXDPID_STUPCNT            :: Bits 2   -- Received data PID/SETUP packet count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x394 - OTG_HS device endpoint-1 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+    CTL 0x3a0 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- Endpoint enable
+      EPDIS                     :: Bit      -- Endpoint disable
+      SODDFRM                   :: Bit      -- Set odd frame
+      SD0PID_SEVNFRM            :: Bit      -- Set DATA0 PID/Set even frame
+      SNAK                      :: Bit      -- Set NAK
+      CNAK                      :: Bit      -- Clear NAK
+      _                         :: Bits 4   -- (Reserved)
+      STALL                     :: Bit      -- STALL handshake
+      SNPM                      :: Bit      -- Snoop mode
+      EPTYP                     :: Bits 2   -- Endpoint type
+      NAKSTS                    :: Bit      -- NAK status
+      EONUM_DPID                :: Bit      -- Even odd frame/Endpoint data PID
+      USBAEP                    :: Bit      -- USB active endpoint
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x3a8 - OTG_HS device endpoint-1 interrupt register
+      _                         :: Bits 17  -- (Reserved)
+      NYET                      :: Bit      -- NYET interrupt
+      _                         :: Bits 7   -- (Reserved)
+      B2BSTUP                   :: Bit      -- Back-to-back SETUP packets received
+      _                         :: Bit      -- (Reserved)
+      OTEPDIS                   :: Bit      -- OUT token received when endpoint disabled
+      STUP                      :: Bit      -- SETUP phase done
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- Endpoint disabled interrupt
+      XFRC                      :: Bit      -- Transfer completed interrupt
+
+    TSIZ 0x3b0 - OTG_HS device endpoint-2 transfer size register
+      _                         :: Bit      -- (Reserved)
+      RXDPID_STUPCNT            :: Bits 2   -- Received data PID/SETUP packet count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    DMA 0x3b4 - OTG_HS device endpoint-1 DMA address register
+      DMAADDR                   :: Bits 32  -- DMA address
+
+  OTG_HS_PWRCLK 0x40040e00 USB on the go high speed
+    
+    PCGCCTL 0x0 - Power and clock gating control register
+      _                         :: Bits 27  -- (Reserved)
+      PHYSUSP                   :: Bit      -- PHY suspended
+      _                         :: Bits 2   -- (Reserved)
+      GATEHCLK                  :: Bit      -- Gate HCLK
+      STPPCLK                   :: Bit      -- Stop PHY clock
+
+  OTG_FS_GLOBAL 0x50000000 USB on the go full speed
+    
+    GOTGCTL 0x0 - OTG_FS control and status register (OTG_FS_GOTGCTL)
+      _                         :: Bits 12  -- (Reserved)
+      BSVLD                     :: Bit      -- B-session valid
+      ASVLD                     :: Bit      -- A-session valid
+      DBCT                      :: Bit      -- Long/short debounce time
+      CIDSTS                    :: Bit      -- Connector ID status
+      _                         :: Bits 4   -- (Reserved)
+      DHNPEN                    :: Bit      -- Device HNP enabled
+      HSHNPEN                   :: Bit      -- Host set HNP enable
+      HNPRQ                     :: Bit      -- HNP request
+      HNGSCS                    :: Bit      -- Host negotiation success
+      _                         :: Bits 6   -- (Reserved)
+      SRQ                       :: Bit      -- Session request
+      SRQSCS                    :: Bit      -- Session request success
+
+    GOTGINT 0x4 - OTG_FS interrupt register (OTG_FS_GOTGINT)
+      _                         :: Bits 12  -- (Reserved)
+      DBCDNE                    :: Bit      -- Debounce done
+      ADTOCHG                   :: Bit      -- A-device timeout change
+      HNGDET                    :: Bit      -- Host negotiation detected
+      _                         :: Bits 7   -- (Reserved)
+      HNSSCHG                   :: Bit      -- Host negotiation success status change
+      SRSSCHG                   :: Bit      -- Session request success status change
+      _                         :: Bits 5   -- (Reserved)
+      SEDET                     :: Bit      -- Session end detected
+      _                         :: Bits 2   -- (Reserved)
+
+    GAHBCFG 0x8 - OTG_FS AHB configuration register (OTG_FS_GAHBCFG)
+      _                         :: Bits 23  -- (Reserved)
+      PTXFELVL                  :: Bit      -- Periodic TxFIFO empty level
+      TXFELVL                   :: Bit      -- TxFIFO empty level
+      _                         :: Bits 6   -- (Reserved)
+      GINT                      :: Bit      -- Global interrupt mask
+
+    GUSBCFG 0xc - OTG_FS USB configuration register (OTG_FS_GUSBCFG)
+      CTXPKT                    :: Bit      -- Corrupt Tx packet
+      FDMOD                     :: Bit      -- Force device mode
+      FHMOD                     :: Bit      -- Force host mode
+      _                         :: Bits 15  -- (Reserved)
+      TRDT                      :: Bits 4   -- USB turnaround time
+      HNPCAP                    :: Bit      -- HNP-capable
+      SRPCAP                    :: Bit      -- SRP-capable
+      _                         :: Bit      -- (Reserved)
+      PHYSEL                    :: Bit      -- Full Speed serial transceiver select
+      _                         :: Bits 3   -- (Reserved)
+      TOCAL                     :: Bits 3   -- FS timeout calibration
+
+    GRSTCTL 0x10 - OTG_FS reset register (OTG_FS_GRSTCTL)
+      AHBIDL                    :: Bit      -- AHB master idle
+      _                         :: Bits 20  -- (Reserved)
+      TXFNUM                    :: Bits 5   -- TxFIFO number
+      TXFFLSH                   :: Bit      -- TxFIFO flush
+      RXFFLSH                   :: Bit      -- RxFIFO flush
+      _                         :: Bit      -- (Reserved)
+      FCRST                     :: Bit      -- Host frame counter reset
+      HSRST                     :: Bit      -- HCLK soft reset
+      CSRST                     :: Bit      -- Core soft reset
+
+    GINTSTS 0x14 - OTG_FS core interrupt register (OTG_FS_GINTSTS)
+      WKUPINT                   :: Bit      -- Resume/remote wakeup detected interrupt
+      SRQINT                    :: Bit      -- Session request/new session detected interrupt
+      DISCINT                   :: Bit      -- Disconnect detected interrupt
+      CIDSCHG                   :: Bit      -- Connector ID status change
+      _                         :: Bit      -- (Reserved)
+      PTXFE                     :: Bit      -- Periodic TxFIFO empty
+      HCINT                     :: Bit      -- Host channels interrupt
+      HPRTINT                   :: Bit      -- Host port interrupt
+      _                         :: Bits 2   -- (Reserved)
+      IPXFR_INCOMPISOOUT        :: Bit      -- Incomplete periodic transfer(Host mode)/Incomplete isochronous OUT transfer(Device mode)
+      IISOIXFR                  :: Bit      -- Incomplete isochronous IN transfer
+      OEPINT                    :: Bit      -- OUT endpoint interrupt
+      IEPINT                    :: Bit      -- IN endpoint interrupt
+      _                         :: Bits 2   -- (Reserved)
+      EOPF                      :: Bit      -- End of periodic frame interrupt
+      ISOODRP                   :: Bit      -- Isochronous OUT packet dropped interrupt
+      ENUMDNE                   :: Bit      -- Enumeration done
+      USBRST                    :: Bit      -- USB reset
+      USBSUSP                   :: Bit      -- USB suspend
+      ESUSP                     :: Bit      -- Early suspend
+      _                         :: Bits 2   -- (Reserved)
+      GOUTNAKEFF                :: Bit      -- Global OUT NAK effective
+      GINAKEFF                  :: Bit      -- Global IN non-periodic NAK effective
+      NPTXFE                    :: Bit      -- Non-periodic TxFIFO empty
+      RXFLVL                    :: Bit      -- RxFIFO non-empty
+      SOF                       :: Bit      -- Start of frame
+      OTGINT                    :: Bit      -- OTG interrupt
+      MMIS                      :: Bit      -- Mode mismatch interrupt
+      CMOD                      :: Bit      -- Current mode of operation
+
+    GINTMSK 0x18 - OTG_FS interrupt mask register (OTG_FS_GINTMSK)
+      WUIM                      :: Bit      -- Resume/remote wakeup detected interrupt mask
+      SRQIM                     :: Bit      -- Session request/new session detected interrupt mask
+      DISCINT                   :: Bit      -- Disconnect detected interrupt mask
+      CIDSCHGM                  :: Bit      -- Connector ID status change mask
+      _                         :: Bit      -- (Reserved)
+      PTXFEM                    :: Bit      -- Periodic TxFIFO empty mask
+      HCIM                      :: Bit      -- Host channels interrupt mask
+      PRTIM                     :: Bit      -- Host port interrupt mask
+      _                         :: Bits 2   -- (Reserved)
+      IPXFRM_IISOOXFRM          :: Bit      -- Incomplete periodic transfer mask(Host mode)/Incomplete isochronous OUT transfer mask(Device mode)
+      IISOIXFRM                 :: Bit      -- Incomplete isochronous IN transfer mask
+      OEPINT                    :: Bit      -- OUT endpoints interrupt mask
+      IEPINT                    :: Bit      -- IN endpoints interrupt mask
+      EPMISM                    :: Bit      -- Endpoint mismatch interrupt mask
+      _                         :: Bit      -- (Reserved)
+      EOPFM                     :: Bit      -- End of periodic frame interrupt mask
+      ISOODRPM                  :: Bit      -- Isochronous OUT packet dropped interrupt mask
+      ENUMDNEM                  :: Bit      -- Enumeration done mask
+      USBRST                    :: Bit      -- USB reset mask
+      USBSUSPM                  :: Bit      -- USB suspend mask
+      ESUSPM                    :: Bit      -- Early suspend mask
+      _                         :: Bits 2   -- (Reserved)
+      GONAKEFFM                 :: Bit      -- Global OUT NAK effective mask
+      GINAKEFFM                 :: Bit      -- Global non-periodic IN NAK effective mask
+      NPTXFEM                   :: Bit      -- Non-periodic TxFIFO empty mask
+      RXFLVLM                   :: Bit      -- Receive FIFO non-empty mask
+      SOFM                      :: Bit      -- Start of frame mask
+      OTGINT                    :: Bit      -- OTG interrupt mask
+      MMISM                     :: Bit      -- Mode mismatch interrupt mask
+      _                         :: Bit      -- (Reserved)
+
+    GRXSTSR_Device 0x1c - OTG_FS Receive status debug read(Device mode)
+      _                         :: Bits 7   -- (Reserved)
+      FRMNUM                    :: Bits 4   -- Frame number
+      PKTSTS                    :: Bits 4   -- Packet status
+      DPID                      :: Bits 2   -- Data PID
+      BCNT                      :: Bits 11  -- Byte count
+      EPNUM                     :: Bits 4   -- Endpoint number
+
+    GRXSTSR_Host 0x1c - OTG status debug read (host mode)
+      _                         :: Bits 11  -- (Reserved)
+      PKTSTS                    :: Bits 4   -- Packet status
+      DPID                      :: Bits 2   -- Data PID
+      BCNT                      :: Bits 11  -- Byte count
+      CHNUM                     :: Bits 4   -- Channel number
+
+    GRXSTSP_Device 0x20 - OTG status read and pop (device mode)
+      _                         :: Bits 7   -- (Reserved)
+      FRMNUM                    :: Bits 4   -- Frame number
+      PKTSTS                    :: Bits 4   -- Packet status
+      DPID                      :: Bits 2   -- Data PID
+      BCNT                      :: Bits 11  -- Byte count
+      EPNUM                     :: Bits 4   -- Endpoint number
+
+    GRXSTSP_Host 0x20 - OTG status read and pop (host mode)
+      _                         :: Bits 11  -- (Reserved)
+      PKTSTS                    :: Bits 4   -- Packet status
+      DPID                      :: Bits 2   -- Data PID
+      BCNT                      :: Bits 11  -- Byte count
+      CHNUM                     :: Bits 4   -- Channel number
+
+    GRXFSIZ 0x24 - OTG_FS Receive FIFO size register (OTG_FS_GRXFSIZ)
+      _                         :: Bits 16  -- (Reserved)
+      RXFD                      :: Bits 16  -- RxFIFO depth
+
+    DIEPTXF0 0x28 - OTG_FS non-periodic transmit FIFO size register (Device mode)
+      TX0FD                     :: Bits 16  -- Endpoint 0 TxFIFO depth
+      TX0FSA                    :: Bits 16  -- Endpoint 0 transmit RAM start address
+
+    HNPTXFSIZ 0x28 - OTG_FS non-periodic transmit FIFO size register (Host mode)
+      NPTXFD                    :: Bits 16  -- Non-periodic TxFIFO depth
+      NPTXFSA                   :: Bits 16  -- Non-periodic transmit RAM start address
+
+    GNPTXSTS 0x2c - OTG_FS non-periodic transmit FIFO/queue status register (OTG_FS_GNPTXSTS)
+      _                         :: Bit      -- (Reserved)
+      NPTXQTOP                  :: Bits 7   -- Top of the non-periodic transmit request queue
+      NPTQXSAV                  :: Bits 8   -- Non-periodic transmit request queue space available
+      NPTXFSAV                  :: Bits 16  -- Non-periodic TxFIFO space available
+
+    GCCFG 0x38 - OTG_FS general core configuration register (OTG_FS_GCCFG)
+      _                         :: Bits 10  -- (Reserved)
+      NOVBUSSENS                :: Bit      -- Vbus sensing disable option
+      SOFOUTEN                  :: Bit      -- SOF output enable
+      VBUSBSEN                  :: Bit      -- Enable the VBUS sensing device
+      VBUSASEN                  :: Bit      -- Enable the VBUS sensing device
+      _                         :: Bit      -- (Reserved)
+      PWRDWN                    :: Bit      -- Power down
+      _                         :: Bits 16  -- (Reserved)
+
+    CID 0x3c - core ID register
+      PRODUCT_ID                :: Bits 32  -- Product ID field
+
+    HPTXFSIZ 0x100 - OTG_FS Host periodic transmit FIFO size register (OTG_FS_HPTXFSIZ)
+      PTXFSIZ                   :: Bits 16  -- Host periodic TxFIFO depth
+      PTXSA                     :: Bits 16  -- Host periodic TxFIFO start address
+
+    DIEPTXF1 0x104 - OTF_FS device IN endpoint transmit FIFO size register
+      INEPTXFD                  :: Bits 16  -- IN endpoint TxFIFO depth
+      INEPTXSA                  :: Bits 16  -- IN endpoint FIFO2 transmit RAM start address
+
+    DIEPTXF2 0x108 - OTF_FS device IN endpoint transmit FIFO size register
+      INEPTXFD                  :: Bits 16  -- IN endpoint TxFIFO depth
+      INEPTXSA                  :: Bits 16  -- IN endpoint FIFO2 transmit RAM start address
+
+    DIEPTXF3 0x10c - OTF_FS device IN endpoint transmit FIFO size register
+      INEPTXFD                  :: Bits 16  -- IN endpoint TxFIFO depth
+      INEPTXSA                  :: Bits 16  -- IN endpoint FIFO2 transmit RAM start address
+
+    DIEPTXF4 0x110 - OTF_FS device IN endpoint transmit FIFO size register
+      INEPTXFD                  :: Bits 16  -- IN endpoint TxFIFO depth
+      INEPTXSA                  :: Bits 16  -- IN endpoint FIFO2 transmit RAM start address
+
+    DIEPTXF5 0x114 - OTF_FS device IN endpoint transmit FIFO size register
+      INEPTXFD                  :: Bits 16  -- IN endpoint TxFIFO depth
+      INEPTXSA                  :: Bits 16  -- IN endpoint FIFO2 transmit RAM start address
+
+  OTG_FS_HOST 0x50000400 USB on the go full speed
+    
+    HCFG 0x0 - OTG_FS host configuration register (OTG_FS_HCFG)
+      _                         :: Bits 29  -- (Reserved)
+      FSLSS                     :: Bit      -- FS- and LS-only support
+      FSLSPCS                   :: Bits 2   -- FS/LS PHY clock select
+
+    HFIR 0x4 - OTG_FS Host frame interval register
+      _                         :: Bits 16  -- (Reserved)
+      FRIVL                     :: Bits 16  -- Frame interval
+
+    HFNUM 0x8 - OTG_FS host frame number/frame time remaining register (OTG_FS_HFNUM)
+      FTREM                     :: Bits 16  -- Frame time remaining
+      FRNUM                     :: Bits 16  -- Frame number
+
+    HPTXSTS 0x10 - OTG_FS_Host periodic transmit FIFO/queue status register (OTG_FS_HPTXSTS)
+      PTXQTOP                   :: Bits 8   -- Top of the periodic transmit request queue
+      PTXQSAV                   :: Bits 8   -- Periodic transmit request queue space available
+      PTXFSAVL                  :: Bits 16  -- Periodic transmit data FIFO space available
+
+    HAINT 0x14 - OTG_FS Host all channels interrupt register
+      _                         :: Bits 16  -- (Reserved)
+      HAINT                     :: Bits 16  -- Channel interrupts
+
+    HAINTMSK 0x18 - OTG_FS host all channels interrupt mask register
+      _                         :: Bits 16  -- (Reserved)
+      HAINTM                    :: Bits 16  -- Channel interrupt mask
+
+    HPRT 0x40 - OTG_FS host port control and status register (OTG_FS_HPRT)
+      _                         :: Bits 13  -- (Reserved)
+      PSPD                      :: Bits 2   -- Port speed
+      PTCTL                     :: Bits 4   -- Port test control
+      PPWR                      :: Bit      -- Port power
+      PLSTS                     :: Bits 2   -- Port line status
+      _                         :: Bit      -- (Reserved)
+      PRST                      :: Bit      -- Port reset
+      PSUSP                     :: Bit      -- Port suspend
+      PRES                      :: Bit      -- Port resume
+      POCCHNG                   :: Bit      -- Port overcurrent change
+      POCA                      :: Bit      -- Port overcurrent active
+      PENCHNG                   :: Bit      -- Port enable/disable change
+      PENA                      :: Bit      -- Port enable
+      PCDET                     :: Bit      -- Port connect detected
+      PCSTS                     :: Bit      -- Port connect status
+
+    CHAR 0x100 - OTG_FS host channel-0 characteristics register (OTG_FS_HCCHAR0)
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MCNT                      :: Bits 2   -- Multicount
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x108 - OTG_FS host channel-0 interrupt register (OTG_FS_HCINT0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      _                         :: Bit      -- (Reserved)
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      _                         :: Bit      -- (Reserved)
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x10c - OTG_FS host channel-0 mask register (OTG_FS_HCINTMSK0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      _                         :: Bit      -- (Reserved)
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x110 - OTG_FS host channel-0 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CHAR 0x120 - OTG_FS host channel-0 characteristics register (OTG_FS_HCCHAR0)
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MCNT                      :: Bits 2   -- Multicount
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x128 - OTG_FS host channel-0 interrupt register (OTG_FS_HCINT0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      _                         :: Bit      -- (Reserved)
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      _                         :: Bit      -- (Reserved)
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x12c - OTG_FS host channel-0 mask register (OTG_FS_HCINTMSK0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      _                         :: Bit      -- (Reserved)
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x130 - OTG_FS host channel-0 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CHAR 0x140 - OTG_FS host channel-0 characteristics register (OTG_FS_HCCHAR0)
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MCNT                      :: Bits 2   -- Multicount
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x148 - OTG_FS host channel-0 interrupt register (OTG_FS_HCINT0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      _                         :: Bit      -- (Reserved)
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      _                         :: Bit      -- (Reserved)
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x14c - OTG_FS host channel-0 mask register (OTG_FS_HCINTMSK0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      _                         :: Bit      -- (Reserved)
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x150 - OTG_FS host channel-0 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CHAR 0x160 - OTG_FS host channel-0 characteristics register (OTG_FS_HCCHAR0)
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MCNT                      :: Bits 2   -- Multicount
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x168 - OTG_FS host channel-0 interrupt register (OTG_FS_HCINT0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      _                         :: Bit      -- (Reserved)
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      _                         :: Bit      -- (Reserved)
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x16c - OTG_FS host channel-0 mask register (OTG_FS_HCINTMSK0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      _                         :: Bit      -- (Reserved)
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x170 - OTG_FS host channel-0 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CHAR 0x180 - OTG_FS host channel-0 characteristics register (OTG_FS_HCCHAR0)
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MCNT                      :: Bits 2   -- Multicount
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x188 - OTG_FS host channel-0 interrupt register (OTG_FS_HCINT0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      _                         :: Bit      -- (Reserved)
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      _                         :: Bit      -- (Reserved)
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x18c - OTG_FS host channel-0 mask register (OTG_FS_HCINTMSK0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      _                         :: Bit      -- (Reserved)
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x190 - OTG_FS host channel-0 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CHAR 0x1a0 - OTG_FS host channel-0 characteristics register (OTG_FS_HCCHAR0)
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MCNT                      :: Bits 2   -- Multicount
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x1a8 - OTG_FS host channel-0 interrupt register (OTG_FS_HCINT0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      _                         :: Bit      -- (Reserved)
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      _                         :: Bit      -- (Reserved)
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x1ac - OTG_FS host channel-0 mask register (OTG_FS_HCINTMSK0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      _                         :: Bit      -- (Reserved)
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x1b0 - OTG_FS host channel-0 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CHAR 0x1c0 - OTG_FS host channel-0 characteristics register (OTG_FS_HCCHAR0)
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MCNT                      :: Bits 2   -- Multicount
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x1c8 - OTG_FS host channel-0 interrupt register (OTG_FS_HCINT0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      _                         :: Bit      -- (Reserved)
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      _                         :: Bit      -- (Reserved)
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x1cc - OTG_FS host channel-0 mask register (OTG_FS_HCINTMSK0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      _                         :: Bit      -- (Reserved)
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x1d0 - OTG_FS host channel-0 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CHAR 0x1e0 - OTG_FS host channel-0 characteristics register (OTG_FS_HCCHAR0)
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MCNT                      :: Bits 2   -- Multicount
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x1e8 - OTG_FS host channel-0 interrupt register (OTG_FS_HCINT0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      _                         :: Bit      -- (Reserved)
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      _                         :: Bit      -- (Reserved)
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x1ec - OTG_FS host channel-0 mask register (OTG_FS_HCINTMSK0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      _                         :: Bit      -- (Reserved)
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x1f0 - OTG_FS host channel-0 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CHAR 0x200 - OTG_FS host channel-0 characteristics register (OTG_FS_HCCHAR0)
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MCNT                      :: Bits 2   -- Multicount
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x208 - OTG_FS host channel-0 interrupt register (OTG_FS_HCINT0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      _                         :: Bit      -- (Reserved)
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      _                         :: Bit      -- (Reserved)
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x20c - OTG_FS host channel-0 mask register (OTG_FS_HCINTMSK0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      _                         :: Bit      -- (Reserved)
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x210 - OTG_FS host channel-0 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CHAR 0x220 - OTG_FS host channel-0 characteristics register (OTG_FS_HCCHAR0)
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MCNT                      :: Bits 2   -- Multicount
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x228 - OTG_FS host channel-0 interrupt register (OTG_FS_HCINT0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      _                         :: Bit      -- (Reserved)
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      _                         :: Bit      -- (Reserved)
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x22c - OTG_FS host channel-0 mask register (OTG_FS_HCINTMSK0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      _                         :: Bit      -- (Reserved)
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x230 - OTG_FS host channel-0 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CHAR 0x240 - OTG_FS host channel-0 characteristics register (OTG_FS_HCCHAR0)
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MCNT                      :: Bits 2   -- Multicount
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x248 - OTG_FS host channel-0 interrupt register (OTG_FS_HCINT0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      _                         :: Bit      -- (Reserved)
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      _                         :: Bit      -- (Reserved)
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x24c - OTG_FS host channel-0 mask register (OTG_FS_HCINTMSK0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      _                         :: Bit      -- (Reserved)
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x250 - OTG_FS host channel-0 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CHAR 0x260 - OTG_FS host channel-0 characteristics register (OTG_FS_HCCHAR0)
+      CHENA                     :: Bit      -- Channel enable
+      CHDIS                     :: Bit      -- Channel disable
+      ODDFRM                    :: Bit      -- Odd frame
+      DAD                       :: Bits 7   -- Device address
+      MCNT                      :: Bits 2   -- Multicount
+      EPTYP                     :: Bits 2   -- Endpoint type
+      LSDEV                     :: Bit      -- Low-speed device
+      _                         :: Bit      -- (Reserved)
+      EPDIR                     :: Bit      -- Endpoint direction
+      EPNUM                     :: Bits 4   -- Endpoint number
+      MPSIZ                     :: Bits 11  -- Maximum packet size
+
+    INT 0x268 - OTG_FS host channel-0 interrupt register (OTG_FS_HCINT0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERR                     :: Bit      -- Data toggle error
+      FRMOR                     :: Bit      -- Frame overrun
+      BBERR                     :: Bit      -- Babble error
+      TXERR                     :: Bit      -- Transaction error
+      _                         :: Bit      -- (Reserved)
+      ACK                       :: Bit      -- ACK response received/transmitted interrupt
+      NAK                       :: Bit      -- NAK response received interrupt
+      STALL                     :: Bit      -- STALL response received interrupt
+      _                         :: Bit      -- (Reserved)
+      CHH                       :: Bit      -- Channel halted
+      XFRC                      :: Bit      -- Transfer completed
+
+    INTMSK 0x26c - OTG_FS host channel-0 mask register (OTG_FS_HCINTMSK0)
+      _                         :: Bits 21  -- (Reserved)
+      DTERRM                    :: Bit      -- Data toggle error mask
+      FRMORM                    :: Bit      -- Frame overrun mask
+      BBERRM                    :: Bit      -- Babble error mask
+      TXERRM                    :: Bit      -- Transaction error mask
+      NYET                      :: Bit      -- response received interrupt mask
+      ACKM                      :: Bit      -- ACK response received/transmitted interrupt mask
+      NAKM                      :: Bit      -- NAK response received interrupt mask
+      STALLM                    :: Bit      -- STALL response received interrupt mask
+      _                         :: Bit      -- (Reserved)
+      CHHM                      :: Bit      -- Channel halted mask
+      XFRCM                     :: Bit      -- Transfer completed mask
+
+    TSIZ 0x270 - OTG_FS host channel-0 transfer size register
+      _                         :: Bit      -- (Reserved)
+      DPID                      :: Bits 2   -- Data PID
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+  OTG_FS_DEVICE 0x50000800 USB on the go full speed
+    
+    DCFG 0x0 - OTG_FS device configuration register (OTG_FS_DCFG)
+      _                         :: Bits 19  -- (Reserved)
+      PFIVL                     :: Bits 2   -- Periodic frame interval
+      DAD                       :: Bits 7   -- Device address
+      _                         :: Bit      -- (Reserved)
+      NZLSOHSK                  :: Bit      -- Non-zero-length status OUT handshake
+      DSPD                      :: Bits 2   -- Device speed
+
+    DCTL 0x4 - OTG_FS device control register (OTG_FS_DCTL)
+      _                         :: Bits 20  -- (Reserved)
+      POPRGDNE                  :: Bit      -- Power-on programming done
+      CGONAK                    :: Bit      -- Clear global OUT NAK
+      SGONAK                    :: Bit      -- Set global OUT NAK
+      CGINAK                    :: Bit      -- Clear global IN NAK
+      SGINAK                    :: Bit      -- Set global IN NAK
+      TCTL                      :: Bits 3   -- Test control
+      GONSTS                    :: Bit      -- Global OUT NAK status
+      GINSTS                    :: Bit      -- Global IN NAK status
+      SDIS                      :: Bit      -- Soft disconnect
+      RWUSIG                    :: Bit      -- Remote wakeup signaling
+
+    DSTS 0x8 - OTG_FS device status register (OTG_FS_DSTS)
+      _                         :: Bits 10  -- (Reserved)
+      FNSOF                     :: Bits 14  -- Frame number of the received SOF
+      _                         :: Bits 4   -- (Reserved)
+      EERR                      :: Bit      -- Erratic error
+      ENUMSPD                   :: Bits 2   -- Enumerated speed
+      SUSPSTS                   :: Bit      -- Suspend status
+
+    DIEPMSK 0x10 - OTG_FS device IN endpoint common interrupt mask register (OTG_FS_DIEPMSK)
+      _                         :: Bits 25  -- (Reserved)
+      INEPNEM                   :: Bit      -- IN endpoint NAK effective mask
+      INEPNMM                   :: Bit      -- IN token received with EP mismatch mask
+      ITTXFEMSK                 :: Bit      -- IN token received when TxFIFO empty mask
+      TOM                       :: Bit      -- Timeout condition mask (Non-isochronous endpoints)
+      _                         :: Bit      -- (Reserved)
+      EPDM                      :: Bit      -- Endpoint disabled interrupt mask
+      XFRCM                     :: Bit      -- Transfer completed interrupt mask
+
+    DOEPMSK 0x14 - OTG_FS device OUT endpoint common interrupt mask register (OTG_FS_DOEPMSK)
+      _                         :: Bits 27  -- (Reserved)
+      OTEPDM                    :: Bit      -- OUT token received when endpoint disabled mask
+      STUPM                     :: Bit      -- SETUP phase done mask
+      _                         :: Bit      -- (Reserved)
+      EPDM                      :: Bit      -- Endpoint disabled interrupt mask
+      XFRCM                     :: Bit      -- Transfer completed interrupt mask
+
+    DAINT 0x18 - OTG_FS device all endpoints interrupt register (OTG_FS_DAINT)
+      OEPINT                    :: Bits 16  -- OUT endpoint interrupt bits
+      IEPINT                    :: Bits 16  -- IN endpoint interrupt bits
+
+    DAINTMSK 0x1c - OTG_FS all endpoints interrupt mask register (OTG_FS_DAINTMSK)
+      OEPM                      :: Bits 16  -- OUT EP interrupt mask bits
+      IEPM                      :: Bits 16  -- IN EP interrupt mask bits
+
+    DVBUSDIS 0x28 - OTG_FS device VBUS discharge time register
+      _                         :: Bits 16  -- (Reserved)
+      VBUSDT                    :: Bits 16  -- Device VBUS discharge time
+
+    DVBUSPULSE 0x2c - OTG_FS device VBUS pulsing time register
+      _                         :: Bits 20  -- (Reserved)
+      DVBUSP                    :: Bits 12  -- Device VBUS pulsing time
+
+    DIEPEMPMSK 0x34 - OTG_FS device IN endpoint FIFO empty interrupt mask register
+      _                         :: Bits 16  -- (Reserved)
+      INEPTXFEM                 :: Bits 16  -- IN EP Tx FIFO empty interrupt mask bits
+
+    CTL 0x100 - OTG_FS device control IN endpoint 0 control register (OTG_FS_DIEPCTL0)
+      EPENA                     :: Bit      -- Endpoint enable
+      EPDIS                     :: Bit      -- Endpoint disable
+      _                         :: Bits 2   -- (Reserved)
+      SNAK                      :: Bit      -- Set NAK
+      CNAK                      :: Bit      -- Clear NAK
+      TXFNUM                    :: Bits 4   -- TxFIFO number
+      STALL                     :: Bit      -- STALL handshake
+      _                         :: Bit      -- (Reserved)
+      EPTYP                     :: Bits 2   -- Endpoint type
+      NAKSTS                    :: Bit      -- NAK status
+      _                         :: Bit      -- (Reserved)
+      USBAEP                    :: Bit      -- USB active endpoint
+      _                         :: Bits 13  -- (Reserved)
+      MPSIZ                     :: Bits 2   -- Maximum packet size
+
+    INT 0x108 - device endpoint-x interrupt register
+      _                         :: Bits 24  -- (Reserved)
+      TXFE                      :: Bit      -- TXFE
+      INEPNE                    :: Bit      -- INEPNE
+      _                         :: Bit      -- (Reserved)
+      ITTXFE                    :: Bit      -- ITTXFE
+      TOC                       :: Bit      -- TOC
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- EPDISD
+      XFRC                      :: Bit      -- XFRC
+
+    TSIZ 0x110 - device endpoint-0 transfer size register
+      _                         :: Bits 11  -- (Reserved)
+      PKTCNT                    :: Bits 2   -- Packet count
+      _                         :: Bits 12  -- (Reserved)
+      XFRSIZ                    :: Bits 7   -- Transfer size
+
+    TXFSTS 0x118 - OTG_FS device IN endpoint transmit FIFO status register
+      _                         :: Bits 16  -- (Reserved)
+      INEPTFSAV                 :: Bits 16  -- IN endpoint TxFIFO space available
+
+    CTL 0x120 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- EPENA
+      EPDIS                     :: Bit      -- EPDIS
+      SODDFRM_SD1PID            :: Bit      -- SODDFRM/SD1PID
+      SD0PID_SEVNFRM            :: Bit      -- SD0PID/SEVNFRM
+      SNAK                      :: Bit      -- SNAK
+      CNAK                      :: Bit      -- CNAK
+      TXFNUM                    :: Bits 4   -- TXFNUM
+      STALL                     :: Bit      -- STALL handshake
+      _                         :: Bit      -- (Reserved)
+      EPTYP                     :: Bits 2   -- EPTYP
+      NAKSTS                    :: Bit      -- NAKSTS
+      EONUM_DPID                :: Bit      -- EONUM/DPID
+      USBAEP                    :: Bit      -- USBAEP
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- MPSIZ
+
+    INT 0x128 - device endpoint-1 interrupt register
+      _                         :: Bits 24  -- (Reserved)
+      TXFE                      :: Bit      -- TXFE
+      INEPNE                    :: Bit      -- INEPNE
+      _                         :: Bit      -- (Reserved)
+      ITTXFE                    :: Bit      -- ITTXFE
+      TOC                       :: Bit      -- TOC
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- EPDISD
+      XFRC                      :: Bit      -- XFRC
+
+    TSIZ 0x130 - device endpoint-1 transfer size register
+      _                         :: Bit      -- (Reserved)
+      MCNT                      :: Bits 2   -- Multi count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    TXFSTS 0x138 - OTG_FS device IN endpoint transmit FIFO status register
+      _                         :: Bits 16  -- (Reserved)
+      INEPTFSAV                 :: Bits 16  -- IN endpoint TxFIFO space available
+
+    CTL 0x140 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- EPENA
+      EPDIS                     :: Bit      -- EPDIS
+      SODDFRM_SD1PID            :: Bit      -- SODDFRM/SD1PID
+      SD0PID_SEVNFRM            :: Bit      -- SD0PID/SEVNFRM
+      SNAK                      :: Bit      -- SNAK
+      CNAK                      :: Bit      -- CNAK
+      TXFNUM                    :: Bits 4   -- TXFNUM
+      STALL                     :: Bit      -- STALL handshake
+      _                         :: Bit      -- (Reserved)
+      EPTYP                     :: Bits 2   -- EPTYP
+      NAKSTS                    :: Bit      -- NAKSTS
+      EONUM_DPID                :: Bit      -- EONUM/DPID
+      USBAEP                    :: Bit      -- USBAEP
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- MPSIZ
+
+    INT 0x148 - device endpoint-1 interrupt register
+      _                         :: Bits 24  -- (Reserved)
+      TXFE                      :: Bit      -- TXFE
+      INEPNE                    :: Bit      -- INEPNE
+      _                         :: Bit      -- (Reserved)
+      ITTXFE                    :: Bit      -- ITTXFE
+      TOC                       :: Bit      -- TOC
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- EPDISD
+      XFRC                      :: Bit      -- XFRC
+
+    TSIZ 0x150 - device endpoint-1 transfer size register
+      _                         :: Bit      -- (Reserved)
+      MCNT                      :: Bits 2   -- Multi count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    TXFSTS 0x158 - OTG_FS device IN endpoint transmit FIFO status register
+      _                         :: Bits 16  -- (Reserved)
+      INEPTFSAV                 :: Bits 16  -- IN endpoint TxFIFO space available
+
+    CTL 0x160 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- EPENA
+      EPDIS                     :: Bit      -- EPDIS
+      SODDFRM_SD1PID            :: Bit      -- SODDFRM/SD1PID
+      SD0PID_SEVNFRM            :: Bit      -- SD0PID/SEVNFRM
+      SNAK                      :: Bit      -- SNAK
+      CNAK                      :: Bit      -- CNAK
+      TXFNUM                    :: Bits 4   -- TXFNUM
+      STALL                     :: Bit      -- STALL handshake
+      _                         :: Bit      -- (Reserved)
+      EPTYP                     :: Bits 2   -- EPTYP
+      NAKSTS                    :: Bit      -- NAKSTS
+      EONUM_DPID                :: Bit      -- EONUM/DPID
+      USBAEP                    :: Bit      -- USBAEP
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- MPSIZ
+
+    INT 0x168 - device endpoint-1 interrupt register
+      _                         :: Bits 24  -- (Reserved)
+      TXFE                      :: Bit      -- TXFE
+      INEPNE                    :: Bit      -- INEPNE
+      _                         :: Bit      -- (Reserved)
+      ITTXFE                    :: Bit      -- ITTXFE
+      TOC                       :: Bit      -- TOC
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- EPDISD
+      XFRC                      :: Bit      -- XFRC
+
+    TSIZ 0x170 - device endpoint-1 transfer size register
+      _                         :: Bit      -- (Reserved)
+      MCNT                      :: Bits 2   -- Multi count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    TXFSTS 0x178 - OTG_FS device IN endpoint transmit FIFO status register
+      _                         :: Bits 16  -- (Reserved)
+      INEPTFSAV                 :: Bits 16  -- IN endpoint TxFIFO space available
+
+    CTL 0x180 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- EPENA
+      EPDIS                     :: Bit      -- EPDIS
+      SODDFRM_SD1PID            :: Bit      -- SODDFRM/SD1PID
+      SD0PID_SEVNFRM            :: Bit      -- SD0PID/SEVNFRM
+      SNAK                      :: Bit      -- SNAK
+      CNAK                      :: Bit      -- CNAK
+      TXFNUM                    :: Bits 4   -- TXFNUM
+      STALL                     :: Bit      -- STALL handshake
+      _                         :: Bit      -- (Reserved)
+      EPTYP                     :: Bits 2   -- EPTYP
+      NAKSTS                    :: Bit      -- NAKSTS
+      EONUM_DPID                :: Bit      -- EONUM/DPID
+      USBAEP                    :: Bit      -- USBAEP
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- MPSIZ
+
+    INT 0x188 - device endpoint-1 interrupt register
+      _                         :: Bits 24  -- (Reserved)
+      TXFE                      :: Bit      -- TXFE
+      INEPNE                    :: Bit      -- INEPNE
+      _                         :: Bit      -- (Reserved)
+      ITTXFE                    :: Bit      -- ITTXFE
+      TOC                       :: Bit      -- TOC
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- EPDISD
+      XFRC                      :: Bit      -- XFRC
+
+    TSIZ 0x190 - device endpoint-1 transfer size register
+      _                         :: Bit      -- (Reserved)
+      MCNT                      :: Bits 2   -- Multi count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    TXFSTS 0x198 - OTG_FS device IN endpoint transmit FIFO status register
+      _                         :: Bits 16  -- (Reserved)
+      INEPTFSAV                 :: Bits 16  -- IN endpoint TxFIFO space available
+
+    CTL 0x1a0 - OTG device endpoint-1 control register
+      EPENA                     :: Bit      -- EPENA
+      EPDIS                     :: Bit      -- EPDIS
+      SODDFRM_SD1PID            :: Bit      -- SODDFRM/SD1PID
+      SD0PID_SEVNFRM            :: Bit      -- SD0PID/SEVNFRM
+      SNAK                      :: Bit      -- SNAK
+      CNAK                      :: Bit      -- CNAK
+      TXFNUM                    :: Bits 4   -- TXFNUM
+      STALL                     :: Bit      -- STALL handshake
+      _                         :: Bit      -- (Reserved)
+      EPTYP                     :: Bits 2   -- EPTYP
+      NAKSTS                    :: Bit      -- NAKSTS
+      EONUM_DPID                :: Bit      -- EONUM/DPID
+      USBAEP                    :: Bit      -- USBAEP
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- MPSIZ
+
+    INT 0x1a8 - device endpoint-1 interrupt register
+      _                         :: Bits 24  -- (Reserved)
+      TXFE                      :: Bit      -- TXFE
+      INEPNE                    :: Bit      -- INEPNE
+      _                         :: Bit      -- (Reserved)
+      ITTXFE                    :: Bit      -- ITTXFE
+      TOC                       :: Bit      -- TOC
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- EPDISD
+      XFRC                      :: Bit      -- XFRC
+
+    TSIZ 0x1b0 - device endpoint-1 transfer size register
+      _                         :: Bit      -- (Reserved)
+      MCNT                      :: Bits 2   -- Multi count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    TXFSTS 0x1b8 - OTG_FS device IN endpoint transmit FIFO status register
+      _                         :: Bits 16  -- (Reserved)
+      INEPTFSAV                 :: Bits 16  -- IN endpoint TxFIFO space available
+
+    CTL 0x300 - device endpoint-0 control register
+      EPENA                     :: Bit      -- EPENA
+      EPDIS                     :: Bit      -- EPDIS
+      _                         :: Bits 2   -- (Reserved)
+      SNAK                      :: Bit      -- SNAK
+      CNAK                      :: Bit      -- CNAK
+      _                         :: Bits 4   -- (Reserved)
+      STALL                     :: Bit      -- STALL handshake
+      SNPM                      :: Bit      -- SNPM
+      EPTYP                     :: Bits 2   -- EPTYP
+      NAKSTS                    :: Bit      -- NAKSTS
+      _                         :: Bit      -- (Reserved)
+      USBAEP                    :: Bit      -- USBAEP
+      _                         :: Bits 13  -- (Reserved)
+      MPSIZ                     :: Bits 2   -- MPSIZ
+
+    INT 0x308 - device endpoint-0 interrupt register
+      _                         :: Bits 25  -- (Reserved)
+      B2BSTUP                   :: Bit      -- B2BSTUP
+      _                         :: Bit      -- (Reserved)
+      OTEPDIS                   :: Bit      -- OTEPDIS
+      STUP                      :: Bit      -- STUP
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- EPDISD
+      XFRC                      :: Bit      -- XFRC
+
+    TSIZ 0x310 - device OUT endpoint-0 transfer size register
+      _                         :: Bit      -- (Reserved)
+      STUPCNT                   :: Bits 2   -- SETUP packet count
+      _                         :: Bits 9   -- (Reserved)
+      PKTCNT                    :: Bit      -- Packet count
+      _                         :: Bits 12  -- (Reserved)
+      XFRSIZ                    :: Bits 7   -- Transfer size
+
+    CTL 0x320 - device endpoint-1 control register
+      EPENA                     :: Bit      -- EPENA
+      EPDIS                     :: Bit      -- EPDIS
+      SODDFRM                   :: Bit      -- SODDFRM
+      SD0PID_SEVNFRM            :: Bit      -- SD0PID/SEVNFRM
+      SNAK                      :: Bit      -- SNAK
+      CNAK                      :: Bit      -- CNAK
+      _                         :: Bits 4   -- (Reserved)
+      STALL                     :: Bit      -- STALL handshake
+      SNPM                      :: Bit      -- SNPM
+      EPTYP                     :: Bits 2   -- EPTYP
+      NAKSTS                    :: Bit      -- NAKSTS
+      EONUM_DPID                :: Bit      -- EONUM/DPID
+      USBAEP                    :: Bit      -- USBAEP
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- MPSIZ
+
+    INT 0x328 - device endpoint-1 interrupt register
+      _                         :: Bits 25  -- (Reserved)
+      B2BSTUP                   :: Bit      -- B2BSTUP
+      _                         :: Bit      -- (Reserved)
+      OTEPDIS                   :: Bit      -- OTEPDIS
+      STUP                      :: Bit      -- STUP
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- EPDISD
+      XFRC                      :: Bit      -- XFRC
+
+    TSIZ 0x330 - device OUT endpoint-1 transfer size register
+      _                         :: Bit      -- (Reserved)
+      RXDPID_STUPCNT            :: Bits 2   -- Received data PID/SETUP packet count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CTL 0x340 - device endpoint-1 control register
+      EPENA                     :: Bit      -- EPENA
+      EPDIS                     :: Bit      -- EPDIS
+      SODDFRM                   :: Bit      -- SODDFRM
+      SD0PID_SEVNFRM            :: Bit      -- SD0PID/SEVNFRM
+      SNAK                      :: Bit      -- SNAK
+      CNAK                      :: Bit      -- CNAK
+      _                         :: Bits 4   -- (Reserved)
+      STALL                     :: Bit      -- STALL handshake
+      SNPM                      :: Bit      -- SNPM
+      EPTYP                     :: Bits 2   -- EPTYP
+      NAKSTS                    :: Bit      -- NAKSTS
+      EONUM_DPID                :: Bit      -- EONUM/DPID
+      USBAEP                    :: Bit      -- USBAEP
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- MPSIZ
+
+    INT 0x348 - device endpoint-1 interrupt register
+      _                         :: Bits 25  -- (Reserved)
+      B2BSTUP                   :: Bit      -- B2BSTUP
+      _                         :: Bit      -- (Reserved)
+      OTEPDIS                   :: Bit      -- OTEPDIS
+      STUP                      :: Bit      -- STUP
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- EPDISD
+      XFRC                      :: Bit      -- XFRC
+
+    TSIZ 0x350 - device OUT endpoint-1 transfer size register
+      _                         :: Bit      -- (Reserved)
+      RXDPID_STUPCNT            :: Bits 2   -- Received data PID/SETUP packet count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CTL 0x360 - device endpoint-1 control register
+      EPENA                     :: Bit      -- EPENA
+      EPDIS                     :: Bit      -- EPDIS
+      SODDFRM                   :: Bit      -- SODDFRM
+      SD0PID_SEVNFRM            :: Bit      -- SD0PID/SEVNFRM
+      SNAK                      :: Bit      -- SNAK
+      CNAK                      :: Bit      -- CNAK
+      _                         :: Bits 4   -- (Reserved)
+      STALL                     :: Bit      -- STALL handshake
+      SNPM                      :: Bit      -- SNPM
+      EPTYP                     :: Bits 2   -- EPTYP
+      NAKSTS                    :: Bit      -- NAKSTS
+      EONUM_DPID                :: Bit      -- EONUM/DPID
+      USBAEP                    :: Bit      -- USBAEP
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- MPSIZ
+
+    INT 0x368 - device endpoint-1 interrupt register
+      _                         :: Bits 25  -- (Reserved)
+      B2BSTUP                   :: Bit      -- B2BSTUP
+      _                         :: Bit      -- (Reserved)
+      OTEPDIS                   :: Bit      -- OTEPDIS
+      STUP                      :: Bit      -- STUP
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- EPDISD
+      XFRC                      :: Bit      -- XFRC
+
+    TSIZ 0x370 - device OUT endpoint-1 transfer size register
+      _                         :: Bit      -- (Reserved)
+      RXDPID_STUPCNT            :: Bits 2   -- Received data PID/SETUP packet count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CTL 0x380 - device endpoint-1 control register
+      EPENA                     :: Bit      -- EPENA
+      EPDIS                     :: Bit      -- EPDIS
+      SODDFRM                   :: Bit      -- SODDFRM
+      SD0PID_SEVNFRM            :: Bit      -- SD0PID/SEVNFRM
+      SNAK                      :: Bit      -- SNAK
+      CNAK                      :: Bit      -- CNAK
+      _                         :: Bits 4   -- (Reserved)
+      STALL                     :: Bit      -- STALL handshake
+      SNPM                      :: Bit      -- SNPM
+      EPTYP                     :: Bits 2   -- EPTYP
+      NAKSTS                    :: Bit      -- NAKSTS
+      EONUM_DPID                :: Bit      -- EONUM/DPID
+      USBAEP                    :: Bit      -- USBAEP
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- MPSIZ
+
+    INT 0x388 - device endpoint-1 interrupt register
+      _                         :: Bits 25  -- (Reserved)
+      B2BSTUP                   :: Bit      -- B2BSTUP
+      _                         :: Bit      -- (Reserved)
+      OTEPDIS                   :: Bit      -- OTEPDIS
+      STUP                      :: Bit      -- STUP
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- EPDISD
+      XFRC                      :: Bit      -- XFRC
+
+    TSIZ 0x390 - device OUT endpoint-1 transfer size register
+      _                         :: Bit      -- (Reserved)
+      RXDPID_STUPCNT            :: Bits 2   -- Received data PID/SETUP packet count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+    CTL 0x3a0 - device endpoint-1 control register
+      EPENA                     :: Bit      -- EPENA
+      EPDIS                     :: Bit      -- EPDIS
+      SODDFRM                   :: Bit      -- SODDFRM
+      SD0PID_SEVNFRM            :: Bit      -- SD0PID/SEVNFRM
+      SNAK                      :: Bit      -- SNAK
+      CNAK                      :: Bit      -- CNAK
+      _                         :: Bits 4   -- (Reserved)
+      STALL                     :: Bit      -- STALL handshake
+      SNPM                      :: Bit      -- SNPM
+      EPTYP                     :: Bits 2   -- EPTYP
+      NAKSTS                    :: Bit      -- NAKSTS
+      EONUM_DPID                :: Bit      -- EONUM/DPID
+      USBAEP                    :: Bit      -- USBAEP
+      _                         :: Bits 4   -- (Reserved)
+      MPSIZ                     :: Bits 11  -- MPSIZ
+
+    INT 0x3a8 - device endpoint-1 interrupt register
+      _                         :: Bits 25  -- (Reserved)
+      B2BSTUP                   :: Bit      -- B2BSTUP
+      _                         :: Bit      -- (Reserved)
+      OTEPDIS                   :: Bit      -- OTEPDIS
+      STUP                      :: Bit      -- STUP
+      _                         :: Bit      -- (Reserved)
+      EPDISD                    :: Bit      -- EPDISD
+      XFRC                      :: Bit      -- XFRC
+
+    TSIZ 0x3b0 - device OUT endpoint-1 transfer size register
+      _                         :: Bit      -- (Reserved)
+      RXDPID_STUPCNT            :: Bits 2   -- Received data PID/SETUP packet count
+      PKTCNT                    :: Bits 10  -- Packet count
+      XFRSIZ                    :: Bits 19  -- Transfer size
+
+  OTG_FS_PWRCLK 0x50000e00 USB on the go full speed
+    
+    PCGCCTL 0x0 - OTG_FS power and clock gating control register
+      _                         :: Bits 27  -- (Reserved)
+      PHYSUSP                   :: Bit      -- PHY Suspended
+      _                         :: Bits 2   -- (Reserved)
+      GATEHCLK                  :: Bit      -- Gate HCLK
+      STPPCLK                   :: Bit      -- Stop PHY clock
+
+  DCMI 0x50050000 Digital camera interface
+    
+    CR 0x0 - control register 1
+      _                         :: Bits 17  -- (Reserved)
+      ENABLE                    :: Bit      -- DCMI enable
+      _                         :: Bits 2   -- (Reserved)
+      EDM                       :: Bits 2   -- Extended data mode
+      FCRC                      :: Bits 2   -- Frame capture rate control
+      VSPOL                     :: Bit      -- Vertical synchronization polarity
+      HSPOL                     :: Bit      -- Horizontal synchronization polarity
+      PCKPOL                    :: Bit      -- Pixel clock polarity
+      ESS                       :: Bit      -- Embedded synchronization select
+      JPEG                      :: Bit      -- JPEG format
+      CROP                      :: Bit      -- Crop feature
+      CM                        :: Bit      -- Capture mode
+      CAPTURE                   :: Bit      -- Capture enable
+
+    SR 0x4 - status register
+      _                         :: Bits 29  -- (Reserved)
+      FNE                       :: Bit      -- FIFO not empty
+      VSYNC                     :: Bit      -- VSYNC
+      HSYNC                     :: Bit      -- HSYNC
+
+    RIS 0x8 - raw interrupt status register
+      _                         :: Bits 27  -- (Reserved)
+      LINE_RIS                  :: Bit      -- Line raw interrupt status
+      VSYNC_RIS                 :: Bit      -- VSYNC raw interrupt status
+      ERR_RIS                   :: Bit      -- Synchronization error raw interrupt status
+      OVR_RIS                   :: Bit      -- Overrun raw interrupt status
+      FRAME_RIS                 :: Bit      -- Capture complete raw interrupt status
+
+    IER 0xc - interrupt enable register
+      _                         :: Bits 27  -- (Reserved)
+      LINE_IE                   :: Bit      -- Line interrupt enable
+      VSYNC_IE                  :: Bit      -- VSYNC interrupt enable
+      ERR_IE                    :: Bit      -- Synchronization error interrupt enable
+      OVR_IE                    :: Bit      -- Overrun interrupt enable
+      FRAME_IE                  :: Bit      -- Capture complete interrupt enable
+
+    MIS 0x10 - masked interrupt status register
+      _                         :: Bits 27  -- (Reserved)
+      LINE_MIS                  :: Bit      -- Line masked interrupt status
+      VSYNC_MIS                 :: Bit      -- VSYNC masked interrupt status
+      ERR_MIS                   :: Bit      -- Synchronization error masked interrupt status
+      OVR_MIS                   :: Bit      -- Overrun masked interrupt status
+      FRAME_MIS                 :: Bit      -- Capture complete masked interrupt status
+
+    ICR 0x14 - interrupt clear register
+      _                         :: Bits 27  -- (Reserved)
+      LINE_ISC                  :: Bit      -- line interrupt status clear
+      VSYNC_ISC                 :: Bit      -- Vertical synch interrupt status clear
+      ERR_ISC                   :: Bit      -- Synchronization error interrupt status clear
+      OVR_ISC                   :: Bit      -- Overrun interrupt status clear
+      FRAME_ISC                 :: Bit      -- Capture complete interrupt status clear
+
+    ESCR 0x18 - embedded synchronization code register
+      FEC                       :: Bits 8   -- Frame end delimiter code
+      LEC                       :: Bits 8   -- Line end delimiter code
+      LSC                       :: Bits 8   -- Line start delimiter code
+      FSC                       :: Bits 8   -- Frame start delimiter code
+
+    ESUR 0x1c - embedded synchronization unmask register
+      FEU                       :: Bits 8   -- Frame end delimiter unmask
+      LEU                       :: Bits 8   -- Line end delimiter unmask
+      LSU                       :: Bits 8   -- Line start delimiter unmask
+      FSU                       :: Bits 8   -- Frame start delimiter unmask
+
+    CWSTRT 0x20 - crop window start
+      _                         :: Bits 3   -- (Reserved)
+      VST                       :: Bits 13  -- Vertical start line count
+      _                         :: Bits 2   -- (Reserved)
+      HOFFCNT                   :: Bits 14  -- Horizontal offset count
+
+    CWSIZE 0x24 - crop window size
+      _                         :: Bits 2   -- (Reserved)
+      VLINE                     :: Bits 14  -- Vertical line count
+      _                         :: Bits 2   -- (Reserved)
+      CAPCNT                    :: Bits 14  -- Capture count
+
+    DR 0x28 - data register
+      Byte3                     :: Bits 8   -- Data byte 3
+      Byte2                     :: Bits 8   -- Data byte 2
+      Byte1                     :: Bits 8   -- Data byte 1
+      Byte0                     :: Bits 8   -- Data byte 0
+
+  CRYP 0x50060000 Cryptographic processor
+    
+    CR 0x0 - control register
+      _                         :: Bits 12  -- (Reserved)
+      ALGOMODE3                 :: Bit      -- ALGOMODE
+      _                         :: Bit      -- (Reserved)
+      GCM_CCMPH                 :: Bits 2   -- GCM_CCMPH
+      CRYPEN                    :: Bit      -- Cryptographic processor enable
+      FFLUSH                    :: Bit      -- FIFO flush
+      _                         :: Bits 4   -- (Reserved)
+      KEYSIZE                   :: Bits 2   -- Key size selection (AES mode only)
+      DATATYPE                  :: Bits 2   -- Data type selection
+      ALGOMODE0                 :: Bits 3   -- Algorithm mode
+      ALGODIR                   :: Bit      -- Algorithm direction
+      _                         :: Bits 2   -- (Reserved)
+
+    SR 0x4 - status register
+      _                         :: Bits 27  -- (Reserved)
+      BUSY                      :: Bit      -- Busy bit
+      OFFU                      :: Bit      -- Output FIFO full
+      OFNE                      :: Bit      -- Output FIFO not empty
+      IFNF                      :: Bit      -- Input FIFO not full
+      IFEM                      :: Bit      -- Input FIFO empty
+
+    DIN 0x8 - data input register
+      DATAIN                    :: Bits 32  -- Data input
+
+    DOUT 0xc - data output register
+      DATAOUT                   :: Bits 32  -- Data output
+
+    DMACR 0x10 - DMA control register
+      _                         :: Bits 30  -- (Reserved)
+      DOEN                      :: Bit      -- DMA output enable
+      DIEN                      :: Bit      -- DMA input enable
+
+    IMSCR 0x14 - interrupt mask set/clear register
+      _                         :: Bits 30  -- (Reserved)
+      OUTIM                     :: Bit      -- Output FIFO service interrupt mask
+      INIM                      :: Bit      -- Input FIFO service interrupt mask
+
+    RISR 0x18 - raw interrupt status register
+      _                         :: Bits 30  -- (Reserved)
+      OUTRIS                    :: Bit      -- Output FIFO service raw interrupt status
+      INRIS                     :: Bit      -- Input FIFO service raw interrupt status
+
+    MISR 0x1c - masked interrupt status register
+      _                         :: Bits 30  -- (Reserved)
+      OUTMIS                    :: Bit      -- Output FIFO service masked interrupt status
+      INMIS                     :: Bit      -- Input FIFO service masked interrupt status
+
+    KLR 0x20 - key registers
+      b2                        :: Bits 32  -- b224
+
+    KRR 0x24 - key registers
+      b                         :: Bits 32  -- b192
+
+    KLR 0x28 - key registers
+      b2                        :: Bits 32  -- b224
+
+    KRR 0x2c - key registers
+      b                         :: Bits 32  -- b192
+
+    KLR 0x30 - key registers
+      b2                        :: Bits 32  -- b224
+
+    KRR 0x34 - key registers
+      b                         :: Bits 32  -- b192
+
+    KLR 0x38 - key registers
+      b2                        :: Bits 32  -- b224
+
+    KRR 0x3c - key registers
+      b                         :: Bits 32  -- b192
+
+    IVLR 0x40 - initialization vector registers
+      IV                        :: Bits 32  -- IV31
+
+    IVRR 0x44 - initialization vector registers
+      IV                        :: Bits 32  -- IV63
+
+    IVLR 0x48 - initialization vector registers
+      IV                        :: Bits 32  -- IV31
+
+    IVRR 0x4c - initialization vector registers
+      IV                        :: Bits 32  -- IV63
+
+    CSGCMCCM0R 0x50 - context swap register
+      CSGCMCCM0R                :: Bits 32  -- CSGCMCCM0R
+
+    CSGCMCCM1R 0x54 - context swap register
+      CSGCMCCM0R                :: Bits 32  -- CSGCMCCM0R
+
+    CSGCMCCM2R 0x58 - context swap register
+      CSGCMCCM0R                :: Bits 32  -- CSGCMCCM0R
+
+    CSGCMCCM3R 0x5c - context swap register
+      CSGCMCCM0R                :: Bits 32  -- CSGCMCCM0R
+
+    CSGCMCCM4R 0x60 - context swap register
+      CSGCMCCM0R                :: Bits 32  -- CSGCMCCM0R
+
+    CSGCMCCM5R 0x64 - context swap register
+      CSGCMCCM0R                :: Bits 32  -- CSGCMCCM0R
+
+    CSGCMCCM6R 0x68 - context swap register
+      CSGCMCCM0R                :: Bits 32  -- CSGCMCCM0R
+
+    CSGCMCCM7R 0x6c - context swap register
+      CSGCMCCM0R                :: Bits 32  -- CSGCMCCM0R
+
+    CSGCM0R 0x70 - context swap register
+      CSGCMR                    :: Bits 32  -- CSGCM0R
+
+    CSGCM1R 0x74 - context swap register
+      CSGCMR                    :: Bits 32  -- CSGCM0R
+
+    CSGCM2R 0x78 - context swap register
+      CSGCMR                    :: Bits 32  -- CSGCM0R
+
+    CSGCM3R 0x7c - context swap register
+      CSGCMR                    :: Bits 32  -- CSGCM0R
+
+    CSGCM4R 0x80 - context swap register
+      CSGCMR                    :: Bits 32  -- CSGCM0R
+
+    CSGCM5R 0x84 - context swap register
+      CSGCMR                    :: Bits 32  -- CSGCM0R
+
+    CSGCM6R 0x88 - context swap register
+      CSGCMR                    :: Bits 32  -- CSGCM0R
+
+    CSGCM7R 0x8c - context swap register
+      CSGCMR                    :: Bits 32  -- CSGCM0R
+
+  HASH 0x50060400 Hash processor
+    
+    CR 0x0 - control register
+      _                         :: Bits 13  -- (Reserved)
+      ALGO1                     :: Bit      -- ALGO
+      _                         :: Bit      -- (Reserved)
+      LKEY                      :: Bit      -- Long key selection
+      _                         :: Bits 2   -- (Reserved)
+      MDMAT                     :: Bit      -- Multiple DMA Transfers
+      DINNE                     :: Bit      -- DIN not empty
+      NBW                       :: Bits 4   -- Number of words already pushed
+      ALGO0                     :: Bit      -- Algorithm selection
+      MODE                      :: Bit      -- Mode selection
+      DATATYPE                  :: Bits 2   -- Data type selection
+      DMAE                      :: Bit      -- DMA enable
+      INIT                      :: Bit      -- Initialize message digest calculation
+      _                         :: Bits 2   -- (Reserved)
+
+    DIN 0x4 - data input register
+      DATAIN                    :: Bits 32  -- Data input
+
+    STR 0x8 - start register
+      _                         :: Bits 23  -- (Reserved)
+      DCAL                      :: Bit      -- Digest calculation
+      _                         :: Bits 3   -- (Reserved)
+      NBLW                      :: Bits 5   -- Number of valid bits in the last word of the message
+
+    HR0 0xc - digest registers
+      H                         :: Bits 32  -- H0
+
+    HR1 0x10 - digest registers
+      H                         :: Bits 32  -- H0
+
+    HR2 0x14 - digest registers
+      H                         :: Bits 32  -- H0
+
+    HR3 0x18 - digest registers
+      H                         :: Bits 32  -- H0
+
+    HR4 0x1c - digest registers
+      H                         :: Bits 32  -- H0
+
+    IMR 0x20 - interrupt enable register
+      _                         :: Bits 30  -- (Reserved)
+      DCIE                      :: Bit      -- Digest calculation completion interrupt enable
+      DINIE                     :: Bit      -- Data input interrupt enable
+
+    SR 0x24 - status register
+      _                         :: Bits 28  -- (Reserved)
+      BUSY                      :: Bit      -- Busy bit
+      DMAS                      :: Bit      -- DMA Status
+      DCIS                      :: Bit      -- Digest calculation completion interrupt status
+      DINIS                     :: Bit      -- Data input interrupt status
+
+    CSR0 0xf8 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR1 0xfc - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR2 0x100 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR3 0x104 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR4 0x108 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR5 0x10c - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR6 0x110 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR7 0x114 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR8 0x118 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR9 0x11c - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR10 0x120 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR11 0x124 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR12 0x128 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR13 0x12c - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR14 0x130 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR15 0x134 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR16 0x138 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR17 0x13c - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR18 0x140 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR19 0x144 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR20 0x148 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR21 0x14c - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR22 0x150 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR23 0x154 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR24 0x158 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR25 0x15c - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR26 0x160 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR27 0x164 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR28 0x168 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR29 0x16c - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR30 0x170 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR31 0x174 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR32 0x178 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR33 0x17c - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR34 0x180 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR35 0x184 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR36 0x188 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR37 0x18c - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR38 0x190 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR39 0x194 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR40 0x198 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR41 0x19c - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR42 0x1a0 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR43 0x1a4 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR44 0x1a8 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR45 0x1ac - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR46 0x1b0 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR47 0x1b4 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR48 0x1b8 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR49 0x1bc - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR50 0x1c0 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR51 0x1c4 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR52 0x1c8 - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    CSR53 0x1cc - context swap registers
+      CSR                       :: Bits 32  -- CSR0
+
+    HASH_HR0 0x310 - HASH digest register 0
+      H                         :: Bits 32  -- H0
+
+    HASH_HR1 0x314 - HASH digest register 1
+      H                         :: Bits 32  -- H0
+
+    HASH_HR2 0x318 - HASH digest register 2
+      H                         :: Bits 32  -- H0
+
+    HASH_HR3 0x31c - HASH digest register 3
+      H                         :: Bits 32  -- H0
+
+    HASH_HR4 0x320 - HASH digest register 4
+      H                         :: Bits 32  -- H0
+
+    HASH_HR5 0x324 - HASH digest register 5
+      H                         :: Bits 32  -- H0
+
+    HASH_HR6 0x328 - HASH digest register 6
+      H                         :: Bits 32  -- H0
+
+    HASH_HR7 0x32c - HASH digest register 7
+      H                         :: Bits 32  -- H0
+
+  RNG 0x50060800 Random number generator
+    
+    CR 0x0 - control register
+      _                         :: Bits 28  -- (Reserved)
+      IE                        :: Bit      -- Interrupt enable
+      RNGEN                     :: Bit      -- Random number generator enable
+      _                         :: Bits 2   -- (Reserved)
+
+    SR 0x4 - status register
+      _                         :: Bits 25  -- (Reserved)
+      SEIS                      :: Bit      -- Seed error interrupt status
+      CEIS                      :: Bit      -- Clock error interrupt status
+      _                         :: Bits 2   -- (Reserved)
+      SECS                      :: Bit      -- Seed error current status
+      CECS                      :: Bit      -- Clock error current status
+      DRDY                      :: Bit      -- Data ready
+
+    DR 0x8 - data register
+      RNDATA                    :: Bits 32  -- Random data
+
+  FSMC 0xa0000000 Flexible static memory controller
+    
+    BCR1 0x0 - SRAM/NOR-Flash chip-select control register 1
+      _                         :: Bits 12  -- (Reserved)
+      CBURSTRW                  :: Bit      -- CBURSTRW
+      CPSIZE                    :: Bits 3   -- CRAM page size
+      ASYNCWAIT                 :: Bit      -- ASYNCWAIT
+      EXTMOD                    :: Bit      -- EXTMOD
+      WAITEN                    :: Bit      -- WAITEN
+      WREN                      :: Bit      -- WREN
+      WAITCFG                   :: Bit      -- WAITCFG
+      WRAPMOD                   :: Bit      -- WRAPMOD
+      WAITPOL                   :: Bit      -- WAITPOL
+      BURSTEN                   :: Bit      -- BURSTEN
+      _                         :: Bit      -- (Reserved)
+      FACCEN                    :: Bit      -- FACCEN
+      MWID                      :: Bits 2   -- MWID
+      MTYP                      :: Bits 2   -- MTYP
+      MUXEN                     :: Bit      -- MUXEN
+      MBKEN                     :: Bit      -- MBKEN
+
+    BTR1 0x4 - SRAM/NOR-Flash chip-select timing register 1
+      _                         :: Bits 2   -- (Reserved)
+      ACCMOD                    :: Bits 2   -- ACCMOD
+      DATLAT                    :: Bits 4   -- DATLAT
+      CLKDIV                    :: Bits 4   -- CLKDIV
+      BUSTURN                   :: Bits 4   -- BUSTURN
+      DATAST                    :: Bits 8   -- DATAST
+      ADDHLD                    :: Bits 4   -- ADDHLD
+      ADDSET                    :: Bits 4   -- ADDSET
+
+    BCR2 0x8 - SRAM/NOR-Flash chip-select control register 2
+      _                         :: Bits 12  -- (Reserved)
+      CBURSTRW                  :: Bit      -- CBURSTRW
+      CPSIZE                    :: Bits 3   -- CRAM page size
+      ASYNCWAIT                 :: Bit      -- ASYNCWAIT
+      EXTMOD                    :: Bit      -- EXTMOD
+      WAITEN                    :: Bit      -- WAITEN
+      WREN                      :: Bit      -- WREN
+      WAITCFG                   :: Bit      -- WAITCFG
+      WRAPMOD                   :: Bit      -- WRAPMOD
+      WAITPOL                   :: Bit      -- WAITPOL
+      BURSTEN                   :: Bit      -- BURSTEN
+      _                         :: Bit      -- (Reserved)
+      FACCEN                    :: Bit      -- FACCEN
+      MWID                      :: Bits 2   -- MWID
+      MTYP                      :: Bits 2   -- MTYP
+      MUXEN                     :: Bit      -- MUXEN
+      MBKEN                     :: Bit      -- MBKEN
+
+    BTR2 0xc - SRAM/NOR-Flash chip-select timing register 1
+      _                         :: Bits 2   -- (Reserved)
+      ACCMOD                    :: Bits 2   -- ACCMOD
+      DATLAT                    :: Bits 4   -- DATLAT
+      CLKDIV                    :: Bits 4   -- CLKDIV
+      BUSTURN                   :: Bits 4   -- BUSTURN
+      DATAST                    :: Bits 8   -- DATAST
+      ADDHLD                    :: Bits 4   -- ADDHLD
+      ADDSET                    :: Bits 4   -- ADDSET
+
+    BCR3 0x10 - SRAM/NOR-Flash chip-select control register 2
+      _                         :: Bits 12  -- (Reserved)
+      CBURSTRW                  :: Bit      -- CBURSTRW
+      CPSIZE                    :: Bits 3   -- CRAM page size
+      ASYNCWAIT                 :: Bit      -- ASYNCWAIT
+      EXTMOD                    :: Bit      -- EXTMOD
+      WAITEN                    :: Bit      -- WAITEN
+      WREN                      :: Bit      -- WREN
+      WAITCFG                   :: Bit      -- WAITCFG
+      WRAPMOD                   :: Bit      -- WRAPMOD
+      WAITPOL                   :: Bit      -- WAITPOL
+      BURSTEN                   :: Bit      -- BURSTEN
+      _                         :: Bit      -- (Reserved)
+      FACCEN                    :: Bit      -- FACCEN
+      MWID                      :: Bits 2   -- MWID
+      MTYP                      :: Bits 2   -- MTYP
+      MUXEN                     :: Bit      -- MUXEN
+      MBKEN                     :: Bit      -- MBKEN
+
+    BTR3 0x14 - SRAM/NOR-Flash chip-select timing register 1
+      _                         :: Bits 2   -- (Reserved)
+      ACCMOD                    :: Bits 2   -- ACCMOD
+      DATLAT                    :: Bits 4   -- DATLAT
+      CLKDIV                    :: Bits 4   -- CLKDIV
+      BUSTURN                   :: Bits 4   -- BUSTURN
+      DATAST                    :: Bits 8   -- DATAST
+      ADDHLD                    :: Bits 4   -- ADDHLD
+      ADDSET                    :: Bits 4   -- ADDSET
+
+    BCR4 0x18 - SRAM/NOR-Flash chip-select control register 2
+      _                         :: Bits 12  -- (Reserved)
+      CBURSTRW                  :: Bit      -- CBURSTRW
+      CPSIZE                    :: Bits 3   -- CRAM page size
+      ASYNCWAIT                 :: Bit      -- ASYNCWAIT
+      EXTMOD                    :: Bit      -- EXTMOD
+      WAITEN                    :: Bit      -- WAITEN
+      WREN                      :: Bit      -- WREN
+      WAITCFG                   :: Bit      -- WAITCFG
+      WRAPMOD                   :: Bit      -- WRAPMOD
+      WAITPOL                   :: Bit      -- WAITPOL
+      BURSTEN                   :: Bit      -- BURSTEN
+      _                         :: Bit      -- (Reserved)
+      FACCEN                    :: Bit      -- FACCEN
+      MWID                      :: Bits 2   -- MWID
+      MTYP                      :: Bits 2   -- MTYP
+      MUXEN                     :: Bit      -- MUXEN
+      MBKEN                     :: Bit      -- MBKEN
+
+    BTR4 0x1c - SRAM/NOR-Flash chip-select timing register 1
+      _                         :: Bits 2   -- (Reserved)
+      ACCMOD                    :: Bits 2   -- ACCMOD
+      DATLAT                    :: Bits 4   -- DATLAT
+      CLKDIV                    :: Bits 4   -- CLKDIV
+      BUSTURN                   :: Bits 4   -- BUSTURN
+      DATAST                    :: Bits 8   -- DATAST
+      ADDHLD                    :: Bits 4   -- ADDHLD
+      ADDSET                    :: Bits 4   -- ADDSET
+
+    PCR2 0x60 - PC Card/NAND Flash control register 2
+      _                         :: Bits 12  -- (Reserved)
+      ECCPS                     :: Bits 3   -- ECCPS
+      TAR                       :: Bits 4   -- TAR
+      TCLR                      :: Bits 4   -- TCLR
+      _                         :: Bits 2   -- (Reserved)
+      ECCEN                     :: Bit      -- ECCEN
+      PWID                      :: Bits 2   -- PWID
+      PTYP                      :: Bit      -- PTYP
+      PBKEN                     :: Bit      -- PBKEN
+      PWAITEN                   :: Bit      -- PWAITEN
+      _                         :: Bit      -- (Reserved)
+
+    SR2 0x64 - FIFO status and interrupt register 2
+      _                         :: Bits 25  -- (Reserved)
+      FEMPT                     :: Bit      -- FEMPT
+      IFEN                      :: Bit      -- IFEN
+      ILEN                      :: Bit      -- ILEN
+      IREN                      :: Bit      -- IREN
+      IFS                       :: Bit      -- IFS
+      ILS                       :: Bit      -- ILS
+      IRS                       :: Bit      -- IRS
+
+    PMEM2 0x68 - Common memory space timing register 2
+      MEMHIZ                    :: Bits 8   -- MEMHIZx
+      MEMHOLD                   :: Bits 8   -- MEMHOLDx
+      MEMWAIT                   :: Bits 8   -- MEMWAITx
+      MEMSET                    :: Bits 8   -- MEMSETx
+
+    PATT2 0x6c - Attribute memory space timing register 2
+      ATTHIZ                    :: Bits 8   -- ATTHIZx
+      ATTHOLD                   :: Bits 8   -- ATTHOLDx
+      ATTWAIT                   :: Bits 8   -- ATTWAITx
+      ATTSET                    :: Bits 8   -- ATTSETx
+
+    ECCR2 0x74 - ECC result register 2
+      ECC                       :: Bits 32  -- ECCx
+
+    PCR3 0x80 - PC Card/NAND Flash control register 2
+      _                         :: Bits 12  -- (Reserved)
+      ECCPS                     :: Bits 3   -- ECCPS
+      TAR                       :: Bits 4   -- TAR
+      TCLR                      :: Bits 4   -- TCLR
+      _                         :: Bits 2   -- (Reserved)
+      ECCEN                     :: Bit      -- ECCEN
+      PWID                      :: Bits 2   -- PWID
+      PTYP                      :: Bit      -- PTYP
+      PBKEN                     :: Bit      -- PBKEN
+      PWAITEN                   :: Bit      -- PWAITEN
+      _                         :: Bit      -- (Reserved)
+
+    SR3 0x84 - FIFO status and interrupt register 2
+      _                         :: Bits 25  -- (Reserved)
+      FEMPT                     :: Bit      -- FEMPT
+      IFEN                      :: Bit      -- IFEN
+      ILEN                      :: Bit      -- ILEN
+      IREN                      :: Bit      -- IREN
+      IFS                       :: Bit      -- IFS
+      ILS                       :: Bit      -- ILS
+      IRS                       :: Bit      -- IRS
+
+    PMEM3 0x88 - Common memory space timing register 3
+      MEMHIZ                    :: Bits 8   -- MEMHIZx
+      MEMHOLD                   :: Bits 8   -- MEMHOLDx
+      MEMWAIT                   :: Bits 8   -- MEMWAITx
+      MEMSET                    :: Bits 8   -- MEMSETx
+
+    PATT3 0x8c - Attribute memory space timing register 3
+      ATTHIZ                    :: Bits 8   -- ATTHIZx
+      ATTHOLD                   :: Bits 8   -- ATTHOLDx
+      ATTWAIT                   :: Bits 8   -- ATTWAITx
+      ATTSET                    :: Bits 8   -- ATTSETx
+
+    ECCR3 0x94 - ECC result register 3
+      ECC                       :: Bits 32  -- ECCx
+
+    PCR4 0xa0 - PC Card/NAND Flash control register 2
+      _                         :: Bits 12  -- (Reserved)
+      ECCPS                     :: Bits 3   -- ECCPS
+      TAR                       :: Bits 4   -- TAR
+      TCLR                      :: Bits 4   -- TCLR
+      _                         :: Bits 2   -- (Reserved)
+      ECCEN                     :: Bit      -- ECCEN
+      PWID                      :: Bits 2   -- PWID
+      PTYP                      :: Bit      -- PTYP
+      PBKEN                     :: Bit      -- PBKEN
+      PWAITEN                   :: Bit      -- PWAITEN
+      _                         :: Bit      -- (Reserved)
+
+    SR4 0xa4 - FIFO status and interrupt register 2
+      _                         :: Bits 25  -- (Reserved)
+      FEMPT                     :: Bit      -- FEMPT
+      IFEN                      :: Bit      -- IFEN
+      ILEN                      :: Bit      -- ILEN
+      IREN                      :: Bit      -- IREN
+      IFS                       :: Bit      -- IFS
+      ILS                       :: Bit      -- ILS
+      IRS                       :: Bit      -- IRS
+
+    PMEM4 0xa8 - Common memory space timing register 4
+      MEMHIZ                    :: Bits 8   -- MEMHIZx
+      MEMHOLD                   :: Bits 8   -- MEMHOLDx
+      MEMWAIT                   :: Bits 8   -- MEMWAITx
+      MEMSET                    :: Bits 8   -- MEMSETx
+
+    PATT4 0xac - Attribute memory space timing register 4
+      ATTHIZ                    :: Bits 8   -- ATTHIZx
+      ATTHOLD                   :: Bits 8   -- ATTHOLDx
+      ATTWAIT                   :: Bits 8   -- ATTWAITx
+      ATTSET                    :: Bits 8   -- ATTSETx
+
+    PIO4 0xb0 - I/O space timing register 4
+      IOHIZx                    :: Bits 8   -- IOHIZx
+      IOHOLDx                   :: Bits 8   -- IOHOLDx
+      IOWAITx                   :: Bits 8   -- IOWAITx
+      IOSETx                    :: Bits 8   -- IOSETx
+
+    BWTR1 0x104 - SRAM/NOR-Flash write timing registers 1
+      _                         :: Bits 2   -- (Reserved)
+      ACCMOD                    :: Bits 2   -- ACCMOD
+      DATLAT                    :: Bits 4   -- DATLAT
+      CLKDIV                    :: Bits 4   -- CLKDIV
+      BUSTURN                   :: Bits 4   -- Bus turnaround phase duration
+      DATAST                    :: Bits 8   -- DATAST
+      ADDHLD                    :: Bits 4   -- ADDHLD
+      ADDSET                    :: Bits 4   -- ADDSET
+
+    BWTR2 0x10c - SRAM/NOR-Flash write timing registers 1
+      _                         :: Bits 2   -- (Reserved)
+      ACCMOD                    :: Bits 2   -- ACCMOD
+      DATLAT                    :: Bits 4   -- DATLAT
+      CLKDIV                    :: Bits 4   -- CLKDIV
+      BUSTURN                   :: Bits 4   -- Bus turnaround phase duration
+      DATAST                    :: Bits 8   -- DATAST
+      ADDHLD                    :: Bits 4   -- ADDHLD
+      ADDSET                    :: Bits 4   -- ADDSET
+
+    BWTR3 0x114 - SRAM/NOR-Flash write timing registers 1
+      _                         :: Bits 2   -- (Reserved)
+      ACCMOD                    :: Bits 2   -- ACCMOD
+      DATLAT                    :: Bits 4   -- DATLAT
+      CLKDIV                    :: Bits 4   -- CLKDIV
+      BUSTURN                   :: Bits 4   -- Bus turnaround phase duration
+      DATAST                    :: Bits 8   -- DATAST
+      ADDHLD                    :: Bits 4   -- ADDHLD
+      ADDSET                    :: Bits 4   -- ADDSET
+
+    BWTR4 0x11c - SRAM/NOR-Flash write timing registers 1
+      _                         :: Bits 2   -- (Reserved)
+      ACCMOD                    :: Bits 2   -- ACCMOD
+      DATLAT                    :: Bits 4   -- DATLAT
+      CLKDIV                    :: Bits 4   -- CLKDIV
+      BUSTURN                   :: Bits 4   -- Bus turnaround phase duration
+      DATAST                    :: Bits 8   -- DATAST
+      ADDHLD                    :: Bits 4   -- ADDHLD
+      ADDSET                    :: Bits 4   -- ADDSET
+
+  SCB_ACTRL 0xe000e008 System control block ACTLR
+    
+    ACTRL 0x0 - Auxiliary control register
+      _                         :: Bits 22  -- (Reserved)
+      DISOOFP                   :: Bit      -- DISOOFP
+      DISFPCA                   :: Bit      -- DISFPCA
+      _                         :: Bits 5   -- (Reserved)
+      DISFOLD                   :: Bit      -- DISFOLD
+      DISDEFWBUF                :: Bit      -- DISDEFWBUF
+      DISMCYCINT                :: Bit      -- DISMCYCINT
+
+  STK 0xe000e010 SysTick timer
+    
+    CTRL 0x0 - SysTick control and status register
+      _                         :: Bits 15  -- (Reserved)
+      COUNTFLAG                 :: Bit      -- COUNTFLAG
+      _                         :: Bits 13  -- (Reserved)
+      CLKSOURCE                 :: Bit      -- Clock source selection
+      TICKINT                   :: Bit      -- SysTick exception request enable
+      ENABLE                    :: Bit      -- Counter enable
+
+    LOAD 0x4 - SysTick reload value register
+      _                         :: Bits 8   -- (Reserved)
+      RELOAD                    :: Bits 24  -- RELOAD value
+
+    VAL 0x8 - SysTick current value register
+      _                         :: Bits 8   -- (Reserved)
+      CURRENT                   :: Bits 24  -- Current counter value
+
+    CALIB 0xc - SysTick calibration value register
+      NOREF                     :: Bit      -- NOREF flag. Reads as zero
+      SKEW                      :: Bit      -- SKEW flag: Indicates whether the TENMS value is exact
+      _                         :: Bits 6   -- (Reserved)
+      TENMS                     :: Bits 24  -- Calibration value
+
+  NVIC 0xe000e100 Nested Vectored Interrupt Controller
+    
+    ISER0 0x0 - Interrupt Set-Enable Register
+      SETENA                    :: Bits 32  -- SETENA
+
+    ISER1 0x4 - Interrupt Set-Enable Register
+      SETENA                    :: Bits 32  -- SETENA
+
+    ISER2 0x8 - Interrupt Set-Enable Register
+      SETENA                    :: Bits 32  -- SETENA
+
+    ICER0 0x80 - Interrupt Clear-Enable Register
+      CLRENA                    :: Bits 32  -- CLRENA
+
+    ICER1 0x84 - Interrupt Clear-Enable Register
+      CLRENA                    :: Bits 32  -- CLRENA
+
+    ICER2 0x88 - Interrupt Clear-Enable Register
+      CLRENA                    :: Bits 32  -- CLRENA
+
+    ISPR0 0x100 - Interrupt Set-Pending Register
+      SETPEND                   :: Bits 32  -- SETPEND
+
+    ISPR1 0x104 - Interrupt Set-Pending Register
+      SETPEND                   :: Bits 32  -- SETPEND
+
+    ISPR2 0x108 - Interrupt Set-Pending Register
+      SETPEND                   :: Bits 32  -- SETPEND
+
+    ICPR0 0x180 - Interrupt Clear-Pending Register
+      CLRPEND                   :: Bits 32  -- CLRPEND
+
+    ICPR1 0x184 - Interrupt Clear-Pending Register
+      CLRPEND                   :: Bits 32  -- CLRPEND
+
+    ICPR2 0x188 - Interrupt Clear-Pending Register
+      CLRPEND                   :: Bits 32  -- CLRPEND
+
+    IABR0 0x200 - Interrupt Active Bit Register
+      ACTIVE                    :: Bits 32  -- ACTIVE
+
+    IABR1 0x204 - Interrupt Active Bit Register
+      ACTIVE                    :: Bits 32  -- ACTIVE
+
+    IABR2 0x208 - Interrupt Active Bit Register
+      ACTIVE                    :: Bits 32  -- ACTIVE
+
+    IPR0 0x300 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR1 0x304 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR2 0x308 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR3 0x30c - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR4 0x310 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR5 0x314 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR6 0x318 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR7 0x31c - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR8 0x320 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR9 0x324 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR10 0x328 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR11 0x32c - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR12 0x330 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR13 0x334 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR14 0x338 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR15 0x33c - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR16 0x340 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR17 0x344 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR18 0x348 - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+    IPR19 0x34c - Interrupt Priority Register
+      IPR_N3                    :: Bits 8   -- IPR_N3
+      IPR_N2                    :: Bits 8   -- IPR_N2
+      IPR_N1                    :: Bits 8   -- IPR_N1
+      IPR_N0                    :: Bits 8   -- IPR_N0
+
+  SCB 0xe000ed00 System control block
+    
+    CPUID 0x0 - CPUID base register
+      Implementer               :: Bits 8   -- Implementer code
+      Variant                   :: Bits 4   -- Variant number
+      Constant                  :: Bits 4   -- Reads as 0xF
+      PartNo                    :: Bits 12  -- Part number of the processor
+      Revision                  :: Bits 4   -- Revision number
+
+    ICSR 0x4 - Interrupt control and state register
+      NMIPENDSET                :: Bit      -- NMI set-pending bit.
+      _                         :: Bits 2   -- (Reserved)
+      PENDSVSET                 :: Bit      -- PendSV set-pending bit
+      PENDSVCLR                 :: Bit      -- PendSV clear-pending bit
+      PENDSTSET                 :: Bit      -- SysTick exception set-pending bit
+      PENDSTCLR                 :: Bit      -- SysTick exception clear-pending bit
+      _                         :: Bits 2   -- (Reserved)
+      ISRPENDING                :: Bit      -- Interrupt pending flag
+      _                         :: Bits 3   -- (Reserved)
+      VECTPENDING               :: Bits 7   -- Pending vector
+      RETTOBASE                 :: Bit      -- Return to base level
+      _                         :: Bits 2   -- (Reserved)
+      VECTACTIVE                :: Bits 9   -- Active vector
+
+    VTOR 0x8 - Vector table offset register
+      _                         :: Bits 2   -- (Reserved)
+      TBLOFF                    :: Bits 21  -- Vector table base offset field
+      _                         :: Bits 9   -- (Reserved)
+
+    AIRCR 0xc - Application interrupt and reset control register
+      VECTKEYSTAT               :: Bits 16  -- Register key
+      ENDIANESS                 :: Bit      -- ENDIANESS
+      _                         :: Bits 4   -- (Reserved)
+      PRIGROUP                  :: Bits 3   -- PRIGROUP
+      _                         :: Bits 5   -- (Reserved)
+      SYSRESETREQ               :: Bit      -- SYSRESETREQ
+      VECTCLRACTIVE             :: Bit      -- VECTCLRACTIVE
+      VECTRESET                 :: Bit      -- VECTRESET
+
+    SCR 0x10 - System control register
+      _                         :: Bits 27  -- (Reserved)
+      SEVEONPEND                :: Bit      -- Send Event on Pending bit
+      _                         :: Bit      -- (Reserved)
+      SLEEPDEEP                 :: Bit      -- SLEEPDEEP
+      SLEEPONEXIT               :: Bit      -- SLEEPONEXIT
+      _                         :: Bit      -- (Reserved)
+
+    CCR 0x14 - Configuration and control register
+      _                         :: Bits 22  -- (Reserved)
+      STKALIGN                  :: Bit      -- STKALIGN
+      BFHFNMIGN                 :: Bit      -- BFHFNMIGN
+      _                         :: Bits 3   -- (Reserved)
+      DIV_0_TRP                 :: Bit      -- DIV_0_TRP
+      UNALIGN__TRP              :: Bit      -- UNALIGN_ TRP
+      _                         :: Bit      -- (Reserved)
+      USERSETMPEND              :: Bit      -- USERSETMPEND
+      NONBASETHRDENA            :: Bit      -- Configures how the processor enters Thread mode
+
+    SHPR1 0x18 - System handler priority registers
+      _                         :: Bits 8   -- (Reserved)
+      PRI_6                     :: Bits 8   -- Priority of system handler 6
+      PRI_5                     :: Bits 8   -- Priority of system handler 5
+      PRI_4                     :: Bits 8   -- Priority of system handler 4
+
+    SHPR2 0x1c - System handler priority registers
+      PRI_11                    :: Bits 8   -- Priority of system handler 11
+      _                         :: Bits 24  -- (Reserved)
+
+    SHPR3 0x20 - System handler priority registers
+      PRI_15                    :: Bits 8   -- Priority of system handler 15
+      PRI_14                    :: Bits 8   -- Priority of system handler 14
+      _                         :: Bits 16  -- (Reserved)
+
+    SHCRS 0x24 - System handler control and state register
+      _                         :: Bits 13  -- (Reserved)
+      USGFAULTENA               :: Bit      -- Usage fault enable bit
+      BUSFAULTENA               :: Bit      -- Bus fault enable bit
+      MEMFAULTENA               :: Bit      -- Memory management fault enable bit
+      SVCALLPENDED              :: Bit      -- SVC call pending bit
+      BUSFAULTPENDED            :: Bit      -- Bus fault exception pending bit
+      MEMFAULTPENDED            :: Bit      -- Memory management fault exception pending bit
+      USGFAULTPENDED            :: Bit      -- Usage fault exception pending bit
+      SYSTICKACT                :: Bit      -- SysTick exception active bit
+      PENDSVACT                 :: Bit      -- PendSV exception active bit
+      _                         :: Bit      -- (Reserved)
+      MONITORACT                :: Bit      -- Debug monitor active bit
+      SVCALLACT                 :: Bit      -- SVC call active bit
+      _                         :: Bits 3   -- (Reserved)
+      USGFAULTACT               :: Bit      -- Usage fault exception active bit
+      _                         :: Bit      -- (Reserved)
+      BUSFAULTACT               :: Bit      -- Bus fault exception active bit
+      MEMFAULTACT               :: Bit      -- Memory management fault exception active bit
+
+    CFSR_UFSR_BFSR_MMFSR 0x28 - Configurable fault status register
+      _                         :: Bits 6   -- (Reserved)
+      DIVBYZERO                 :: Bit      -- Divide by zero usage fault
+      UNALIGNED                 :: Bit      -- Unaligned access usage fault
+      _                         :: Bits 4   -- (Reserved)
+      NOCP                      :: Bit      -- No coprocessor usage fault.
+      INVPC                     :: Bit      -- Invalid PC load usage fault
+      INVSTATE                  :: Bit      -- Invalid state usage fault
+      UNDEFINSTR                :: Bit      -- Undefined instruction usage fault
+      BFARVALID                 :: Bit      -- Bus Fault Address Register (BFAR) valid flag
+      _                         :: Bit      -- (Reserved)
+      LSPERR                    :: Bit      -- Bus fault on floating-point lazy state preservation
+      STKERR                    :: Bit      -- Bus fault on stacking for exception entry
+      UNSTKERR                  :: Bit      -- Bus fault on unstacking for a return from exception
+      IMPRECISERR               :: Bit      -- Imprecise data bus error
+      PRECISERR                 :: Bit      -- Precise data bus error
+      IBUSERR                   :: Bit      -- Instruction bus error
+      MMARVALID                 :: Bit      -- Memory Management Fault Address Register (MMAR) valid flag
+      _                         :: Bit      -- (Reserved)
+      MLSPERR                   :: Bit      -- MLSPERR
+      MSTKERR                   :: Bit      -- Memory manager fault on stacking for exception entry.
+      MUNSTKERR                 :: Bit      -- Memory manager fault on unstacking for a return from exception
+      _                         :: Bit      -- (Reserved)
+      IACCVIOL                  :: Bit      -- Instruction access violation flag
+      _                         :: Bit      -- (Reserved)
+
+    HFSR 0x2c - Hard fault status register
+      DEBUG_VT                  :: Bit      -- Reserved for Debug use
+      FORCED                    :: Bit      -- Forced hard fault
+      _                         :: Bits 28  -- (Reserved)
+      VECTTBL                   :: Bit      -- Vector table hard fault
+      _                         :: Bit      -- (Reserved)
+
+    MMFAR 0x34 - Memory management fault address register
+      MMFAR                     :: Bits 32  -- Memory management fault address
+
+    BFAR 0x38 - Bus fault address register
+      BFAR                      :: Bits 32  -- Bus fault address
+
+    AFSR 0x3c - Auxiliary fault status register
+      IMPDEF                    :: Bits 32  -- Implementation defined
+
+  FPU_CPACR 0xe000ed88 Floating point unit CPACR
+    
+    CPACR 0x0 - Coprocessor access control register
+      _                         :: Bits 8   -- (Reserved)
+      CP                        :: Bits 4   -- CP
+      _                         :: Bits 20  -- (Reserved)
+
+  MPU 0xe000ed90 Memory protection unit
+    
+    TYPER 0x0 - MPU type register
+      _                         :: Bits 8   -- (Reserved)
+      IREGION                   :: Bits 8   -- Number of MPU instruction regions
+      DREGION                   :: Bits 8   -- Number of MPU data regions
+      _                         :: Bits 7   -- (Reserved)
+      SEPARATE                  :: Bit      -- Separate flag
+
+    CTRL 0x4 - MPU control register
+      _                         :: Bits 29  -- (Reserved)
+      PRIVDEFENA                :: Bit      -- Enable priviliged software access to default memory map
+      HFNMIENA                  :: Bit      -- Enables the operation of MPU during hard fault
+      ENABLE                    :: Bit      -- Enables the MPU
+
+    RNR 0x8 - MPU region number register
+      _                         :: Bits 24  -- (Reserved)
+      REGION                    :: Bits 8   -- MPU region
+
+    RBAR 0xc - MPU region base address register
+      ADDR                      :: Bits 27  -- Region base address field
+      VALID                     :: Bit      -- MPU region number valid
+      REGION                    :: Bits 4   -- MPU region field
+
+    RASR 0x10 - MPU region attribute and size register
+      _                         :: Bits 3   -- (Reserved)
+      XN                        :: Bit      -- Instruction access disable bit
+      _                         :: Bit      -- (Reserved)
+      AP                        :: Bits 3   -- Access permission
+      _                         :: Bits 2   -- (Reserved)
+      TEX                       :: Bits 3   -- memory attribute
+      S                         :: Bit      -- Shareable memory attribute
+      C                         :: Bit      -- memory attribute
+      B                         :: Bit      -- memory attribute
+      SRD                       :: Bits 8   -- Subregion disable bits
+      _                         :: Bits 2   -- (Reserved)
+      SIZE                      :: Bits 5   -- Size of the MPU protection region
+      ENABLE                    :: Bit      -- Region enable bit.
+
+  NVIC_STIR 0xe000ef00 Nested vectored interrupt controller
+    
+    STIR 0x0 - Software trigger interrupt register
+      _                         :: Bits 23  -- (Reserved)
+      INTID                     :: Bits 9   -- Software generated interrupt ID
+
+  FPU 0xe000ef34 Floting point unit
+    
+    FPCCR 0x0 - Floating-point context control register
+      ASPEN                     :: Bit      -- ASPEN
+      LSPEN                     :: Bit      -- LSPEN
+      _                         :: Bits 21  -- (Reserved)
+      MONRDY                    :: Bit      -- MONRDY
+      _                         :: Bit      -- (Reserved)
+      BFRDY                     :: Bit      -- BFRDY
+      MMRDY                     :: Bit      -- MMRDY
+      HFRDY                     :: Bit      -- HFRDY
+      THREAD                    :: Bit      -- THREAD
+      _                         :: Bit      -- (Reserved)
+      USER                      :: Bit      -- USER
+      LSPACT                    :: Bit      -- LSPACT
+
+    FPCAR 0x4 - Floating-point context address register
+      ADDRESS                   :: Bits 29  -- Location of unpopulated floating-point
+      _                         :: Bits 3   -- (Reserved)
+
+    FPSCR 0x8 - Floating-point status control register
+      N                         :: Bit      -- Negative condition code flag
+      Z                         :: Bit      -- Zero condition code flag
+      C                         :: Bit      -- Carry condition code flag
+      V                         :: Bit      -- Overflow condition code flag
+      _                         :: Bit      -- (Reserved)
+      AHP                       :: Bit      -- Alternative half-precision control bit
+      DN                        :: Bit      -- Default NaN mode control bit
+      FZ                        :: Bit      -- Flush-to-zero mode control bit:
+      RMode                     :: Bits 2   -- Rounding Mode control field
+      _                         :: Bits 14  -- (Reserved)
+      IDC                       :: Bit      -- Input denormal cumulative exception bit.
+      _                         :: Bits 2   -- (Reserved)
+      IXC                       :: Bit      -- Inexact cumulative exception bit
+      UFC                       :: Bit      -- Underflow cumulative exception bit
+      OFC                       :: Bit      -- Overflow cumulative exception bit
+      DZC                       :: Bit      -- Division by zero cumulative exception bit.
+      IOC                       :: Bit      -- Invalid operation cumulative exception bit
+
+  DBGMCU 0xe0042000 Debug support
+    
+    IDCODE 0x0 - IDCODE
+      REV_ID                    :: Bits 16  -- REV_ID
+      _                         :: Bits 4   -- (Reserved)
+      DEV_ID                    :: Bits 12  -- DEV_ID
+
+    CR 0x4 - Control Register
+      _                         :: Bits 11  -- (Reserved)
+      DBG_TIM7_STOP             :: Bit      -- DBG_TIM7_STOP
+      DBG_TIM6_STOP             :: Bit      -- DBG_TIM6_STOP
+      DBG_TIM5_STOP             :: Bit      -- DBG_TIM5_STOP
+      DBG_TIM8_STOP             :: Bit      -- DBG_TIM8_STOP
+      DBG_I2C2_SMBUS_TIMEOUT    :: Bit      -- DBG_I2C2_SMBUS_TIMEOUT
+      _                         :: Bits 8   -- (Reserved)
+      TRACE_MODE                :: Bits 2   -- TRACE_MODE
+      TRACE_IOEN                :: Bit      -- TRACE_IOEN
+      _                         :: Bits 2   -- (Reserved)
+      DBG_STANDBY               :: Bit      -- DBG_STANDBY
+      DBG_STOP                  :: Bit      -- DBG_STOP
+      DBG_SLEEP                 :: Bit      -- DBG_SLEEP
+
+    APB1_FZ 0x8 - Debug MCU APB1 Freeze registe
+      _                         :: Bits 5   -- (Reserved)
+      DBG_CAN2_STOP             :: Bit      -- DBG_CAN2_STOP
+      DBG_CAN1_STOP             :: Bit      -- DBG_CAN1_STOP
+      _                         :: Bit      -- (Reserved)
+      DBG_J2C3SMBUS_TIMEOUT     :: Bit      -- DBG_J2C3SMBUS_TIMEOUT
+      DBG_J2C2_SMBUS_TIMEOUT    :: Bit      -- DBG_J2C2_SMBUS_TIMEOUT
+      DBG_J2C1_SMBUS_TIMEOUT    :: Bit      -- DBG_J2C1_SMBUS_TIMEOUT
+      _                         :: Bits 8   -- (Reserved)
+      DBG_IWDG_STOP             :: Bit      -- DBG_IWDEG_STOP
+      DBG_WWDG_STOP             :: Bit      -- DBG_WWDG_STOP
+      _                         :: Bits 2   -- (Reserved)
+      DBG_TIM14_STOP            :: Bit      -- DBG_TIM14_STOP
+      DBG_TIM13_STOP            :: Bit      -- DBG_TIM13_STOP
+      DBG_TIM12_STOP            :: Bit      -- DBG_TIM12_STOP
+      DBG_TIM7_STOP             :: Bit      -- DBG_TIM7_STOP
+      DBG_TIM6_STOP             :: Bit      -- DBG_TIM6_STOP
+      DBG_TIM5_STOP             :: Bit      -- DBG_TIM5_STOP
+      DBG_TIM4_STOP             :: Bit      -- DBG_TIM4_STOP
+      DBG_TIM3_STOP             :: Bit      -- DBG_TIM3 _STOP
+      DBG_TIM2_STOP             :: Bit      -- DBG_TIM2_STOP
+
+    APB2_FZ 0xc - Debug MCU APB2 Freeze registe
+      _                         :: Bits 13  -- (Reserved)
+      DBG_TIM11_STOP            :: Bit      -- TIM11 counter stopped when core is halted
+      DBG_TIM10_STOP            :: Bit      -- TIM10 counter stopped when core is halted
+      DBG_TIM9_STOP             :: Bit      -- TIM9 counter stopped when core is halted
+      _                         :: Bits 14  -- (Reserved)
+      DBG_TIM8_STOP             :: Bit      -- TIM8 counter stopped when core is halted
+      DBG_TIM1_STOP             :: Bit      -- TIM1 counter stopped when core is halted
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,10 @@
+# Version [0.1.0.0](https://github.com/DistRap/data-svd/compare/de41e81...0.1.0.0) (2023-12-24)
+
+* Initial release
+
+---
+
+`data-svd` uses [PVP Versioning][1].
+
+[1]: https://pvp.haskell.org
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright sorki (c) 2023
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+    * Neither the name of Author name here nor the names of other
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,12 @@
+# data-svd
+
+[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/DistRap/data-svd/ci.yaml?branch=main)](https://github.com/DistRap/data-svd/actions/workflows/ci.yaml)
+[![Hackage version](https://img.shields.io/hackage/v/data-svd.svg?color=success)](https://hackage.haskell.org/package/data-svd)
+[![Dependencies](https://img.shields.io/hackage-deps/v/data-svd?label=Dependencies)](https://packdeps.haskellers.com/feed?needle=data-svd)
+
+SVD (System view description) file handling.
+
+Parsing, pretty printing, diffing and various utilities.
+
+Mostly targets STM32 SVD files but other ones should work just as well, file
+a PR/Issue if not.
diff --git a/app/Main.hs b/app/Main.hs
new file mode 100644
--- /dev/null
+++ b/app/Main.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE LambdaCase #-}
+module Main where
+
+import qualified Data.SVD
+import qualified System.Environment
+
+main :: IO ()
+main = System.Environment.getArgs >>= \case
+  [filename] -> do
+    Data.SVD.parseSVD filename >>= \case
+      Left e -> error $ show e
+      Right p ->
+        putStrLn $ Data.SVD.displayDevice p
+  _ -> error "No input svd file"
diff --git a/data-svd.cabal b/data-svd.cabal
new file mode 100644
--- /dev/null
+++ b/data-svd.cabal
@@ -0,0 +1,84 @@
+cabal-version:       2.2
+name:                data-svd
+version:             0.1.0.0
+synopsis:            SVD (System view description) file handling
+description:         Parse, print, diff SVD files
+homepage:            https://github.com/DistRap/data-svd
+license:             BSD-3-Clause
+license-file:        LICENSE
+author:              sorki
+maintainer:          srk@48.io
+copyright:           2023 sorki
+category:            Embedded
+build-type:          Simple
+
+extra-source-files:
+    LICENSE
+    README.md
+    .golden/stm32f405/golden
+    .golden/stm32f405-isrs/golden
+    .golden/stm32f405-memmap/golden
+    test/samples/stm32f405.svd
+
+extra-doc-files:
+    CHANGELOG.md
+
+library
+  ghc-options:         -Wall
+  hs-source-dirs:      src
+  exposed-modules:     Data.Bits.Pretty
+                       Data.SVD
+                       Data.SVD.Diff
+                       Data.SVD.Dim
+                       Data.SVD.IO
+                       Data.SVD.Lens
+                       Data.SVD.Parse
+                       Data.SVD.Pretty
+                       Data.SVD.Types
+                       Data.SVD.Util
+  build-depends:       base >= 4.7 && < 5
+                     , bytestring
+                     , containers
+                     , cereal
+                     , data-default-class
+                     , Diff
+                     , directory
+                     , hashable
+                     , hxt
+                     , hxt-xpath
+                     , lens
+                     , prettyprinter
+                     , prettyprinter-ansi-terminal
+                     , safe
+                     , text
+  default-language:    Haskell2010
+
+executable pretty-svd
+  hs-source-dirs:      app
+  main-is:             Main.hs
+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , data-svd
+  default-language:    Haskell2010
+
+test-suite spec
+  type:                exitcode-stdio-1.0
+  hs-source-dirs:      test
+  main-is:             Spec.hs
+  other-modules:       DimSpec
+                       PrettyBitsSpec
+                       SamplesSpec
+  build-tool-depends:
+    hspec-discover:hspec-discover
+  build-depends:       base >= 4.7 && < 5
+                     , data-svd
+                     , data-default-class
+                     , hspec
+                     , hspec-golden
+                     , lens
+                     , prettyprinter
+  default-language:    Haskell2010
+
+source-repository head
+  type:     git
+  location: https://github.com/DistRap/data-svd
diff --git a/src/Data/Bits/Pretty.hs b/src/Data/Bits/Pretty.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Bits/Pretty.hs
@@ -0,0 +1,95 @@
+module Data.Bits.Pretty
+  (
+  -- * Show in base
+    showBin
+  , showDec
+  , showHex
+  , formatHex
+  -- * Show binary groups
+  , showBinGroups
+  -- * Size of Int
+  , platformSizeOfInt
+  -- * Shorthand
+  , showHex8
+  , showHex16
+  , showHex32
+  ) where
+
+import Data.Bits (FiniteBits, (.&.), shiftR)
+import Data.Word (Word8, Word16, Word32)
+import Text.Printf (PrintfArg, printf)
+import qualified Data.Bits
+
+-- * Show in base
+
+-- | Format number using binary notation with leading 0b,
+-- padded according to its bit size
+showBin :: (PrintfArg t, FiniteBits t) => t -> String
+showBin x =
+  printf
+    ("0b%0"
+    ++ (show $ Data.Bits.finiteBitSize x)
+    ++ "b"
+    )
+    x
+
+-- | Format number using decimal
+showDec :: (PrintfArg t, FiniteBits t) => t -> String
+showDec x =
+  printf ("%0" ++ (show decSize) ++ "u") x
+  where
+    decSize :: Int
+    decSize =
+      ceiling
+      $ logBase
+          (10 :: Double)
+          (2 ^ (Data.Bits.finiteBitSize x))
+
+-- | Format number using hexadecimal notation with leading 0x,
+-- padded according to its bit size
+showHex :: (PrintfArg t, FiniteBits t) => t -> String
+showHex x =
+  printf
+    ("0x%0"
+    ++ (show $ Data.Bits.finiteBitSize x `div` 4)
+    ++ "X"
+    )
+    x
+
+-- | Format number using hexadecimal notation with leading 0x
+formatHex :: PrintfArg t => t -> String
+formatHex = printf "0x%x"
+
+-- * Show binary groups
+
+-- | Print number in binary with bits grouped by `groupSize`
+-- e.g. with `groupSize = 4` we would get `0000 1010 0000 0101`
+showBinGroups :: (PrintfArg b, Num b, FiniteBits b) => Int -> b -> String
+showBinGroups groupSize x =
+  unwords
+    $ flip map [gs -1 ,gs - 2 .. 0]
+    $ \g -> ((printf ("%0" ++ (show groupSize) ++ "b") (mask g x)) :: String)
+  where
+    mask g n = (2^groupSize - 1) .&. (n `shiftR` (fromIntegral (g * groupSize)))
+    gs = sz `div` groupSize
+    sz = fromIntegral $ Data.Bits.finiteBitSize x
+
+-- * Size of Int
+
+-- | Size of `Int` at the current platform
+platformSizeOfInt :: Int
+platformSizeOfInt = Data.Bits.finiteBitSize (0 :: Int)
+
+-- * Shorthand
+
+-- | Format Int as 32-bit unsigned hexadecimal string
+showHex32 :: Int -> String
+showHex32 = showHex . (fromIntegral :: Int -> Word32)
+
+-- | Format Int as 16-bit unsigned hexadecimal string
+showHex16 :: Int -> String
+showHex16 = showHex . (fromIntegral :: Int -> Word16)
+
+-- | Format Int as 8-bit unsigned hexadecimal string
+showHex8 :: Int -> String
+showHex8  = showHex . (fromIntegral :: Int -> Word8)
diff --git a/src/Data/SVD.hs b/src/Data/SVD.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SVD.hs
@@ -0,0 +1,19 @@
+module Data.SVD (
+    module Data.SVD.Diff
+  , module Data.SVD.Dim
+  , module Data.SVD.IO
+  , module Data.SVD.Lens
+  , module Data.SVD.Parse
+  , module Data.SVD.Pretty
+  , module Data.SVD.Types
+  , module Data.SVD.Util
+  ) where
+
+import Data.SVD.Diff
+import Data.SVD.Dim
+import Data.SVD.IO
+import Data.SVD.Lens
+import Data.SVD.Parse
+import Data.SVD.Pretty
+import Data.SVD.Types
+import Data.SVD.Util
diff --git a/src/Data/SVD/Diff.hs b/src/Data/SVD/Diff.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SVD/Diff.hs
@@ -0,0 +1,103 @@
+module Data.SVD.Diff where
+
+import Data.Algorithm.Diff (Diff, PolyDiff(..))
+import qualified Data.Algorithm.Diff
+import qualified Data.List
+import qualified Data.Maybe
+import qualified Safe
+
+import Data.SVD.Types
+  ( Device(..)
+  , Peripheral(..)
+  , Register(..)
+  , Field(..)
+  )
+
+import Data.SVD.Util
+  ( fieldNames
+  , registerNames
+  )
+
+diffPeriphNames
+  :: Device
+  -> Device
+  -> [Diff String]
+diffPeriphNames dev1 dev2 =
+  Data.Algorithm.Diff.getDiff
+    (Data.List.sort $ map periphName $ devicePeripherals dev1)
+    (Data.List.sort $ map periphName $ devicePeripherals dev2)
+
+diffRegisterNames
+  :: String
+  -> Device
+  -> Device
+  -> [Diff String]
+diffRegisterNames pName dev1 dev2 =
+  Data.Algorithm.Diff.getDiff
+    (Data.List.sort $ registerNames pName dev1)
+    (Data.List.sort $ registerNames pName dev2)
+
+regNames :: Peripheral -> [String]
+regNames = map regName . periphRegisters
+
+diffRegNames :: Peripheral -> Peripheral -> [Diff String]
+diffRegNames = diff regNames
+
+regNameFields :: String -> Peripheral -> [Field]
+regNameFields rName =
+    regFields
+  . Safe.headNote "regNameFields"
+  . filter((==rName) . regName)
+  . periphRegisters
+
+diff
+  :: Ord a
+  => (t -> [a])
+  -> t
+  -> t
+  -> [Diff a]
+diff fn x y =
+  Data.Algorithm.Diff.getDiff
+    (Data.List.sort $ fn x)
+    (Data.List.sort $ fn y)
+
+diffFieldNames
+  :: String
+  -> String
+  -> Device
+  -> Device
+  -> [Diff String]
+diffFieldNames pName regName' dev1 dev2 =
+  Data.Algorithm.Diff.getDiff
+    (Data.List.sort $ fieldNames regName' pName dev1)
+    (Data.List.sort $ fieldNames regName' pName dev2)
+
+diffFields
+  :: [Field]
+  -> [Field]
+  -> [PolyDiff Field Field]
+diffFields as bs =
+  Data.Algorithm.Diff.getDiffBy
+    (\x y ->
+      cmps fieldName x y
+      && cmps fieldBitWidth x y
+      && cmps fieldBitOffset x y
+    )
+  (Data.List.sortOn fieldBitOffset as)
+  (Data.List.sortOn fieldBitOffset bs)
+  where
+    cmps fn a b = fn a == fn b
+
+diffDistance :: [PolyDiff a b] -> Int
+diffDistance x =
+  sum $ map go x
+  where
+    go (Both _ _) = 0
+    go (First  _) = 1
+    go (Second _) = 1
+
+getBoths :: [PolyDiff a b] -> [a]
+getBoths = Data.Maybe.catMaybes . map ex
+  where
+    ex (Both x _) = Just x
+    ex _ = Nothing
diff --git a/src/Data/SVD/Dim.hs b/src/Data/SVD/Dim.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SVD/Dim.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+
+module Data.SVD.Dim
+  ( expandDevice
+  -- * For testing
+  , expandCluster
+  , expandField
+  , expandRegister
+  ) where
+
+import Control.Lens ((^.), set, over)
+import Data.SVD.Lens
+import Data.SVD.Types
+
+-- * Dimension expansion
+
+-- Expand @Cluster@, @Field@, @Register@ into multiples
+-- according to its @Dimension@
+--
+-- If @Dimension@ is nothing return singleton with the original
+expandDim
+  :: ( HasName a String
+     , HasDescription a String
+     , HasDimension a (Maybe Dimension)
+     )
+  => (a -> Int) -- ^ Address offset or bit offset getter
+  -> (Int -> a -> a) -- ^ Address offset or bit offset setter
+  -> a
+  -> [a]
+expandDim getOffset setOffset element =
+  case element ^. dimension of
+    Nothing -> pure element
+    Just dim ->
+      let ixs = case dim ^. index of
+            DimensionIndex_FromTo f t -> map show [f .. t]
+            DimensionIndex_List l -> l
+
+          gen z i ix =
+            let nameTemplate = z ^. name
+                descTemplate = z ^. description
+                baseOffset = getOffset z
+                template ('%':'s':xs) replacement = replacement ++ xs
+                template (x:xs) replacement = x:(template xs replacement)
+                template [] _ = mempty
+            in
+                setOffset
+                  (baseOffset + dim ^. increment * i)
+              . set
+                  name
+                  (template nameTemplate ix)
+              . set
+                  description
+                  (template descTemplate ix)
+              $ set
+                  dimension
+                  Nothing
+                  z
+      in
+        [ gen element i ix | (i, ix) <- zip [0..] ixs ]
+
+-- | Expand @Field@ into multiple fields if it has a @Dimension@
+-- return just the field if not
+expandField :: Field -> [Field]
+expandField = expandDim (^. bitOffset) (set bitOffset)
+
+-- | Expand @Cluster@ into multiple cluster if it has a @Dimension@
+-- return just the cluster if not
+expandCluster :: Cluster -> [Cluster]
+expandCluster = expandDim (^. addressOffset) (set addressOffset)
+
+-- | Expand @Register@ into multiple registers if it has a @Dimension@
+-- return just the register if not
+expandRegister :: Register -> [Register]
+expandRegister = expandDim (^. addressOffset) (set addressOffset)
+
+-- | Expand all fields of a register
+expandRegFields :: Register -> Register
+expandRegFields r =
+  set
+    fields
+    (concatMap expandField (r ^. fields))
+    r
+
+-- | Expand all registers of a peripheral
+expandPeriphRegisters :: Peripheral -> Peripheral
+expandPeriphRegisters p =
+  set
+    registers
+    (concatMap expandRegister (p ^. registers))
+    p
+
+-- | Expand all cluster of a peripheral
+-- then eliminate all of them into registers
+expandPeriphClusters :: Peripheral -> Peripheral
+expandPeriphClusters p =
+  set
+    clusters
+    mempty
+  $ set
+      registers
+      (let
+           expClusters =
+             concatMap
+               expandCluster
+               (p ^. clusters)
+        in
+          (p ^. registers)
+          ++ concatMap
+              eliminateCluster
+              expClusters
+      )
+      p
+
+-- | Turn expanded @Cluster@ into @Register@s
+-- adding its addressOffset to each registers addressOffset
+eliminateCluster :: Cluster -> [Register]
+eliminateCluster c =
+  map
+    (\r ->
+      over
+        addressOffset
+        (+(c ^. addressOffset))
+        r
+    )
+  $ c ^. registers
+
+-- | Expand all dimensions and clusters
+--
+-- In order
+-- - Expand and eliminate each cluster
+-- - Expand fields of each register
+-- - Expand each register
+expandDevice :: Device -> Device
+expandDevice =
+    over
+      (peripherals . traverse)
+      expandPeriphRegisters
+  . over
+      (peripherals . traverse . registers . traverse)
+      expandRegFields
+  . over
+      (peripherals . traverse)
+      expandPeriphClusters
diff --git a/src/Data/SVD/IO.hs b/src/Data/SVD/IO.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SVD/IO.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE RecordWildCards #-}
+
+module Data.SVD.IO
+  ( parseSVD
+  , parseSVDOptions
+  , SVDOptions(..)
+  ) where
+
+import Data.Default.Class (Default(def))
+import Data.Hashable (Hashable)
+import Data.SVD.Types (Device)
+import GHC.Generics (Generic)
+import Text.XML.HXT.Core (readString, runX, (>>>))
+
+import qualified Data.Bool
+import qualified Data.ByteString.Char8
+import qualified Data.Hashable
+import qualified Data.Serialize
+import qualified Data.SVD.Dim
+import qualified Data.SVD.Parse
+import qualified Data.SVD.Util
+import qualified System.Directory
+
+data SVDSort
+  = SVDSort_DontSort
+  | SVDSort_SortByNames
+  | SVDSort_SortByAddresses
+  deriving (Eq, Ord, Generic, Show)
+
+instance Hashable SVDSort
+
+data SVDOptions = SVDOptions
+  { svdOptionsAddReservedFields :: Bool
+  -- ^ Fill in dummy reserved fields where
+  -- holes would be in registers
+  , svdOptionsCache :: Bool
+  -- ^ Cache parsed SVD in /tmp
+  -- based on a hash of the input svd file
+  , svdOptionsCheckContinuity :: Bool
+  -- ^ Check register continuity
+  , svdOptionsExpand :: Bool
+  -- ^ Expand dimensions and clusters
+  , svdOptionsSort :: SVDSort
+  -- ^ Sorting
+  } deriving (Eq, Ord, Generic, Show)
+
+instance Default SVDOptions where
+  def = SVDOptions
+    { svdOptionsAddReservedFields = True
+    , svdOptionsCache = True
+    , svdOptionsCheckContinuity = True
+    , svdOptionsExpand = True
+    , svdOptionsSort = SVDSort_SortByAddresses
+    }
+
+instance Hashable SVDOptions
+
+parseSVDOptions
+  :: SVDOptions
+  -> String
+  -> IO (Either String Device)
+parseSVDOptions opts@SVDOptions{..} f = do
+  s <- readFile f
+  -- If caching is enabled we hash the input
+  -- string + options and try to load
+  -- serialized binary from cache if it exists
+  -- or create one if not for further invocations
+  let fHash = Data.Hashable.hash s
+      optsHash = Data.Hashable.hash opts
+      caFile =
+        "/tmp/svdCache-"
+        <> show fHash
+        <> "-"
+        <> show optsHash
+
+  if not svdOptionsCache
+  then parseSVDFromString opts s
+  else do
+    hasCached <- System.Directory.doesFileExist caFile
+    if hasCached
+    then
+      Data.Serialize.decode
+      <$> Data.ByteString.Char8.readFile caFile
+      >>= \case
+        Left e ->
+          error
+            $ "Can't decode cached svd from "
+            <> caFile
+            <> " error was "
+            <> e
+        Right x -> pure x
+    else do
+      res <- parseSVDFromString opts s
+      Data.ByteString.Char8.writeFile
+        caFile
+        $ Data.Serialize.encode res
+      pure res
+
+parseSVDFromString
+  :: SVDOptions
+  -> String
+  -> IO (Either String Device)
+parseSVDFromString SVDOptions{..} s = do
+  res <- runX (readString [] s >>> Data.SVD.Parse.svd)
+  case res of
+    [] -> pure $ Left "No device parsed"
+    [x] ->
+          pure
+        . Data.Bool.bool
+            Right
+            Data.SVD.Util.checkDeviceRegisterContinuity
+            svdOptionsCheckContinuity
+        . case svdOptionsSort of
+            SVDSort_DontSort -> id
+            SVDSort_SortByAddresses -> Data.SVD.Util.sortDeviceByAddresses
+            SVDSort_SortByNames -> Data.SVD.Util.sortDeviceByNames
+        . Data.Bool.bool
+            id
+            Data.SVD.Util.addReservedFields
+            svdOptionsAddReservedFields
+        . Data.Bool.bool
+            id
+            Data.SVD.Dim.expandDevice
+            svdOptionsExpand
+        $ x
+    _ -> pure $ Left "Multiple devices parsed"
+
+parseSVD
+  :: String
+  -> IO (Either String Device)
+parseSVD = parseSVDOptions def
diff --git a/src/Data/SVD/Lens.hs b/src/Data/SVD/Lens.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SVD/Lens.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SVD.Lens where
+
+import Control.Lens
+import Data.SVD.Types
+
+makeFields ''Device
+makeLensesWith abbreviatedFields ''Peripheral
+makeLensesWith abbreviatedFields ''Register
+makeFields ''Field
+makeFields ''Cluster
+makeFields ''Dimension
+makeFields ''Interrupt
+makeFields ''AddressBlock
diff --git a/src/Data/SVD/Parse.hs b/src/Data/SVD/Parse.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SVD/Parse.hs
@@ -0,0 +1,226 @@
+{-# LANGUAGE Arrows #-}
+{-# LANGUAGE NoMonomorphismRestriction #-}
+{-# LANGUAGE RecordWildCards #-}
+
+module Data.SVD.Parse where
+
+import Safe
+
+import Control.Arrow.ArrowList
+import qualified Data.Char as Char
+import qualified Data.Maybe
+import Data.Tree.NTree.TypeDefs
+import Text.XML.HXT.Core
+
+import Data.SVD.Types
+
+-- atTag doesn't uses deep here
+atTag :: ArrowXml cat => String -> cat (NTree XNode) XmlTree
+atTag tag = getChildren >>> hasName tag
+
+text :: ArrowXml cat => cat (NTree XNode) String
+text = getChildren >>> getText
+
+textAtTag :: ArrowXml cat => String -> cat (NTree XNode) String
+textAtTag tag = text <<< atTag tag
+
+textAtTagOrEmpty :: ArrowXml cat => String -> cat (NTree XNode) String
+textAtTagOrEmpty tag = withDefault (text <<< atTag tag) ""
+
+att :: ArrowXml cat => String -> cat XmlTree String
+att  = getAttrValue
+
+-- nonempty attr value
+attNE :: ArrowXml cat => String -> cat XmlTree String
+attNE x = getAttrValue x >>> isA (/= "")
+
+attMaybe :: ArrowXml cat => String -> String -> cat (NTree XNode) (Maybe String)
+attMaybe attname tagname =
+  withDefault
+    (arr Just <<< attNE attname <<< atTag tagname)
+    Nothing
+
+filterCrap :: String -> String
+filterCrap =
+  unwords
+  . words
+  . filter (\c -> Char.ord c < 127)
+  . filter ( not . (`elem` ['\n', '\t', '\r']))
+
+-- svd parser
+svd :: ArrowXml cat => cat (NTree XNode) Device
+svd = atTag "device" >>>
+  proc x -> do
+    --name <- text <<< hasName "name" <<< getChildren -< x
+    deviceName <- textAtTag "name" -< x
+    deviceVersion <- textAtTag "version" -< x
+    desc <- textAtTag "description" -< x
+    addressUnitBits' <- textAtTag "addressUnitBits" -< x
+    width' <- textAtTag "width" -< x
+    size' <- textAtTag "size" -< x
+    resetValue' <- textAtTag "resetValue" -< x
+    resetMask' <- textAtTag "resetMask" -< x
+
+    let deviceAddressUnitBits = read addressUnitBits'
+        deviceWidth = read width'
+        deviceSize = read size'
+        deviceResetValue = read resetValue'
+        deviceResetMask = read resetMask'
+        deviceDescription = filterCrap desc
+
+    devicePeripherals <- listA parsePeripheral <<< atTag "peripherals" -< x
+
+    returnA -< Device{..}
+
+-- loose version of svd that doesn't require device properties
+svdPeripherals :: ArrowXml cat => cat (NTree XNode) [Peripheral]
+svdPeripherals = atTag "device" >>>
+  proc x -> do
+    devicePeripherals <- listA parsePeripheral <<< atTag "peripherals" -< x
+    returnA -< devicePeripherals
+
+parsePeripheral :: ArrowXml cat => cat (NTree XNode) Peripheral
+parsePeripheral = atTag "peripheral" >>>
+  proc x -> do
+    -- only these three avail for derived peripherals
+    periphName <- textAtTag "name" -< x
+    periphDerivedFrom <- withDefault (arr Just <<< isA (/= "") <<< att "derivedFrom") Nothing -< x
+    baseAddress' <- textAtTag "baseAddress" -< x
+
+    desc <- withDefault (textAtTag "description") "" -< x
+    periphGroupName <- withDefault (textAtTag "groupName") "" -< x
+    periphAddressBlock <- withDefault (arr Just <<< parseAddressBlock) Nothing -< x
+
+    periphInterrupts <- listA parseInterrupt -< x
+
+    periphRegisters <- withDefault (listA parseRegister <<< atTag "registers") mempty -< x
+    periphClusters <- withDefault (listA parseCluster <<< atTag "registers") mempty -< x
+
+    let periphBaseAddress = read baseAddress'
+        periphDescription = filterCrap desc
+
+    returnA -< Peripheral{..}
+
+parseAddressBlock
+  :: ArrowXml cat
+  => cat (NTree XNode) AddressBlock
+parseAddressBlock = atTag "addressBlock" >>>
+  proc x -> do
+    offset <- textAtTag "offset" -< x
+    size <- textAtTag "size" -< x
+    addressBlockUsage <- textAtTag "usage" -< x
+
+    let addressBlockOffset = read offset
+        addressBlockSize = read size
+
+    returnA -< AddressBlock{..}
+
+parseInterrupt
+  :: ArrowXml cat
+  => cat (NTree XNode) Interrupt
+parseInterrupt = atTag "interrupt" >>>
+  proc x -> do
+    name <- textAtTag "name" -< x
+    desc <- textAtTag "description" -< x
+    val <- textAtTag "value" -< x
+
+    let interruptName = map Char.toUpper name
+        interruptValue = read val
+        interruptDescription = filterCrap desc
+
+    returnA -< Interrupt{..}
+
+parseCluster
+  :: ArrowXml cat
+  => cat (NTree XNode) Cluster
+parseCluster = atTag "cluster" >>>
+  proc x -> do
+    clusterName <- textAtTag "name" -< x
+    clusterDescription <- textAtTag "description" -< x
+    clusterDimension <- withDefault (arr Just  <<< parseDimension) Nothing -< x
+    offset <- textAtTag "addressOffset" -< x
+    clusterRegisters <- listA parseRegister -< x
+    clusterNested <- listA parseCluster -< x
+
+    let clusterAddressOffset = read offset
+    returnA -< Cluster{..}
+
+parseDimension
+  :: ArrowXml cat
+  => cat (NTree XNode) Dimension
+parseDimension =
+  proc x -> do
+    dim <- textAtTag "dim" -< x
+    dimIncr <- textAtTag "dimIncrement" -< x
+    dimIdx <- textAtTag "dimIndex" -< x
+
+    let
+      dimensionSize = read dim
+      dimensionIncrement = read dimIncr
+      dimensionIndex = case dimIdx of
+        i | '-' `elem` i -> case words [ if c == '-' then ' ' else c | c <- i ] of
+          [from, to] -> DimensionIndex_FromTo (read from) (read to)
+          _ -> error $ "Don't know how to handle ranged dimIndex: " <> i
+        i | ',' `elem` i -> DimensionIndex_List $ words [ if c == ',' then ' ' else c | c <- i ]
+        i | otherwise -> error $ "Don't know how to handle dimIndex: " <> i
+    returnA -< Dimension{..}
+
+parseRegister
+  :: ArrowXml cat
+  => cat (NTree XNode) Register
+parseRegister = atTag "register" >>>
+  proc x -> do
+    regName <- textAtTag "name" -< x
+    regDisplayName <- textAtTagOrEmpty "displayName" -< x
+    desc <- textAtTagOrEmpty "description" -< x
+
+    offset <- textAtTag "addressOffset" -< x
+    size <- textAtTag "size" -< x
+    access <- withDefault (textAtTag "access") "read-write" -< x
+
+    regResetValue <- withDefault (arr (Just . read) <<< textAtTag "resetValue") Nothing -< x
+    regFields <- withDefault (listA parseField <<< atTag "fields") [] -< x
+
+    regDimension <- withDefault (arr Just  <<< parseDimension) Nothing -< x
+
+    let regAddressOffset = read offset
+        regSize = read size
+        regAccess = toAccessType access
+        regDescription = filterCrap desc
+
+    returnA -< Register{..}
+
+parseField
+  :: ArrowXml cat
+  => cat (NTree XNode) Field
+parseField = atTag "field" >>>
+  proc x -> do
+    fieldName <- textAtTag "name" -< x
+    fieldDimension <- withDefault (arr Just  <<< parseDimension) Nothing -< x
+    desc <- textAtTagOrEmpty "description" -< x
+
+    bitOffsetMay <- withDefault (arr (Just . read) <<< textAtTag "bitOffset") Nothing -< x
+    bitWidthMay <- withDefault (arr (Just . read) <<< textAtTag "bitWidth") Nothing -< x
+
+    -- bitRange [MSB:LSB]
+    bitRange <- withDefault (arr (Just . splitRange) <<< textAtTag "bitRange") Nothing -< x
+
+    -- XXX: TODO: one more possibility is lsb msb tags format, handle if needed
+
+    let errmsg = error "Neither bitRange nor bitOffset + bitWidth defined"
+        (fieldBitOffset, fieldBitWidth) = case bitRange of
+            Nothing -> ( Data.Maybe.fromMaybe errmsg bitOffsetMay
+                        , Data.Maybe.fromMaybe errmsg bitWidthMay)
+            Just (msb, lsb) -> (lsb, msb - lsb + 1)
+
+        fieldDescription = filterCrap desc
+        fieldReserved = False
+        fieldRegType = Nothing
+
+    returnA -< Field{..}
+    where
+      splitRange :: String -> (Int, Int)
+      splitRange r = (readNote "splitRange" $ takeWhile (/=':') raw,
+                      readNote "splitRange" $ drop 1 $ dropWhile (/=':') raw)
+        where
+          raw = drop 1 $ init r
diff --git a/src/Data/SVD/Pretty.hs b/src/Data/SVD/Pretty.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SVD/Pretty.hs
@@ -0,0 +1,259 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+
+module Data.SVD.Pretty
+  (
+  -- * Helpers
+    ppList
+  , displayPretty
+  , displayCompact
+  -- * Shorthand
+  , displayDevice
+  , displayDeviceInfo
+  , displayPeripheral
+  , displayRegister
+  , displayMemMap
+  , displayMemMapCompact
+  , displayDevISR
+  , displayISRs
+  -- * Pretty printers
+  , ppDevice
+  , ppPeriph
+  , ppReg
+  , ppHex
+  -- ** Interrupts
+  , ppDevISR
+  , ppISR
+  -- ** Terse output
+  , ppDeviceInfo
+  , ppPeriphName
+  , shortField
+  -- ** MemMap
+  , ppMem
+  -- * Who knows
+  , printSetFields
+  , printSetField
+  , showField
+  , fieldRange
+  , hexFieldVal
+  )
+  where
+
+import Data.Char (toLower)
+import Data.SVD.Types
+import Data.Word
+import Prettyprinter
+import Prettyprinter.Render.String
+import Prettyprinter.Render.Terminal (AnsiStyle, Color(..), color)
+
+import qualified Data.Bits.Pretty
+import qualified Data.SVD.Util
+import qualified Data.Text
+import qualified Prettyprinter.Render.Terminal
+
+-- * Helpers
+
+ppList :: (a -> Doc AnsiStyle) -> [a] -> Doc AnsiStyle
+ppList pp x = vcat $ map pp x
+
+displayPretty :: Doc AnsiStyle -> String
+displayPretty =
+    Data.Text.unpack
+  . Prettyprinter.Render.Terminal.renderStrict
+  . layoutPretty defaultLayoutOptions
+
+displayCompact :: Doc AnsiStyle -> String
+displayCompact =
+    renderString
+  . layoutCompact
+
+-- * Shorthand
+
+displayDevice :: Device -> String
+displayDevice = displayPretty . ppDevice
+
+displayDeviceInfo :: Device -> String
+displayDeviceInfo = displayPretty . ppDeviceInfo
+
+displayPeripheral :: Peripheral -> String
+displayPeripheral = displayPretty . ppPeriph
+
+displayRegister :: Register -> String
+displayRegister = displayPretty . ppReg
+
+displayMemMap :: [(String, String)] -> String
+displayMemMap = displayPretty . ppList ppMem
+
+displayMemMapCompact :: [(String, String)] -> String
+displayMemMapCompact = displayCompact . ppList ppMem
+
+displayDevISR :: Device -> String
+displayDevISR = displayPretty . ppDevISR
+
+displayISRs :: [Interrupt] -> String
+displayISRs = displayPretty . ppList ppISR
+
+-- * Pretty printers
+
+ppDevice :: Device -> Doc AnsiStyle
+ppDevice Device{..} =
+  (annotate (color Red) $ pretty deviceName)
+  <> line
+  <> indent 2 (ppList ppPeriph devicePeripherals)
+
+ppPeriph :: Peripheral -> Doc AnsiStyle
+ppPeriph Peripheral{..} =
+      hardline
+  <>  annotate (color Yellow)
+        (pretty periphName)
+  <+> annotate (color White)
+        (ppHex periphBaseAddress)
+  <+> annotate (color Magenta)
+        (pretty periphDescription)
+  <>  line
+  <>  indent 2 (ppList ppReg periphRegisters)
+  <>  maybe
+        mempty
+        (\x ->
+          indent 2
+           $   line
+           <>  pretty ("Derived from" :: String)
+           <+> pretty x
+        )
+        periphDerivedFrom
+
+ppReg :: Register -> Doc AnsiStyle
+ppReg Register{..} =
+  hardline
+  <>  annotate (color Blue)
+        (pretty regName)
+  <+> annotate (color White)
+        (ppHex regAddressOffset)
+  <+> annotate (color Cyan)
+        (pretty '-' <+> (pretty regDescription))
+  <>  line
+  <>  indent 2
+        (ppList ppField regFields)
+
+ppHex :: Int -> Doc AnsiStyle
+ppHex = pretty . Data.Bits.Pretty.formatHex
+
+rpad :: Int -> String -> String
+rpad m xs = take m $ xs ++ repeat ' '
+
+ppField :: Field -> Doc AnsiStyle
+ppField Field{..} =
+      annotate (color Green)
+        (pretty $ rpad 25 fieldName)
+  <+> pretty ("::" :: String)
+  <+> ppWidthPad 7 fieldBitWidth
+  <+> annotate
+        (color Cyan)
+        (pretty $ " -- " ++ fieldDescription)
+
+ppWidthPad
+  :: Int
+  -> Int
+  -> Doc AnsiStyle
+ppWidthPad m 1 = pretty $ rpad m "Bit"
+ppWidthPad m x = pretty $ rpad m $ "Bits " ++ show x
+
+-- ** Interrupts
+
+ppDevISR :: Device -> Doc AnsiStyle
+ppDevISR Device{..} = ppList ppPeriphISR devicePeripherals
+
+ppPeriphISR :: Peripheral -> Doc AnsiStyle
+ppPeriphISR Peripheral{..} =
+  indent 2 (ppList ppISR periphInterrupts)
+--  <//> (maybe empty (\x -> string "Derived from" <+> string x) periphDerivedFrom)
+
+ppISR :: Interrupt -> Doc AnsiStyle
+ppISR Interrupt{..} =
+  indent 2
+    (
+          "|"
+      <+> pretty interruptName
+      <>  " -- " <> pretty interruptValue <+> pretty interruptDescription
+    )
+
+-- ** Terse output
+
+ppDeviceInfo :: Device -> Doc AnsiStyle
+ppDeviceInfo Device{..} =
+     annotate (color Red)
+       (pretty deviceName)
+  <> line
+  <> indent 2
+       (ppList ppPeriphName devicePeripherals)
+
+ppPeriphName :: Peripheral -> Doc AnsiStyle
+ppPeriphName Peripheral{..} =
+  annotate (color Yellow)
+    (pretty periphName)
+
+shortField :: Field -> String
+shortField Field{..} = unwords [
+  fieldName
+  , "offset"
+  , show fieldBitOffset
+  , "width"
+  , show fieldBitWidth ]
+
+-- ** MemMap
+
+ppMem :: (String, String) -> Doc AnsiStyle
+ppMem (addr, periph) =
+     name <> " :: Integer"
+  <> line
+  <> name
+  <> " = "
+  <> pretty addr
+  where
+    name = pretty (map toLower periph) <> "_periph_base"
+
+-- | Print currently set (non-zero) fields
+printSetFields :: (Show a, Eq a, Num a) => [(a, Field)] -> String
+printSetFields =
+    unlines
+  . map printSetField
+  . Data.SVD.Util.filterSet
+
+printSetField :: (Show a, Eq a, Num a) => (a, Field) -> String
+printSetField (_, f) | fieldBitWidth f == 1 = concat ["Bit ", show (fieldBitOffset f), " ", fieldName f]
+printSetField (v, f) | otherwise = concat [
+    "Bits ["
+  , show (fieldBitOffset f)
+  , ":"
+  , show (fieldBitOffset f + fieldBitWidth f - 1)
+  , "]"
+  , " "
+  , fieldName f
+  , " value ", show v]
+
+-- | Show `Field` with its range, e.g BRR[15:0] (16 bit wide)
+showField :: Field -> String
+showField f@Field{..} | fieldReserved = "◦" ++ (fieldRange f)
+showField f@Field{..} | otherwise = fieldName ++ (fieldRange f)
+
+-- | Datasheeeet like
+fieldRange :: Field -> String
+fieldRange Field{..} | fieldBitWidth == 1 = ""
+fieldRange Field{..} | otherwise = concat ["[", show $ fieldBitWidth - 1, ":0]"]
+
+-- | Format field value in hex, padded according to `fieldBitWidth`
+hexFieldVal :: (Integral x, Show x) => Field -> x -> String
+hexFieldVal _ 0 = "0"
+hexFieldVal f x | fieldBitWidth f ==  1 = showBit x
+  where
+    showBit 0 = "0"
+    showBit 1 = "1"
+    showBit y = error $ "Not a bit: " ++ show y
+hexFieldVal f x | fieldBitWidth f <=  8 =
+  Data.Bits.Pretty.showHex (fromIntegral x :: Word8)
+hexFieldVal f x | fieldBitWidth f <= 16 =
+  Data.Bits.Pretty.showHex (fromIntegral x :: Word16)
+hexFieldVal f x | fieldBitWidth f <= 32 =
+  Data.Bits.Pretty.showHex (fromIntegral x :: Word32)
+hexFieldVal _ x | otherwise =
+  Data.Bits.Pretty.showHex (fromIntegral x :: Word64)
diff --git a/src/Data/SVD/Types.hs b/src/Data/SVD/Types.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SVD/Types.hs
@@ -0,0 +1,207 @@
+{-# LANGUAGE DeriveGeneric #-}
+
+module Data.SVD.Types
+  ( AccessType(..)
+  , toAccessType
+  , showAccessType
+  , AddressBlock(..)
+  , Cluster(..)
+  , Device(..)
+  , Dimension(..)
+  , DimensionIndex(..)
+  , Interrupt(..)
+  , Peripheral(..)
+  , Register(..)
+  , Field(..)
+  ) where
+
+import Data.Default.Class (Default(def))
+import Data.Serialize (Serialize)
+import GHC.Generics (Generic)
+
+data Device = Device {
+    deviceName            :: String
+  , deviceVersion         :: String
+  , deviceDescription     :: String
+  , deviceAddressUnitBits :: Int
+  , deviceWidth           :: Int
+  , deviceSize            :: Int
+  , deviceResetValue      :: Int
+  , deviceResetMask       :: Int
+  , devicePeripherals     :: [Peripheral]
+  } deriving (Generic, Eq, Ord, Show)
+
+instance Default Device where
+  def = Device
+    { deviceName            = "defaultDev"
+    , deviceVersion         = mempty
+    , deviceDescription     = mempty
+    , deviceAddressUnitBits = 0
+    , deviceWidth           = 0
+    , deviceSize            = 0
+    , deviceResetValue      = 0
+    , deviceResetMask       = 0
+    , devicePeripherals     = []
+    }
+
+instance Serialize Device
+
+data Peripheral = Peripheral {
+    periphName         :: String
+  , periphDescription  :: String
+  , periphDerivedFrom  :: Maybe String
+  , periphGroupName    :: String
+  , periphBaseAddress  :: Int
+  , periphAddressBlock :: Maybe AddressBlock
+  , periphInterrupts   :: [Interrupt]
+  , periphRegisters    :: [Register]
+  , periphClusters     :: [Cluster]
+  } deriving (Generic, Eq, Ord, Show)
+
+instance Default Peripheral where
+  def = Peripheral
+    { periphName         = "defaultPeriph"
+    , periphDescription  = mempty
+    , periphDerivedFrom  = Nothing
+    , periphGroupName    = mempty
+    , periphBaseAddress  = 0
+    , periphAddressBlock = Nothing
+    , periphInterrupts   = []
+    , periphRegisters    = []
+    , periphClusters     = []
+    }
+
+instance Serialize Peripheral
+
+data AddressBlock = AddressBlock {
+    addressBlockOffset :: Int
+  , addressBlockSize   :: Int
+  , addressBlockUsage  :: String
+  } deriving (Generic, Eq, Ord, Show)
+
+instance Serialize AddressBlock
+
+data Interrupt = Interrupt {
+    interruptName        :: String
+  , interruptDescription :: String
+  , interruptValue       :: Int
+  } deriving (Generic, Eq, Ord, Show)
+
+instance Serialize Interrupt
+
+data DimensionIndex
+  = DimensionIndex_FromTo Int Int
+  | DimensionIndex_List [String]
+  deriving (Generic, Eq, Ord, Show)
+
+instance Serialize DimensionIndex
+
+data Dimension = Dimension {
+    dimensionSize      :: Int
+  , dimensionIncrement :: Int
+  , dimensionIndex     :: DimensionIndex
+  } deriving (Generic, Eq, Ord, Show)
+
+instance Serialize Dimension
+
+-- | Cluster describes a sequence of neighboring registers within a peripheral.
+-- A <cluster> specifies the addressOffset relative to the baseAddress of the grouping element.
+-- All <register> elements within a <cluster> specify their addressOffset relative to the cluster base address
+-- (<peripheral.baseAddress> + <cluster.addressOffset>).
+data Cluster = Cluster {
+    clusterName          :: String
+  , clusterDimension     :: Maybe Dimension
+  , clusterDescription   :: String
+  , clusterAddressOffset :: Int
+  , clusterRegisters     :: [Register]
+  -- unused, expansion not yet implemented
+  -- but also not quite present in any SVD we've seen
+  , clusterNested        :: [Cluster]
+  } deriving (Generic, Eq, Ord, Show)
+
+instance Default Cluster where
+  def = Cluster
+    { clusterName          = "defaultCluster"
+    , clusterDescription   = mempty
+    , clusterDimension     = Nothing
+    , clusterAddressOffset = 0
+    , clusterRegisters     = []
+    , clusterNested        = []
+    }
+
+instance Serialize Cluster
+
+data Register = Register {
+    regName          :: String
+  , regDisplayName   :: String
+  , regDimension     :: Maybe Dimension
+  , regDescription   :: String
+  , regAddressOffset :: Int
+  , regSize          :: Int
+  , regAccess        :: AccessType
+  , regResetValue    :: Maybe Int
+  , regFields        :: [Field]
+  } deriving (Generic, Eq, Ord, Show)
+
+instance Default Register where
+  def = Register
+    { regName          = "defaultRegister"
+    , regDisplayName   = mempty
+    , regDimension     = Nothing
+    , regDescription   = mempty
+    , regAddressOffset = 0
+    , regSize          = 0
+    , regAccess        = ReadOnly
+    , regResetValue    = Nothing
+    , regFields        = []
+    }
+
+instance Serialize Register
+
+data AccessType
+  = ReadOnly
+  | WriteOnly
+  | ReadWrite
+  | WriteOnce
+  | ReadWriteOnce
+  deriving (Generic, Eq, Ord, Show)
+
+instance Serialize AccessType
+
+data Field = Field {
+    fieldName        :: String
+  , fieldDescription :: String
+  , fieldDimension   :: Maybe Dimension
+  , fieldBitOffset   :: Int
+  , fieldBitWidth    :: Int
+  , fieldReserved    :: Bool  -- so we can add reserved fields to the list
+  , fieldRegType     :: Maybe String  -- ivory register type
+  } deriving (Generic, Eq, Ord, Show)
+
+instance Default Field where
+  def = Field
+    { fieldName        = "defaultField"
+    , fieldDescription = mempty
+    , fieldDimension   = Nothing
+    , fieldBitOffset   = 0
+    , fieldBitWidth    = 0
+    , fieldReserved    = False
+    , fieldRegType     = Nothing
+    }
+
+instance Serialize Field
+
+toAccessType :: String -> AccessType
+toAccessType "read-only"      = ReadOnly
+toAccessType "write-only"     = WriteOnly
+toAccessType "read-write"     = ReadWrite
+toAccessType "writeOnce"      = WriteOnce
+toAccessType "read-writeOnce" = ReadWriteOnce
+toAccessType x                = error $ "Unable to read AccessType" ++ x
+
+showAccessType :: AccessType -> String
+showAccessType ReadOnly       = "read-only"
+showAccessType WriteOnly      = "write-only"
+showAccessType ReadWrite      = "read-write"
+showAccessType WriteOnce      = "writeOnce"
+showAccessType ReadWriteOnce  = "read-writeOnce"
diff --git a/src/Data/SVD/Util.hs b/src/Data/SVD/Util.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SVD/Util.hs
@@ -0,0 +1,425 @@
+{-# LANGUAGE RecordWildCards #-}
+
+module Data.SVD.Util
+  ( addReservedFields
+  , procFields
+  , continuityCheck
+  , checkDeviceRegisterContinuity
+  , mapPeriphs
+  , mapRegs
+  , mapFields
+  , mapDevFields
+  , getPeriphByGroup
+  , getPeriph
+  , getPeriphMay
+  , getPeriphRegMay
+  , getPeriphFollow
+  , getPeriphRegs
+  , getPeriphReg
+  , getPeriphRegAddr
+  , getPeriphRegFields
+  , getRegFields
+  , getFieldVal
+  , getFieldValues
+  , getProcdFieldValues
+  , anyReservedSet
+  , filterSet
+  , getDevMemMap
+  , registerNames
+  , fieldNames
+  -- * Sorting
+  , sortDeviceByAddresses
+  , sortDeviceByNames
+  -- * Interrupts
+  , fillMissingInterrupts
+  ) where
+
+import Control.Lens ((^.), over, set, view)
+import Control.Monad (liftM2)
+import Data.Bits (Bits, shiftR, (.&.))
+import Data.SVD.Lens
+import Data.SVD.Types
+
+import qualified Data.Char
+import qualified Data.Bits.Pretty
+import qualified Data.Either
+import qualified Data.List
+import qualified Data.Maybe
+import qualified Data.Set
+import qualified Safe
+
+-- | Find holes in registers and create corresponding reserved fields for these
+--
+-- First finds missing bits and then merges them to single reserved field
+procFields :: Register -> [Field]
+procFields Register{..} =
+    dataIfSingleReserved
+  $ reverse
+  $ sortByOffset (regFields ++ missingAsReserved)
+  where
+    missingAsReserved =
+      mkReserved
+      $ conts
+      $ Data.Set.toList missing
+
+    mkReserved =
+      map
+        $ \(offset', width') ->
+          Field
+            { fieldName = "_"
+            , fieldDescription = "(Reserved)"
+            , fieldDimension = Nothing
+            , fieldBitOffset = offset'
+            , fieldBitWidth = width'
+            , fieldReserved = True
+            , fieldRegType = Nothing
+            }
+
+    conts x = case cont x of
+      [] -> []
+      s -> (head s, length s) : conts (drop (length s) x)
+
+    -- find longest increasing sequence
+    cont :: (Eq a, Num a) => [a] -> [a]
+    cont (x:y:xs) | x + 1 == y = x : cont (y:xs)
+    cont (x:_)  = [x]
+    cont [] = []
+
+    missing = allRegs `Data.Set.difference` existing
+
+    allRegs = Data.Set.fromList [0..(regSize - 1)]
+
+    existing =
+      Data.Set.fromList
+      $ flip concatMap (sortByOffset regFields)
+      $ \Field{..} -> [fieldBitOffset .. (fieldBitOffset + fieldBitWidth - 1)]
+
+    sortByOffset = Data.List.sortOn fieldBitOffset
+
+    -- this handles a case when there are no fields and code above
+    -- creates a single full-sized reserved field
+    -- which we turn into non-reserved "data" field
+    dataIfSingleReserved [f] | fieldReserved f =
+      [ f {
+            fieldName = "DATA"
+          , fieldReserved = False
+          }
+      ]
+    dataIfSingleReserved fs = fs
+
+-- | Fill in reserved fields for whole @Device@
+addReservedFields :: Device -> Device
+addReservedFields =
+  over
+    (peripherals . traverse . registers . traverse)
+    procRegister
+  where
+    procRegister r = set fields (procFields r) r
+
+-- | Walk processed register fields top to bottom
+-- checking that the register is exactly n bits long
+continuityCheck :: Register -> Bool
+continuityCheck Register{..} = go regFields regSize
+  where
+  go [] 0 = True
+  go (x:xs) remainingBits
+    | fieldBitOffset x + fieldBitWidth x == remainingBits
+    = go xs (remainingBits - fieldBitWidth x)
+  go _ _ = False
+
+-- | Walk processed register fields top to bottom
+-- checking that the register is exactly n bits long
+continuityCheckReg
+  :: Device
+  -> Peripheral
+  -> Register
+  -> Either String Register
+
+-- Some ignores
+-- TIM5.CNT is 32 bit but has an aliased UIFCPY field
+continuityCheckReg d p r
+  | d ^. name `elem` [ "STM32F730", "STM32F745", "STM32F750", "STM32F765"
+                     , "STM32F7x2", "STM32F7x3", "STM32F7x6", "STM32F7x7", "STM32F7x9" ]
+  && p ^. name == "TIM5" && r ^. name == "CNT" = pure r
+-- G4 TIM2.CCR5, might be a bug in stm32-rs
+continuityCheckReg d p r
+  | d ^. name `elem` [ "STM32G431xx", "STM32G441xx", "STM32G471xx", "STM32G473xx"
+                     , "STM32G474xx", "STM32G483xx", "STM32G484xx", "STM32G491xx", "STM32G4A1xx" ]
+  && p ^. name == "TIM2" && r ^. name == "CCR5" = pure r
+continuityCheckReg d p r
+  | d ^. name == "STM32H73x"
+  && p ^. name == "CRYP" && r ^. name == "K2LR" = pure r
+continuityCheckReg d p r
+  | (d ^. name == "STM32L0x2" || d ^. name == "STM32L0x3")
+  && p ^.name == "PWR" && r ^. name == "CR" = pure r
+continuityCheckReg d p r
+  | d ^. name == "STM32L4P5"
+  && p ^.name == "TIM15" && r ^. name == "SR" = pure r
+continuityCheckReg d p r
+  | d ^. name == "STM32L4P5"
+  && p ^.name == "SAI1" && r ^. name == "CR1" = pure r
+continuityCheckReg d p r
+  | d ^. name == "STM32L4P5"
+  && p ^.name == "FLASH" && r ^. name == "ECCR" = pure r
+continuityCheckReg d p r
+  | d ^. name == "STM32WB55"
+  && p ^.name == "TIM2" && r ^. name == "CNT" = pure r
+continuityCheckReg d p r =
+  go
+    ( reverse
+    $ Data.List.sortOn
+        (view bitOffset)
+        (r ^. fields)
+    )
+    (r ^. size)
+  where
+  go [] 0 = pure r
+
+  go (x:xs) remainingBits
+    | x ^. bitOffset + x ^. bitWidth == remainingBits
+    = go xs (remainingBits - (x ^. bitWidth))
+
+  go _xs remainingBits =
+    Left
+    $ "Continuity check failed with remaining bits: "
+    <> show remainingBits
+    <> " for device "
+    <> d ^. name
+    <> " for "
+    <> p ^. name
+    <> "."
+    <> r ^. name
+
+-- | Check all devices registers for continuity
+checkDeviceRegisterContinuity
+  :: Device
+  -> Either String Device
+checkDeviceRegisterContinuity d =
+  let
+    res =
+      concatMap
+        (\p ->
+          map
+            (continuityCheckReg d p)
+            (p ^. registers)
+        )
+      (devicePeripherals d)
+  in
+    case res of
+      _ | all Data.Either.isRight res -> pure d
+      _ | otherwise -> Left $ unlines $ Data.Either.lefts res
+
+mapPeriphs :: (Peripheral -> b) -> Device -> [b]
+mapPeriphs f Device{..} = map f devicePeripherals
+
+mapRegs :: (Register -> b) -> Peripheral -> [b]
+mapRegs f Peripheral{..} = map f periphRegisters
+
+mapFields :: (Field -> b) -> Register -> [b]
+mapFields f Register{..} = map f regFields
+
+mapDevFields :: (Field -> b) -> Device -> [b]
+mapDevFields f d =
+    concat
+  $ concat
+  $ flip mapPeriphs d
+  $ mapRegs
+  $ mapFields f
+
+-- | Get peripheral by groupName
+getPeriphByGroup :: String -> Device -> Peripheral
+getPeriphByGroup name' dev =
+  case filterLowerBy name' periphGroupName (devicePeripherals dev) of
+    [] -> error $ "getPeriphByGroup, peripheral " ++ name' ++ " not found"
+    [p] -> p
+    ps -> case filter (Data.Maybe.isNothing . periphDerivedFrom) ps of
+      [] -> error $ "getPeriphByGroup: No non-derived peripheral found for " ++ name'
+      [p] -> p
+      (p:_xs) -> p
+       -- TODO: warn?
+       -- error $ "getPeriphByGroup: Multiple non-derived peripheral found for " ++ name
+
+-- | Get peripheral by name
+getPeriph :: String -> Device -> Peripheral
+getPeriph name' dev =
+  Safe.headNote ("getPeriph " ++ name')
+  . filterLowerBy name' periphName $ devicePeripherals dev
+
+-- | Get peripheral by name iff found, Nothing otherwise
+getPeriphMay :: String -> Device -> Maybe Peripheral
+getPeriphMay name' dev =
+  Safe.headMay
+  . filterLowerBy name' periphName $ devicePeripherals dev
+
+-- | Get register of the peripheral by their names iff found, Nothing otherwise
+getPeriphRegMay :: String -> Peripheral -> Maybe Register
+getPeriphRegMay rName =
+  Safe.headMay
+  . filterLowerBy rName regName . periphRegisters
+
+-- | Filter elements matching lowercased `eqTo` after applying `by`
+filterLowerBy :: String -> (a -> String) -> [a] -> [a]
+filterLowerBy eqTo by =
+  filter
+  $ (== map Data.Char.toLower eqTo)
+    . map Data.Char.toLower
+    . by
+
+-- | Get peripheral by name or its parent peripheral if it's
+-- a derived peripheral (for example USART2 is typically derived from USART1)
+getPeriphFollow :: String -> Device -> Either String Peripheral
+getPeriphFollow pName dev = case getPeriphMay pName dev of
+  Nothing -> Left $ "No peripheral found: " ++ pName
+  Just p  -> case periphDerivedFrom p of
+    Nothing -> Right p
+    Just fromName -> case getPeriphMay fromName dev of
+      Nothing -> Left $ "Parent peripheral not found: " ++ fromName ++ " for peripheral " ++ pName
+      Just parentPeriph -> Right parentPeriph
+
+-- | Get registers of the peripheral
+getPeriphRegs :: String -> Device -> Either String [Register]
+getPeriphRegs pName dev = periphRegisters <$> getPeriphFollow pName dev
+
+-- | Get specific register of the peripheral
+-- Follows derived from.
+getPeriphReg :: String -> String -> Device -> Either String Register
+getPeriphReg pName rName dev =
+  either
+    Left
+    (maybeToEither errMsg . getPeriphRegMay rName)
+    $ getPeriphFollow pName dev
+  where
+    errMsg = "No register found: " ++ rName ++ " for peripheral " ++ pName
+
+maybeToEither :: a -> Maybe b -> Either a b
+maybeToEither msg m = case m of
+  Just x -> Right x
+  Nothing -> Left msg
+
+-- | Get address of the specific register of the peripheral with `pName`
+getPeriphRegAddr :: String -> String -> Device -> Either String Int
+getPeriphRegAddr pName rName dev =
+  (\p r -> periphBaseAddress p + regAddressOffset r)
+  <$> maybeToEither errMsg (getPeriphMay pName dev)
+  <*> getPeriphReg pName rName dev
+  where
+    errMsg = "No peripheral found " ++ pName
+
+-- | Get fields of the specific register of the peripheral with `pName`
+getPeriphRegFields
+  :: String -- ^ Peripheral name
+  -> String -- ^ Register name
+  -> Device
+  -> Either String [Field]
+getPeriphRegFields pName rName dev =
+  regFields <$> getPeriphReg pName rName dev
+
+getReg
+  :: String -- ^ Peripheral name
+  -> String -- ^ Register name
+  -> Device
+  -> Register
+getReg pName rName dev =
+  Safe.headNote "getReg"
+  . filter((==rName) . regName)
+  . periphRegisters
+  $ getPeriph pName dev
+
+getRegFields
+  :: String -- ^ Peripheral name
+  -> String -- ^ Register name
+  -> Device
+  -> [Field]
+getRegFields pName rName dev =
+  regFields
+  $ getReg pName rName dev
+
+-- | Get value of specific @Field@ according to input `x`
+getFieldVal :: (Bits a, Num a) => a -> Field -> a
+getFieldVal x f = (x `shiftR` fieldBitOffset f) .&. (2 ^ fieldBitWidth f - 1)
+
+-- | Decode integer `x` according to Fields `fs`
+getFieldValues :: (Bits a, Num a) => a -> [Field] -> [(a, Field)]
+getFieldValues x fs = zip (map (getFieldVal x) fs) fs
+
+-- | Same as `getFieldValues` but with processed fields (reserved fields included)
+getProcdFieldValues :: (Bits a, Num a) => a -> Register -> [(a, Field)]
+getProcdFieldValues x fs = getFieldValues x $ procFields fs
+
+-- | Check if any reserved field has value other than 0
+anyReservedSet :: (Eq a, Num a) => [(a, Field)] -> Bool
+anyReservedSet = any (\(val, f) -> val /= 0 && fieldReserved f)
+
+-- | Filter fields with non zero value
+filterSet :: (Eq a, Num a) => [(a, Field)] -> [(a, Field)]
+filterSet = filter ((/= 0) . fst)
+
+-- | Get memory map of the device according to its perhiperal addresses
+getDevMemMap :: Device -> [(String, String)]
+getDevMemMap Device{..} =
+  map
+    (liftM2 (,) (Data.Bits.Pretty.formatHex . periphBaseAddress) periphName)
+    devicePeripherals
+
+registerNames :: String -> Device -> [String]
+registerNames pName dev =
+  map
+    regName . periphRegisters
+    $ getPeriph pName dev
+
+fieldNames :: String -> String -> Device -> [String]
+fieldNames rName pName dev =
+  map
+    fieldName
+    $ getRegFields pName rName dev
+
+-- * Sorting
+
+-- | Sort everything by memory address
+sortDeviceByAddresses :: Device -> Device
+sortDeviceByAddresses =
+    over
+      peripherals
+      (Data.List.sortOn (view baseAddress))
+  . over
+      (peripherals . traverse . registers)
+      (Data.List.sortOn (view addressOffset))
+  . over
+      (peripherals . traverse . registers . traverse . fields)
+      (reverse . Data.List.sortOn (view bitOffset))
+
+-- | Sort everything by name
+sortDeviceByNames :: Device -> Device
+sortDeviceByNames =
+    over
+      peripherals
+      (Data.List.sortOn (view name))
+  . over
+      (peripherals . traverse . registers)
+      (Data.List.sortOn (view name))
+  . over
+      (peripherals . traverse . registers . traverse . fields)
+      (Data.List.sortOn (view name))
+
+-- * Interrupts
+
+fillMissingInterrupts
+  :: [Interrupt]
+  -> [Interrupt]
+fillMissingInterrupts isrs =
+  isrs
+  ++ (map filler $ missingInterrupts)
+  where
+    filler x = Interrupt {
+       interruptName = "Undefined" ++ show x
+     , interruptValue = x
+     , interruptDescription = "Undefined interrupt (padding only)"
+     }
+    missingInterrupts =
+      let
+        vals = map interruptValue isrs
+      in
+          Data.Set.toList
+        $ Data.Set.difference
+            (Data.Set.fromList [0 .. maximum vals])
+            (Data.Set.fromList vals)
diff --git a/test/DimSpec.hs b/test/DimSpec.hs
new file mode 100644
--- /dev/null
+++ b/test/DimSpec.hs
@@ -0,0 +1,183 @@
+module DimSpec where
+
+import Control.Lens
+import Data.Default.Class
+import Data.SVD
+import Test.Hspec (Spec, describe, it, shouldBe)
+
+spec :: Spec
+spec = describe "Data.SVD.Dim" $ do
+  describe "expandField" $ do
+    it "no dim" $
+      expandField def `shouldBe` pure def
+
+    it "sampleField0" $
+      expandField sampleField0 `shouldBe` resultField0
+
+    it "sampleField1" $
+      expandField sampleField1 `shouldBe` resultField1
+
+  describe "expandRegister" $ do
+    it "sampleReg0" $
+      expandRegister sampleReg0 `shouldBe` resultReg0
+
+    it "sampleReg1" $
+      expandRegister sampleReg1 `shouldBe` resultReg1
+
+  describe "expandDevice" $ do
+    it "sampleDev0" $
+      expandDevice sampleDev0 `shouldBe` resultDev0
+
+    it "sampleDev1" $
+      expandDevice sampleDev1 `shouldBe` resultDev1
+
+sampleDim0 =
+  Dimension
+    { dimensionSize = 3
+    , dimensionIndex = DimensionIndex_FromTo 0 2
+    , dimensionIncrement = 0x2
+    }
+
+sampleField0 = def
+  { fieldName = "FX%s"
+  , fieldDimension = pure sampleDim0
+  , fieldDescription = "Desc %s foo"
+  , fieldBitOffset = 0x2
+  }
+
+resultField0 =
+  [ def
+      { fieldName = "FX0"
+      , fieldDescription = "Desc 0 foo"
+      , fieldBitOffset = 0x2
+      }
+  , def
+      { fieldName = "FX1"
+      , fieldDescription = "Desc 1 foo"
+      , fieldBitOffset = 0x4
+      }
+  , def
+      { fieldName = "FX2"
+      , fieldDescription = "Desc 2 foo"
+      , fieldBitOffset = 0x6
+      }
+  ]
+
+sampleDim1 =
+  Dimension
+    { dimensionSize = 2
+    , dimensionIndex = DimensionIndex_FromTo 1 2
+    , dimensionIncrement = 0x2
+    }
+
+sampleField1 = def
+  { fieldName = "FY%s"
+  , fieldDimension = pure sampleDim1
+  , fieldDescription = "Desc %s foo"
+  , fieldBitOffset = 0x2
+  }
+
+resultField1 =
+  [ def
+      { fieldName = "FY1"
+      , fieldDescription = "Desc 1 foo"
+      , fieldBitOffset = 0x2
+      }
+  , def
+      { fieldName = "FY2"
+      , fieldDescription = "Desc 2 foo"
+      , fieldBitOffset = 0x4
+      }
+  ]
+
+-- * Register
+
+sampleRegDim0 =
+  Dimension
+    { dimensionSize = 1
+    , dimensionIndex = DimensionIndex_FromTo 1 1
+    , dimensionIncrement = 0x4
+    }
+
+sampleReg0 = def
+  { regName = "CCR%s"
+  , regDimension = pure sampleRegDim0
+  , regDescription = "Desc %s"
+  , regAddressOffset = 0x34
+  }
+
+resultReg0 =
+  [ def
+      { regName = "CCR1"
+      , regDescription = "Desc 1"
+      , regAddressOffset = 0x34
+      }
+  ]
+
+sampleRegDim1 =
+  Dimension
+    { dimensionSize = 2
+    , dimensionIndex = DimensionIndex_List ["AB", "CD"]
+    , dimensionIncrement = 0x4
+    }
+
+sampleReg1 = def
+  { regName = "TEST%s"
+  , regDimension = pure sampleRegDim1
+  , regDescription = "Desc %s foo"
+  , regAddressOffset = 0x34
+  }
+
+resultReg1 =
+  [ def
+      { regName = "TESTAB"
+      , regDescription = "Desc AB foo"
+      , regAddressOffset = 0x34
+      }
+  , def
+      { regName = "TESTCD"
+      , regDescription = "Desc CD foo"
+      , regAddressOffset = 0x38
+      }
+  ]
+
+-- * Device
+
+samplePeriph0 =
+  def
+    { periphRegisters = pure $ sampleReg0 { regFields = pure sampleField0 }
+    }
+
+resultPeriph0 =
+  def
+    { periphRegisters = over (traverse . fields) (pure resultField0) resultReg0
+    }
+
+sampleDev0 = def { devicePeripherals = pure samplePeriph0 }
+resultDev0 = def { devicePeripherals = pure resultPeriph0 }
+
+-- ** With clusters
+
+sampleCluster0 =
+  def
+    { clusterRegisters = pure $ sampleReg1 { regFields = pure sampleField1 }
+    , clusterAddressOffset = 0x10
+    }
+
+samplePeriph1 =
+  def
+    { periphRegisters = pure $ sampleReg0 { regFields = pure sampleField0 }
+    , periphClusters = pure $ sampleCluster0
+    }
+
+resultPeriph1 =
+  def
+    { periphRegisters =
+        over (traverse . fields) (pure resultField0) resultReg0
+        ++ map
+            (over addressOffset (+0x10))
+            (over (traverse . fields) (pure resultField1) resultReg1)
+    }
+
+sampleDev1 = def { devicePeripherals = pure samplePeriph1 }
+resultDev1 = def { devicePeripherals = pure resultPeriph1 }
diff --git a/test/PrettyBitsSpec.hs b/test/PrettyBitsSpec.hs
new file mode 100644
--- /dev/null
+++ b/test/PrettyBitsSpec.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE TypeApplications #-}
+module PrettyBitsSpec where
+
+import Data.Word (Word8, Word16, Word32)
+import Data.Bits.Pretty
+import Test.Hspec (Spec, describe, it, shouldBe)
+
+spec :: Spec
+spec = describe "Data.Bits.Pretty" $ do
+  it "showBin Word8" $ showBin @Word8 123 `shouldBe` "0b01111011"
+  it "showBin Word16" $ showBin @Word16 123 `shouldBe` "0b0000000001111011"
+  it "showDec Word8" $ showDec @Word8 123 `shouldBe` "123"
+  it "showDec Word16" $ showDec @Word16 123 `shouldBe` "00123"
+  it "showHex Word8" $ showHex @Word8 123 `shouldBe` "0x7B"
+  it "showHex Word16" $ showHex @Word16 123 `shouldBe` "0x007B"
+  it "showHex8" $ showHex8 123 `shouldBe` "0x7B"
+  it "showHex16" $ showHex16 123 `shouldBe` "0x007B"
+  it "showHex32" $ showHex32 123 `shouldBe` "0x0000007B"
+
+  it "formatHex Word8" $ formatHex @Word8 123 `shouldBe` "0x7b"
+  it "formatHex Word16" $ formatHex @Word16 123 `shouldBe` "0x7b"
+
+  it "showBinGroups 4 Word8"
+    $ showBinGroups @Word8 4 123
+    `shouldBe` "0111 1011"
+  it "showBinGroups 4 Word16"
+    $ showBinGroups @Word16 4 maxBound
+    `shouldBe` "1111 1111 1111 1111"
+  it "showBinGroups 8 Word16"
+    $ showBinGroups @Word16 8 maxBound
+    `shouldBe` "11111111 11111111"
+  it "showBinGroups 4 Word32"
+    $ showBinGroups @Word32 4 maxBound
+    `shouldBe` "1111 1111 1111 1111 1111 1111 1111 1111"
diff --git a/test/SamplesSpec.hs b/test/SamplesSpec.hs
new file mode 100644
--- /dev/null
+++ b/test/SamplesSpec.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE LambdaCase #-}
+module SamplesSpec where
+
+import Control.Lens
+import Data.Default.Class
+import Data.Either
+import Data.SVD
+import Test.Hspec (Spec, describe, it, shouldBe, shouldSatisfy)
+import Test.Hspec.Golden (defaultGolden)
+import Prettyprinter (unAnnotate)
+
+import qualified Data.List
+
+spec :: Spec
+spec = describe "Golden" $ do
+  describe "stm32f405.svd" $ do
+    it "isRight" $ do
+      res <- parseSVD "./test/samples/stm32f405.svd"
+      res `shouldSatisfy` isRight
+
+    it "has right number of peripherals" $ do
+      res <-
+        fmap
+        (length . view peripherals)
+        <$> parseSVD "./test/samples/stm32f405.svd"
+      res `shouldBe` (Right 85)
+
+    it "matches golden pretty printed device" $ do
+      pretty <-
+        parseSVD "./test/samples/stm32f405.svd"
+        >>= \case
+          Left e -> error "Failed parsing"
+          Right x ->
+            pure
+            $ displayPretty
+            $ unAnnotate
+            $ ppDevice x
+      pure $ defaultGolden "stm32f405" pretty
+
+    it "matches golden pretty printed device isrs" $ do
+      pretty <-
+        parseSVD "./test/samples/stm32f405.svd"
+        >>= \case
+          Left e -> error "Failed parsing"
+          Right x ->
+            pure
+            $ displayPretty
+            $ unAnnotate
+            $ ppList ppISR
+            $ Data.List.sortOn
+                interruptValue
+            $ fillMissingInterrupts
+            $ Data.List.nubBy
+                (\x y -> interruptValue x == interruptValue y)
+            $ concatMap
+                periphInterrupts
+                (devicePeripherals x)
+      pure $ defaultGolden "stm32f405-isrs" pretty
+
+    it "matches golden pretty printed device memory map" $ do
+      pretty <-
+        parseSVD "./test/samples/stm32f405.svd"
+        >>= \case
+          Left e -> error "Failed parsing"
+          Right x ->
+            pure
+            $ displayPretty
+            $ unAnnotate
+            $ ppList ppMem
+            $ getDevMemMap x
+      pure $ defaultGolden "stm32f405-memmap" pretty
diff --git a/test/Spec.hs b/test/Spec.hs
new file mode 100644
--- /dev/null
+++ b/test/Spec.hs
@@ -0,0 +1,1 @@
+{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
diff --git a/test/samples/stm32f405.svd b/test/samples/stm32f405.svd
new file mode 100644
--- /dev/null
+++ b/test/samples/stm32f405.svd
@@ -0,0 +1,44526 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<device schemaVersion="1.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="CMSIS-SVD_Schema_1_1.xsd">
+  <name>STM32F405</name>
+  <version>1.2</version>
+  <description>STM32F405</description>
+  <cpu>
+    <name>CM4</name>
+    <revision>r1p0</revision>
+    <endian>little</endian>
+    <mpuPresent>false</mpuPresent>
+    <fpuPresent>false</fpuPresent>
+    <nvicPrioBits>4</nvicPrioBits>
+    <vendorSystickConfig>false</vendorSystickConfig>
+  </cpu>
+  <addressUnitBits>8</addressUnitBits>
+  <width>32</width>
+  <size>0x20</size>
+  <resetValue>0x00000000</resetValue>
+  <resetMask>0xFFFFFFFF</resetMask>
+  <peripherals>
+    <peripheral>
+      <name>RNG</name>
+      <description>Random number generator</description>
+      <groupName>RNG</groupName>
+      <baseAddress>0x50060800</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>FPU</name>
+        <description>FPU interrupt</description>
+        <value>81</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR</name>
+          <displayName>CR</displayName>
+          <description>control register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IE</name>
+              <description>Interrupt enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>IE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>RNG interrupt is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>RNG interrupt is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RNGEN</name>
+              <description>Random number generator
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RNGEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Random number generator is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Random number generator is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SEIS</name>
+              <description>Seed error interrupt
+              status</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>CEIS</name>
+              <description>Clock error interrupt
+              status</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>SECS</name>
+              <description>Seed error current status</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>CECS</name>
+              <description>Clock error current status</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>DRDY</name>
+              <description>Data ready</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DR</name>
+          <displayName>DR</displayName>
+          <description>data register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>RNDATA</name>
+              <description>Random data</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>DCMI</name>
+      <description>Digital camera interface</description>
+      <groupName>DCMI</groupName>
+      <baseAddress>0x50050000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>DCMI</name>
+        <description>DCMI global interrupt</description>
+        <value>78</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR</name>
+          <displayName>CR</displayName>
+          <description>control register 1</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ENABLE</name>
+              <description>DCMI enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>EDM</name>
+              <description>Extended data mode</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>FCRC</name>
+              <description>Frame capture rate control</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>VSPOL</name>
+              <description>Vertical synchronization
+              polarity</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>HSPOL</name>
+              <description>Horizontal synchronization
+              polarity</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PCKPOL</name>
+              <description>Pixel clock polarity</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ESS</name>
+              <description>Embedded synchronization
+              select</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>JPEG</name>
+              <description>JPEG format</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CROP</name>
+              <description>Crop feature</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CM</name>
+              <description>Capture mode</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CAPTURE</name>
+              <description>Capture enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>FNE</name>
+              <description>FIFO not empty</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>VSYNC</name>
+              <description>VSYNC</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>HSYNC</name>
+              <description>HSYNC</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>RIS</name>
+          <displayName>RIS</displayName>
+          <description>raw interrupt status register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>LINE_RIS</name>
+              <description>Line raw interrupt status</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>VSYNC_RIS</name>
+              <description>VSYNC raw interrupt status</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ERR_RIS</name>
+              <description>Synchronization error raw interrupt
+              status</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OVR_RIS</name>
+              <description>Overrun raw interrupt
+              status</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>FRAME_RIS</name>
+              <description>Capture complete raw interrupt
+              status</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IER</name>
+          <displayName>IER</displayName>
+          <description>interrupt enable register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>LINE_IE</name>
+              <description>Line interrupt enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>VSYNC_IE</name>
+              <description>VSYNC interrupt enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ERR_IE</name>
+              <description>Synchronization error interrupt
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OVR_IE</name>
+              <description>Overrun interrupt enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>FRAME_IE</name>
+              <description>Capture complete interrupt
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>MIS</name>
+          <displayName>MIS</displayName>
+          <description>masked interrupt status
+          register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>LINE_MIS</name>
+              <description>Line masked interrupt
+              status</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>VSYNC_MIS</name>
+              <description>VSYNC masked interrupt
+              status</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ERR_MIS</name>
+              <description>Synchronization error masked interrupt
+              status</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OVR_MIS</name>
+              <description>Overrun masked interrupt
+              status</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>FRAME_MIS</name>
+              <description>Capture complete masked interrupt
+              status</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ICR</name>
+          <displayName>ICR</displayName>
+          <description>interrupt clear register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>LINE_ISC</name>
+              <description>line interrupt status
+              clear</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>VSYNC_ISC</name>
+              <description>Vertical synch interrupt status
+              clear</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ERR_ISC</name>
+              <description>Synchronization error interrupt status
+              clear</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OVR_ISC</name>
+              <description>Overrun interrupt status
+              clear</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>FRAME_ISC</name>
+              <description>Capture complete interrupt status
+              clear</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ESCR</name>
+          <displayName>ESCR</displayName>
+          <description>embedded synchronization code
+          register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>FEC</name>
+              <description>Frame end delimiter code</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>LEC</name>
+              <description>Line end delimiter code</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>LSC</name>
+              <description>Line start delimiter code</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>FSC</name>
+              <description>Frame start delimiter code</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ESUR</name>
+          <displayName>ESUR</displayName>
+          <description>embedded synchronization unmask
+          register</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>FEU</name>
+              <description>Frame end delimiter unmask</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>LEU</name>
+              <description>Line end delimiter unmask</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>LSU</name>
+              <description>Line start delimiter
+              unmask</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>FSU</name>
+              <description>Frame start delimiter
+              unmask</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CWSTRT</name>
+          <displayName>CWSTRT</displayName>
+          <description>crop window start</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>VST</name>
+              <description>Vertical start line count</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>13</bitWidth>
+            </field>
+            <field>
+              <name>HOFFCNT</name>
+              <description>Horizontal offset count</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>14</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CWSIZE</name>
+          <displayName>CWSIZE</displayName>
+          <description>crop window size</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>VLINE</name>
+              <description>Vertical line count</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>14</bitWidth>
+            </field>
+            <field>
+              <name>CAPCNT</name>
+              <description>Capture count</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>14</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DR</name>
+          <displayName>DR</displayName>
+          <description>data register</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>Byte3</name>
+              <description>Data byte 3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>Byte2</name>
+              <description>Data byte 2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>Byte1</name>
+              <description>Data byte 1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>Byte0</name>
+              <description>Data byte 0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>FSMC</name>
+      <description>Flexible static memory controller</description>
+      <groupName>FSMC</groupName>
+      <baseAddress>0xA0000000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>FSMC</name>
+        <description>FSMC global interrupt</description>
+        <value>48</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>BCR1</name>
+          <displayName>BCR1</displayName>
+          <description>SRAM/NOR-Flash chip-select control register
+          1</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x000030D0</resetValue>
+          <fields>
+            <field>
+              <name>CBURSTRW</name>
+              <description>CBURSTRW</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CBURSTRW</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Write operations are always performed in asynchronous mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Write operations are performed in synchronous mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ASYNCWAIT</name>
+              <description>ASYNCWAIT</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ASYNCWAIT</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Wait signal not used in asynchronous mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Wait signal used even in asynchronous mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>EXTMOD</name>
+              <description>EXTMOD</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>EXTMOD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Values inside the FMC_BWTR are not taken into account</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Values inside the FMC_BWTR are taken into account</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WAITEN</name>
+              <description>WAITEN</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WAITEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Values inside the FMC_BWTR are taken into account</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>NWAIT signal enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WREN</name>
+              <description>WREN</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WREN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Write operations disabled for the bank by the FMC</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Write operations enabled for the bank by the FMC</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WAITCFG</name>
+              <description>WAITCFG</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WAITCFG</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>BeforeWaitState</name>
+                  <description>NWAIT signal is active one data cycle before wait state</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DuringWaitState</name>
+                  <description>NWAIT signal is active during wait state</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WAITPOL</name>
+              <description>WAITPOL</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WAITPOL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>ActiveLow</name>
+                  <description>NWAIT active low</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveHigh</name>
+                  <description>NWAIT active high</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BURSTEN</name>
+              <description>BURSTEN</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BURSTEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Burst mode disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Burst mode enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FACCEN</name>
+              <description>FACCEN</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FACCEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Corresponding NOR Flash memory access is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Corresponding NOR Flash memory access is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MWID</name>
+              <description>MWID</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>MWID</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Bits8</name>
+                  <description>Memory data bus width 8 bits</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bits16</name>
+                  <description>Memory data bus width 16 bits</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bits32</name>
+                  <description>Memory data bus width 32 bits</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MTYP</name>
+              <description>MTYP</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>MTYP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>SRAM</name>
+                  <description>SRAM memory type</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PSRAM</name>
+                  <description>PSRAM (CRAM) memory type</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Flash</name>
+                  <description>NOR Flash/OneNAND Flash</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MUXEN</name>
+              <description>MUXEN</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MUXEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Address/Data non-multiplexed</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Address/Data multiplexed on databus</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MBKEN</name>
+              <description>MBKEN</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MBKEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Corresponding memory bank is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Corresponding memory bank is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WRAPMOD</name>
+              <description>WRAPMOD</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CPSIZE</name>
+              <description>CRAM page size</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>CPSIZE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoBurstSplit</name>
+                  <description>No burst split when crossing page boundary</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bytes128</name>
+                  <description>128 bytes CRAM page size</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bytes256</name>
+                  <description>256 bytes CRAM page size</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bytes512</name>
+                  <description>512 bytes CRAM page size</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bytes1024</name>
+                  <description>1024 bytes CRAM page size</description>
+                  <value>4</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>4</dim>
+          <dimIncrement>0x8</dimIncrement>
+          <dimIndex>1-4</dimIndex>
+          <name>BTR%s</name>
+          <displayName>BTR1</displayName>
+          <description>SRAM/NOR-Flash chip-select timing register
+          1</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0xFFFFFFFF</resetValue>
+          <fields>
+            <field>
+              <name>ACCMOD</name>
+              <description>ACCMOD</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>ACCMOD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>A</name>
+                  <description>Access mode A</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>B</name>
+                  <description>Access mode B</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>C</name>
+                  <description>Access mode C</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>D</name>
+                  <description>Access mode D</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DATLAT</name>
+              <description>DATLAT</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>CLKDIV</name>
+              <description>CLKDIV</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>BUSTURN</name>
+              <description>BUSTURN</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>DATAST</name>
+              <description>DATAST</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ADDHLD</name>
+              <description>ADDHLD</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ADDSET</name>
+              <description>ADDSET</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>3</dim>
+          <dimIncrement>0x8</dimIncrement>
+          <dimIndex>2-4</dimIndex>
+          <name>BCR%s</name>
+          <displayName>BCR2</displayName>
+          <description>SRAM/NOR-Flash chip-select control register
+          2</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x000030D0</resetValue>
+          <fields>
+            <field>
+              <name>CBURSTRW</name>
+              <description>CBURSTRW</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CBURSTRW</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Write operations are always performed in asynchronous mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Write operations are performed in synchronous mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ASYNCWAIT</name>
+              <description>ASYNCWAIT</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ASYNCWAIT</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Wait signal not used in asynchronous mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Wait signal used even in asynchronous mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>EXTMOD</name>
+              <description>EXTMOD</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>EXTMOD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Values inside the FMC_BWTR are not taken into account</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Values inside the FMC_BWTR are taken into account</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WAITEN</name>
+              <description>WAITEN</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WAITEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Values inside the FMC_BWTR are taken into account</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>NWAIT signal enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WREN</name>
+              <description>WREN</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WREN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Write operations disabled for the bank by the FMC</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Write operations enabled for the bank by the FMC</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WAITCFG</name>
+              <description>WAITCFG</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WAITCFG</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>BeforeWaitState</name>
+                  <description>NWAIT signal is active one data cycle before wait state</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DuringWaitState</name>
+                  <description>NWAIT signal is active during wait state</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WRAPMOD</name>
+              <description>WRAPMOD</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>WAITPOL</name>
+              <description>WAITPOL</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WAITPOL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>ActiveLow</name>
+                  <description>NWAIT active low</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveHigh</name>
+                  <description>NWAIT active high</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BURSTEN</name>
+              <description>BURSTEN</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BURSTEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Burst mode disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Burst mode enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FACCEN</name>
+              <description>FACCEN</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FACCEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Corresponding NOR Flash memory access is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Corresponding NOR Flash memory access is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MWID</name>
+              <description>MWID</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>MWID</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Bits8</name>
+                  <description>Memory data bus width 8 bits</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bits16</name>
+                  <description>Memory data bus width 16 bits</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bits32</name>
+                  <description>Memory data bus width 32 bits</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MTYP</name>
+              <description>MTYP</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>MTYP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>SRAM</name>
+                  <description>SRAM memory type</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PSRAM</name>
+                  <description>PSRAM (CRAM) memory type</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Flash</name>
+                  <description>NOR Flash/OneNAND Flash</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MUXEN</name>
+              <description>MUXEN</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MUXEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Address/Data non-multiplexed</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Address/Data multiplexed on databus</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MBKEN</name>
+              <description>MBKEN</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MBKEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Corresponding memory bank is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Corresponding memory bank is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CPSIZE</name>
+              <description>CRAM page size</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>CPSIZE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoBurstSplit</name>
+                  <description>No burst split when crossing page boundary</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bytes128</name>
+                  <description>128 bytes CRAM page size</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bytes256</name>
+                  <description>256 bytes CRAM page size</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bytes512</name>
+                  <description>512 bytes CRAM page size</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bytes1024</name>
+                  <description>1024 bytes CRAM page size</description>
+                  <value>4</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>3</dim>
+          <dimIncrement>0x20</dimIncrement>
+          <dimIndex>2-4</dimIndex>
+          <name>PCR%s</name>
+          <displayName>PCR2</displayName>
+          <description>PC Card/NAND Flash control register
+          2</description>
+          <addressOffset>0x60</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000018</resetValue>
+          <fields>
+            <field>
+              <name>ECCPS</name>
+              <description>ECCPS</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>ECCPS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Bytes256</name>
+                  <description>ECC page size 256 bytes</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bytes512</name>
+                  <description>ECC page size 512 bytes</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bytes1024</name>
+                  <description>ECC page size 1024 bytes</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bytes2048</name>
+                  <description>ECC page size 2048 bytes</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bytes4096</name>
+                  <description>ECC page size 4096 bytes</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bytes8192</name>
+                  <description>ECC page size 8192 bytes</description>
+                  <value>5</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TAR</name>
+              <description>TAR</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>TCLR</name>
+              <description>TCLR</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ECCEN</name>
+              <description>ECCEN</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ECCEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>ECC logic is disabled and reset</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>ECC logic is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PWID</name>
+              <description>PWID</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>PWID</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Bits8</name>
+                  <description>External memory device width 8 bits</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bits16</name>
+                  <description>External memory device width 16 bits</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PTYP</name>
+              <description>PTYP</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PTYP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NANDFlash</name>
+                  <description>NAND Flash</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PBKEN</name>
+              <description>PBKEN</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PBKEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Corresponding memory bank is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Corresponding memory bank is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PWAITEN</name>
+              <description>PWAITEN</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PWAITEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Wait feature disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Wait feature enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>3</dim>
+          <dimIncrement>0x20</dimIncrement>
+          <dimIndex>2-4</dimIndex>
+          <name>SR%s</name>
+          <displayName>SR2</displayName>
+          <description>FIFO status and interrupt register
+          2</description>
+          <addressOffset>0x64</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000040</resetValue>
+          <fields>
+            <field>
+              <name>FEMPT</name>
+              <description>FEMPT</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>FEMPT</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotEmpty</name>
+                  <description>FIFO not empty</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Empty</name>
+                  <description>FIFO empty</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IFEN</name>
+              <description>IFEN</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>IFEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Interrupt falling edge detection request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt falling edge detection request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ILEN</name>
+              <description>ILEN</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>ILEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Interrupt high-level detection request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt high-level detection request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IREN</name>
+              <description>IREN</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>IREN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Interrupt rising edge detection request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt rising edge detection request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IFS</name>
+              <description>IFS</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>IFS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>DidNotOccur</name>
+                  <description>Interrupt falling edge did not occur</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Occurred</name>
+                  <description>Interrupt falling edge occurred</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ILS</name>
+              <description>ILS</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>ILS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>DidNotOccur</name>
+                  <description>Interrupt high-level did not occur</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Occurred</name>
+                  <description>Interrupt high-level occurred</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IRS</name>
+              <description>IRS</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>IRS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>DidNotOccur</name>
+                  <description>Interrupt rising edge did not occur</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Occurred</name>
+                  <description>Interrupt rising edge occurred</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PMEM2</name>
+          <displayName>PMEM2</displayName>
+          <description>Common memory space timing register
+          2</description>
+          <addressOffset>0x68</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0xFCFCFCFC</resetValue>
+          <fields>
+            <field>
+              <name>MEMHIZ</name>
+              <description>MEMHIZx</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MEMHOLD</name>
+              <description>MEMHOLDx</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MEMWAIT</name>
+              <description>MEMWAITx</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MEMSET</name>
+              <description>MEMSETx</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PATT2</name>
+          <displayName>PATT2</displayName>
+          <description>Attribute memory space timing register
+          2</description>
+          <addressOffset>0x6C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0xFCFCFCFC</resetValue>
+          <fields>
+            <field>
+              <name>ATTHIZ</name>
+              <description>ATTHIZx</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ATTHOLD</name>
+              <description>ATTHOLDx</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ATTWAIT</name>
+              <description>ATTWAITx</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ATTSET</name>
+              <description>ATTSETx</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ECCR2</name>
+          <displayName>ECCR2</displayName>
+          <description>ECC result register 2</description>
+          <addressOffset>0x74</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ECC</name>
+              <description>ECCx</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PMEM3</name>
+          <displayName>PMEM3</displayName>
+          <description>Common memory space timing register
+          3</description>
+          <addressOffset>0x88</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0xFCFCFCFC</resetValue>
+          <fields>
+            <field>
+              <name>MEMHIZ</name>
+              <description>MEMHIZx</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MEMHOLD</name>
+              <description>MEMHOLDx</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MEMWAIT</name>
+              <description>MEMWAITx</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MEMSET</name>
+              <description>MEMSETx</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PATT3</name>
+          <displayName>PATT3</displayName>
+          <description>Attribute memory space timing register
+          3</description>
+          <addressOffset>0x8C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0xFCFCFCFC</resetValue>
+          <fields>
+            <field>
+              <name>ATTHIZ</name>
+              <description>ATTHIZx</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ATTHOLD</name>
+              <description>ATTHOLDx</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ATTWAIT</name>
+              <description>ATTWAITx</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ATTSET</name>
+              <description>ATTSETx</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ECCR3</name>
+          <displayName>ECCR3</displayName>
+          <description>ECC result register 3</description>
+          <addressOffset>0x94</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ECC</name>
+              <description>ECCx</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PMEM4</name>
+          <displayName>PMEM4</displayName>
+          <description>Common memory space timing register
+          4</description>
+          <addressOffset>0xA8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0xFCFCFCFC</resetValue>
+          <fields>
+            <field>
+              <name>MEMHIZ</name>
+              <description>MEMHIZx</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MEMHOLD</name>
+              <description>MEMHOLDx</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MEMWAIT</name>
+              <description>MEMWAITx</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MEMSET</name>
+              <description>MEMSETx</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PATT4</name>
+          <displayName>PATT4</displayName>
+          <description>Attribute memory space timing register
+          4</description>
+          <addressOffset>0xAC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0xFCFCFCFC</resetValue>
+          <fields>
+            <field>
+              <name>ATTHIZ</name>
+              <description>ATTHIZx</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ATTHOLD</name>
+              <description>ATTHOLDx</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ATTWAIT</name>
+              <description>ATTWAITx</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ATTSET</name>
+              <description>ATTSETx</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>254</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PIO4</name>
+          <displayName>PIO4</displayName>
+          <description>I/O space timing register 4</description>
+          <addressOffset>0xB0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0xFCFCFCFC</resetValue>
+          <fields>
+            <field>
+              <name>IOHIZx</name>
+              <description>IOHIZx</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IOHOLDx</name>
+              <description>IOHOLDx</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IOWAITx</name>
+              <description>IOWAITx</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IOSETx</name>
+              <description>IOSETx</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>4</dim>
+          <dimIncrement>0x8</dimIncrement>
+          <dimIndex>1-4</dimIndex>
+          <name>BWTR%s</name>
+          <displayName>BWTR1</displayName>
+          <description>SRAM/NOR-Flash write timing registers
+          1</description>
+          <addressOffset>0x104</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x0FFFFFFF</resetValue>
+          <fields>
+            <field>
+              <name>ACCMOD</name>
+              <description>ACCMOD</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>ACCMOD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>A</name>
+                  <description>Access mode A</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>B</name>
+                  <description>Access mode B</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>C</name>
+                  <description>Access mode C</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>D</name>
+                  <description>Access mode D</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DATLAT</name>
+              <description>DATLAT</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>CLKDIV</name>
+              <description>CLKDIV</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>DATAST</name>
+              <description>DATAST</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ADDHLD</name>
+              <description>ADDHLD</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ADDSET</name>
+              <description>ADDSET</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>BUSTURN</name>
+              <description>Bus turnaround phase duration</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>4</bitWidth>
+              <access>read-write</access>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>DBGMCU</name>
+      <description>Debug support</description>
+      <groupName>DBG</groupName>
+      <baseAddress>0xE0042000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>IDCODE</name>
+          <displayName>IDCODE</displayName>
+          <description>IDCODE</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x10006411</resetValue>
+          <fields>
+            <field>
+              <name>DEV_ID</name>
+              <description>DEV_ID</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>12</bitWidth>
+            </field>
+            <field>
+              <name>REV_ID</name>
+              <description>REV_ID</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR</name>
+          <displayName>CR</displayName>
+          <description>Control Register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DBG_SLEEP</name>
+              <description>DBG_SLEEP</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_STOP</name>
+              <description>DBG_STOP</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_STANDBY</name>
+              <description>DBG_STANDBY</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TRACE_IOEN</name>
+              <description>TRACE_IOEN</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TRACE_MODE</name>
+              <description>TRACE_MODE</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>DBG_I2C2_SMBUS_TIMEOUT</name>
+              <description>DBG_I2C2_SMBUS_TIMEOUT</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM8_STOP</name>
+              <description>DBG_TIM8_STOP</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM5_STOP</name>
+              <description>DBG_TIM5_STOP</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM6_STOP</name>
+              <description>DBG_TIM6_STOP</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM7_STOP</name>
+              <description>DBG_TIM7_STOP</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>APB1_FZ</name>
+          <displayName>APB1_FZ</displayName>
+          <description>Debug MCU APB1 Freeze registe</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DBG_TIM2_STOP</name>
+              <description>DBG_TIM2_STOP</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM3_STOP</name>
+              <description>DBG_TIM3 _STOP</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM4_STOP</name>
+              <description>DBG_TIM4_STOP</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM5_STOP</name>
+              <description>DBG_TIM5_STOP</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM6_STOP</name>
+              <description>DBG_TIM6_STOP</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM7_STOP</name>
+              <description>DBG_TIM7_STOP</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM12_STOP</name>
+              <description>DBG_TIM12_STOP</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM13_STOP</name>
+              <description>DBG_TIM13_STOP</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM14_STOP</name>
+              <description>DBG_TIM14_STOP</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_WWDG_STOP</name>
+              <description>DBG_WWDG_STOP</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_IWDG_STOP</name>
+              <description>DBG_IWDEG_STOP</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_J2C1_SMBUS_TIMEOUT</name>
+              <description>DBG_J2C1_SMBUS_TIMEOUT</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_J2C2_SMBUS_TIMEOUT</name>
+              <description>DBG_J2C2_SMBUS_TIMEOUT</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_J2C3SMBUS_TIMEOUT</name>
+              <description>DBG_J2C3SMBUS_TIMEOUT</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_CAN1_STOP</name>
+              <description>DBG_CAN1_STOP</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_CAN2_STOP</name>
+              <description>DBG_CAN2_STOP</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>APB2_FZ</name>
+          <displayName>APB2_FZ</displayName>
+          <description>Debug MCU APB2 Freeze registe</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DBG_TIM1_STOP</name>
+              <description>TIM1 counter stopped when core is
+              halted</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM8_STOP</name>
+              <description>TIM8 counter stopped when core is
+              halted</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM9_STOP</name>
+              <description>TIM9 counter stopped when core is
+              halted</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM10_STOP</name>
+              <description>TIM10 counter stopped when core is
+              halted</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBG_TIM11_STOP</name>
+              <description>TIM11 counter stopped when core is
+              halted</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>DMA2</name>
+      <description>DMA controller</description>
+      <groupName>DMA</groupName>
+      <baseAddress>0x40026400</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>DMA2_Stream0</name>
+        <description>DMA2 Stream0 global interrupt</description>
+        <value>56</value>
+      </interrupt>
+      <interrupt>
+        <name>DMA2_Stream1</name>
+        <description>DMA2 Stream1 global interrupt</description>
+        <value>57</value>
+      </interrupt>
+      <interrupt>
+        <name>DMA2_Stream2</name>
+        <description>DMA2 Stream2 global interrupt</description>
+        <value>58</value>
+      </interrupt>
+      <interrupt>
+        <name>DMA2_Stream3</name>
+        <description>DMA2 Stream3 global interrupt</description>
+        <value>59</value>
+      </interrupt>
+      <interrupt>
+        <name>DMA2_Stream4</name>
+        <description>DMA2 Stream4 global interrupt</description>
+        <value>60</value>
+      </interrupt>
+      <interrupt>
+        <name>DMA2_Stream5</name>
+        <description>DMA2 Stream5 global interrupt</description>
+        <value>68</value>
+      </interrupt>
+      <interrupt>
+        <name>DMA2_Stream6</name>
+        <description>DMA2 Stream6 global interrupt</description>
+        <value>69</value>
+      </interrupt>
+      <interrupt>
+        <name>DMA2_Stream7</name>
+        <description>DMA2 Stream7 global interrupt</description>
+        <value>70</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>LISR</name>
+          <displayName>LISR</displayName>
+          <description>low interrupt status register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TCIF3</name>
+              <description>Stream x transfer complete interrupt
+              flag (x = 3..0)</description>
+              <bitOffset>27</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TCIF0"/>
+            </field>
+            <field>
+              <name>HTIF3</name>
+              <description>Stream x half transfer interrupt flag
+              (x=3..0)</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="HTIF0"/>
+            </field>
+            <field>
+              <name>TEIF3</name>
+              <description>Stream x transfer error interrupt flag
+              (x=3..0)</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TEIF0"/>
+            </field>
+            <field>
+              <name>DMEIF3</name>
+              <description>Stream x direct mode error interrupt
+              flag (x=3..0)</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DMEIF0"/>
+            </field>
+            <field>
+              <name>FEIF3</name>
+              <description>Stream x FIFO error interrupt flag
+              (x=3..0)</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="FEIF0"/>
+            </field>
+            <field>
+              <name>TCIF2</name>
+              <description>Stream x transfer complete interrupt
+              flag (x = 3..0)</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TCIF0"/>
+            </field>
+            <field>
+              <name>HTIF2</name>
+              <description>Stream x half transfer interrupt flag
+              (x=3..0)</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="HTIF0"/>
+            </field>
+            <field>
+              <name>TEIF2</name>
+              <description>Stream x transfer error interrupt flag
+              (x=3..0)</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TEIF0"/>
+            </field>
+            <field>
+              <name>DMEIF2</name>
+              <description>Stream x direct mode error interrupt
+              flag (x=3..0)</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DMEIF0"/>
+            </field>
+            <field>
+              <name>FEIF2</name>
+              <description>Stream x FIFO error interrupt flag
+              (x=3..0)</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="FEIF0"/>
+            </field>
+            <field>
+              <name>TCIF1</name>
+              <description>Stream x transfer complete interrupt
+              flag (x = 3..0)</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TCIF0"/>
+            </field>
+            <field>
+              <name>HTIF1</name>
+              <description>Stream x half transfer interrupt flag
+              (x=3..0)</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="HTIF0"/>
+            </field>
+            <field>
+              <name>TEIF1</name>
+              <description>Stream x transfer error interrupt flag
+              (x=3..0)</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TEIF0"/>
+            </field>
+            <field>
+              <name>DMEIF1</name>
+              <description>Stream x direct mode error interrupt
+              flag (x=3..0)</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DMEIF0"/>
+            </field>
+            <field>
+              <name>FEIF1</name>
+              <description>Stream x FIFO error interrupt flag
+              (x=3..0)</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="FEIF0"/>
+            </field>
+            <field>
+              <name>TCIF0</name>
+              <description>Stream x transfer complete interrupt
+              flag (x = 3..0)</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TCIF0</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotComplete</name>
+                  <description>No transfer complete event on stream x</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Complete</name>
+                  <description>A transfer complete event occurred on stream x</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>HTIF0</name>
+              <description>Stream x half transfer interrupt flag
+              (x=3..0)</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>HTIF0</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotHalf</name>
+                  <description>No half transfer event on stream x</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Half</name>
+                  <description>A half transfer event occurred on stream x</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TEIF0</name>
+              <description>Stream x transfer error interrupt flag
+              (x=3..0)</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TEIF0</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoError</name>
+                  <description>No transfer error on stream x</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Error</name>
+                  <description>A transfer error occurred on stream x</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DMEIF0</name>
+              <description>Stream x direct mode error interrupt
+              flag (x=3..0)</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DMEIF0</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoError</name>
+                  <description>No Direct Mode error on stream x</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Error</name>
+                  <description>A Direct Mode error occurred on stream x</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FEIF0</name>
+              <description>Stream x FIFO error interrupt flag
+              (x=3..0)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FEIF0</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoError</name>
+                  <description>No FIFO error event on stream x</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Error</name>
+                  <description>A FIFO error event occurred on stream x</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HISR</name>
+          <displayName>HISR</displayName>
+          <description>high interrupt status register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TCIF7</name>
+              <description>Stream x transfer complete interrupt
+              flag (x=7..4)</description>
+              <bitOffset>27</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TCIF4"/>
+            </field>
+            <field>
+              <name>HTIF7</name>
+              <description>Stream x half transfer interrupt flag
+              (x=7..4)</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="HTIF4"/>
+            </field>
+            <field>
+              <name>TEIF7</name>
+              <description>Stream x transfer error interrupt flag
+              (x=7..4)</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TEIF4"/>
+            </field>
+            <field>
+              <name>DMEIF7</name>
+              <description>Stream x direct mode error interrupt
+              flag (x=7..4)</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DMEIF4"/>
+            </field>
+            <field>
+              <name>FEIF7</name>
+              <description>Stream x FIFO error interrupt flag
+              (x=7..4)</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="FEIF4"/>
+            </field>
+            <field>
+              <name>TCIF6</name>
+              <description>Stream x transfer complete interrupt
+              flag (x=7..4)</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TCIF4"/>
+            </field>
+            <field>
+              <name>HTIF6</name>
+              <description>Stream x half transfer interrupt flag
+              (x=7..4)</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="HTIF4"/>
+            </field>
+            <field>
+              <name>TEIF6</name>
+              <description>Stream x transfer error interrupt flag
+              (x=7..4)</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TEIF4"/>
+            </field>
+            <field>
+              <name>DMEIF6</name>
+              <description>Stream x direct mode error interrupt
+              flag (x=7..4)</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DMEIF4"/>
+            </field>
+            <field>
+              <name>FEIF6</name>
+              <description>Stream x FIFO error interrupt flag
+              (x=7..4)</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="FEIF4"/>
+            </field>
+            <field>
+              <name>TCIF5</name>
+              <description>Stream x transfer complete interrupt
+              flag (x=7..4)</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TCIF4"/>
+            </field>
+            <field>
+              <name>HTIF5</name>
+              <description>Stream x half transfer interrupt flag
+              (x=7..4)</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="HTIF4"/>
+            </field>
+            <field>
+              <name>TEIF5</name>
+              <description>Stream x transfer error interrupt flag
+              (x=7..4)</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TEIF4"/>
+            </field>
+            <field>
+              <name>DMEIF5</name>
+              <description>Stream x direct mode error interrupt
+              flag (x=7..4)</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DMEIF4"/>
+            </field>
+            <field>
+              <name>FEIF5</name>
+              <description>Stream x FIFO error interrupt flag
+              (x=7..4)</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="FEIF4"/>
+            </field>
+            <field>
+              <name>TCIF4</name>
+              <description>Stream x transfer complete interrupt
+              flag (x=7..4)</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TCIF4</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotComplete</name>
+                  <description>No transfer complete event on stream x</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Complete</name>
+                  <description>A transfer complete event occurred on stream x</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>HTIF4</name>
+              <description>Stream x half transfer interrupt flag
+              (x=7..4)</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>HTIF4</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotHalf</name>
+                  <description>No half transfer event on stream x</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Half</name>
+                  <description>A half transfer event occurred on stream x</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TEIF4</name>
+              <description>Stream x transfer error interrupt flag
+              (x=7..4)</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TEIF4</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoError</name>
+                  <description>No transfer error on stream x</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Error</name>
+                  <description>A transfer error occurred on stream x</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DMEIF4</name>
+              <description>Stream x direct mode error interrupt
+              flag (x=7..4)</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DMEIF4</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoError</name>
+                  <description>No Direct Mode error on stream x</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Error</name>
+                  <description>A Direct Mode error occurred on stream x</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FEIF4</name>
+              <description>Stream x FIFO error interrupt flag
+              (x=7..4)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FEIF4</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoError</name>
+                  <description>No FIFO error event on stream x</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Error</name>
+                  <description>A FIFO error event occurred on stream x</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>LIFCR</name>
+          <displayName>LIFCR</displayName>
+          <description>low interrupt flag clear
+          register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CTCIF3</name>
+              <description>Stream x clear transfer complete
+              interrupt flag (x = 3..0)</description>
+              <bitOffset>27</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CTCIF0"/>
+            </field>
+            <field>
+              <name>CHTIF3</name>
+              <description>Stream x clear half transfer interrupt
+              flag (x = 3..0)</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CHTIF0"/>
+            </field>
+            <field>
+              <name>CTEIF3</name>
+              <description>Stream x clear transfer error interrupt
+              flag (x = 3..0)</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CTEIF0"/>
+            </field>
+            <field>
+              <name>CDMEIF3</name>
+              <description>Stream x clear direct mode error
+              interrupt flag (x = 3..0)</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CDMEIF0"/>
+            </field>
+            <field>
+              <name>CFEIF3</name>
+              <description>Stream x clear FIFO error interrupt flag
+              (x = 3..0)</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CFEIF0"/>
+            </field>
+            <field>
+              <name>CTCIF2</name>
+              <description>Stream x clear transfer complete
+              interrupt flag (x = 3..0)</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CTCIF0"/>
+            </field>
+            <field>
+              <name>CHTIF2</name>
+              <description>Stream x clear half transfer interrupt
+              flag (x = 3..0)</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CHTIF0"/>
+            </field>
+            <field>
+              <name>CTEIF2</name>
+              <description>Stream x clear transfer error interrupt
+              flag (x = 3..0)</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CTEIF0"/>
+            </field>
+            <field>
+              <name>CDMEIF2</name>
+              <description>Stream x clear direct mode error
+              interrupt flag (x = 3..0)</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CDMEIF0"/>
+            </field>
+            <field>
+              <name>CFEIF2</name>
+              <description>Stream x clear FIFO error interrupt flag
+              (x = 3..0)</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CFEIF0"/>
+            </field>
+            <field>
+              <name>CTCIF1</name>
+              <description>Stream x clear transfer complete
+              interrupt flag (x = 3..0)</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CTCIF0"/>
+            </field>
+            <field>
+              <name>CHTIF1</name>
+              <description>Stream x clear half transfer interrupt
+              flag (x = 3..0)</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CHTIF0"/>
+            </field>
+            <field>
+              <name>CTEIF1</name>
+              <description>Stream x clear transfer error interrupt
+              flag (x = 3..0)</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CTEIF0"/>
+            </field>
+            <field>
+              <name>CDMEIF1</name>
+              <description>Stream x clear direct mode error
+              interrupt flag (x = 3..0)</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CDMEIF0"/>
+            </field>
+            <field>
+              <name>CFEIF1</name>
+              <description>Stream x clear FIFO error interrupt flag
+              (x = 3..0)</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CFEIF0"/>
+            </field>
+            <field>
+              <name>CTCIF0</name>
+              <description>Stream x clear transfer complete
+              interrupt flag (x = 3..0)</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CTCIF0</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear the corresponding TCIFx flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CHTIF0</name>
+              <description>Stream x clear half transfer interrupt
+              flag (x = 3..0)</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CHTIF0</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear the corresponding HTIFx flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CTEIF0</name>
+              <description>Stream x clear transfer error interrupt
+              flag (x = 3..0)</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CTEIF0</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear the corresponding TEIFx flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CDMEIF0</name>
+              <description>Stream x clear direct mode error
+              interrupt flag (x = 3..0)</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CDMEIF0</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear the corresponding DMEIFx flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CFEIF0</name>
+              <description>Stream x clear FIFO error interrupt flag
+              (x = 3..0)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CFEIF0</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear the corresponding CFEIFx flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HIFCR</name>
+          <displayName>HIFCR</displayName>
+          <description>high interrupt flag clear
+          register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CTCIF7</name>
+              <description>Stream x clear transfer complete
+              interrupt flag (x = 7..4)</description>
+              <bitOffset>27</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CTCIF4"/>
+            </field>
+            <field>
+              <name>CHTIF7</name>
+              <description>Stream x clear half transfer interrupt
+              flag (x = 7..4)</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CHTIF4"/>
+            </field>
+            <field>
+              <name>CTEIF7</name>
+              <description>Stream x clear transfer error interrupt
+              flag (x = 7..4)</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CTEIF4"/>
+            </field>
+            <field>
+              <name>CDMEIF7</name>
+              <description>Stream x clear direct mode error
+              interrupt flag (x = 7..4)</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CDMEIF4"/>
+            </field>
+            <field>
+              <name>CFEIF7</name>
+              <description>Stream x clear FIFO error interrupt flag
+              (x = 7..4)</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CFEIF4"/>
+            </field>
+            <field>
+              <name>CTCIF6</name>
+              <description>Stream x clear transfer complete
+              interrupt flag (x = 7..4)</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CTCIF4"/>
+            </field>
+            <field>
+              <name>CHTIF6</name>
+              <description>Stream x clear half transfer interrupt
+              flag (x = 7..4)</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CHTIF4"/>
+            </field>
+            <field>
+              <name>CTEIF6</name>
+              <description>Stream x clear transfer error interrupt
+              flag (x = 7..4)</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CTEIF4"/>
+            </field>
+            <field>
+              <name>CDMEIF6</name>
+              <description>Stream x clear direct mode error
+              interrupt flag (x = 7..4)</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CDMEIF4"/>
+            </field>
+            <field>
+              <name>CFEIF6</name>
+              <description>Stream x clear FIFO error interrupt flag
+              (x = 7..4)</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CFEIF4"/>
+            </field>
+            <field>
+              <name>CTCIF5</name>
+              <description>Stream x clear transfer complete
+              interrupt flag (x = 7..4)</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CTCIF4"/>
+            </field>
+            <field>
+              <name>CHTIF5</name>
+              <description>Stream x clear half transfer interrupt
+              flag (x = 7..4)</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CHTIF4"/>
+            </field>
+            <field>
+              <name>CTEIF5</name>
+              <description>Stream x clear transfer error interrupt
+              flag (x = 7..4)</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CTEIF4"/>
+            </field>
+            <field>
+              <name>CDMEIF5</name>
+              <description>Stream x clear direct mode error
+              interrupt flag (x = 7..4)</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CDMEIF4"/>
+            </field>
+            <field>
+              <name>CFEIF5</name>
+              <description>Stream x clear FIFO error interrupt flag
+              (x = 7..4)</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CFEIF4"/>
+            </field>
+            <field>
+              <name>CTCIF4</name>
+              <description>Stream x clear transfer complete
+              interrupt flag (x = 7..4)</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CTCIF4</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear the corresponding TCIFx flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CHTIF4</name>
+              <description>Stream x clear half transfer interrupt
+              flag (x = 7..4)</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CHTIF4</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear the corresponding HTIFx flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CTEIF4</name>
+              <description>Stream x clear transfer error interrupt
+              flag (x = 7..4)</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CTEIF4</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear the corresponding TEIFx flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CDMEIF4</name>
+              <description>Stream x clear direct mode error
+              interrupt flag (x = 7..4)</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CDMEIF4</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear the corresponding DMEIFx flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CFEIF4</name>
+              <description>Stream x clear FIFO error interrupt flag
+              (x = 7..4)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CFEIF4</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear the corresponding CFEIFx flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <cluster>
+          <dim>8</dim>
+          <dimIncrement>0x18</dimIncrement>
+          <dimIndex>0-7</dimIndex>
+          <name>ST%s</name>
+          <description>Stream cluster: S?CR, S?NDTR, S?M0AR, S?M1AR and S?FCR registers</description>
+          <addressOffset>0x10</addressOffset>
+          <register>
+            <name>CR</name>
+            <displayName>S0CR</displayName>
+            <description>stream x configuration
+          register</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>CHSEL</name>
+                <description>Channel selection</description>
+                <bitOffset>25</bitOffset>
+                <bitWidth>3</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>7</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+              <field>
+                <name>MBURST</name>
+                <description>Memory burst transfer
+              configuration</description>
+                <bitOffset>23</bitOffset>
+                <bitWidth>2</bitWidth>
+                <enumeratedValues derivedFrom="PBURST"/>
+              </field>
+              <field>
+                <name>PBURST</name>
+                <description>Peripheral burst transfer
+              configuration</description>
+                <bitOffset>21</bitOffset>
+                <bitWidth>2</bitWidth>
+                <enumeratedValues>
+                  <name>PBURST</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Single</name>
+                    <description>Single transfer</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>INCR4</name>
+                    <description>Incremental burst of 4 beats</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>INCR8</name>
+                    <description>Incremental burst of 8 beats</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>INCR16</name>
+                    <description>Incremental burst of 16 beats</description>
+                    <value>3</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>CT</name>
+                <description>Current target (only in double buffer
+              mode)</description>
+                <bitOffset>19</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>CT</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Memory0</name>
+                    <description>The current target memory is Memory 0</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Memory1</name>
+                    <description>The current target memory is Memory 1</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>DBM</name>
+                <description>Double buffer mode</description>
+                <bitOffset>18</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>DBM</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>No buffer switching at the end of transfer</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Memory target switched at the end of the DMA transfer</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>PL</name>
+                <description>Priority level</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>2</bitWidth>
+                <enumeratedValues>
+                  <name>PL</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Low</name>
+                    <description>Low</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Medium</name>
+                    <description>Medium</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>High</name>
+                    <description>High</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>VeryHigh</name>
+                    <description>Very high</description>
+                    <value>3</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>PINCOS</name>
+                <description>Peripheral increment offset
+              size</description>
+                <bitOffset>15</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>PINCOS</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>PSIZE</name>
+                    <description>The offset size for the peripheral address calculation is linked to the PSIZE</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Fixed4</name>
+                    <description>The offset size for the peripheral address calculation is fixed to 4 (32-bit alignment)</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>MSIZE</name>
+                <description>Memory data size</description>
+                <bitOffset>13</bitOffset>
+                <bitWidth>2</bitWidth>
+                <enumeratedValues derivedFrom="PSIZE"/>
+              </field>
+              <field>
+                <name>PSIZE</name>
+                <description>Peripheral data size</description>
+                <bitOffset>11</bitOffset>
+                <bitWidth>2</bitWidth>
+                <enumeratedValues>
+                  <name>PSIZE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Bits8</name>
+                    <description>Byte (8-bit)</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Bits16</name>
+                    <description>Half-word (16-bit)</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Bits32</name>
+                    <description>Word (32-bit)</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>MINC</name>
+                <description>Memory increment mode</description>
+                <bitOffset>10</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues derivedFrom="PINC"/>
+              </field>
+              <field>
+                <name>PINC</name>
+                <description>Peripheral increment mode</description>
+                <bitOffset>9</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>PINC</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Fixed</name>
+                    <description>Address pointer is fixed</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Incremented</name>
+                    <description>Address pointer is incremented after each data transfer</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>CIRC</name>
+                <description>Circular mode</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>CIRC</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>Circular mode disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Circular mode enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>DIR</name>
+                <description>Data transfer direction</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>2</bitWidth>
+                <enumeratedValues>
+                  <name>DIR</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>PeripheralToMemory</name>
+                    <description>Peripheral-to-memory</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>MemoryToPeripheral</name>
+                    <description>Memory-to-peripheral</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>MemoryToMemory</name>
+                    <description>Memory-to-memory</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>PFCTRL</name>
+                <description>Peripheral flow controller</description>
+                <bitOffset>5</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>PFCTRL</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>DMA</name>
+                    <description>The DMA is the flow controller</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Peripheral</name>
+                    <description>The peripheral is the flow controller</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>TCIE</name>
+                <description>Transfer complete interrupt
+              enable</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>TCIE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>TC interrupt disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>TC interrupt enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>HTIE</name>
+                <description>Half transfer interrupt
+              enable</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>HTIE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>HT interrupt disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>HT interrupt enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>TEIE</name>
+                <description>Transfer error interrupt
+              enable</description>
+                <bitOffset>2</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>TEIE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>TE interrupt disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>TE interrupt enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>DMEIE</name>
+                <description>Direct mode error interrupt
+              enable</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>DMEIE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>DME interrupt disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>DME interrupt enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>EN</name>
+                <description>Stream enable / flag stream ready when
+              read low</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>EN</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>Stream disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Stream enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>NDTR</name>
+            <displayName>S0NDTR</displayName>
+            <description>stream x number of data
+          register</description>
+            <addressOffset>0x4</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>NDT</name>
+                <description>Number of data items to
+              transfer</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>16</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>65535</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>PAR</name>
+            <displayName>S0PAR</displayName>
+            <description>stream x peripheral address
+          register</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>PA</name>
+                <description>Peripheral address</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>M0AR</name>
+            <displayName>S0M0AR</displayName>
+            <description>stream x memory 0 address
+          register</description>
+            <addressOffset>0xC</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>M0A</name>
+                <description>Memory 0 address</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>M1AR</name>
+            <displayName>S0M1AR</displayName>
+            <description>stream x memory 1 address
+          register</description>
+            <addressOffset>0x10</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>M1A</name>
+                <description>Memory 1 address (used in case of Double
+              buffer mode)</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>FCR</name>
+            <displayName>S0FCR</displayName>
+            <description>stream x FIFO control register</description>
+            <addressOffset>0x14</addressOffset>
+            <size>0x20</size>
+            <resetValue>0x00000021</resetValue>
+            <fields>
+              <field>
+                <name>FEIE</name>
+                <description>FIFO error interrupt
+              enable</description>
+                <bitOffset>7</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+                <enumeratedValues>
+                  <name>FEIE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>FE interrupt disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>FE interrupt enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>FS</name>
+                <description>FIFO status</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>3</bitWidth>
+                <access>read-only</access>
+                <enumeratedValues>
+                  <name>FS</name>
+                  <usage>read</usage>
+                  <enumeratedValue>
+                    <name>Quarter1</name>
+                    <description>0 &lt; fifo_level &lt; 1/4</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Quarter2</name>
+                    <description>1/4 &lt;= fifo_level &lt; 1/2</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Quarter3</name>
+                    <description>1/2 &lt;= fifo_level &lt; 3/4</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Quarter4</name>
+                    <description>3/4 &lt;= fifo_level &lt; full</description>
+                    <value>3</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Empty</name>
+                    <description>FIFO is empty</description>
+                    <value>4</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Full</name>
+                    <description>FIFO is full</description>
+                    <value>5</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>DMDIS</name>
+                <description>Direct mode disable</description>
+                <bitOffset>2</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+                <enumeratedValues>
+                  <name>DMDIS</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Direct mode is enabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>Direct mode is disabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>FTH</name>
+                <description>FIFO threshold selection</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>2</bitWidth>
+                <access>read-write</access>
+                <enumeratedValues>
+                  <name>FTH</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Quarter</name>
+                    <description>1/4 full FIFO</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Half</name>
+                    <description>1/2 full FIFO</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>ThreeQuarters</name>
+                    <description>3/4 full FIFO</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Full</name>
+                    <description>Full FIFO</description>
+                    <value>3</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+      </registers>
+    </peripheral>
+    <peripheral derivedFrom="DMA2">
+      <name>DMA1</name>
+      <baseAddress>0x40026000</baseAddress>
+      <interrupt>
+        <name>DMA1_Stream0</name>
+        <description>DMA1 Stream0 global interrupt</description>
+        <value>11</value>
+      </interrupt>
+      <interrupt>
+        <name>DMA1_Stream1</name>
+        <description>DMA1 Stream1 global interrupt</description>
+        <value>12</value>
+      </interrupt>
+      <interrupt>
+        <name>DMA1_Stream2</name>
+        <description>DMA1 Stream2 global interrupt</description>
+        <value>13</value>
+      </interrupt>
+      <interrupt>
+        <name>DMA1_Stream3</name>
+        <description>DMA1 Stream3 global interrupt</description>
+        <value>14</value>
+      </interrupt>
+      <interrupt>
+        <name>DMA1_Stream4</name>
+        <description>DMA1 Stream4 global interrupt</description>
+        <value>15</value>
+      </interrupt>
+      <interrupt>
+        <name>DMA1_Stream5</name>
+        <description>DMA1 Stream5 global interrupt</description>
+        <value>16</value>
+      </interrupt>
+      <interrupt>
+        <name>DMA1_Stream6</name>
+        <description>DMA1 Stream6 global interrupt</description>
+        <value>17</value>
+      </interrupt>
+      <interrupt>
+        <name>DMA1_Stream7</name>
+        <description>DMA1 Stream7 global interrupt</description>
+        <value>47</value>
+      </interrupt>
+    </peripheral>
+    <peripheral>
+      <name>RCC</name>
+      <description>Reset and clock control</description>
+      <groupName>RCC</groupName>
+      <baseAddress>0x40023800</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>RCC</name>
+        <description>RCC global interrupt</description>
+        <value>5</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR</name>
+          <displayName>CR</displayName>
+          <description>clock control register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000083</resetValue>
+          <fields>
+            <field>
+              <name>PLLI2SRDY</name>
+              <description>PLLI2S clock ready flag</description>
+              <bitOffset>27</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues derivedFrom="HSIRDYR"/>
+            </field>
+            <field>
+              <name>PLLI2SON</name>
+              <description>PLLI2S enable</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="HSION"/>
+            </field>
+            <field>
+              <name>PLLRDY</name>
+              <description>Main PLL (PLL) clock ready
+              flag</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues derivedFrom="HSIRDYR"/>
+            </field>
+            <field>
+              <name>PLLON</name>
+              <description>Main PLL (PLL) enable</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="HSION"/>
+            </field>
+            <field>
+              <name>CSSON</name>
+              <description>Clock security system
+              enable</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>CSSON</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Off</name>
+                  <description>Clock security system disabled (clock detector OFF)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>On</name>
+                  <description>Clock security system enable (clock detector ON if the HSE is ready, OFF if not)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>HSEBYP</name>
+              <description>HSE clock bypass</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>HSEBYP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NotBypassed</name>
+                  <description>HSE crystal oscillator not bypassed</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bypassed</name>
+                  <description>HSE crystal oscillator bypassed with external clock</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>HSERDY</name>
+              <description>HSE clock ready flag</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues derivedFrom="HSIRDYR"/>
+            </field>
+            <field>
+              <name>HSEON</name>
+              <description>HSE clock enable</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="HSION"/>
+            </field>
+            <field>
+              <name>HSICAL</name>
+              <description>Internal high-speed clock
+              calibration</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+              <access>read-only</access>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>HSITRIM</name>
+              <description>Internal high-speed clock
+              trimming</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>5</bitWidth>
+              <access>read-write</access>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>31</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>HSIRDY</name>
+              <description>Internal high-speed clock ready
+              flag</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>HSIRDYR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotReady</name>
+                  <description>Clock not ready</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Ready</name>
+                  <description>Clock ready</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>HSION</name>
+              <description>Internal high-speed clock
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>HSION</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Off</name>
+                  <description>Clock Off</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>On</name>
+                  <description>Clock On</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PLLCFGR</name>
+          <displayName>PLLCFGR</displayName>
+          <description>PLL configuration register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x24003010</resetValue>
+          <fields>
+            <field>
+              <name>PLLSRC</name>
+              <description>Main PLL(PLL) and audio PLL (PLLI2S)
+              entry clock source</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PLLSRC</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>HSI</name>
+                  <description>HSI clock selected as PLL and PLLI2S clock entry</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>HSE</name>
+                  <description>HSE oscillator clock selected as PLL and PLLI2S clock entry</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PLLM</name>
+              <description>Division factor for the main PLL (PLL)
+              and audio PLL (PLLI2S) input clock</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>6</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>2</minimum>
+                  <maximum>63</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>PLLN</name>
+              <description>Main PLL (PLL) multiplication factor for
+              VCO</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>9</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>50</minimum>
+                  <maximum>432</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>PLLP</name>
+              <description>Main PLL (PLL) division factor for main
+              system clock</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>PLLP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>PLLP=2</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>PLLP=4</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div6</name>
+                  <description>PLLP=6</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div8</name>
+                  <description>PLLP=8</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PLLQ</name>
+              <description>Main PLL (PLL) division factor for USB
+              OTG FS, SDIO and random number generator
+              clocks</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>2</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CFGR</name>
+          <displayName>CFGR</displayName>
+          <description>clock configuration register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>MCO2</name>
+              <description>Microcontroller clock output
+              2</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>2</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>MCO2</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>SYSCLK</name>
+                  <description>System clock (SYSCLK) selected</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PLLI2S</name>
+                  <description>PLLI2S clock selected</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>HSE</name>
+                  <description>HSE oscillator clock selected</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PLL</name>
+                  <description>PLL clock selected</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MCO2PRE</name>
+              <description>MCO2 prescaler</description>
+              <bitOffset>27</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="MCO1PRE"/>
+            </field>
+            <field>
+              <name>MCO1PRE</name>
+              <description>MCO1 prescaler</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>MCO1PRE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>No division</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>Division by 2</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div3</name>
+                  <description>Division by 3</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>Division by 4</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div5</name>
+                  <description>Division by 5</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>I2SSRC</name>
+              <description>I2S clock selection</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>I2SSRC</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>PLLI2S</name>
+                  <description>PLLI2S clock used as I2S clock source</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CKIN</name>
+                  <description>External clock mapped on the I2S_CKIN pin used as I2S clock source</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MCO1</name>
+              <description>Microcontroller clock output
+              1</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>2</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>MCO1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>HSI</name>
+                  <description>HSI clock selected</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>LSE</name>
+                  <description>LSE oscillator selected</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>HSE</name>
+                  <description>HSE oscillator clock selected</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PLL</name>
+                  <description>PLL clock selected</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RTCPRE</name>
+              <description>HSE division factor for RTC
+              clock</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>5</bitWidth>
+              <access>read-write</access>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>31</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>PPRE2</name>
+              <description>APB high-speed prescaler
+              (APB2)</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="PPRE1"/>
+            </field>
+            <field>
+              <name>PPRE1</name>
+              <description>APB Low speed prescaler
+              (APB1)</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>PPRE1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>HCLK not divided</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>HCLK divided by 2</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>HCLK divided by 4</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div8</name>
+                  <description>HCLK divided by 8</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div16</name>
+                  <description>HCLK divided by 16</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>HPRE</name>
+              <description>AHB prescaler</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>HPRE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>SYSCLK not divided</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>SYSCLK divided by 2</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>SYSCLK divided by 4</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div8</name>
+                  <description>SYSCLK divided by 8</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div16</name>
+                  <description>SYSCLK divided by 16</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div64</name>
+                  <description>SYSCLK divided by 64</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div128</name>
+                  <description>SYSCLK divided by 128</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div256</name>
+                  <description>SYSCLK divided by 256</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div512</name>
+                  <description>SYSCLK divided by 512</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SW</name>
+              <description>System clock switch</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>SW</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>HSI</name>
+                  <description>HSI selected as system clock</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>HSE</name>
+                  <description>HSE selected as system clock</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PLL</name>
+                  <description>PLL selected as system clock</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SWS</name>
+              <description>System clock switch status</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>SWSR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>HSI</name>
+                  <description>HSI oscillator used as system clock</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>HSE</name>
+                  <description>HSE oscillator used as system clock</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PLL</name>
+                  <description>PLL used as system clock</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CIR</name>
+          <displayName>CIR</displayName>
+          <description>clock interrupt register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CSSC</name>
+              <description>Clock security system interrupt
+              clear</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+              <enumeratedValues>
+                <name>CSSCW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear CSSF flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PLLI2SRDYC</name>
+              <description>PLLI2S ready interrupt
+              clear</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+              <enumeratedValues derivedFrom="LSIRDYCW"/>
+            </field>
+            <field>
+              <name>PLLRDYC</name>
+              <description>Main PLL(PLL) ready interrupt
+              clear</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+              <enumeratedValues derivedFrom="LSIRDYCW"/>
+            </field>
+            <field>
+              <name>HSERDYC</name>
+              <description>HSE ready interrupt clear</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+              <enumeratedValues derivedFrom="LSIRDYCW"/>
+            </field>
+            <field>
+              <name>HSIRDYC</name>
+              <description>HSI ready interrupt clear</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+              <enumeratedValues derivedFrom="LSIRDYCW"/>
+            </field>
+            <field>
+              <name>LSERDYC</name>
+              <description>LSE ready interrupt clear</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+              <enumeratedValues derivedFrom="LSIRDYCW"/>
+            </field>
+            <field>
+              <name>LSIRDYC</name>
+              <description>LSI ready interrupt clear</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+              <enumeratedValues>
+                <name>LSIRDYCW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear interrupt flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PLLI2SRDYIE</name>
+              <description>PLLI2S ready interrupt
+              enable</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="LSIRDYIE"/>
+            </field>
+            <field>
+              <name>PLLRDYIE</name>
+              <description>Main PLL (PLL) ready interrupt
+              enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="LSIRDYIE"/>
+            </field>
+            <field>
+              <name>HSERDYIE</name>
+              <description>HSE ready interrupt enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="LSIRDYIE"/>
+            </field>
+            <field>
+              <name>HSIRDYIE</name>
+              <description>HSI ready interrupt enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="LSIRDYIE"/>
+            </field>
+            <field>
+              <name>LSERDYIE</name>
+              <description>LSE ready interrupt enable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="LSIRDYIE"/>
+            </field>
+            <field>
+              <name>LSIRDYIE</name>
+              <description>LSI ready interrupt enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>LSIRDYIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CSSF</name>
+              <description>Clock security system interrupt
+              flag</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>CSSFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotInterrupted</name>
+                  <description>No clock security interrupt caused by HSE clock failure</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Interrupted</name>
+                  <description>Clock security interrupt caused by HSE clock failure</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PLLI2SRDYF</name>
+              <description>PLLI2S ready interrupt
+              flag</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues derivedFrom="LSIRDYFR"/>
+            </field>
+            <field>
+              <name>PLLRDYF</name>
+              <description>Main PLL (PLL) ready interrupt
+              flag</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues derivedFrom="LSIRDYFR"/>
+            </field>
+            <field>
+              <name>HSERDYF</name>
+              <description>HSE ready interrupt flag</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues derivedFrom="LSIRDYFR"/>
+            </field>
+            <field>
+              <name>HSIRDYF</name>
+              <description>HSI ready interrupt flag</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues derivedFrom="LSIRDYFR"/>
+            </field>
+            <field>
+              <name>LSERDYF</name>
+              <description>LSE ready interrupt flag</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues derivedFrom="LSIRDYFR"/>
+            </field>
+            <field>
+              <name>LSIRDYF</name>
+              <description>LSI ready interrupt flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>LSIRDYFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotInterrupted</name>
+                  <description>No clock ready interrupt</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Interrupted</name>
+                  <description>Clock ready interrupt</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AHB1RSTR</name>
+          <displayName>AHB1RSTR</displayName>
+          <description>AHB1 peripheral reset register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OTGHSRST</name>
+              <description>USB OTG HS module reset</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOARST"/>
+            </field>
+            <field>
+              <name>DMA2RST</name>
+              <description>DMA2 reset</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOARST"/>
+            </field>
+            <field>
+              <name>DMA1RST</name>
+              <description>DMA2 reset</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOARST"/>
+            </field>
+            <field>
+              <name>CRCRST</name>
+              <description>CRC reset</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOARST"/>
+            </field>
+            <field>
+              <name>GPIOIRST</name>
+              <description>IO port I reset</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOARST"/>
+            </field>
+            <field>
+              <name>GPIOHRST</name>
+              <description>IO port H reset</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOARST"/>
+            </field>
+            <field>
+              <name>GPIOGRST</name>
+              <description>IO port G reset</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOARST"/>
+            </field>
+            <field>
+              <name>GPIOFRST</name>
+              <description>IO port F reset</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOARST"/>
+            </field>
+            <field>
+              <name>GPIOERST</name>
+              <description>IO port E reset</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOARST"/>
+            </field>
+            <field>
+              <name>GPIODRST</name>
+              <description>IO port D reset</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOARST"/>
+            </field>
+            <field>
+              <name>GPIOCRST</name>
+              <description>IO port C reset</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOARST"/>
+            </field>
+            <field>
+              <name>GPIOBRST</name>
+              <description>IO port B reset</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOARST"/>
+            </field>
+            <field>
+              <name>GPIOARST</name>
+              <description>IO port A reset</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>GPIOARST</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>Reset the selected module</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AHB2RSTR</name>
+          <displayName>AHB2RSTR</displayName>
+          <description>AHB2 peripheral reset register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OTGFSRST</name>
+              <description>USB OTG FS module reset</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DCMIRST"/>
+            </field>
+            <field>
+              <name>RNGRST</name>
+              <description>Random number generator module
+              reset</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DCMIRST"/>
+            </field>
+            <field>
+              <name>DCMIRST</name>
+              <description>Camera interface reset</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DCMIRST</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>Reset the selected module</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AHB3RSTR</name>
+          <displayName>AHB3RSTR</displayName>
+          <description>AHB3 peripheral reset register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>FSMCRST</name>
+              <description>Flexible static memory controller module
+              reset</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FSMCRST</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>Reset the selected module</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>APB1RSTR</name>
+          <displayName>APB1RSTR</displayName>
+          <description>APB1 peripheral reset register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DACRST</name>
+              <description>DAC reset</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>PWRRST</name>
+              <description>Power interface reset</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>CAN2RST</name>
+              <description>CAN2 reset</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>CAN1RST</name>
+              <description>CAN1 reset</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>I2C3RST</name>
+              <description>I2C3 reset</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>I2C2RST</name>
+              <description>I2C 2 reset</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>I2C1RST</name>
+              <description>I2C 1 reset</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>UART5RST</name>
+              <description>USART 5 reset</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>UART4RST</name>
+              <description>USART 4 reset</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>USART3RST</name>
+              <description>USART 3 reset</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>USART2RST</name>
+              <description>USART 2 reset</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>SPI3RST</name>
+              <description>SPI 3 reset</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>SPI2RST</name>
+              <description>SPI 2 reset</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>WWDGRST</name>
+              <description>Window watchdog reset</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>TIM14RST</name>
+              <description>TIM14 reset</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>TIM13RST</name>
+              <description>TIM13 reset</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>TIM12RST</name>
+              <description>TIM12 reset</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>TIM7RST</name>
+              <description>TIM7 reset</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>TIM6RST</name>
+              <description>TIM6 reset</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>TIM5RST</name>
+              <description>TIM5 reset</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>TIM4RST</name>
+              <description>TIM4 reset</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>TIM3RST</name>
+              <description>TIM3 reset</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2RST"/>
+            </field>
+            <field>
+              <name>TIM2RST</name>
+              <description>TIM2 reset</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TIM2RST</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>Reset the selected module</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>APB2RSTR</name>
+          <displayName>APB2RSTR</displayName>
+          <description>APB2 peripheral reset register</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TIM11RST</name>
+              <description>TIM11 reset</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1RST"/>
+            </field>
+            <field>
+              <name>TIM10RST</name>
+              <description>TIM10 reset</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1RST"/>
+            </field>
+            <field>
+              <name>TIM9RST</name>
+              <description>TIM9 reset</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1RST"/>
+            </field>
+            <field>
+              <name>SYSCFGRST</name>
+              <description>System configuration controller
+              reset</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1RST"/>
+            </field>
+            <field>
+              <name>SPI1RST</name>
+              <description>SPI 1 reset</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1RST"/>
+            </field>
+            <field>
+              <name>SDIORST</name>
+              <description>SDIO reset</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1RST"/>
+            </field>
+            <field>
+              <name>ADCRST</name>
+              <description>ADC interface reset (common to all
+              ADCs)</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1RST"/>
+            </field>
+            <field>
+              <name>USART6RST</name>
+              <description>USART6 reset</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1RST"/>
+            </field>
+            <field>
+              <name>USART1RST</name>
+              <description>USART1 reset</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1RST"/>
+            </field>
+            <field>
+              <name>TIM8RST</name>
+              <description>TIM8 reset</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1RST"/>
+            </field>
+            <field>
+              <name>TIM1RST</name>
+              <description>TIM1 reset</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TIM1RST</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>Reset the selected module</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AHB1ENR</name>
+          <displayName>AHB1ENR</displayName>
+          <description>AHB1 peripheral clock register</description>
+          <addressOffset>0x30</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00100000</resetValue>
+          <fields>
+            <field>
+              <name>OTGHSULPIEN</name>
+              <description>USB OTG HSULPI clock
+              enable</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOAEN"/>
+            </field>
+            <field>
+              <name>OTGHSEN</name>
+              <description>USB OTG HS clock enable</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOAEN"/>
+            </field>
+            <field>
+              <name>DMA2EN</name>
+              <description>DMA2 clock enable</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOAEN"/>
+            </field>
+            <field>
+              <name>DMA1EN</name>
+              <description>DMA1 clock enable</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOAEN"/>
+            </field>
+            <field>
+              <name>BKPSRAMEN</name>
+              <description>Backup SRAM interface clock
+              enable</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOAEN"/>
+            </field>
+            <field>
+              <name>CRCEN</name>
+              <description>CRC clock enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOAEN"/>
+            </field>
+            <field>
+              <name>GPIOIEN</name>
+              <description>IO port I clock enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOAEN"/>
+            </field>
+            <field>
+              <name>GPIOHEN</name>
+              <description>IO port H clock enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOAEN"/>
+            </field>
+            <field>
+              <name>GPIOGEN</name>
+              <description>IO port G clock enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOAEN"/>
+            </field>
+            <field>
+              <name>GPIOFEN</name>
+              <description>IO port F clock enable</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOAEN"/>
+            </field>
+            <field>
+              <name>GPIOEEN</name>
+              <description>IO port E clock enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOAEN"/>
+            </field>
+            <field>
+              <name>GPIODEN</name>
+              <description>IO port D clock enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOAEN"/>
+            </field>
+            <field>
+              <name>GPIOCEN</name>
+              <description>IO port C clock enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOAEN"/>
+            </field>
+            <field>
+              <name>GPIOBEN</name>
+              <description>IO port B clock enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOAEN"/>
+            </field>
+            <field>
+              <name>GPIOAEN</name>
+              <description>IO port A clock enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>GPIOAEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>The selected clock is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>The selected clock is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AHB2ENR</name>
+          <displayName>AHB2ENR</displayName>
+          <description>AHB2 peripheral clock enable
+          register</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OTGFSEN</name>
+              <description>USB OTG FS clock enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DCMIEN"/>
+            </field>
+            <field>
+              <name>RNGEN</name>
+              <description>Random number generator clock
+              enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DCMIEN"/>
+            </field>
+            <field>
+              <name>DCMIEN</name>
+              <description>Camera interface enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DCMIEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>The selected clock is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>The selected clock is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AHB3ENR</name>
+          <displayName>AHB3ENR</displayName>
+          <description>AHB3 peripheral clock enable
+          register</description>
+          <addressOffset>0x38</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>FSMCEN</name>
+              <description>Flexible static memory controller module
+              clock enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FSMCEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>The selected clock is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>The selected clock is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>APB1ENR</name>
+          <displayName>APB1ENR</displayName>
+          <description>APB1 peripheral clock enable
+          register</description>
+          <addressOffset>0x40</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DACEN</name>
+              <description>DAC interface clock enable</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>PWREN</name>
+              <description>Power interface clock
+              enable</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>CAN2EN</name>
+              <description>CAN 2 clock enable</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>CAN1EN</name>
+              <description>CAN 1 clock enable</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>I2C3EN</name>
+              <description>I2C3 clock enable</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>I2C2EN</name>
+              <description>I2C2 clock enable</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>I2C1EN</name>
+              <description>I2C1 clock enable</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>UART5EN</name>
+              <description>UART5 clock enable</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>UART4EN</name>
+              <description>UART4 clock enable</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>USART3EN</name>
+              <description>USART3 clock enable</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>USART2EN</name>
+              <description>USART 2 clock enable</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>SPI3EN</name>
+              <description>SPI3 clock enable</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>SPI2EN</name>
+              <description>SPI2 clock enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>WWDGEN</name>
+              <description>Window watchdog clock
+              enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>TIM14EN</name>
+              <description>TIM14 clock enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>TIM13EN</name>
+              <description>TIM13 clock enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>TIM12EN</name>
+              <description>TIM12 clock enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>TIM7EN</name>
+              <description>TIM7 clock enable</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>TIM6EN</name>
+              <description>TIM6 clock enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>TIM5EN</name>
+              <description>TIM5 clock enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>TIM4EN</name>
+              <description>TIM4 clock enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>TIM3EN</name>
+              <description>TIM3 clock enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2EN"/>
+            </field>
+            <field>
+              <name>TIM2EN</name>
+              <description>TIM2 clock enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TIM2EN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>The selected clock is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>The selected clock is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>APB2ENR</name>
+          <displayName>APB2ENR</displayName>
+          <description>APB2 peripheral clock enable
+          register</description>
+          <addressOffset>0x44</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TIM11EN</name>
+              <description>TIM11 clock enable</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1EN"/>
+            </field>
+            <field>
+              <name>TIM10EN</name>
+              <description>TIM10 clock enable</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1EN"/>
+            </field>
+            <field>
+              <name>TIM9EN</name>
+              <description>TIM9 clock enable</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1EN"/>
+            </field>
+            <field>
+              <name>SYSCFGEN</name>
+              <description>System configuration controller clock
+              enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1EN"/>
+            </field>
+            <field>
+              <name>SPI1EN</name>
+              <description>SPI1 clock enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1EN"/>
+            </field>
+            <field>
+              <name>SDIOEN</name>
+              <description>SDIO clock enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1EN"/>
+            </field>
+            <field>
+              <name>ADC3EN</name>
+              <description>ADC3 clock enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1EN"/>
+            </field>
+            <field>
+              <name>ADC2EN</name>
+              <description>ADC2 clock enable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1EN"/>
+            </field>
+            <field>
+              <name>ADC1EN</name>
+              <description>ADC1 clock enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1EN"/>
+            </field>
+            <field>
+              <name>USART6EN</name>
+              <description>USART6 clock enable</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1EN"/>
+            </field>
+            <field>
+              <name>USART1EN</name>
+              <description>USART1 clock enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1EN"/>
+            </field>
+            <field>
+              <name>TIM8EN</name>
+              <description>TIM8 clock enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1EN"/>
+            </field>
+            <field>
+              <name>TIM1EN</name>
+              <description>TIM1 clock enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TIM1EN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>The selected clock is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>The selected clock is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AHB1LPENR</name>
+          <displayName>AHB1LPENR</displayName>
+          <description>AHB1 peripheral clock enable in low power
+          mode register</description>
+          <addressOffset>0x50</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x7E6791FF</resetValue>
+          <fields>
+            <field>
+              <name>OTGHSULPILPEN</name>
+              <description>USB OTG HS ULPI clock enable during
+              Sleep mode</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>OTGHSLPEN</name>
+              <description>USB OTG HS clock enable during Sleep
+              mode</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>DMA2LPEN</name>
+              <description>DMA2 clock enable during Sleep
+              mode</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>DMA1LPEN</name>
+              <description>DMA1 clock enable during Sleep
+              mode</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>BKPSRAMLPEN</name>
+              <description>Backup SRAM interface clock enable
+              during Sleep mode</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>SRAM2LPEN</name>
+              <description>SRAM 2 interface clock enable during
+              Sleep mode</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>SRAM1LPEN</name>
+              <description>SRAM 1interface clock enable during
+              Sleep mode</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>FLITFLPEN</name>
+              <description>Flash interface clock enable during
+              Sleep mode</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>CRCLPEN</name>
+              <description>CRC clock enable during Sleep
+              mode</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>GPIOILPEN</name>
+              <description>IO port I clock enable during Sleep
+              mode</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>GPIOHLPEN</name>
+              <description>IO port H clock enable during Sleep
+              mode</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>GPIOGLPEN</name>
+              <description>IO port G clock enable during Sleep
+              mode</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>GPIOFLPEN</name>
+              <description>IO port F clock enable during Sleep
+              mode</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>GPIOELPEN</name>
+              <description>IO port E clock enable during Sleep
+              mode</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>GPIODLPEN</name>
+              <description>IO port D clock enable during Sleep
+              mode</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>GPIOCLPEN</name>
+              <description>IO port C clock enable during Sleep
+              mode</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>GPIOBLPEN</name>
+              <description>IO port B clock enable during Sleep
+              mode</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="GPIOALPEN"/>
+            </field>
+            <field>
+              <name>GPIOALPEN</name>
+              <description>IO port A clock enable during sleep
+              mode</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>GPIOALPEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>DisabledInSleep</name>
+                  <description>Selected module is disabled during Sleep mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>EnabledInSleep</name>
+                  <description>Selected module is enabled during Sleep mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AHB2LPENR</name>
+          <displayName>AHB2LPENR</displayName>
+          <description>AHB2 peripheral clock enable in low power
+          mode register</description>
+          <addressOffset>0x54</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x000000F1</resetValue>
+          <fields>
+            <field>
+              <name>OTGFSLPEN</name>
+              <description>USB OTG FS clock enable during Sleep
+              mode</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DCMILPEN"/>
+            </field>
+            <field>
+              <name>RNGLPEN</name>
+              <description>Random number generator clock enable
+              during Sleep mode</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DCMILPEN"/>
+            </field>
+            <field>
+              <name>DCMILPEN</name>
+              <description>Camera interface enable during Sleep
+              mode</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DCMILPEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>DisabledInSleep</name>
+                  <description>Selected module is disabled during Sleep mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>EnabledInSleep</name>
+                  <description>Selected module is enabled during Sleep mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AHB3LPENR</name>
+          <displayName>AHB3LPENR</displayName>
+          <description>AHB3 peripheral clock enable in low power
+          mode register</description>
+          <addressOffset>0x58</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000001</resetValue>
+          <fields>
+            <field>
+              <name>FSMCLPEN</name>
+              <description>Flexible static memory controller module
+              clock enable during Sleep mode</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FSMCLPEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>DisabledInSleep</name>
+                  <description>Selected module is disabled during Sleep mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>EnabledInSleep</name>
+                  <description>Selected module is enabled during Sleep mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>APB1LPENR</name>
+          <displayName>APB1LPENR</displayName>
+          <description>APB1 peripheral clock enable in low power
+          mode register</description>
+          <addressOffset>0x60</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x36FEC9FF</resetValue>
+          <fields>
+            <field>
+              <name>DACLPEN</name>
+              <description>DAC interface clock enable during Sleep
+              mode</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>PWRLPEN</name>
+              <description>Power interface clock enable during
+              Sleep mode</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>CAN2LPEN</name>
+              <description>CAN 2 clock enable during Sleep
+              mode</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>CAN1LPEN</name>
+              <description>CAN 1 clock enable during Sleep
+              mode</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>I2C3LPEN</name>
+              <description>I2C3 clock enable during Sleep
+              mode</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>I2C2LPEN</name>
+              <description>I2C2 clock enable during Sleep
+              mode</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>I2C1LPEN</name>
+              <description>I2C1 clock enable during Sleep
+              mode</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>UART5LPEN</name>
+              <description>UART5 clock enable during Sleep
+              mode</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>UART4LPEN</name>
+              <description>UART4 clock enable during Sleep
+              mode</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>USART3LPEN</name>
+              <description>USART3 clock enable during Sleep
+              mode</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>USART2LPEN</name>
+              <description>USART2 clock enable during Sleep
+              mode</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>SPI3LPEN</name>
+              <description>SPI3 clock enable during Sleep
+              mode</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>SPI2LPEN</name>
+              <description>SPI2 clock enable during Sleep
+              mode</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>WWDGLPEN</name>
+              <description>Window watchdog clock enable during
+              Sleep mode</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>TIM14LPEN</name>
+              <description>TIM14 clock enable during Sleep
+              mode</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>TIM13LPEN</name>
+              <description>TIM13 clock enable during Sleep
+              mode</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>TIM12LPEN</name>
+              <description>TIM12 clock enable during Sleep
+              mode</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>TIM7LPEN</name>
+              <description>TIM7 clock enable during Sleep
+              mode</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>TIM6LPEN</name>
+              <description>TIM6 clock enable during Sleep
+              mode</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>TIM5LPEN</name>
+              <description>TIM5 clock enable during Sleep
+              mode</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>TIM4LPEN</name>
+              <description>TIM4 clock enable during Sleep
+              mode</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>TIM3LPEN</name>
+              <description>TIM3 clock enable during Sleep
+              mode</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM2LPEN"/>
+            </field>
+            <field>
+              <name>TIM2LPEN</name>
+              <description>TIM2 clock enable during Sleep
+              mode</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TIM2LPEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>DisabledInSleep</name>
+                  <description>Selected module is disabled during Sleep mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>EnabledInSleep</name>
+                  <description>Selected module is enabled during Sleep mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>APB2LPENR</name>
+          <displayName>APB2LPENR</displayName>
+          <description>APB2 peripheral clock enabled in low power
+          mode register</description>
+          <addressOffset>0x64</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00075F33</resetValue>
+          <fields>
+            <field>
+              <name>TIM11LPEN</name>
+              <description>TIM11 clock enable during Sleep
+              mode</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1LPEN"/>
+            </field>
+            <field>
+              <name>TIM10LPEN</name>
+              <description>TIM10 clock enable during Sleep
+              mode</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1LPEN"/>
+            </field>
+            <field>
+              <name>TIM9LPEN</name>
+              <description>TIM9 clock enable during sleep
+              mode</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1LPEN"/>
+            </field>
+            <field>
+              <name>SYSCFGLPEN</name>
+              <description>System configuration controller clock
+              enable during Sleep mode</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1LPEN"/>
+            </field>
+            <field>
+              <name>SPI1LPEN</name>
+              <description>SPI 1 clock enable during Sleep
+              mode</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1LPEN"/>
+            </field>
+            <field>
+              <name>SDIOLPEN</name>
+              <description>SDIO clock enable during Sleep
+              mode</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1LPEN"/>
+            </field>
+            <field>
+              <name>ADC3LPEN</name>
+              <description>ADC 3 clock enable during Sleep
+              mode</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1LPEN"/>
+            </field>
+            <field>
+              <name>ADC2LPEN</name>
+              <description>ADC2 clock enable during Sleep
+              mode</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1LPEN"/>
+            </field>
+            <field>
+              <name>ADC1LPEN</name>
+              <description>ADC1 clock enable during Sleep
+              mode</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1LPEN"/>
+            </field>
+            <field>
+              <name>USART6LPEN</name>
+              <description>USART6 clock enable during Sleep
+              mode</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1LPEN"/>
+            </field>
+            <field>
+              <name>USART1LPEN</name>
+              <description>USART1 clock enable during Sleep
+              mode</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1LPEN"/>
+            </field>
+            <field>
+              <name>TIM8LPEN</name>
+              <description>TIM8 clock enable during Sleep
+              mode</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TIM1LPEN"/>
+            </field>
+            <field>
+              <name>TIM1LPEN</name>
+              <description>TIM1 clock enable during Sleep
+              mode</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TIM1LPEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>DisabledInSleep</name>
+                  <description>Selected module is disabled during Sleep mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>EnabledInSleep</name>
+                  <description>Selected module is enabled during Sleep mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>BDCR</name>
+          <displayName>BDCR</displayName>
+          <description>Backup domain control register</description>
+          <addressOffset>0x70</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>BDRST</name>
+              <description>Backup domain software
+              reset</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>BDRST</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Reset not activated</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Reset the entire RTC domain</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RTCEN</name>
+              <description>RTC clock enable</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>RTCEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>RTC clock disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>RTC clock enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LSEBYP</name>
+              <description>External low-speed oscillator
+              bypass</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>LSEBYP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NotBypassed</name>
+                  <description>LSE crystal oscillator not bypassed</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bypassed</name>
+                  <description>LSE crystal oscillator bypassed with external clock</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LSERDY</name>
+              <description>External low-speed oscillator
+              ready</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>LSERDYR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotReady</name>
+                  <description>LSE oscillator not ready</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Ready</name>
+                  <description>LSE oscillator ready</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LSEON</name>
+              <description>External low-speed oscillator
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>LSEON</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Off</name>
+                  <description>LSE oscillator Off</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>On</name>
+                  <description>LSE oscillator On</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RTCSEL</name>
+              <description>RTC clock source selection</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>RTCSEL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoClock</name>
+                  <description>No clock</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>LSE</name>
+                  <description>LSE oscillator clock used as RTC clock</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>LSI</name>
+                  <description>LSI oscillator clock used as RTC clock</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>HSE</name>
+                  <description>HSE oscillator clock divided by a prescaler used as RTC clock</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CSR</name>
+          <displayName>CSR</displayName>
+          <description>clock control &amp; status
+          register</description>
+          <addressOffset>0x74</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x0E000000</resetValue>
+          <fields>
+            <field>
+              <name>LPWRRSTF</name>
+              <description>Low-power reset flag</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="BORRSTFR"/>
+            </field>
+            <field>
+              <name>WWDGRSTF</name>
+              <description>Window watchdog reset flag</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="BORRSTFR"/>
+            </field>
+            <field>
+              <name>WDGRSTF</name>
+              <description>Independent watchdog reset
+              flag</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="BORRSTFR"/>
+            </field>
+            <field>
+              <name>SFTRSTF</name>
+              <description>Software reset flag</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="BORRSTFR"/>
+            </field>
+            <field>
+              <name>PORRSTF</name>
+              <description>POR/PDR reset flag</description>
+              <bitOffset>27</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="BORRSTFR"/>
+            </field>
+            <field>
+              <name>PADRSTF</name>
+              <description>PIN reset flag</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues derivedFrom="BORRSTFR"/>
+            </field>
+            <field>
+              <name>BORRSTF</name>
+              <description>BOR reset flag</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>BORRSTFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoReset</name>
+                  <description>No reset has occured</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>A reset has occured</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RMVF</name>
+              <description>Remove reset flag</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>RMVFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clears the reset flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LSIRDY</name>
+              <description>Internal low-speed oscillator
+              ready</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>LSIRDYR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotReady</name>
+                  <description>LSI oscillator not ready</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Ready</name>
+                  <description>LSI oscillator ready</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LSION</name>
+              <description>Internal low-speed oscillator
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>LSION</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Off</name>
+                  <description>LSI oscillator Off</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>On</name>
+                  <description>LSI oscillator On</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SSCGR</name>
+          <displayName>SSCGR</displayName>
+          <description>spread spectrum clock generation
+          register</description>
+          <addressOffset>0x80</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SSCGEN</name>
+              <description>Spread spectrum modulation
+              enable</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SSCGEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Spread spectrum modulation disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Spread spectrum modulation enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SPREADSEL</name>
+              <description>Spread Select</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SPREADSEL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Center</name>
+                  <description>Center spread</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Down</name>
+                  <description>Down spread</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>INCSTEP</name>
+              <description>Incrementation step</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>15</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>32767</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MODPER</name>
+              <description>Modulation period</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>13</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>8191</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PLLI2SCFGR</name>
+          <displayName>PLLI2SCFGR</displayName>
+          <description>PLLI2S configuration register</description>
+          <addressOffset>0x84</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x20003000</resetValue>
+          <fields>
+            <field>
+              <name>PLLI2SR</name>
+              <description>PLLI2S division factor for I2S
+              clocks</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>3</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>2</minimum>
+                  <maximum>7</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>PLLI2SN</name>
+              <description>PLLI2S multiplication factor for
+              VCO</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>9</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>50</minimum>
+                  <maximum>432</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>GPIOI</name>
+      <description>General-purpose I/Os</description>
+      <groupName>GPIO</groupName>
+      <baseAddress>0x40022000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>MODER</name>
+          <displayName>MODER</displayName>
+          <description>GPIO port mode register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x2</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>MODER%s</name>
+              <description>Port x configuration pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>MODER0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Input</name>
+                  <description>Input mode (reset state)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>General purpose output mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Alternate</name>
+                  <description>Alternate function mode</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Analog</name>
+                  <description>Analog mode</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>OTYPER</name>
+          <displayName>OTYPER</displayName>
+          <description>GPIO port output type register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>OT%s</name>
+              <description>Port x configuration pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OT0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>PushPull</name>
+                  <description>Output push-pull (reset state)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>OpenDrain</name>
+                  <description>Output open-drain</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>OSPEEDR</name>
+          <displayName>OSPEEDR</displayName>
+          <description>GPIO port output speed
+          register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x2</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>OSPEEDR%s</name>
+              <description>Port x configuration pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>OSPEEDR0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>LowSpeed</name>
+                  <description>Low speed</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>MediumSpeed</name>
+                  <description>Medium speed</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>HighSpeed</name>
+                  <description>High speed</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>VeryHighSpeed</name>
+                  <description>Very high speed</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PUPDR</name>
+          <displayName>PUPDR</displayName>
+          <description>GPIO port pull-up/pull-down
+          register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x2</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>PUPDR%s</name>
+              <description>Port x configuration pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>PUPDR0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Floating</name>
+                  <description>No pull-up, pull-down</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PullUp</name>
+                  <description>Pull-up</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PullDown</name>
+                  <description>Pull-down</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IDR</name>
+          <displayName>IDR</displayName>
+          <description>GPIO port input data register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>IDR%s</name>
+              <description>Port input data pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>IDR0</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Low</name>
+                  <description>Input is logic low</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>High</name>
+                  <description>Input is logic high</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ODR</name>
+          <displayName>ODR</displayName>
+          <description>GPIO port output data register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>ODR%s</name>
+              <description>Port output data pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ODR0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Low</name>
+                  <description>Set output to logic low</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>High</name>
+                  <description>Set output to logic high</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>BSRR</name>
+          <displayName>BSRR</displayName>
+          <description>GPIO port bit set/reset
+          register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>BR%s</name>
+              <description>Port x reset pin %s</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BR0W</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>Resets the corresponding ODRx bit</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>BS%s</name>
+              <description>Port x set pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BS0W</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Set</name>
+                  <description>Sets the corresponding ODRx bit</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>LCKR</name>
+          <displayName>LCKR</displayName>
+          <description>GPIO port configuration lock
+          register</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>LCKK</name>
+              <description>Port x lock bit y (y=
+              0..15)</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LCKK</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NotActive</name>
+                  <description>Port configuration lock key not active</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Active</name>
+                  <description>Port configuration lock key active</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>LCK%s</name>
+              <description>Port x lock pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LCK0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Unlocked</name>
+                  <description>Port configuration not locked</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Locked</name>
+                  <description>Port configuration locked</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AFRL</name>
+          <displayName>AFRL</displayName>
+          <description>GPIO alternate function low
+          register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>8</dim>
+              <dimIncrement>0x4</dimIncrement>
+              <dimIndex>L0,L1,L2,L3,L4,L5,L6,L7</dimIndex>
+              <name>AFR%s</name>
+              <description>Alternate function selection for port x
+              bit y (y = 0..7)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>AFRL0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AF0</name>
+                  <description>AF0</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF1</name>
+                  <description>AF1</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF2</name>
+                  <description>AF2</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF3</name>
+                  <description>AF3</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF4</name>
+                  <description>AF4</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF5</name>
+                  <description>AF5</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF6</name>
+                  <description>AF6</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF7</name>
+                  <description>AF7</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF8</name>
+                  <description>AF8</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF9</name>
+                  <description>AF9</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF10</name>
+                  <description>AF10</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF11</name>
+                  <description>AF11</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF12</name>
+                  <description>AF12</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF13</name>
+                  <description>AF13</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF14</name>
+                  <description>AF14</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF15</name>
+                  <description>AF15</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AFRH</name>
+          <displayName>AFRH</displayName>
+          <description>GPIO alternate function high
+          register</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>8</dim>
+              <dimIncrement>0x4</dimIncrement>
+              <dimIndex>H8,H9,H10,H11,H12,H13,H14,H15</dimIndex>
+              <name>AFR%s</name>
+              <description>Alternate function selection for port x
+              bit y (y = 8..15)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>AFRH8</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AF0</name>
+                  <description>AF0</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF1</name>
+                  <description>AF1</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF2</name>
+                  <description>AF2</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF3</name>
+                  <description>AF3</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF4</name>
+                  <description>AF4</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF5</name>
+                  <description>AF5</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF6</name>
+                  <description>AF6</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF7</name>
+                  <description>AF7</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF8</name>
+                  <description>AF8</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF9</name>
+                  <description>AF9</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF10</name>
+                  <description>AF10</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF11</name>
+                  <description>AF11</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF12</name>
+                  <description>AF12</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF13</name>
+                  <description>AF13</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF14</name>
+                  <description>AF14</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF15</name>
+                  <description>AF15</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral derivedFrom="GPIOI">
+      <name>GPIOH</name>
+      <baseAddress>0x40021C00</baseAddress>
+    </peripheral>
+    <peripheral derivedFrom="GPIOI">
+      <name>GPIOG</name>
+      <baseAddress>0x40021800</baseAddress>
+    </peripheral>
+    <peripheral derivedFrom="GPIOI">
+      <name>GPIOF</name>
+      <baseAddress>0x40021400</baseAddress>
+    </peripheral>
+    <peripheral derivedFrom="GPIOI">
+      <name>GPIOE</name>
+      <baseAddress>0x40021000</baseAddress>
+    </peripheral>
+    <peripheral derivedFrom="GPIOI">
+      <name>GPIOD</name>
+      <baseAddress>0x40020C00</baseAddress>
+    </peripheral>
+    <peripheral derivedFrom="GPIOI">
+      <name>GPIOC</name>
+      <baseAddress>0x40020800</baseAddress>
+    </peripheral>
+    <peripheral derivedFrom="GPIOI">
+      <name>GPIOJ</name>
+      <baseAddress>0x40022400</baseAddress>
+    </peripheral>
+    <peripheral derivedFrom="GPIOI">
+      <name>GPIOK</name>
+      <baseAddress>0x40022800</baseAddress>
+    </peripheral>
+    <peripheral>
+      <name>GPIOB</name>
+      <description>General-purpose I/Os</description>
+      <groupName>GPIO</groupName>
+      <baseAddress>0x40020400</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>MODER</name>
+          <displayName>MODER</displayName>
+          <description>GPIO port mode register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000280</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x2</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>MODER%s</name>
+              <description>Port x configuration pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>MODER0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Input</name>
+                  <description>Input mode (reset state)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>General purpose output mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Alternate</name>
+                  <description>Alternate function mode</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Analog</name>
+                  <description>Analog mode</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>OTYPER</name>
+          <displayName>OTYPER</displayName>
+          <description>GPIO port output type register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>OT%s</name>
+              <description>Port x configuration pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OT0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>PushPull</name>
+                  <description>Output push-pull (reset state)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>OpenDrain</name>
+                  <description>Output open-drain</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>OSPEEDR</name>
+          <displayName>OSPEEDR</displayName>
+          <description>GPIO port output speed
+          register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x000000C0</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x2</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>OSPEEDR%s</name>
+              <description>Port x configuration pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>OSPEEDR0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>LowSpeed</name>
+                  <description>Low speed</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>MediumSpeed</name>
+                  <description>Medium speed</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>HighSpeed</name>
+                  <description>High speed</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>VeryHighSpeed</name>
+                  <description>Very high speed</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PUPDR</name>
+          <displayName>PUPDR</displayName>
+          <description>GPIO port pull-up/pull-down
+          register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000100</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x2</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>PUPDR%s</name>
+              <description>Port x configuration pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>PUPDR0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Floating</name>
+                  <description>No pull-up, pull-down</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PullUp</name>
+                  <description>Pull-up</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PullDown</name>
+                  <description>Pull-down</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IDR</name>
+          <displayName>IDR</displayName>
+          <description>GPIO port input data register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>IDR%s</name>
+              <description>Port input data pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>IDR0</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Low</name>
+                  <description>Input is logic low</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>High</name>
+                  <description>Input is logic high</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ODR</name>
+          <displayName>ODR</displayName>
+          <description>GPIO port output data register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>ODR%s</name>
+              <description>Port output data pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ODR0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Low</name>
+                  <description>Set output to logic low</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>High</name>
+                  <description>Set output to logic high</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>BSRR</name>
+          <displayName>BSRR</displayName>
+          <description>GPIO port bit set/reset
+          register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>BR%s</name>
+              <description>Port x reset pin %s</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BR0W</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>Resets the corresponding ODRx bit</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>BS%s</name>
+              <description>Port x set pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BS0W</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Set</name>
+                  <description>Sets the corresponding ODRx bit</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>LCKR</name>
+          <displayName>LCKR</displayName>
+          <description>GPIO port configuration lock
+          register</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>LCKK</name>
+              <description>Port x lock bit y (y=
+              0..15)</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LCKK</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NotActive</name>
+                  <description>Port configuration lock key not active</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Active</name>
+                  <description>Port configuration lock key active</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>LCK%s</name>
+              <description>Port x lock pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LCK0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Unlocked</name>
+                  <description>Port configuration not locked</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Locked</name>
+                  <description>Port configuration locked</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AFRL</name>
+          <displayName>AFRL</displayName>
+          <description>GPIO alternate function low
+          register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>8</dim>
+              <dimIncrement>0x4</dimIncrement>
+              <dimIndex>L0,L1,L2,L3,L4,L5,L6,L7</dimIndex>
+              <name>AFR%s</name>
+              <description>Alternate function selection for port x
+              bit y (y = 0..7)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>AFRL0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AF0</name>
+                  <description>AF0</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF1</name>
+                  <description>AF1</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF2</name>
+                  <description>AF2</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF3</name>
+                  <description>AF3</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF4</name>
+                  <description>AF4</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF5</name>
+                  <description>AF5</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF6</name>
+                  <description>AF6</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF7</name>
+                  <description>AF7</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF8</name>
+                  <description>AF8</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF9</name>
+                  <description>AF9</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF10</name>
+                  <description>AF10</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF11</name>
+                  <description>AF11</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF12</name>
+                  <description>AF12</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF13</name>
+                  <description>AF13</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF14</name>
+                  <description>AF14</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF15</name>
+                  <description>AF15</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AFRH</name>
+          <displayName>AFRH</displayName>
+          <description>GPIO alternate function high
+          register</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>8</dim>
+              <dimIncrement>0x4</dimIncrement>
+              <dimIndex>H8,H9,H10,H11,H12,H13,H14,H15</dimIndex>
+              <name>AFR%s</name>
+              <description>Alternate function selection for port x
+              bit y (y = 8..15)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>AFRH8</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AF0</name>
+                  <description>AF0</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF1</name>
+                  <description>AF1</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF2</name>
+                  <description>AF2</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF3</name>
+                  <description>AF3</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF4</name>
+                  <description>AF4</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF5</name>
+                  <description>AF5</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF6</name>
+                  <description>AF6</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF7</name>
+                  <description>AF7</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF8</name>
+                  <description>AF8</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF9</name>
+                  <description>AF9</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF10</name>
+                  <description>AF10</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF11</name>
+                  <description>AF11</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF12</name>
+                  <description>AF12</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF13</name>
+                  <description>AF13</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF14</name>
+                  <description>AF14</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF15</name>
+                  <description>AF15</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>GPIOA</name>
+      <description>General-purpose I/Os</description>
+      <groupName>GPIO</groupName>
+      <baseAddress>0x40020000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>MODER</name>
+          <displayName>MODER</displayName>
+          <description>GPIO port mode register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0xA8000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x2</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>MODER%s</name>
+              <description>Port x configuration pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>MODER0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Input</name>
+                  <description>Input mode (reset state)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>General purpose output mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Alternate</name>
+                  <description>Alternate function mode</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Analog</name>
+                  <description>Analog mode</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>OTYPER</name>
+          <displayName>OTYPER</displayName>
+          <description>GPIO port output type register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>OT%s</name>
+              <description>Port x configuration pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OT0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>PushPull</name>
+                  <description>Output push-pull (reset state)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>OpenDrain</name>
+                  <description>Output open-drain</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>OSPEEDR</name>
+          <displayName>OSPEEDR</displayName>
+          <description>GPIO port output speed
+          register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x2</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>OSPEEDR%s</name>
+              <description>Port x configuration pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>OSPEEDR0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>LowSpeed</name>
+                  <description>Low speed</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>MediumSpeed</name>
+                  <description>Medium speed</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>HighSpeed</name>
+                  <description>High speed</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>VeryHighSpeed</name>
+                  <description>Very high speed</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PUPDR</name>
+          <displayName>PUPDR</displayName>
+          <description>GPIO port pull-up/pull-down
+          register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x64000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x2</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>PUPDR%s</name>
+              <description>Port x configuration pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>PUPDR0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Floating</name>
+                  <description>No pull-up, pull-down</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PullUp</name>
+                  <description>Pull-up</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PullDown</name>
+                  <description>Pull-down</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IDR</name>
+          <displayName>IDR</displayName>
+          <description>GPIO port input data register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>IDR%s</name>
+              <description>Port input data pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>IDR0</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Low</name>
+                  <description>Input is logic low</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>High</name>
+                  <description>Input is logic high</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ODR</name>
+          <displayName>ODR</displayName>
+          <description>GPIO port output data register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>ODR%s</name>
+              <description>Port output data pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ODR0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Low</name>
+                  <description>Set output to logic low</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>High</name>
+                  <description>Set output to logic high</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>BSRR</name>
+          <displayName>BSRR</displayName>
+          <description>GPIO port bit set/reset
+          register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>BR%s</name>
+              <description>Port x reset pin %s</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BR0W</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>Resets the corresponding ODRx bit</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>BS%s</name>
+              <description>Port x set pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BS0W</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Set</name>
+                  <description>Sets the corresponding ODRx bit</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>LCKR</name>
+          <displayName>LCKR</displayName>
+          <description>GPIO port configuration lock
+          register</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>LCKK</name>
+              <description>Port x lock bit y (y=
+              0..15)</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LCKK</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NotActive</name>
+                  <description>Port configuration lock key not active</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Active</name>
+                  <description>Port configuration lock key active</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <dim>16</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-15</dimIndex>
+              <name>LCK%s</name>
+              <description>Port x lock pin %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LCK0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Unlocked</name>
+                  <description>Port configuration not locked</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Locked</name>
+                  <description>Port configuration locked</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AFRL</name>
+          <displayName>AFRL</displayName>
+          <description>GPIO alternate function low
+          register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>8</dim>
+              <dimIncrement>0x4</dimIncrement>
+              <dimIndex>L0,L1,L2,L3,L4,L5,L6,L7</dimIndex>
+              <name>AFR%s</name>
+              <description>Alternate function selection for port x
+              bit y (y = 0..7)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>AFRL0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AF0</name>
+                  <description>AF0</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF1</name>
+                  <description>AF1</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF2</name>
+                  <description>AF2</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF3</name>
+                  <description>AF3</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF4</name>
+                  <description>AF4</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF5</name>
+                  <description>AF5</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF6</name>
+                  <description>AF6</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF7</name>
+                  <description>AF7</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF8</name>
+                  <description>AF8</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF9</name>
+                  <description>AF9</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF10</name>
+                  <description>AF10</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF11</name>
+                  <description>AF11</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF12</name>
+                  <description>AF12</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF13</name>
+                  <description>AF13</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF14</name>
+                  <description>AF14</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF15</name>
+                  <description>AF15</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AFRH</name>
+          <displayName>AFRH</displayName>
+          <description>GPIO alternate function high
+          register</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>8</dim>
+              <dimIncrement>0x4</dimIncrement>
+              <dimIndex>H8,H9,H10,H11,H12,H13,H14,H15</dimIndex>
+              <name>AFR%s</name>
+              <description>Alternate function selection for port x
+              bit y (y = 8..15)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>AFRH8</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AF0</name>
+                  <description>AF0</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF1</name>
+                  <description>AF1</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF2</name>
+                  <description>AF2</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF3</name>
+                  <description>AF3</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF4</name>
+                  <description>AF4</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF5</name>
+                  <description>AF5</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF6</name>
+                  <description>AF6</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF7</name>
+                  <description>AF7</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF8</name>
+                  <description>AF8</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF9</name>
+                  <description>AF9</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF10</name>
+                  <description>AF10</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF11</name>
+                  <description>AF11</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF12</name>
+                  <description>AF12</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF13</name>
+                  <description>AF13</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF14</name>
+                  <description>AF14</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AF15</name>
+                  <description>AF15</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>SYSCFG</name>
+      <description>System configuration controller</description>
+      <groupName>SYSCFG</groupName>
+      <baseAddress>0x40013800</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>MEMRM</name>
+          <displayName>MEMRM</displayName>
+          <description>memory remap register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>MEM_MODE</name>
+              <description>MEM_MODE</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>EXTICR1</name>
+          <displayName>EXTICR1</displayName>
+          <description>external interrupt configuration register
+          1</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>EXTI3</name>
+              <description>EXTI x configuration (x = 0 to
+              3)</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>EXTI2</name>
+              <description>EXTI x configuration (x = 0 to
+              3)</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>EXTI1</name>
+              <description>EXTI x configuration (x = 0 to
+              3)</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>EXTI0</name>
+              <description>EXTI x configuration (x = 0 to
+              3)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>EXTICR2</name>
+          <displayName>EXTICR2</displayName>
+          <description>external interrupt configuration register
+          2</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>EXTI7</name>
+              <description>EXTI x configuration (x = 4 to
+              7)</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>EXTI6</name>
+              <description>EXTI x configuration (x = 4 to
+              7)</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>EXTI5</name>
+              <description>EXTI x configuration (x = 4 to
+              7)</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>EXTI4</name>
+              <description>EXTI x configuration (x = 4 to
+              7)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>EXTICR3</name>
+          <displayName>EXTICR3</displayName>
+          <description>external interrupt configuration register
+          3</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>EXTI11</name>
+              <description>EXTI x configuration (x = 8 to
+              11)</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>EXTI10</name>
+              <description>EXTI10</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>EXTI9</name>
+              <description>EXTI x configuration (x = 8 to
+              11)</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>EXTI8</name>
+              <description>EXTI x configuration (x = 8 to
+              11)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>EXTICR4</name>
+          <displayName>EXTICR4</displayName>
+          <description>external interrupt configuration register
+          4</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>EXTI15</name>
+              <description>EXTI x configuration (x = 12 to
+              15)</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>EXTI14</name>
+              <description>EXTI x configuration (x = 12 to
+              15)</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>EXTI13</name>
+              <description>EXTI x configuration (x = 12 to
+              15)</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>EXTI12</name>
+              <description>EXTI x configuration (x = 12 to
+              15)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CMPCR</name>
+          <displayName>CMPCR</displayName>
+          <description>Compensation cell control
+          register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>READY</name>
+              <description>READY</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CMP_PD</name>
+              <description>Compensation cell
+              power-down</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>SPI1</name>
+      <description>Serial peripheral interface</description>
+      <groupName>SPI</groupName>
+      <baseAddress>0x40013000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>SPI1</name>
+        <description>SPI1 global interrupt</description>
+        <value>35</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR1</name>
+          <displayName>CR1</displayName>
+          <description>control register 1</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>BIDIMODE</name>
+              <description>Bidirectional data mode
+              enable</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BIDIMODE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Unidirectional</name>
+                  <description>2-line unidirectional data mode selected</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Bidirectional</name>
+                  <description>1-line bidirectional data mode selected</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BIDIOE</name>
+              <description>Output enable in bidirectional
+              mode</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BIDIOE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>OutputDisabled</name>
+                  <description>Output disabled (receive-only mode)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>OutputEnabled</name>
+                  <description>Output enabled (transmit-only mode)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CRCEN</name>
+              <description>Hardware CRC calculation
+              enable</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CRCEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>CRC calculation disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>CRC calculation enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CRCNEXT</name>
+              <description>CRC transfer next</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CRCNEXT</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TxBuffer</name>
+                  <description>Next transmit value is from Tx buffer</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CRC</name>
+                  <description>Next transmit value is from Tx CRC register</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DFF</name>
+              <description>Data frame format</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DFF</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>EightBit</name>
+                  <description>8-bit data frame format is selected for transmission/reception</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>SixteenBit</name>
+                  <description>16-bit data frame format is selected for transmission/reception</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RXONLY</name>
+              <description>Receive only</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RXONLY</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>FullDuplex</name>
+                  <description>Full duplex (Transmit and receive)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>OutputDisabled</name>
+                  <description>Output disabled (Receive-only mode)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SSM</name>
+              <description>Software slave management</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SSM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Software slave management disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Software slave management enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SSI</name>
+              <description>Internal slave select</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SSI</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>SlaveSelected</name>
+                  <description>0 is forced onto the NSS pin and the I/O value of the NSS pin is ignored</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>SlaveNotSelected</name>
+                  <description>1 is forced onto the NSS pin and the I/O value of the NSS pin is ignored</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LSBFIRST</name>
+              <description>Frame format</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LSBFIRST</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>MSBFirst</name>
+                  <description>Data is transmitted/received with the MSB first</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>LSBFirst</name>
+                  <description>Data is transmitted/received with the LSB first</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SPE</name>
+              <description>SPI enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SPE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Peripheral disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Peripheral enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BR</name>
+              <description>Baud rate control</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>BR</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>f_PCLK / 2</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>f_PCLK / 4</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div8</name>
+                  <description>f_PCLK / 8</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div16</name>
+                  <description>f_PCLK / 16</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div32</name>
+                  <description>f_PCLK / 32</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div64</name>
+                  <description>f_PCLK / 64</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div128</name>
+                  <description>f_PCLK / 128</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div256</name>
+                  <description>f_PCLK / 256</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MSTR</name>
+              <description>Master selection</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MSTR</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Slave</name>
+                  <description>Slave configuration</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Master</name>
+                  <description>Master configuration</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CPOL</name>
+              <description>Clock polarity</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CPOL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>IdleLow</name>
+                  <description>CK to 0 when idle</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>IdleHigh</name>
+                  <description>CK to 1 when idle</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CPHA</name>
+              <description>Clock phase</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CPHA</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>FirstEdge</name>
+                  <description>The first clock transition is the first data capture edge</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>SecondEdge</name>
+                  <description>The second clock transition is the first data capture edge</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR2</name>
+          <displayName>CR2</displayName>
+          <description>control register 2</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TXEIE</name>
+              <description>Tx buffer empty interrupt
+              enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TXEIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Masked</name>
+                  <description>TXE interrupt masked</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>NotMasked</name>
+                  <description>TXE interrupt not masked</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RXNEIE</name>
+              <description>RX buffer not empty interrupt
+              enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RXNEIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Masked</name>
+                  <description>RXE interrupt masked</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>NotMasked</name>
+                  <description>RXE interrupt not masked</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ERRIE</name>
+              <description>Error interrupt enable</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ERRIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Masked</name>
+                  <description>Error interrupt masked</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>NotMasked</name>
+                  <description>Error interrupt not masked</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FRF</name>
+              <description>Frame format</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FRF</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Motorola</name>
+                  <description>SPI Motorola mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI</name>
+                  <description>SPI TI mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SSOE</name>
+              <description>SS output enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SSOE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>SS output is disabled in master mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>SS output is enabled in master mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TXDMAEN</name>
+              <description>Tx buffer DMA enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TXDMAEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Tx buffer DMA disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Tx buffer DMA enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RXDMAEN</name>
+              <description>Rx buffer DMA enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RXDMAEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Rx buffer DMA disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Rx buffer DMA enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000002</resetValue>
+          <fields>
+            <field>
+              <name>FRE</name>
+              <description>TI frame format error</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>FRER</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoError</name>
+                  <description>No frame format error</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Error</name>
+                  <description>A frame format error occurred</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BSY</name>
+              <description>Busy flag</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>BSYR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotBusy</name>
+                  <description>SPI not busy</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Busy</name>
+                  <description>SPI busy</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OVR</name>
+              <description>Overrun flag</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>OVRR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoOverrun</name>
+                  <description>No overrun occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Overrun</name>
+                  <description>Overrun occurred</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MODF</name>
+              <description>Mode fault</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>MODFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoFault</name>
+                  <description>No mode fault occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Fault</name>
+                  <description>Mode fault occurred</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CRCERR</name>
+              <description>CRC error flag</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>CRCERRR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Match</name>
+                  <description>CRC value received matches the SPIx_RXCRCR value</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>NoMatch</name>
+                  <description>CRC value received does not match the SPIx_RXCRCR value</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>CRCERRW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UDR</name>
+              <description>Underrun flag</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>UDRR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoUnderrun</name>
+                  <description>No underrun occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Underrun</name>
+                  <description>Underrun occurred</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CHSIDE</name>
+              <description>Channel side</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>CHSIDE</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Left</name>
+                  <description>Channel left has to be transmitted or has been received</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Right</name>
+                  <description>Channel right has to be transmitted or has been received</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TXE</name>
+              <description>Transmit buffer empty</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>TXE</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotEmpty</name>
+                  <description>Tx buffer not empty</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Empty</name>
+                  <description>Tx buffer empty</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RXNE</name>
+              <description>Receive buffer not empty</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>RXNE</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Empty</name>
+                  <description>Rx buffer empty</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>NotEmpty</name>
+                  <description>Rx buffer not empty</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DR</name>
+          <displayName>DR</displayName>
+          <description>data register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DR</name>
+              <description>Data register</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CRCPR</name>
+          <displayName>CRCPR</displayName>
+          <description>CRC polynomial register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000007</resetValue>
+          <fields>
+            <field>
+              <name>CRCPOLY</name>
+              <description>CRC polynomial register</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>RXCRCR</name>
+          <displayName>RXCRCR</displayName>
+          <description>RX CRC register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>RxCRC</name>
+              <description>Rx CRC register</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>TXCRCR</name>
+          <displayName>TXCRCR</displayName>
+          <description>TX CRC register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TxCRC</name>
+              <description>Tx CRC register</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>I2SCFGR</name>
+          <displayName>I2SCFGR</displayName>
+          <description>I2S configuration register</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>I2SMOD</name>
+              <description>I2S mode selection</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>I2SMOD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>SPIMode</name>
+                  <description>SPI mode is selected</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>I2SMode</name>
+                  <description>I2S mode is selected</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>I2SE</name>
+              <description>I2S Enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>I2SE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>I2S peripheral is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>I2S peripheral is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>I2SCFG</name>
+              <description>I2S configuration mode</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>I2SCFG</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>SlaveTx</name>
+                  <description>Slave - transmit</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>SlaveRx</name>
+                  <description>Slave - receive</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>MasterTx</name>
+                  <description>Master - transmit</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>MasterRx</name>
+                  <description>Master - receive</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PCMSYNC</name>
+              <description>PCM frame synchronization</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PCMSYNC</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Short</name>
+                  <description>Short frame synchronisation</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Long</name>
+                  <description>Long frame synchronisation</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>I2SSTD</name>
+              <description>I2S standard selection</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>I2SSTD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Philips</name>
+                  <description>I2S Philips standard</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>MSB</name>
+                  <description>MSB justified standard</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>LSB</name>
+                  <description>LSB justified standard</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PCM</name>
+                  <description>PCM standard</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CKPOL</name>
+              <description>Steady state clock
+              polarity</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CKPOL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>IdleLow</name>
+                  <description>I2S clock inactive state is low level</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>IdleHigh</name>
+                  <description>I2S clock inactive state is high level</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DATLEN</name>
+              <description>Data length to be
+              transferred</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>DATLEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>SixteenBit</name>
+                  <description>16-bit data length</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TwentyFourBit</name>
+                  <description>24-bit data length</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ThirtyTwoBit</name>
+                  <description>32-bit data length</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CHLEN</name>
+              <description>Channel length (number of bits per audio
+              channel)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CHLEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>SixteenBit</name>
+                  <description>16-bit wide</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ThirtyTwoBit</name>
+                  <description>32-bit wide</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>I2SPR</name>
+          <displayName>I2SPR</displayName>
+          <description>I2S prescaler register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x0000000A</resetValue>
+          <fields>
+            <field>
+              <name>MCKOE</name>
+              <description>Master clock output enable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MCKOE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Master clock output is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Master clock output is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ODD</name>
+              <description>Odd factor for the
+              prescaler</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ODD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Even</name>
+                  <description>Real divider value is I2SDIV * 2</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Odd</name>
+                  <description>Real divider value is (I2SDIV * 2) + 1</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>I2SDIV</name>
+              <description>I2S Linear prescaler</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>2</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral derivedFrom="SPI1">
+      <name>SPI2</name>
+      <baseAddress>0x40003800</baseAddress>
+      <interrupt>
+        <name>SPI2</name>
+        <description>SPI2 global interrupt</description>
+        <value>36</value>
+      </interrupt>
+    </peripheral>
+    <peripheral derivedFrom="SPI1">
+      <name>SPI3</name>
+      <baseAddress>0x40003C00</baseAddress>
+      <interrupt>
+        <name>SPI3</name>
+        <description>SPI3 global interrupt</description>
+        <value>51</value>
+      </interrupt>
+    </peripheral>
+    <peripheral derivedFrom="SPI1">
+      <name>I2S2ext</name>
+      <baseAddress>0x40003400</baseAddress>
+    </peripheral>
+    <peripheral derivedFrom="SPI1">
+      <name>I2S3ext</name>
+      <baseAddress>0x40004000</baseAddress>
+    </peripheral>
+    <peripheral derivedFrom="SPI1">
+      <name>SPI4</name>
+      <baseAddress>0x40013400</baseAddress>
+      <interrupt>
+        <name>SPI1</name>
+        <description>SPI1 global interrupt</description>
+        <value>35</value>
+      </interrupt>
+    </peripheral>
+    <peripheral derivedFrom="SPI1">
+      <name>SPI5</name>
+      <baseAddress>0x40015000</baseAddress>
+      <interrupt>
+        <name>SPI1</name>
+        <description>SPI1 global interrupt</description>
+        <value>35</value>
+      </interrupt>
+    </peripheral>
+    <peripheral derivedFrom="SPI1">
+      <name>SPI6</name>
+      <baseAddress>0x40015400</baseAddress>
+      <interrupt>
+        <name>SPI3</name>
+        <description>SPI3 global interrupt</description>
+        <value>51</value>
+      </interrupt>
+    </peripheral>
+    <peripheral>
+      <name>SDIO</name>
+      <description>Secure digital input/output
+      interface</description>
+      <groupName>SDIO</groupName>
+      <baseAddress>0x40012C00</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>SDIO</name>
+        <description>SDIO global interrupt</description>
+        <value>49</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>POWER</name>
+          <displayName>POWER</displayName>
+          <description>power control register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PWRCTRL</name>
+              <description>PWRCTRL</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>PWRCTRL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>PowerOff</name>
+                  <description>Power off</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PowerOn</name>
+                  <description>Power on</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CLKCR</name>
+          <displayName>CLKCR</displayName>
+          <description>SDI clock control register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>HWFC_EN</name>
+              <description>HW Flow Control enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>HWFC_EN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>HW Flow Control is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>HW Flow Control is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>NEGEDGE</name>
+              <description>SDIO_CK dephasing selection
+              bit</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>NEGEDGE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Rising</name>
+                  <description>SDIO_CK generated on the rising edge</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Falling</name>
+                  <description>SDIO_CK generated on the falling edge</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WIDBUS</name>
+              <description>Wide bus mode enable bit</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>WIDBUS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>BusWidth1</name>
+                  <description>1 lane wide bus</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>BusWidth4</name>
+                  <description>4 lane wide bus</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>BusWidth8</name>
+                  <description>8 lane wide bus</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BYPASS</name>
+              <description>Clock divider bypass enable
+              bit</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BYPASS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>SDIOCLK is divided according to the CLKDIV value before driving the SDIO_CK output signal.</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>SDIOCLK directly drives the SDIO_CK output signal</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PWRSAV</name>
+              <description>Power saving configuration
+              bit</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PWRSAV</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>SDIO_CK clock is always enabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>SDIO_CK is only enabled when the bus is active</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CLKEN</name>
+              <description>Clock enable bit</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CLKEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Disable clock</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Enable clock</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CLKDIV</name>
+              <description>Clock divide factor</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ARG</name>
+          <displayName>ARG</displayName>
+          <description>argument register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CMDARG</name>
+              <description>Command argument</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CMD</name>
+          <displayName>CMD</displayName>
+          <description>command register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CE_ATACMD</name>
+              <description>CE-ATA command</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CE_ATACMD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>CE-ATA command disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>CE-ATA command enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>nIEN</name>
+              <description>not Interrupt Enable</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>nIEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Interrupts to the CE-ATA not disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt to the CE-ATA are disabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ENCMDcompl</name>
+              <description>Enable CMD completion</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ENCMDcompl</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Command complete signal disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Command complete signal enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SDIOSuspend</name>
+              <description>SD I/O suspend command</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SDIOSuspend</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Next command is not a SDIO suspend command</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Next command send is a SDIO suspend command</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CPSMEN</name>
+              <description>Command path state machine (CPSM) Enable
+              bit</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CPSMEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Command path state machine disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Command path state machine enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WAITPEND</name>
+              <description>CPSM Waits for ends of data transfer
+              (CmdPend internal signal).</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WAITPEND</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Don't wait for data end</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Wait for end of data transfer signal before sending command</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WAITINT</name>
+              <description>CPSM waits for interrupt
+              request</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WAITINT</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Don't wait for interrupt request</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Wait for interrupt request</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WAITRESP</name>
+              <description>Wait for response bits</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>WAITRESP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoResponse</name>
+                  <description>No response</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ShortResponse</name>
+                  <description>Short response</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>NoResponse2</name>
+                  <description>No reponse</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>LongResponse</name>
+                  <description>Long reponse</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CMDINDEX</name>
+              <description>Command index</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>6</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>63</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>RESPCMD</name>
+          <displayName>RESPCMD</displayName>
+          <description>command response register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>RESPCMD</name>
+              <description>Response command index</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>6</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>63</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>4</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>1-4</dimIndex>
+          <name>RESP%s</name>
+          <displayName>RESP1</displayName>
+          <description>SDIO response %s register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CARDSTATUS</name>
+              <description>Status of a card, which is part of the received response</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DTIMER</name>
+          <displayName>DTIMER</displayName>
+          <description>data timer register</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DATATIME</name>
+              <description>Data timeout period</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DLEN</name>
+          <displayName>DLEN</displayName>
+          <description>data length register</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DATALENGTH</name>
+              <description>Data length value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>25</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>33554431</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DCTRL</name>
+          <displayName>DCTRL</displayName>
+          <description>data control register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SDIOEN</name>
+              <description>SD I/O enable functions</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SDIOEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>SDIO operations disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>SDIO operations enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RWMOD</name>
+              <description>Read wait mode</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RWMOD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>D2</name>
+                  <description>Read wait control stopping using SDIO_D2</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Ck</name>
+                  <description>Read wait control using SDIO_CK</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RWSTOP</name>
+              <description>Read wait stop</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RWSTOP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Read wait in progress if RWSTART is enabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Enable for read wait stop if RWSTART is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RWSTART</name>
+              <description>Read wait start</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RWSTART</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Don't start read wait operation</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Read wait operation starts</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DBLOCKSIZE</name>
+              <description>Data block size</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>DMAEN</name>
+              <description>DMA enable bit</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DMAEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Dma disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Dma enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DTMODE</name>
+              <description>Data transfer mode selection 1: Stream
+              or SDIO multibyte data transfer.</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DTMODE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>BlockMode</name>
+                  <description>Bloack data transfer</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>StreamMode</name>
+                  <description>Stream or SDIO multibyte data transfer</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DTDIR</name>
+              <description>Data transfer direction
+              selection</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DTDIR</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>ControllerToCard</name>
+                  <description>From controller to card</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CardToController</name>
+                  <description>From card to controller</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DTEN</name>
+              <description>DTEN</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DTEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Start transfer</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DCOUNT</name>
+          <displayName>DCOUNT</displayName>
+          <description>data counter register</description>
+          <addressOffset>0x30</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DATACOUNT</name>
+              <description>Data count value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>25</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>33554431</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>STA</name>
+          <displayName>STA</displayName>
+          <description>status register</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CEATAEND</name>
+              <description>CE-ATA command completion signal
+              received for CMD61</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CEATAEND</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotReceived</name>
+                  <description>Completion signal not received</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Received</name>
+                  <description>CE-ATA command completion signal received for CMD61</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SDIOIT</name>
+              <description>SDIO interrupt received</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SDIOIT</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotReceived</name>
+                  <description>SDIO interrupt not receieved</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Received</name>
+                  <description>SDIO interrupt received</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RXDAVL</name>
+              <description>Data available in receive
+              FIFO</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RXDAVL</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotAvailable</name>
+                  <description>Data not available in receive FIFO</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Available</name>
+                  <description>Data available in receive FIFO</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TXDAVL</name>
+              <description>Data available in transmit
+              FIFO</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TXDAVL</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotAvailable</name>
+                  <description>Data not available in transmit FIFO</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Available</name>
+                  <description>Data available in transmit FIFO</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RXFIFOE</name>
+              <description>Receive FIFO empty</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RXFIFOE</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotEmpty</name>
+                  <description>Receive FIFO not empty</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Empty</name>
+                  <description>Receive FIFO empty</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TXFIFOE</name>
+              <description>Transmit FIFO empty</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TXFIFOE</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotEmpty</name>
+                  <description>Transmit FIFO not empty</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Empty</name>
+                  <description>Transmit FIFO empty. When HW Flow Control is enabled, TXFIFOE signals becomes activated when the FIFO contains 2 words.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RXFIFOF</name>
+              <description>Receive FIFO full</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RXFIFOF</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotFull</name>
+                  <description>Transmit FIFO not full</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Full</name>
+                  <description>Receive FIFO full. When HW Flow Control is enabled, RXFIFOF signals becomes activated 2 words before the FIFO is full.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TXFIFOF</name>
+              <description>Transmit FIFO full</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TXFIFOF</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotFull</name>
+                  <description>Transmit FIFO not full</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Full</name>
+                  <description>Transmit FIFO full</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RXFIFOHF</name>
+              <description>Receive FIFO half full: there are at
+              least 8 words in the FIFO</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RXFIFOHF</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotHalfFull</name>
+                  <description>Receive FIFO not half full</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>HalfFull</name>
+                  <description>Receive FIFO half full. At least 8 words in the FIFO</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TXFIFOHE</name>
+              <description>Transmit FIFO half empty: at least 8
+              words can be written into the FIFO</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TXFIFOHE</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotHalfEmpty</name>
+                  <description>Transmit FIFO not half empty</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>HalfEmpty</name>
+                  <description>Transmit FIFO half empty. At least 8 words can be written into the FIFO</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RXACT</name>
+              <description>Data receive in progress</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RXACT</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotInProgress</name>
+                  <description>Data receive not in progress</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InProgress</name>
+                  <description>Data receive in progress</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TXACT</name>
+              <description>Data transmit in progress</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TXACT</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotInProgress</name>
+                  <description>Data transmit is not in progress</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InProgress</name>
+                  <description>Data transmit in progress</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CMDACT</name>
+              <description>Command transfer in
+              progress</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CMDACT</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotInProgress</name>
+                  <description>Command transfer not in progress</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InProgress</name>
+                  <description>Command tranfer in progress</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DBCKEND</name>
+              <description>Data block sent/received (CRC check
+              passed)</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DBCKEND</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotTransferred</name>
+                  <description>Data block not sent/received (CRC check failed)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Transferred</name>
+                  <description>Data block sent/received (CRC check passed)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>STBITERR</name>
+              <description>Start bit not detected on all data
+              signals in wide bus mode</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>STBITERR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Detected</name>
+                  <description>No start bit detected error</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>NotDetected</name>
+                  <description>Start bit not detected error</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DATAEND</name>
+              <description>Data end (data counter, SDIDCOUNT, is
+              zero)</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DATAEND</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotDone</name>
+                  <description>Not done</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Done</name>
+                  <description>Data end (DCOUNT, is zero)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CMDSENT</name>
+              <description>Command sent (no response
+              required)</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CMDSENT</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotSent</name>
+                  <description>Command not sent</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Sent</name>
+                  <description>Command sent (no response required)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CMDREND</name>
+              <description>Command response received (CRC check
+              passed)</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CMDREND</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotDone</name>
+                  <description>Command not done</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Done</name>
+                  <description>Command response received (CRC check passed)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RXOVERR</name>
+              <description>Received FIFO overrun
+              error</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RXOVERR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoOverrun</name>
+                  <description>No FIFO overrun error</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Overrun</name>
+                  <description>Receive FIFO overrun error</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TXUNDERR</name>
+              <description>Transmit FIFO underrun
+              error</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TXUNDERR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoUnderrun</name>
+                  <description>No transmit FIFO underrun error</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Underrun</name>
+                  <description>Transmit FIFO underrun error</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DTIMEOUT</name>
+              <description>Data timeout</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DTIMEOUT</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoTimeout</name>
+                  <description>No data timeout</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Timeout</name>
+                  <description>Data timeout</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CTIMEOUT</name>
+              <description>Command response timeout</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CTIMEOUT</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoTimeout</name>
+                  <description>No Command timeout</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Timeout</name>
+                  <description>Command timeout</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DCRCFAIL</name>
+              <description>Data block sent/received (CRC check
+              failed)</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DCRCFAIL</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotFailed</name>
+                  <description>No Data block sent/received crc check fail</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Failed</name>
+                  <description>Data block sent/received crc failed</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CCRCFAIL</name>
+              <description>Command response received (CRC check
+              failed)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CCRCFAIL</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotFailed</name>
+                  <description>Command response received, crc check passed</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Failed</name>
+                  <description>Command response received, crc check failed</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ICR</name>
+          <displayName>ICR</displayName>
+          <description>interrupt clear register</description>
+          <addressOffset>0x38</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CEATAENDC</name>
+              <description>CEATAEND flag clear bit</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILCW"/>
+            </field>
+            <field>
+              <name>SDIOITC</name>
+              <description>SDIOIT flag clear bit</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILCW"/>
+            </field>
+            <field>
+              <name>DBCKENDC</name>
+              <description>DBCKEND flag clear bit</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILCW"/>
+            </field>
+            <field>
+              <name>STBITERRC</name>
+              <description>STBITERR flag clear bit</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILCW"/>
+            </field>
+            <field>
+              <name>DATAENDC</name>
+              <description>DATAEND flag clear bit</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILCW"/>
+            </field>
+            <field>
+              <name>CMDSENTC</name>
+              <description>CMDSENT flag clear bit</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILCW"/>
+            </field>
+            <field>
+              <name>CMDRENDC</name>
+              <description>CMDREND flag clear bit</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILCW"/>
+            </field>
+            <field>
+              <name>RXOVERRC</name>
+              <description>RXOVERR flag clear bit</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILCW"/>
+            </field>
+            <field>
+              <name>TXUNDERRC</name>
+              <description>TXUNDERR flag clear bit</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILCW"/>
+            </field>
+            <field>
+              <name>DTIMEOUTC</name>
+              <description>DTIMEOUT flag clear bit</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILCW"/>
+            </field>
+            <field>
+              <name>CTIMEOUTC</name>
+              <description>CTIMEOUT flag clear bit</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILCW"/>
+            </field>
+            <field>
+              <name>DCRCFAILC</name>
+              <description>DCRCFAIL flag clear bit</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILCW"/>
+            </field>
+            <field>
+              <name>CCRCFAILC</name>
+              <description>CCRCFAIL flag clear bit</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CCRCFAILCW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>MASK</name>
+          <displayName>MASK</displayName>
+          <description>mask register</description>
+          <addressOffset>0x3C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CEATAENDIE</name>
+              <description>CE-ATA command completion signal
+              received interrupt enable</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>SDIOITIE</name>
+              <description>SDIO mode interrupt received interrupt
+              enable</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>RXDAVLIE</name>
+              <description>Data available in Rx FIFO interrupt
+              enable</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>TXDAVLIE</name>
+              <description>Data available in Tx FIFO interrupt
+              enable</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>RXFIFOEIE</name>
+              <description>Rx FIFO empty interrupt
+              enable</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>TXFIFOEIE</name>
+              <description>Tx FIFO empty interrupt
+              enable</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>RXFIFOFIE</name>
+              <description>Rx FIFO full interrupt
+              enable</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>TXFIFOFIE</name>
+              <description>Tx FIFO full interrupt
+              enable</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>RXFIFOHFIE</name>
+              <description>Rx FIFO half full interrupt
+              enable</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>TXFIFOHEIE</name>
+              <description>Tx FIFO half empty interrupt
+              enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>RXACTIE</name>
+              <description>Data receive acting interrupt
+              enable</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>TXACTIE</name>
+              <description>Data transmit acting interrupt
+              enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>CMDACTIE</name>
+              <description>Command acting interrupt
+              enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>DBCKENDIE</name>
+              <description>Data block end interrupt
+              enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>STBITERRIE</name>
+              <description>Start bit error interrupt
+              enable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>DATAENDIE</name>
+              <description>Data end interrupt enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>CMDSENTIE</name>
+              <description>Command sent interrupt
+              enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>CMDRENDIE</name>
+              <description>Command response received interrupt
+              enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>RXOVERRIE</name>
+              <description>Rx FIFO overrun error interrupt
+              enable</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>TXUNDERRIE</name>
+              <description>Tx FIFO underrun error interrupt
+              enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>DTIMEOUTIE</name>
+              <description>Data timeout interrupt
+              enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>CTIMEOUTIE</name>
+              <description>Command timeout interrupt
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>DCRCFAILIE</name>
+              <description>Data CRC fail interrupt
+              enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CCRCFAILIE"/>
+            </field>
+            <field>
+              <name>CCRCFAILIE</name>
+              <description>Command CRC fail interrupt
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CCRCFAILIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>FIFOCNT</name>
+          <displayName>FIFOCNT</displayName>
+          <description>FIFO counter register</description>
+          <addressOffset>0x48</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>FIFOCOUNT</name>
+              <description>Remaining number of words to be written
+              to or read from the FIFO.</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>24</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>16777215</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>FIFO</name>
+          <displayName>FIFO</displayName>
+          <description>data FIFO register</description>
+          <addressOffset>0x80</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>FIFOData</name>
+              <description>Receive and transmit FIFO
+              data</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>ADC1</name>
+      <description>Analog-to-digital converter</description>
+      <groupName>ADC</groupName>
+      <baseAddress>0x40012000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x51</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>ADC</name>
+        <description>ADC1 global interrupt</description>
+        <value>18</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OVR</name>
+              <description>Overrun</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>OVRR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoOverrun</name>
+                  <description>No overrun occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Overrun</name>
+                  <description>Overrun occurred</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>OVRW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>STRT</name>
+              <description>Regular channel start flag</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>STRTR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotStarted</name>
+                  <description>No regular channel conversion started</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Started</name>
+                  <description>Regular channel conversion has started</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>STRTW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>JSTRT</name>
+              <description>Injected channel start
+              flag</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>JSTRTR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotStarted</name>
+                  <description>No injected channel conversion started</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Started</name>
+                  <description>Injected channel conversion has started</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>JSTRTW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>JEOC</name>
+              <description>Injected channel end of
+              conversion</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>JEOCR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotComplete</name>
+                  <description>Conversion is not complete</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Complete</name>
+                  <description>Conversion complete</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>JEOCW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>EOC</name>
+              <description>Regular channel end of
+              conversion</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>EOCR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotComplete</name>
+                  <description>Conversion is not complete</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Complete</name>
+                  <description>Conversion complete</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>EOCW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>AWD</name>
+              <description>Analog watchdog flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>AWDR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoEvent</name>
+                  <description>No analog watchdog event occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Event</name>
+                  <description>Analog watchdog event occurred</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>AWDW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR1</name>
+          <displayName>CR1</displayName>
+          <description>control register 1</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OVRIE</name>
+              <description>Overrun interrupt enable</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OVRIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Overrun interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Overrun interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RES</name>
+              <description>Resolution</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>RES</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TwelveBit</name>
+                  <description>12-bit (15 ADCCLK cycles)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TenBit</name>
+                  <description>10-bit (13 ADCCLK cycles)</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>EightBit</name>
+                  <description>8-bit (11 ADCCLK cycles)</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>SixBit</name>
+                  <description>6-bit (9 ADCCLK cycles)</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>AWDEN</name>
+              <description>Analog watchdog enable on regular
+              channels</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>AWDEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Analog watchdog disabled on regular channels</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Analog watchdog enabled on regular channels</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>JAWDEN</name>
+              <description>Analog watchdog enable on injected
+              channels</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>JAWDEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Analog watchdog disabled on injected channels</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Analog watchdog enabled on injected channels</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DISCNUM</name>
+              <description>Discontinuous mode channel
+              count</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>3</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>7</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>JDISCEN</name>
+              <description>Discontinuous mode on injected
+              channels</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>JDISCEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Discontinuous mode on injected channels disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Discontinuous mode on injected channels enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DISCEN</name>
+              <description>Discontinuous mode on regular
+              channels</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DISCEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Discontinuous mode on regular channels disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Discontinuous mode on regular channels enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>JAUTO</name>
+              <description>Automatic injected group
+              conversion</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>JAUTO</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Automatic injected group conversion disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Automatic injected group conversion enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>AWDSGL</name>
+              <description>Enable the watchdog on a single channel
+              in scan mode</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>AWDSGL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AllChannels</name>
+                  <description>Analog watchdog enabled on all channels</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>SingleChannel</name>
+                  <description>Analog watchdog enabled on a single channel</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SCAN</name>
+              <description>Scan mode</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SCAN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Scan mode disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Scan mode enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>JEOCIE</name>
+              <description>Interrupt enable for injected
+              channels</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>JEOCIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>JEOC interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>JEOC interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>AWDIE</name>
+              <description>Analog watchdog interrupt
+              enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>AWDIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Analogue watchdog interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Analogue watchdog interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>EOCIE</name>
+              <description>Interrupt enable for EOC</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>EOCIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>EOC interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>EOC interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>AWDCH</name>
+              <description>Analog watchdog channel select
+              bits</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR2</name>
+          <displayName>CR2</displayName>
+          <description>control register 2</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SWSTART</name>
+              <description>Start conversion of regular
+              channels</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SWSTARTW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Start</name>
+                  <description>Starts conversion of regular channels</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>EXTEN</name>
+              <description>External trigger enable for regular
+              channels</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>EXTEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Trigger detection disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>RisingEdge</name>
+                  <description>Trigger detection on the rising edge</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FallingEdge</name>
+                  <description>Trigger detection on the falling edge</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>BothEdges</name>
+                  <description>Trigger detection on both the rising and falling edges</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>EXTSEL</name>
+              <description>External event select for regular
+              group</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>EXTSEL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TIM1CC1</name>
+                  <description>Timer 1 CC1 event</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM1CC2</name>
+                  <description>Timer 1 CC2 event</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM1CC3</name>
+                  <description>Timer 1 CC3 event</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM2CC2</name>
+                  <description>Timer 2 CC2 event</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM2CC3</name>
+                  <description>Timer 2 CC3 event</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM2CC4</name>
+                  <description>Timer 2 CC4 event</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM2TRGO</name>
+                  <description>Timer 2 TRGO event</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM3CC1</name>
+                  <description>Timer 3 CC1 event</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM3TRGO</name>
+                  <description>Timer 3 TRGO event</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM4CC4</name>
+                  <description>Timer 4 CC4 event</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM5CC1</name>
+                  <description>Timer 5 CC1 event</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM5CC2</name>
+                  <description>Timer 5 CC2 event</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM5CC3</name>
+                  <description>Timer 5 CC3 event</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM8CC1</name>
+                  <description>Timer 8 CC1 event</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM8TRGO</name>
+                  <description>Timer 8 TRGO event</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>EXTI11</name>
+                  <description>EXTI line 11</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>JSWSTART</name>
+              <description>Start conversion of injected
+              channels</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>JSWSTARTW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Start</name>
+                  <description>Starts conversion of injected channels</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>JEXTEN</name>
+              <description>External trigger enable for injected
+              channels</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>JEXTEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Trigger detection disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>RisingEdge</name>
+                  <description>Trigger detection on the rising edge</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FallingEdge</name>
+                  <description>Trigger detection on the falling edge</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>BothEdges</name>
+                  <description>Trigger detection on both the rising and falling edges</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>JEXTSEL</name>
+              <description>External event select for injected
+              group</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>JEXTSEL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TIM1CC4</name>
+                  <description>Timer 1 CC4 event</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM1TRGO</name>
+                  <description>Timer 1 TRGO event</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM2CC1</name>
+                  <description>Timer 2 CC1 event</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM2TRGO</name>
+                  <description>Timer 2 TRGO event</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM3CC2</name>
+                  <description>Timer 3 CC2 event</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM3CC4</name>
+                  <description>Timer 3 CC4 event</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM4CC1</name>
+                  <description>Timer 4 CC1 event</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM4CC2</name>
+                  <description>Timer 4 CC2 event</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM4CC3</name>
+                  <description>Timer 4 CC3 event</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM4TRGO</name>
+                  <description>Timer 4 TRGO event</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM5CC4</name>
+                  <description>Timer 5 CC4 event</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM5TRGO</name>
+                  <description>Timer 5 TRGO event</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM8CC2</name>
+                  <description>Timer 8 CC2 event</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM8CC3</name>
+                  <description>Timer 8 CC3 event</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM8CC4</name>
+                  <description>Timer 8 CC4 event</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>EXTI15</name>
+                  <description>EXTI line 15</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ALIGN</name>
+              <description>Data alignment</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ALIGN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Right</name>
+                  <description>Right alignment</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Left</name>
+                  <description>Left alignment</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>EOCS</name>
+              <description>End of conversion
+              selection</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>EOCS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>EachSequence</name>
+                  <description>The EOC bit is set at the end of each sequence of regular conversions</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>EachConversion</name>
+                  <description>The EOC bit is set at the end of each regular conversion</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DDS</name>
+              <description>DMA disable selection (for single ADC
+              mode)</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DDS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Single</name>
+                  <description>No new DMA request is issued after the last transfer</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Continuous</name>
+                  <description>DMA requests are issued as long as data are converted and DMA=1</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DMA</name>
+              <description>Direct memory access mode (for single
+              ADC mode)</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DMA</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>DMA mode disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>DMA mode enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CONT</name>
+              <description>Continuous conversion</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CONT</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Single</name>
+                  <description>Single conversion mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Continuous</name>
+                  <description>Continuous conversion mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ADON</name>
+              <description>A/D Converter ON / OFF</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ADON</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Disable ADC conversion and go to power down mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Enable ADC</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SMPR1</name>
+          <displayName>SMPR1</displayName>
+          <description>sample time register 1</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SMP18</name>
+              <description>Channel 18 sampling time selection</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP10"/>
+            </field>
+            <field>
+              <name>SMP17</name>
+              <description>Channel 17 sampling time selection</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP10"/>
+            </field>
+            <field>
+              <name>SMP16</name>
+              <description>Channel 16 sampling time selection</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP10"/>
+            </field>
+            <field>
+              <name>SMP15</name>
+              <description>Channel 15 sampling time selection</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP10"/>
+            </field>
+            <field>
+              <name>SMP14</name>
+              <description>Channel 14 sampling time selection</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP10"/>
+            </field>
+            <field>
+              <name>SMP13</name>
+              <description>Channel 13 sampling time selection</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP10"/>
+            </field>
+            <field>
+              <name>SMP12</name>
+              <description>Channel 12 sampling time selection</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP10"/>
+            </field>
+            <field>
+              <name>SMP11</name>
+              <description>Channel 11 sampling time selection</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP10"/>
+            </field>
+            <field>
+              <name>SMP10</name>
+              <description>Channel 10 sampling time selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>SMP10</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Cycles3</name>
+                  <description>3 cycles</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Cycles15</name>
+                  <description>15 cycles</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Cycles28</name>
+                  <description>28 cycles</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Cycles56</name>
+                  <description>56 cycles</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Cycles84</name>
+                  <description>84 cycles</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Cycles112</name>
+                  <description>112 cycles</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Cycles144</name>
+                  <description>144 cycles</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Cycles480</name>
+                  <description>480 cycles</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SMPR2</name>
+          <displayName>SMPR2</displayName>
+          <description>sample time register 2</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SMP9</name>
+              <description>Channel 9 sampling time selection</description>
+              <bitOffset>27</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP0"/>
+            </field>
+            <field>
+              <name>SMP8</name>
+              <description>Channel 8 sampling time selection</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP0"/>
+            </field>
+            <field>
+              <name>SMP7</name>
+              <description>Channel 7 sampling time selection</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP0"/>
+            </field>
+            <field>
+              <name>SMP6</name>
+              <description>Channel 6 sampling time selection</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP0"/>
+            </field>
+            <field>
+              <name>SMP5</name>
+              <description>Channel 5 sampling time selection</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP0"/>
+            </field>
+            <field>
+              <name>SMP4</name>
+              <description>Channel 4 sampling time selection</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP0"/>
+            </field>
+            <field>
+              <name>SMP3</name>
+              <description>Channel 3 sampling time selection</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP0"/>
+            </field>
+            <field>
+              <name>SMP2</name>
+              <description>Channel 2 sampling time selection</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP0"/>
+            </field>
+            <field>
+              <name>SMP1</name>
+              <description>Channel 1 sampling time selection</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="SMP0"/>
+            </field>
+            <field>
+              <name>SMP0</name>
+              <description>Channel 0 sampling time selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>SMP0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Cycles3</name>
+                  <description>3 cycles</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Cycles15</name>
+                  <description>15 cycles</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Cycles28</name>
+                  <description>28 cycles</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Cycles56</name>
+                  <description>56 cycles</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Cycles84</name>
+                  <description>84 cycles</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Cycles112</name>
+                  <description>112 cycles</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Cycles144</name>
+                  <description>144 cycles</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Cycles480</name>
+                  <description>480 cycles</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>4</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>1-4</dimIndex>
+          <name>JOFR%s</name>
+          <displayName>JOFR1</displayName>
+          <description>injected channel data offset register
+          x</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>JOFFSET</name>
+              <description>Data offset for injected channel
+              x</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HTR</name>
+          <displayName>HTR</displayName>
+          <description>watchdog higher threshold
+          register</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000FFF</resetValue>
+          <fields>
+            <field>
+              <name>HT</name>
+              <description>Analog watchdog higher
+              threshold</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>LTR</name>
+          <displayName>LTR</displayName>
+          <description>watchdog lower threshold
+          register</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>LT</name>
+              <description>Analog watchdog lower
+              threshold</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SQR1</name>
+          <displayName>SQR1</displayName>
+          <description>regular sequence register 1</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>L</name>
+              <description>Regular channel sequence
+              length</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SQ16</name>
+              <description>16th conversion in regular
+              sequence</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SQ15</name>
+              <description>15th conversion in regular
+              sequence</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SQ14</name>
+              <description>14th conversion in regular
+              sequence</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SQ13</name>
+              <description>13th conversion in regular
+              sequence</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SQR2</name>
+          <displayName>SQR2</displayName>
+          <description>regular sequence register 2</description>
+          <addressOffset>0x30</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SQ12</name>
+              <description>12th conversion in regular
+              sequence</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SQ11</name>
+              <description>11th conversion in regular
+              sequence</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SQ10</name>
+              <description>10th conversion in regular
+              sequence</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SQ9</name>
+              <description>9th conversion in regular
+              sequence</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SQ8</name>
+              <description>8th conversion in regular
+              sequence</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SQ7</name>
+              <description>7th conversion in regular
+              sequence</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SQR3</name>
+          <displayName>SQR3</displayName>
+          <description>regular sequence register 3</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SQ6</name>
+              <description>6th conversion in regular
+              sequence</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SQ5</name>
+              <description>5th conversion in regular
+              sequence</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SQ4</name>
+              <description>4th conversion in regular
+              sequence</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SQ3</name>
+              <description>3rd conversion in regular
+              sequence</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SQ2</name>
+              <description>2nd conversion in regular
+              sequence</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SQ1</name>
+              <description>1st conversion in regular
+              sequence</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>JSQR</name>
+          <displayName>JSQR</displayName>
+          <description>injected sequence register</description>
+          <addressOffset>0x38</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>JL</name>
+              <description>Injected sequence length</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>2</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>3</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>JSQ4</name>
+              <description>4th conversion in injected
+              sequence</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>JSQ3</name>
+              <description>3rd conversion in injected
+              sequence</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>JSQ2</name>
+              <description>2nd conversion in injected
+              sequence</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>JSQ1</name>
+              <description>1st conversion in injected
+              sequence</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>4</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>1-4</dimIndex>
+          <name>JDR%s</name>
+          <displayName>JDR1</displayName>
+          <description>injected data register x</description>
+          <addressOffset>0x3C</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>JDATA</name>
+              <description>Injected data</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DR</name>
+          <displayName>DR</displayName>
+          <description>regular data register</description>
+          <addressOffset>0x4C</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DATA</name>
+              <description>Regular data</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral derivedFrom="ADC1">
+      <name>ADC2</name>
+      <baseAddress>0x40012100</baseAddress>
+      <interrupt>
+        <name>ADC</name>
+        <description>ADC2 global interrupts</description>
+        <value>18</value>
+      </interrupt>
+    </peripheral>
+    <peripheral derivedFrom="ADC1">
+      <name>ADC3</name>
+      <baseAddress>0x40012200</baseAddress>
+      <interrupt>
+        <name>ADC</name>
+        <description>ADC3 global interrupts</description>
+        <value>18</value>
+      </interrupt>
+    </peripheral>
+    <peripheral derivedFrom="USART1">
+      <name>USART6</name>
+      <baseAddress>0x40011400</baseAddress>
+      <interrupt>
+        <name>USART6</name>
+        <description>USART6 global interrupt</description>
+        <value>71</value>
+      </interrupt>
+    </peripheral>
+    <peripheral>
+      <name>USART1</name>
+      <description>Universal synchronous asynchronous receiver
+      transmitter</description>
+      <groupName>USART</groupName>
+      <baseAddress>0x40011000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>USART1</name>
+        <description>USART1 global interrupt</description>
+        <value>37</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>Status register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00C00000</resetValue>
+          <fields>
+            <field>
+              <name>CTS</name>
+              <description>CTS flag</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>LBD</name>
+              <description>LIN break detection flag</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TXE</name>
+              <description>Transmit data register
+              empty</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>TC</name>
+              <description>Transmission complete</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>RXNE</name>
+              <description>Read data register not
+              empty</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>IDLE</name>
+              <description>IDLE line detected</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>ORE</name>
+              <description>Overrun error</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>NF</name>
+              <description>Noise detected flag</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>FE</name>
+              <description>Framing error</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>PE</name>
+              <description>Parity error</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DR</name>
+          <displayName>DR</displayName>
+          <description>Data register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DR</name>
+              <description>Data value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>9</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>511</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>BRR</name>
+          <displayName>BRR</displayName>
+          <description>Baud rate register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DIV_Mantissa</name>
+              <description>mantissa of USARTDIV</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>DIV_Fraction</name>
+              <description>fraction of USARTDIV</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR1</name>
+          <displayName>CR1</displayName>
+          <description>Control register 1</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OVER8</name>
+              <description>Oversampling mode</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OVER8</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Oversample16</name>
+                  <description>Oversampling by 16</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Oversample8</name>
+                  <description>Oversampling by 8</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UE</name>
+              <description>USART enable</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>USART prescaler and outputs disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>USART enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>M</name>
+              <description>Word length</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>M</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>M8</name>
+                  <description>8 data bits</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>M9</name>
+                  <description>9 data bits</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WAKE</name>
+              <description>Wakeup method</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WAKE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>IdleLine</name>
+                  <description>USART wakeup on idle line</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AddressMark</name>
+                  <description>USART wakeup on address mark</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PCE</name>
+              <description>Parity control enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PCE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Parity control disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Parity control enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PS</name>
+              <description>Parity selection</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Even</name>
+                  <description>Even parity</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Odd</name>
+                  <description>Odd parity</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PEIE</name>
+              <description>PE interrupt enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PEIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>PE interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>PE interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TXEIE</name>
+              <description>TXE interrupt enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TXEIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>TXE interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>TXE interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TCIE</name>
+              <description>Transmission complete interrupt
+              enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TCIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>TC interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>TC interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RXNEIE</name>
+              <description>RXNE interrupt enable</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RXNEIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>RXNE interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>RXNE interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IDLEIE</name>
+              <description>IDLE interrupt enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>IDLEIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>IDLE interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>IDLE interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TE</name>
+              <description>Transmitter enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Transmitter disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Transmitter enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RE</name>
+              <description>Receiver enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Receiver disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Receiver enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RWU</name>
+              <description>Receiver wakeup</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RWU</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Active</name>
+                  <description>Receiver in active mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Mute</name>
+                  <description>Receiver in mute mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SBK</name>
+              <description>Send break</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SBK</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoBreak</name>
+                  <description>No break character is transmitted</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Break</name>
+                  <description>Break character transmitted</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR2</name>
+          <displayName>CR2</displayName>
+          <description>Control register 2</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>LINEN</name>
+              <description>LIN mode enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LINEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>LIN mode disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>LIN mode enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>STOP</name>
+              <description>STOP bits</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>STOP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Stop1</name>
+                  <description>1 stop bit</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Stop0p5</name>
+                  <description>0.5 stop bits</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Stop2</name>
+                  <description>2 stop bits</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Stop1p5</name>
+                  <description>1.5 stop bits</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CLKEN</name>
+              <description>Clock enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CLKEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>CK pin disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>CK pin enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CPOL</name>
+              <description>Clock polarity</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CPOL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Low</name>
+                  <description>Steady low value on CK pin outside transmission window</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>High</name>
+                  <description>Steady high value on CK pin outside transmission window</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CPHA</name>
+              <description>Clock phase</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CPHA</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>First</name>
+                  <description>The first clock transition is the first data capture edge</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Second</name>
+                  <description>The second clock transition is the first data capture edge</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LBCL</name>
+              <description>Last bit clock pulse</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>LBDIE</name>
+              <description>LIN break detection interrupt
+              enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LBDIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>LIN break detection interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>LIN break detection interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LBDL</name>
+              <description>lin break detection length</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LBDL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>LBDL10</name>
+                  <description>10-bit break detection</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>LBDL11</name>
+                  <description>11-bit break detection</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ADD</name>
+              <description>Address of the USART node</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR3</name>
+          <displayName>CR3</displayName>
+          <description>Control register 3</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ONEBIT</name>
+              <description>One sample bit method
+              enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ONEBIT</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Sample3</name>
+                  <description>Three sample bit method</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Sample1</name>
+                  <description>One sample bit method</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CTSIE</name>
+              <description>CTS interrupt enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CTSIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>CTS interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>CTS interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CTSE</name>
+              <description>CTS enable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CTSE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>CTS hardware flow control disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>CTS hardware flow control enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RTSE</name>
+              <description>RTS enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RTSE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>RTS hardware flow control disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>RTS hardware flow control enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DMAT</name>
+              <description>DMA enable transmitter</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DMAT</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>DMA mode is disabled for transmission</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>DMA mode is enabled for transmission</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DMAR</name>
+              <description>DMA enable receiver</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DMAR</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>DMA mode is disabled for reception</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>DMA mode is enabled for reception</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SCEN</name>
+              <description>Smartcard mode enable</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SCEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Smartcard mode disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Smartcard mode enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>NACK</name>
+              <description>Smartcard NACK enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>NACK</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>NACK transmission in case of parity error is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>NACK transmission during parity error is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>HDSEL</name>
+              <description>Half-duplex selection</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>HDSEL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>FullDuplex</name>
+                  <description>Half duplex mode is not selected</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>HalfDuplex</name>
+                  <description>Half duplex mode is selected</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IRLP</name>
+              <description>IrDA low-power</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>IRLP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Normal</name>
+                  <description>Normal mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>LowPower</name>
+                  <description>Low-power mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IREN</name>
+              <description>IrDA mode enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>IREN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>IrDA disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>IrDA enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>EIE</name>
+              <description>Error interrupt enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>EIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Error interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Error interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GTPR</name>
+          <displayName>GTPR</displayName>
+          <description>Guard time and prescaler
+          register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>GT</name>
+              <description>Guard time value</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>PSC</name>
+              <description>Prescaler value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral derivedFrom="USART1">
+      <name>USART2</name>
+      <baseAddress>0x40004400</baseAddress>
+      <interrupt>
+        <name>USART2</name>
+        <description>USART2 global interrupt</description>
+        <value>38</value>
+      </interrupt>
+    </peripheral>
+    <peripheral derivedFrom="USART1">
+      <name>USART3</name>
+      <baseAddress>0x40004800</baseAddress>
+      <interrupt>
+        <name>USART3</name>
+        <description>USART3 global interrupt</description>
+        <value>39</value>
+      </interrupt>
+    </peripheral>
+    <peripheral>
+      <name>DAC</name>
+      <description>Digital-to-analog converter</description>
+      <groupName>DAC</groupName>
+      <baseAddress>0x40007400</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>TIM6_DAC</name>
+        <description>TIM6 global interrupt, DAC1 and DAC2 underrun
+        error interrupt</description>
+        <value>54</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR</name>
+          <displayName>CR</displayName>
+          <description>control register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DMAUDRIE2</name>
+              <description>DAC channel2 DMA underrun interrupt
+              enable</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DMAUDRIE1"/>
+            </field>
+            <field>
+              <name>DMAEN2</name>
+              <description>DAC channel2 DMA enable</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DMAEN1"/>
+            </field>
+            <field>
+              <name>MAMP2</name>
+              <description>DAC channel2 mask/amplitude
+              selector</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>WAVE2</name>
+              <description>DAC channel2 noise/triangle wave
+              generation enable</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues derivedFrom="WAVE1"/>
+            </field>
+            <field>
+              <name>TSEL2</name>
+              <description>DAC channel2 trigger
+              selection</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>TSEL2</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TIM6_TRGO</name>
+                  <description>Timer 6 TRGO event</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM8_TRGO</name>
+                  <description>Timer 8 TRGO event</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM7_TRGO</name>
+                  <description>Timer 7 TRGO event</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM5_TRGO</name>
+                  <description>Timer 5 TRGO event</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM2_TRGO</name>
+                  <description>Timer 2 TRGO event</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM4_TRGO</name>
+                  <description>Timer 4 TRGO event</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>EXTI9</name>
+                  <description>EXTI line9</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>SOFTWARE</name>
+                  <description>Software trigger</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TEN2</name>
+              <description>DAC channel2 trigger
+              enable</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TEN1"/>
+            </field>
+            <field>
+              <name>BOFF2</name>
+              <description>DAC channel2 output buffer
+              disable</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="BOFF1"/>
+            </field>
+            <field>
+              <name>EN2</name>
+              <description>DAC channel2 enable</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="EN1"/>
+            </field>
+            <field>
+              <name>DMAUDRIE1</name>
+              <description>DAC channel1 DMA Underrun Interrupt
+              enable</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DMAUDRIE1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>DAC channel X DMA Underrun Interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>DAC channel X DMA Underrun Interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DMAEN1</name>
+              <description>DAC channel1 DMA enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DMAEN1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>DAC channel X DMA mode disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>DAC channel X DMA mode enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MAMP1</name>
+              <description>DAC channel1 mask/amplitude
+              selector</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>WAVE1</name>
+              <description>DAC channel1 noise/triangle wave
+              generation enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>WAVE1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Wave generation disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Noise</name>
+                  <description>Noise wave generation enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Triangle</name>
+                  <description>Triangle wave generation enabled</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TSEL1</name>
+              <description>DAC channel1 trigger
+              selection</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>TSEL1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TIM6_TRGO</name>
+                  <description>Timer 6 TRGO event</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM3_TRGO</name>
+                  <description>Timer 3 TRGO event</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM7_TRGO</name>
+                  <description>Timer 7 TRGO event</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM15_TRGO</name>
+                  <description>Timer 15 TRGO event</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TIM2_TRGO</name>
+                  <description>Timer 2 TRGO event</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>EXTI9</name>
+                  <description>EXTI line9</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>SOFTWARE</name>
+                  <description>Software trigger</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TEN1</name>
+              <description>DAC channel1 trigger
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TEN1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>DAC channel X trigger disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>DAC channel X trigger enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BOFF1</name>
+              <description>DAC channel1 output buffer
+              disable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BOFF1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>DAC channel X output buffer enabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>DAC channel X output buffer disabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>EN1</name>
+              <description>DAC channel1 enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>EN1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>DAC channel X disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>DAC channel X enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SWTRIGR</name>
+          <displayName>SWTRIGR</displayName>
+          <description>software trigger register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SWTRIG2</name>
+              <description>DAC channel2 software
+              trigger</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWTRIG1"/>
+            </field>
+            <field>
+              <name>SWTRIG1</name>
+              <description>DAC channel1 software
+              trigger</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SWTRIG1</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>DAC channel X software trigger disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>DAC channel X software trigger enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DHR12R1</name>
+          <displayName>DHR12R1</displayName>
+          <description>channel1 12-bit right-aligned data holding
+          register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DACC1DHR</name>
+              <description>DAC channel1 12-bit right-aligned
+              data</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DHR12L1</name>
+          <displayName>DHR12L1</displayName>
+          <description>channel1 12-bit left aligned data holding
+          register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DACC1DHR</name>
+              <description>DAC channel1 12-bit left-aligned
+              data</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DHR8R1</name>
+          <displayName>DHR8R1</displayName>
+          <description>channel1 8-bit right aligned data holding
+          register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DACC1DHR</name>
+              <description>DAC channel1 8-bit right-aligned
+              data</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DHR12R2</name>
+          <displayName>DHR12R2</displayName>
+          <description>channel2 12-bit right aligned data holding
+          register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DACC2DHR</name>
+              <description>DAC channel2 12-bit right-aligned
+              data</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DHR12L2</name>
+          <displayName>DHR12L2</displayName>
+          <description>channel2 12-bit left aligned data holding
+          register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DACC2DHR</name>
+              <description>DAC channel2 12-bit left-aligned
+              data</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DHR8R2</name>
+          <displayName>DHR8R2</displayName>
+          <description>channel2 8-bit right-aligned data holding
+          register</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DACC2DHR</name>
+              <description>DAC channel2 8-bit right-aligned
+              data</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DHR12RD</name>
+          <displayName>DHR12RD</displayName>
+          <description>Dual DAC 12-bit right-aligned data holding
+          register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DACC2DHR</name>
+              <description>DAC channel2 12-bit right-aligned
+              data</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>DACC1DHR</name>
+              <description>DAC channel1 12-bit right-aligned
+              data</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DHR12LD</name>
+          <displayName>DHR12LD</displayName>
+          <description>DUAL DAC 12-bit left aligned data holding
+          register</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DACC2DHR</name>
+              <description>DAC channel2 12-bit left-aligned
+              data</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>DACC1DHR</name>
+              <description>DAC channel1 12-bit left-aligned
+              data</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DHR8RD</name>
+          <displayName>DHR8RD</displayName>
+          <description>DUAL DAC 8-bit right aligned data holding
+          register</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DACC2DHR</name>
+              <description>DAC channel2 8-bit right-aligned
+              data</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>DACC1DHR</name>
+              <description>DAC channel1 8-bit right-aligned
+              data</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DOR1</name>
+          <displayName>DOR1</displayName>
+          <description>channel1 data output register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DACC1DOR</name>
+              <description>DAC channel1 data output</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>12</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DOR2</name>
+          <displayName>DOR2</displayName>
+          <description>channel2 data output register</description>
+          <addressOffset>0x30</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DACC2DOR</name>
+              <description>DAC channel2 data output</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>12</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DMAUDR2</name>
+              <description>DAC channel2 DMA underrun
+              flag</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="DMAUDR1"/>
+            </field>
+            <field>
+              <name>DMAUDR1</name>
+              <description>DAC channel1 DMA underrun
+              flag</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DMAUDR1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoUnderrun</name>
+                  <description>No DMA underrun error condition occurred for DAC channel X</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Underrun</name>
+                  <description>DMA underrun error condition occurred for DAC channel X</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>PWR</name>
+      <description>Power control</description>
+      <groupName>PWR</groupName>
+      <baseAddress>0x40007000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>PVD</name>
+        <description>PVD through EXTI line detection
+        interrupt</description>
+        <value>1</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR</name>
+          <displayName>CR</displayName>
+          <description>power control register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>FPDS</name>
+              <description>Flash power down in Stop
+              mode</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBP</name>
+              <description>Disable backup domain write
+              protection</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PLS</name>
+              <description>PVD level selection</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>3</bitWidth>
+            </field>
+            <field>
+              <name>PVDE</name>
+              <description>Power voltage detector
+              enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CSBF</name>
+              <description>Clear standby flag</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CWUF</name>
+              <description>Clear wakeup flag</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PDDS</name>
+              <description>Power down deepsleep</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>LPDS</name>
+              <description>Low-power deep sleep</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CSR</name>
+          <displayName>CSR</displayName>
+          <description>power control/status register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>WUF</name>
+              <description>Wakeup flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>SBF</name>
+              <description>Standby flag</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>PVDO</name>
+              <description>PVD output</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>BRR</name>
+              <description>Backup regulator ready</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>EWUP</name>
+              <description>Enable WKUP pin</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>BRE</name>
+              <description>Backup regulator enable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>VOSRDY</name>
+              <description>Regulator voltage scaling output
+              selection ready bit</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral derivedFrom="I2C1">
+      <name>I2C3</name>
+      <baseAddress>0x40005C00</baseAddress>
+      <interrupt>
+        <name>I2C3_EV</name>
+        <description>I2C3 event interrupt</description>
+        <value>72</value>
+      </interrupt>
+      <interrupt>
+        <name>I2C3_ER</name>
+        <description>I2C3 error interrupt</description>
+        <value>73</value>
+      </interrupt>
+    </peripheral>
+    <peripheral derivedFrom="I2C1">
+      <name>I2C2</name>
+      <baseAddress>0x40005800</baseAddress>
+      <interrupt>
+        <name>I2C2_EV</name>
+        <description>I2C2 event interrupt</description>
+        <value>33</value>
+      </interrupt>
+      <interrupt>
+        <name>I2C2_ER</name>
+        <description>I2C2 error interrupt</description>
+        <value>34</value>
+      </interrupt>
+    </peripheral>
+    <peripheral>
+      <name>I2C1</name>
+      <description>Inter-integrated circuit</description>
+      <groupName>I2C</groupName>
+      <baseAddress>0x40005400</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>I2C1_EV</name>
+        <description>I2C1 event interrupt</description>
+        <value>31</value>
+      </interrupt>
+      <interrupt>
+        <name>I2C1_ER</name>
+        <description>I2C1 error interrupt</description>
+        <value>32</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR1</name>
+          <displayName>CR1</displayName>
+          <description>Control register 1</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SWRST</name>
+              <description>Software reset</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SWRST</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NotReset</name>
+                  <description>I2C peripheral not under reset</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>I2C peripheral under reset</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ALERT</name>
+              <description>SMBus alert</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ALERT</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Release</name>
+                  <description>SMBA pin released high</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Drive</name>
+                  <description>SMBA pin driven low</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PEC</name>
+              <description>Packet error checking</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PEC</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>No PEC transfer</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>PEC transfer</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>POS</name>
+              <description>Acknowledge/PEC Position (for data
+              reception)</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>POS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Current</name>
+                  <description>ACK bit controls the (N)ACK of the current byte being received</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Next</name>
+                  <description>ACK bit controls the (N)ACK of the next byte to be received</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ACK</name>
+              <description>Acknowledge enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ACK</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NAK</name>
+                  <description>No acknowledge returned</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ACK</name>
+                  <description>Acknowledge returned after a byte is received</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>STOP</name>
+              <description>Stop generation</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>STOP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoStop</name>
+                  <description>No Stop generation</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Stop</name>
+                  <description>In master mode: stop generation after current byte/start, in slave mode: release SCL and SDA after current byte</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>START</name>
+              <description>Start generation</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>START</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoStart</name>
+                  <description>No Start generation</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Start</name>
+                  <description>In master mode: repeated start generation, in slave mode: start generation when bus is free</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>NOSTRETCH</name>
+              <description>Clock stretching disable (Slave
+              mode)</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>NOSTRETCH</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Clock stretching enabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Clock stretching disabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ENGC</name>
+              <description>General call enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ENGC</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>General call disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>General call enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ENPEC</name>
+              <description>PEC enable</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ENPEC</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>PEC calculation disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>PEC calculation enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ENARP</name>
+              <description>ARP enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ENARP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>ARP disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>ARP enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SMBTYPE</name>
+              <description>SMBus type</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SMBTYPE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Device</name>
+                  <description>SMBus Device</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Host</name>
+                  <description>SMBus Host</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SMBUS</name>
+              <description>SMBus mode</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SMBUS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>I2C</name>
+                  <description>I2C Mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>SMBus</name>
+                  <description>SMBus</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PE</name>
+              <description>Peripheral enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Peripheral disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Peripheral enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR2</name>
+          <displayName>CR2</displayName>
+          <description>Control register 2</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>LAST</name>
+              <description>DMA last transfer</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LAST</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NotLast</name>
+                  <description>Next DMA EOT is not the last transfer</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Last</name>
+                  <description>Next DMA EOT is the last transfer</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DMAEN</name>
+              <description>DMA requests enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DMAEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>DMA requests disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>DMA request enabled when TxE=1 or RxNE=1</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ITBUFEN</name>
+              <description>Buffer interrupt enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ITBUFEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>TxE=1 or RxNE=1 does not generate any interrupt</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>TxE=1 or RxNE=1 generates Event interrupt</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ITEVTEN</name>
+              <description>Event interrupt enable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ITEVTEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Event interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Event interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ITERREN</name>
+              <description>Error interrupt enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ITERREN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Error interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Error interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FREQ</name>
+              <description>Peripheral clock frequency</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>6</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>2</minimum>
+                  <maximum>50</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>OAR1</name>
+          <displayName>OAR1</displayName>
+          <description>Own address register 1</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ADDMODE</name>
+              <description>Addressing mode (slave
+              mode)</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ADDMODE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>ADD7</name>
+                  <description>7-bit slave address</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ADD10</name>
+                  <description>10-bit slave address</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ADD</name>
+              <description>Interface address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>10</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>1023</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>OAR2</name>
+          <displayName>OAR2</displayName>
+          <description>Own address register 2</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ADD2</name>
+              <description>Interface address</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>7</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>127</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ENDUAL</name>
+              <description>Dual addressing mode
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ENDUAL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Single</name>
+                  <description>Single addressing mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Dual</name>
+                  <description>Dual addressing mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DR</name>
+          <displayName>DR</displayName>
+          <description>Data register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DR</name>
+              <description>8-bit data register</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR1</name>
+          <displayName>SR1</displayName>
+          <description>Status register 1</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SMBALERT</name>
+              <description>SMBus alert</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>SMBALERTR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoAlert</name>
+                  <description>No SMBALERT occured</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Alert</name>
+                  <description>SMBALERT occurred</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>SMBALERTW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TIMEOUT</name>
+              <description>Timeout or Tlow error</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>TIMEOUTR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoTimeout</name>
+                  <description>No Timeout error</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Timeout</name>
+                  <description>SCL remained LOW for 25 ms</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>TIMEOUTW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PECERR</name>
+              <description>PEC Error in reception</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>PECERRR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoError</name>
+                  <description>no PEC error: receiver returns ACK after PEC reception (if ACK=1)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Error</name>
+                  <description>PEC error: receiver returns NACK after PEC reception (whatever ACK)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>PECERRW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OVR</name>
+              <description>Overrun/Underrun</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>OVRR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoOverrun</name>
+                  <description>No overrun/underrun occured</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Overrun</name>
+                  <description>Overrun/underrun occured</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>OVRW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>AF</name>
+              <description>Acknowledge failure</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>AFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoFailure</name>
+                  <description>No acknowledge failure</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Failure</name>
+                  <description>Acknowledge failure</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>AFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ARLO</name>
+              <description>Arbitration lost (master
+              mode)</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>ARLOR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoLost</name>
+                  <description>No Arbitration Lost detected</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Lost</name>
+                  <description>Arbitration Lost detected</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>ARLOW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BERR</name>
+              <description>Bus error</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>BERRR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoError</name>
+                  <description>No misplaced Start or Stop condition</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Error</name>
+                  <description>Misplaced Start or Stop condition</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>BERRW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TxE</name>
+              <description>Data register empty
+              (transmitters)</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>TxE</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotEmpty</name>
+                  <description>Data register not empty</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Empty</name>
+                  <description>Data register empty</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RxNE</name>
+              <description>Data register not empty
+              (receivers)</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>RxNE</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Empty</name>
+                  <description>Data register empty</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>NotEmpty</name>
+                  <description>Data register not empty</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>STOPF</name>
+              <description>Stop detection (slave
+              mode)</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>STOPF</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoStop</name>
+                  <description>No Stop condition detected</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Stop</name>
+                  <description>Stop condition detected</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ADD10</name>
+              <description>10-bit header sent (Master
+              mode)</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>BTF</name>
+              <description>Byte transfer finished</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>BTF</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotFinished</name>
+                  <description>Data byte transfer not done</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Finished</name>
+                  <description>Data byte transfer successful</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ADDR</name>
+              <description>Address sent (master mode)/matched
+              (slave mode)</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>ADDR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotMatch</name>
+                  <description>Adress mismatched or not received</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Match</name>
+                  <description>Received slave address matched with one of the enabled slave addresses</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SB</name>
+              <description>Start bit (Master mode)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>SB</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoStart</name>
+                  <description>No Start condition</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Start</name>
+                  <description>Start condition generated</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR2</name>
+          <displayName>SR2</displayName>
+          <description>Status register 2</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PEC</name>
+              <description>acket error checking
+              register</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>DUALF</name>
+              <description>Dual flag (Slave mode)</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>SMBHOST</name>
+              <description>SMBus host header (Slave
+              mode)</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>SMBDEFAULT</name>
+              <description>SMBus device default address (Slave
+              mode)</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>GENCALL</name>
+              <description>General call address (Slave
+              mode)</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TRA</name>
+              <description>Transmitter/receiver</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>BUSY</name>
+              <description>Bus busy</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>MSL</name>
+              <description>Master/slave</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCR</name>
+          <displayName>CCR</displayName>
+          <description>Clock control register</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>F_S</name>
+              <description>I2C master mode selection</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>F_S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Standard</name>
+                  <description>Standard mode I2C</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Fast</name>
+                  <description>Fast mode I2C</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DUTY</name>
+              <description>Fast mode duty cycle</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DUTY</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Duty2_1</name>
+                  <description>Duty cycle t_low/t_high = 2/1</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Duty16_9</name>
+                  <description>Duty cycle t_low/t_high = 16/9</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CCR</name>
+              <description>Clock control register in Fast/Standard
+              mode (Master mode)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>TRISE</name>
+          <displayName>TRISE</displayName>
+          <description>TRISE register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000002</resetValue>
+          <fields>
+            <field>
+              <name>TRISE</name>
+              <description>Maximum rise time in Fast/Standard mode
+              (Master mode)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>6</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>63</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>IWDG</name>
+      <description>Independent watchdog</description>
+      <groupName>IWDG</groupName>
+      <baseAddress>0x40003000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>KR</name>
+          <displayName>KR</displayName>
+          <description>Key register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>KEY</name>
+              <description>Key value (write only, read
+              0000h)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <enumeratedValues>
+                <name>KEY</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Enable</name>
+                  <description>Enable access to PR, RLR and WINR registers (0x5555)</description>
+                  <value>21845</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>Reset the watchdog value (0xAAAA)</description>
+                  <value>43690</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Start</name>
+                  <description>Start the watchdog (0xCCCC)</description>
+                  <value>52428</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PR</name>
+          <displayName>PR</displayName>
+          <description>Prescaler register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PR</name>
+              <description>Prescaler divider</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>PR</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>DivideBy4</name>
+                  <description>Divider /4</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DivideBy8</name>
+                  <description>Divider /8</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DivideBy16</name>
+                  <description>Divider /16</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DivideBy32</name>
+                  <description>Divider /32</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DivideBy64</name>
+                  <description>Divider /64</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DivideBy128</name>
+                  <description>Divider /128</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DivideBy256</name>
+                  <description>Divider /256</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DivideBy256bis</name>
+                  <description>Divider /256</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>RLR</name>
+          <displayName>RLR</displayName>
+          <description>Reload register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000FFF</resetValue>
+          <fields>
+            <field>
+              <name>RL</name>
+              <description>Watchdog counter reload
+              value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>Status register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>RVU</name>
+              <description>Watchdog counter reload value
+              update</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PVU</name>
+              <description>Watchdog prescaler value
+              update</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>WWDG</name>
+      <description>Window watchdog</description>
+      <groupName>WWDG</groupName>
+      <baseAddress>0x40002C00</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>WWDG</name>
+        <description>Window Watchdog interrupt</description>
+        <value>0</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR</name>
+          <displayName>CR</displayName>
+          <description>Control register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x0000007F</resetValue>
+          <fields>
+            <field>
+              <name>WDGA</name>
+              <description>Activation bit</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WDGA</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Watchdog disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Watchdog enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>T</name>
+              <description>7-bit counter (MSB to LSB)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>7</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>127</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CFR</name>
+          <displayName>CFR</displayName>
+          <description>Configuration register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x0000007F</resetValue>
+          <fields>
+            <field>
+              <name>EWI</name>
+              <description>Early wakeup interrupt</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>EWIW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Enable</name>
+                  <description>interrupt occurs whenever the counter reaches the value 0x40</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>W</name>
+              <description>7-bit window value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>7</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>127</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>WDGTB</name>
+              <description>Timer base</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>WDGTB</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>Counter clock (PCLK1 div 4096) div 1</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>Counter clock (PCLK1 div 4096) div 2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>Counter clock (PCLK1 div 4096) div 4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div8</name>
+                  <description>Counter clock (PCLK1 div 4096) div 8</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>Status register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>EWIF</name>
+              <description>Early wakeup interrupt
+              flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>EWIFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Finished</name>
+                  <description>The EWI Interrupt Service Routine has been serviced</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Pending</name>
+                  <description>The EWI Interrupt Service Routine has been triggered</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>EWIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Finished</name>
+                  <description>The EWI Interrupt Service Routine has been serviced</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>RTC</name>
+      <description>Real-time clock</description>
+      <groupName>RTC</groupName>
+      <baseAddress>0x40002800</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>RTC_WKUP</name>
+        <description>RTC Wakeup interrupt through the EXTI
+        line</description>
+        <value>3</value>
+      </interrupt>
+      <interrupt>
+        <name>RTC_Alarm</name>
+        <description>RTC Alarms (A and B) through EXTI line
+        interrupt</description>
+        <value>41</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>TR</name>
+          <displayName>TR</displayName>
+          <description>time register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PM</name>
+              <description>AM/PM notation</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AM</name>
+                  <description>AM or 24-hour format</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PM</name>
+                  <description>PM</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>HT</name>
+              <description>Hour tens in BCD format</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>2</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>3</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>HU</name>
+              <description>Hour units in BCD format</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MNT</name>
+              <description>Minute tens in BCD format</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>7</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MNU</name>
+              <description>Minute units in BCD format</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>ST</name>
+              <description>Second tens in BCD format</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>7</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SU</name>
+              <description>Second units in BCD format</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DR</name>
+          <displayName>DR</displayName>
+          <description>date register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00002101</resetValue>
+          <fields>
+            <field>
+              <name>YT</name>
+              <description>Year tens in BCD format</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>YU</name>
+              <description>Year units in BCD format</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>WDU</name>
+              <description>Week day units</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>3</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>1</minimum>
+                  <maximum>7</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MT</name>
+              <description>Month tens in BCD format</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MT</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Zero</name>
+                  <description>Month tens is 0</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>One</name>
+                  <description>Month tens is 1</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MU</name>
+              <description>Month units in BCD format</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>DT</name>
+              <description>Date tens in BCD format</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>2</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>3</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>DU</name>
+              <description>Date units in BCD format</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR</name>
+          <displayName>CR</displayName>
+          <description>control register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>COE</name>
+              <description>Calibration output enable</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>COE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Calibration output disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Calibration output enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OSEL</name>
+              <description>Output selection</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>OSEL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Output disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AlarmA</name>
+                  <description>Alarm A output enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AlarmB</name>
+                  <description>Alarm B output enabled</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Wakeup</name>
+                  <description>Wakeup output enabled</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>POL</name>
+              <description>Output polarity</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>POL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>High</name>
+                  <description>The pin is high when ALRAF/ALRBF/WUTF is asserted (depending on OSEL[1:0])</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Low</name>
+                  <description>The pin is low when ALRAF/ALRBF/WUTF is asserted (depending on OSEL[1:0])</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BKP</name>
+              <description>Backup</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BKP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>DST_Not_Changed</name>
+                  <description>Daylight Saving Time change has not been performed</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DST_Changed</name>
+                  <description>Daylight Saving Time change has been performed</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SUB1H</name>
+              <description>Subtract 1 hour (winter time
+              change)</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SUB1HW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Sub1</name>
+                  <description>Subtracts 1 hour to the current time. This can be used for winter time change outside initialization mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ADD1H</name>
+              <description>Add 1 hour (summer time
+              change)</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ADD1HW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Add1</name>
+                  <description>Adds 1 hour to the current time. This can be used for summer time change outside initialization mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TSIE</name>
+              <description>Time-stamp interrupt
+              enable</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TSIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Time-stamp Interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Time-stamp Interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WUTIE</name>
+              <description>Wakeup timer interrupt
+              enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WUTIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Wakeup timer interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Wakeup timer interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ALRBIE</name>
+              <description>Alarm B interrupt enable</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ALRBIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Alarm B Interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Alarm B Interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ALRAIE</name>
+              <description>Alarm A interrupt enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ALRAIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Alarm A interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Alarm A interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TSE</name>
+              <description>Time stamp enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TSE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Timestamp disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Timestamp enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WUTE</name>
+              <description>Wakeup timer enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WUTE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Wakeup timer disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Wakeup timer enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ALRBE</name>
+              <description>Alarm B enable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ALRBE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Alarm B disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Alarm B enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ALRAE</name>
+              <description>Alarm A enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ALRAE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Alarm A disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Alarm A enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DCE</name>
+              <description>Coarse digital calibration
+              enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>FMT</name>
+              <description>Hour format</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FMT</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Twenty_Four_Hour</name>
+                  <description>24 hour/day format</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AM_PM</name>
+                  <description>AM/PM hour format</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>REFCKON</name>
+              <description>Reference clock detection enable (50 or
+              60 Hz)</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>REFCKON</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>RTC_REFIN detection disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>RTC_REFIN detection enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TSEDGE</name>
+              <description>Time-stamp event active
+              edge</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TSEDGE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>RisingEdge</name>
+                  <description>RTC_TS input rising edge generates a time-stamp event</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FallingEdge</name>
+                  <description>RTC_TS input falling edge generates a time-stamp event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WUCKSEL</name>
+              <description>Wakeup clock selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>WUCKSEL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div16</name>
+                  <description>RTC/16 clock is selected</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div8</name>
+                  <description>RTC/8 clock is selected</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>RTC/4 clock is selected</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>RTC/2 clock is selected</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ClockSpare</name>
+                  <description>ck_spre (usually 1 Hz) clock is selected</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ClockSpareWithOffset</name>
+                  <description>ck_spre (usually 1 Hz) clock is selected and 2^16 is added to the WUT counter value</description>
+                  <value>6</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BYPSHAD</name>
+              <description>Bypass the shadow registers</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>BYPSHAD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>ShadowReg</name>
+                  <description>Calendar values (when reading from RTC_SSR, RTC_TR, and RTC_DR) are taken from the shadow registers, which are updated once every two RTCCLK cycles</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>BypassShadowReg</name>
+                  <description>Calendar values (when reading from RTC_SSR, RTC_TR, and RTC_DR) are taken directly from the calendar counters</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>COSEL</name>
+              <description>Calibration output selection</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>COSEL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>CalFreq_512Hz</name>
+                  <description>Calibration output is 512 Hz (with default prescaler setting)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CalFreq_1Hz</name>
+                  <description>Calibration output is 1 Hz (with default prescaler setting)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ISR</name>
+          <displayName>ISR</displayName>
+          <description>initialization and status
+          register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000007</resetValue>
+          <fields>
+            <field>
+              <name>ALRAWF</name>
+              <description>Alarm A write flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>ALRAWFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>UpdateNotAllowed</name>
+                  <description>Alarm update not allowed</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>UpdateAllowed</name>
+                  <description>Alarm update allowed</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ALRBWF</name>
+              <description>Alarm B write flag</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues derivedFrom="ALRAWFR"/>
+            </field>
+            <field>
+              <name>WUTWF</name>
+              <description>Wakeup timer write flag</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>WUTWFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>UpdateNotAllowed</name>
+                  <description>Wakeup timer configuration update not allowed</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>UpdateAllowed</name>
+                  <description>Wakeup timer configuration update allowed</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SHPF</name>
+              <description>Shift operation pending</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>SHPFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoShiftPending</name>
+                  <description>No shift operation is pending</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ShiftPending</name>
+                  <description>A shift operation is pending</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>INITS</name>
+              <description>Initialization status flag</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>INITSR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotInitalized</name>
+                  <description>Calendar has not been initialized</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Initalized</name>
+                  <description>Calendar has been initialized</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RSF</name>
+              <description>Registers synchronization
+              flag</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>RSFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotSynced</name>
+                  <description>Calendar shadow registers not yet synchronized</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Synced</name>
+                  <description>Calendar shadow registers synchronized</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>RSFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>This flag is cleared by software by writing 0</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>INITF</name>
+              <description>Initialization flag</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>INITFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotAllowed</name>
+                  <description>Calendar registers update is not allowed</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Allowed</name>
+                  <description>Calendar registers update is allowed</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>INIT</name>
+              <description>Initialization mode</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>INIT</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>FreeRunningMode</name>
+                  <description>Free running mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InitMode</name>
+                  <description>Initialization mode used to program time and date register (RTC_TR and RTC_DR), and prescaler register (RTC_PRER). Counters are stopped and start counting from the new value when INIT is reset.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ALRAF</name>
+              <description>Alarm A flag</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>ALRAFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Match</name>
+                  <description>This flag is set by hardware when the time/date registers (RTC_TR and RTC_DR) match the Alarm A register (RTC_ALRMAR)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>ALRAFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>This flag is cleared by software by writing 0</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ALRBF</name>
+              <description>Alarm B flag</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>ALRBFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Match</name>
+                  <description>This flag is set by hardware when the time/date registers (RTC_TR and RTC_DR) match the Alarm B register (RTC_ALRMBR)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>ALRBFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>This flag is cleared by software by writing 0</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WUTF</name>
+              <description>Wakeup timer flag</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>WUTFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Zero</name>
+                  <description>This flag is set by hardware when the wakeup auto-reload counter reaches 0</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>WUTFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>This flag is cleared by software by writing 0</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TSF</name>
+              <description>Time-stamp flag</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>TSFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>TimestampEvent</name>
+                  <description>This flag is set by hardware when a time-stamp event occurs</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>TSFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>This flag is cleared by software by writing 0</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TSOVF</name>
+              <description>Time-stamp overflow flag</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>TSOVFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Overflow</name>
+                  <description>This flag is set by hardware when a time-stamp event occurs while TSF is already set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>TSOVFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>This flag is cleared by software by writing 0</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TAMP1F</name>
+              <description>Tamper detection flag</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>TAMP1FR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Tampered</name>
+                  <description>This flag is set by hardware when a tamper detection event is detected on the RTC_TAMPx input</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>TAMP1FW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Flag cleared by software writing 0</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TAMP2F</name>
+              <description>TAMPER2 detection flag</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="TAMP1FR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="TAMP1FW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RECALPF</name>
+              <description>Recalibration pending Flag</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>RECALPFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Pending</name>
+                  <description>The RECALPF status flag is automatically set to 1 when software writes to the RTC_CALR register, indicating that the RTC_CALR register is blocked. When the new calibration settings are taken into account, this bit returns to 0</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PRER</name>
+          <displayName>PRER</displayName>
+          <description>prescaler register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x007F00FF</resetValue>
+          <fields>
+            <field>
+              <name>PREDIV_A</name>
+              <description>Asynchronous prescaler
+              factor</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>7</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>127</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>PREDIV_S</name>
+              <description>Synchronous prescaler
+              factor</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>15</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>32767</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>WUTR</name>
+          <displayName>WUTR</displayName>
+          <description>wakeup timer register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x0000FFFF</resetValue>
+          <fields>
+            <field>
+              <name>WUT</name>
+              <description>Wakeup auto-reload value
+              bits</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CALIBR</name>
+          <displayName>CALIBR</displayName>
+          <description>calibration register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DCS</name>
+              <description>Digital calibration sign</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DC</name>
+              <description>Digital calibration</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>5</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>2</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>A,B</dimIndex>
+          <name>ALRM%sR</name>
+          <displayName>ALRMAR</displayName>
+          <description>Alarm %s register</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>MSK4</name>
+              <description>Alarm date mask</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MSK1"/>
+            </field>
+            <field>
+              <name>WDSEL</name>
+              <description>Week day selection</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WDSEL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>DateUnits</name>
+                  <description>DU[3:0] represents the date units</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>WeekDay</name>
+                  <description>DU[3:0] represents the week day. DT[1:0] is don’t care.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DT</name>
+              <description>Date tens in BCD format</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>2</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>3</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>DU</name>
+              <description>Date units or day in BCD format</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MSK3</name>
+              <description>Alarm hours mask</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MSK1"/>
+            </field>
+            <field>
+              <name>PM</name>
+              <description>AM/PM notation</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AM</name>
+                  <description>AM or 24-hour format</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PM</name>
+                  <description>PM</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>HT</name>
+              <description>Hour tens in BCD format</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>2</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>3</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>HU</name>
+              <description>Hour units in BCD format</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MSK2</name>
+              <description>Alarm minutes mask</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MSK1"/>
+            </field>
+            <field>
+              <name>MNT</name>
+              <description>Minute tens in BCD format</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>7</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MNU</name>
+              <description>Minute units in BCD format</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MSK1</name>
+              <description>Alarm seconds mask</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MSK1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Mask</name>
+                  <description>Alarm set if the date/day match</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>NotMask</name>
+                  <description>Date/day don’t care in Alarm comparison</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ST</name>
+              <description>Second tens in BCD format</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>7</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SU</name>
+              <description>Second units in BCD format</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>WPR</name>
+          <displayName>WPR</displayName>
+          <description>write protection register</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>KEY</name>
+              <description>Write protection key</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SSR</name>
+          <displayName>SSR</displayName>
+          <description>sub second register</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SS</name>
+              <description>Sub second value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SHIFTR</name>
+          <displayName>SHIFTR</displayName>
+          <description>shift control register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ADD1S</name>
+              <description>Add one second</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ADD1SW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Add1</name>
+                  <description>Add one second to the clock/calendar</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SUBFS</name>
+              <description>Subtract a fraction of a
+              second</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>15</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>32767</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register derivedFrom="TR">
+          <name>TSTR</name>
+          <displayName>TSTR</displayName>
+          <description>time stamp time register</description>
+          <addressOffset>0x30</addressOffset>
+        </register>
+        <register derivedFrom="DR">
+          <name>TSDR</name>
+          <displayName>TSDR</displayName>
+          <description>time stamp date register</description>
+          <addressOffset>0x34</addressOffset>
+        </register>
+        <register derivedFrom="SSR">
+          <name>TSSSR</name>
+          <displayName>TSSSR</displayName>
+          <description>timestamp sub second register</description>
+          <addressOffset>0x38</addressOffset>
+        </register>
+        <register>
+          <name>CALR</name>
+          <displayName>CALR</displayName>
+          <description>calibration register</description>
+          <addressOffset>0x3C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CALP</name>
+              <description>Increase frequency of RTC by 488.5
+              ppm</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CALP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoChange</name>
+                  <description>No RTCCLK pulses are added</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>IncreaseFreq</name>
+                  <description>One RTCCLK pulse is effectively inserted every 2^11 pulses (frequency increased by 488.5 ppm)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CALW8</name>
+              <description>Use an 8-second calibration cycle
+              period</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CALW8</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Eight_Second</name>
+                  <description>When CALW8 is set to ‘1’, the 8-second calibration cycle period is selected</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CALW16</name>
+              <description>Use a 16-second calibration cycle
+              period</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CALW16</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Sixteen_Second</name>
+                  <description>When CALW16 is set to ‘1’, the 16-second calibration cycle period is selected.This bit must not be set to ‘1’ if CALW8=1</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CALM</name>
+              <description>Calibration minus</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>9</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>511</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>TAFCR</name>
+          <displayName>TAFCR</displayName>
+          <description>tamper and alternate function configuration
+          register</description>
+          <addressOffset>0x40</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ALARMOUTTYPE</name>
+              <description>AFO_ALARM output type</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TSINSEL</name>
+              <description>TIMESTAMP mapping</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TAMP1INSEL</name>
+              <description>TAMPER1 mapping</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TAMPPUDIS</name>
+              <description>TAMPER pull-up disable</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TAMPPRCH</name>
+              <description>Tamper precharge duration</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>TAMPFLT</name>
+              <description>Tamper filter count</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>TAMPFREQ</name>
+              <description>Tamper sampling frequency</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>3</bitWidth>
+            </field>
+            <field>
+              <name>TAMPTS</name>
+              <description>Activate timestamp on tamper detection
+              event</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TAMP2TRG</name>
+              <description>Active level for tamper 2</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TAMP2E</name>
+              <description>Tamper 2 detection enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TAMPIE</name>
+              <description>Tamper interrupt enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TAMP1TRG</name>
+              <description>Active level for tamper 1</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TAMP1E</name>
+              <description>Tamper 1 detection enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>2</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>A,B</dimIndex>
+          <name>ALRM%sSSR</name>
+          <displayName>ALRMASSR</displayName>
+          <description>Alarm %s sub-second register</description>
+          <addressOffset>0x44</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>MASKSS</name>
+              <description>Mask the most-significant bits starting
+              at this bit</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>SS</name>
+              <description>Sub seconds value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>15</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>32767</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>20</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>0-19</dimIndex>
+          <name>BKP%sR</name>
+          <displayName>BKP0R</displayName>
+          <description>backup register</description>
+          <addressOffset>0x50</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>BKP</name>
+              <description>BKP</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>UART4</name>
+      <description>Universal synchronous asynchronous receiver
+      transmitter</description>
+      <groupName>USART</groupName>
+      <baseAddress>0x40004C00</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>UART4</name>
+        <description>UART4 global interrupt</description>
+        <value>52</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>Status register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00C00000</resetValue>
+          <fields>
+            <field>
+              <name>LBD</name>
+              <description>LIN break detection flag</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TXE</name>
+              <description>Transmit data register
+              empty</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>TC</name>
+              <description>Transmission complete</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>RXNE</name>
+              <description>Read data register not
+              empty</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>IDLE</name>
+              <description>IDLE line detected</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>ORE</name>
+              <description>Overrun error</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>NF</name>
+              <description>Noise detected flag</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>FE</name>
+              <description>Framing error</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>PE</name>
+              <description>Parity error</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DR</name>
+          <displayName>DR</displayName>
+          <description>Data register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DR</name>
+              <description>Data value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>9</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>511</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>BRR</name>
+          <displayName>BRR</displayName>
+          <description>Baud rate register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DIV_Mantissa</name>
+              <description>mantissa of USARTDIV</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>DIV_Fraction</name>
+              <description>fraction of USARTDIV</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR1</name>
+          <displayName>CR1</displayName>
+          <description>Control register 1</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OVER8</name>
+              <description>Oversampling mode</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OVER8</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Oversample16</name>
+                  <description>Oversampling by 16</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Oversample8</name>
+                  <description>Oversampling by 8</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UE</name>
+              <description>USART enable</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>USART prescaler and outputs disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>USART enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>M</name>
+              <description>Word length</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>M</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>M8</name>
+                  <description>8 data bits</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>M9</name>
+                  <description>9 data bits</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WAKE</name>
+              <description>Wakeup method</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WAKE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>IdleLine</name>
+                  <description>USART wakeup on idle line</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>AddressMark</name>
+                  <description>USART wakeup on address mark</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PCE</name>
+              <description>Parity control enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PCE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Parity control disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Parity control enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PS</name>
+              <description>Parity selection</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Even</name>
+                  <description>Even parity</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Odd</name>
+                  <description>Odd parity</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PEIE</name>
+              <description>PE interrupt enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PEIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>PE interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>PE interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TXEIE</name>
+              <description>TXE interrupt enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TXEIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>TXE interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>TXE interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TCIE</name>
+              <description>Transmission complete interrupt
+              enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TCIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>TC interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>TC interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RXNEIE</name>
+              <description>RXNE interrupt enable</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RXNEIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>RXNE interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>RXNE interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IDLEIE</name>
+              <description>IDLE interrupt enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>IDLEIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>IDLE interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>IDLE interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TE</name>
+              <description>Transmitter enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Transmitter disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Transmitter enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RE</name>
+              <description>Receiver enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Receiver disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Receiver enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>RWU</name>
+              <description>Receiver wakeup</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RWU</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Active</name>
+                  <description>Receiver in active mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Mute</name>
+                  <description>Receiver in mute mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SBK</name>
+              <description>Send break</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SBK</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoBreak</name>
+                  <description>No break character is transmitted</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Break</name>
+                  <description>Break character transmitted</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR2</name>
+          <displayName>CR2</displayName>
+          <description>Control register 2</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>LINEN</name>
+              <description>LIN mode enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LINEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>LIN mode disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>LIN mode enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>STOP</name>
+              <description>STOP bits</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>STOP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Stop1</name>
+                  <description>1 stop bit</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Stop2</name>
+                  <description>2 stop bits</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LBDIE</name>
+              <description>LIN break detection interrupt
+              enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LBDIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>LIN break detection interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>LIN break detection interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LBDL</name>
+              <description>lin break detection length</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LBDL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>LBDL10</name>
+                  <description>10-bit break detection</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>LBDL11</name>
+                  <description>11-bit break detection</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ADD</name>
+              <description>Address of the USART node</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR3</name>
+          <displayName>CR3</displayName>
+          <description>Control register 3</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ONEBIT</name>
+              <description>One sample bit method
+              enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ONEBIT</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Sample3</name>
+                  <description>Three sample bit method</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Sample1</name>
+                  <description>One sample bit method</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DMAT</name>
+              <description>DMA enable transmitter</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DMAT</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>DMA mode is disabled for transmission</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>DMA mode is enabled for transmission</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DMAR</name>
+              <description>DMA enable receiver</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DMAR</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>DMA mode is disabled for reception</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>DMA mode is enabled for reception</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>HDSEL</name>
+              <description>Half-duplex selection</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>HDSEL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>FullDuplex</name>
+                  <description>Half duplex mode is not selected</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>HalfDuplex</name>
+                  <description>Half duplex mode is selected</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IRLP</name>
+              <description>IrDA low-power</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>IRLP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Normal</name>
+                  <description>Normal mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>LowPower</name>
+                  <description>Low-power mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IREN</name>
+              <description>IrDA mode enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>IREN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>IrDA disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>IrDA enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>EIE</name>
+              <description>Error interrupt enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>EIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Error interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Error interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GTPR</name>
+          <description>Guard Time and Prescaler Register</description>
+          <addressOffset>0x18</addressOffset>
+          <access>read-write</access>
+          <fields>
+            <field>
+              <name>PSC</name>
+              <description>IrDA Low-Power pulse width peripheral clock prescaler</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral derivedFrom="UART4">
+      <name>UART5</name>
+      <baseAddress>0x40005000</baseAddress>
+      <interrupt>
+        <name>UART5</name>
+        <description>UART5 global interrupt</description>
+        <value>53</value>
+      </interrupt>
+    </peripheral>
+    <peripheral>
+      <name>ADC_Common</name>
+      <description>Common ADC registers</description>
+      <groupName>ADC_Common</groupName>
+      <baseAddress>0x40012300</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>CSR</name>
+          <displayName>CSR</displayName>
+          <description>ADC Common status register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OVR3</name>
+              <description>Overrun flag of ADC3</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="OVR1"/>
+            </field>
+            <field>
+              <name>STRT3</name>
+              <description>Regular channel Start flag of ADC
+              3</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="STRT1"/>
+            </field>
+            <field>
+              <name>JSTRT3</name>
+              <description>Injected channel Start flag of ADC
+              3</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="JSTRT1"/>
+            </field>
+            <field>
+              <name>JEOC3</name>
+              <description>Injected channel end of conversion of
+              ADC 3</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="JEOC1"/>
+            </field>
+            <field>
+              <name>EOC3</name>
+              <description>End of conversion of ADC 3</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="EOC1"/>
+            </field>
+            <field>
+              <name>AWD3</name>
+              <description>Analog watchdog flag of ADC
+              3</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="AWD1"/>
+            </field>
+            <field>
+              <name>OVR2</name>
+              <description>Overrun flag of ADC 2</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="OVR1"/>
+            </field>
+            <field>
+              <name>STRT2</name>
+              <description>Regular channel Start flag of ADC
+              2</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="STRT1"/>
+            </field>
+            <field>
+              <name>JSTRT2</name>
+              <description>Injected channel Start flag of ADC
+              2</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="JSTRT1"/>
+            </field>
+            <field>
+              <name>JEOC2</name>
+              <description>Injected channel end of conversion of
+              ADC 2</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="JEOC1"/>
+            </field>
+            <field>
+              <name>EOC2</name>
+              <description>End of conversion of ADC 2</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="EOC1"/>
+            </field>
+            <field>
+              <name>AWD2</name>
+              <description>Analog watchdog flag of ADC
+              2</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="AWD1"/>
+            </field>
+            <field>
+              <name>OVR1</name>
+              <description>Overrun flag of ADC 1</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OVR1</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoOverrun</name>
+                  <description>No overrun occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Overrun</name>
+                  <description>Overrun occurred</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>STRT1</name>
+              <description>Regular channel Start flag of ADC
+              1</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>STRT1</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotStarted</name>
+                  <description>No regular channel conversion started</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Started</name>
+                  <description>Regular channel conversion has started</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>JSTRT1</name>
+              <description>Injected channel Start flag of ADC
+              1</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>JSTRT1</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotStarted</name>
+                  <description>No injected channel conversion started</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Started</name>
+                  <description>Injected channel conversion has started</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>JEOC1</name>
+              <description>Injected channel end of conversion of
+              ADC 1</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>JEOC1</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotComplete</name>
+                  <description>Conversion is not complete</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Complete</name>
+                  <description>Conversion complete</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>EOC1</name>
+              <description>End of conversion of ADC 1</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>EOC1</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotComplete</name>
+                  <description>Conversion is not complete</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Complete</name>
+                  <description>Conversion complete</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>AWD1</name>
+              <description>Analog watchdog flag of ADC
+              1</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>AWD1</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoEvent</name>
+                  <description>No analog watchdog event occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Event</name>
+                  <description>Analog watchdog event occurred</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCR</name>
+          <displayName>CCR</displayName>
+          <description>ADC common control register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TSVREFE</name>
+              <description>Temperature sensor and VREFINT
+              enable</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TSVREFE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Temperature sensor and V_REFINT channel disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Temperature sensor and V_REFINT channel enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>VBATE</name>
+              <description>VBAT enable</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>VBATE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>V_BAT channel disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>V_BAT channel enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ADCPRE</name>
+              <description>ADC prescaler</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>ADCPRE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>PCLK2 divided by 2</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>PCLK2 divided by 4</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div6</name>
+                  <description>PCLK2 divided by 6</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div8</name>
+                  <description>PCLK2 divided by 8</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DMA</name>
+              <description>Direct memory access mode for multi ADC
+              mode</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>DMA</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>DMA mode disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Mode1</name>
+                  <description>DMA mode 1 enabled (2 / 3 half-words one by one - 1 then 2 then 3)</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Mode2</name>
+                  <description>DMA mode 2 enabled (2 / 3 half-words by pairs - 2&amp;1 then 1&amp;3 then 3&amp;2)</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Mode3</name>
+                  <description>DMA mode 3 enabled (2 / 3 half-words by pairs - 2&amp;1 then 1&amp;3 then 3&amp;2)</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DDS</name>
+              <description>DMA disable selection for multi-ADC
+              mode</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DDS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Single</name>
+                  <description>No new DMA request is issued after the last transfer</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Continuous</name>
+                  <description>DMA requests are issued as long as data are converted and DMA=01, 10 or 11</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DELAY</name>
+              <description>Delay between 2 sampling
+              phases</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>MULTI</name>
+              <description>Multi ADC mode selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>5</bitWidth>
+              <enumeratedValues>
+                <name>MULTI</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Independent</name>
+                  <description>All the ADCs independent: independent mode</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DualRJ</name>
+                  <description>Dual ADC1 and ADC2, combined regular and injected simultaneous mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DualRA</name>
+                  <description>Dual ADC1 and ADC2, combined regular and alternate trigger mode</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DualJ</name>
+                  <description>Dual ADC1 and ADC2, injected simultaneous mode only</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DualR</name>
+                  <description>Dual ADC1 and ADC2, regular simultaneous mode only</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DualI</name>
+                  <description>Dual ADC1 and ADC2, interleaved mode only</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>DualA</name>
+                  <description>Dual ADC1 and ADC2, alternate trigger mode only</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TripleRJ</name>
+                  <description>Triple ADC, regular and injected simultaneous mode</description>
+                  <value>17</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TripleRA</name>
+                  <description>Triple ADC, regular and alternate trigger mode</description>
+                  <value>18</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TripleJ</name>
+                  <description>Triple ADC, injected simultaneous mode only</description>
+                  <value>21</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TripleR</name>
+                  <description>Triple ADC, regular simultaneous mode only</description>
+                  <value>22</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TripleI</name>
+                  <description>Triple ADC, interleaved mode only</description>
+                  <value>23</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TripleA</name>
+                  <description>Triple ADC, alternate trigger mode only</description>
+                  <value>24</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CDR</name>
+          <displayName>CDR</displayName>
+          <description>ADC common regular data register for dual
+          and triple modes</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DATA2</name>
+              <description>2nd data item of a pair of regular
+              conversions</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>DATA1</name>
+              <description>1st data item of a pair of regular
+              conversions</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>TIM1</name>
+      <description>Advanced-timers</description>
+      <groupName>TIM</groupName>
+      <baseAddress>0x40010000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>TIM1_BRK_TIM9</name>
+        <description>TIM1 Break interrupt and TIM9 global
+        interrupt</description>
+        <value>24</value>
+      </interrupt>
+      <interrupt>
+        <name>TIM1_UP_TIM10</name>
+        <description>TIM1 Update interrupt and TIM10 global
+        interrupt</description>
+        <value>25</value>
+      </interrupt>
+      <interrupt>
+        <name>TIM1_TRG_COM_TIM11</name>
+        <description>TIM1 Trigger and Commutation interrupts and
+        TIM11 global interrupt</description>
+        <value>26</value>
+      </interrupt>
+      <interrupt>
+        <name>TIM1_CC</name>
+        <description>TIM1 Capture Compare interrupt</description>
+        <value>27</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR1</name>
+          <displayName>CR1</displayName>
+          <description>control register 1</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CKD</name>
+              <description>Clock division</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CKD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>t_DTS = t_CK_INT</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>t_DTS = 2 × t_CK_INT</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>t_DTS = 4 × t_CK_INT</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ARPE</name>
+              <description>Auto-reload preload enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ARPE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>TIMx_APRR register is not buffered</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>TIMx_APRR register is buffered</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CMS</name>
+              <description>Center-aligned mode
+              selection</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CMS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>EdgeAligned</name>
+                  <description>The counter counts up or down depending on the direction bit</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CenterAligned1</name>
+                  <description>The counter counts up and down alternatively. Output compare interrupt flags are set only when the counter is counting down.</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CenterAligned2</name>
+                  <description>The counter counts up and down alternatively. Output compare interrupt flags are set only when the counter is counting up.</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CenterAligned3</name>
+                  <description>The counter counts up and down alternatively. Output compare interrupt flags are set both when the counter is counting up or down.</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DIR</name>
+              <description>Direction</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DIR</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Up</name>
+                  <description>Counter used as upcounter</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Down</name>
+                  <description>Counter used as downcounter</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OPM</name>
+              <description>One-pulse mode</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OPM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter is not stopped at update event</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter stops counting at the next update event (clearing the CEN bit)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>URS</name>
+              <description>Update request source</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>URS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AnyEvent</name>
+                  <description>Any of counter overflow/underflow, setting UG, or update through slave mode, generates an update interrupt or DMA request</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CounterOnly</name>
+                  <description>Only counter overflow/underflow generates an update interrupt or DMA request</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UDIS</name>
+              <description>Update disable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UDIS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update event enabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update event disabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CEN</name>
+              <description>Counter enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR2</name>
+          <displayName>CR2</displayName>
+          <description>control register 2</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OIS4</name>
+              <description>Output Idle state 4</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="OIS1"/>
+            </field>
+            <field>
+              <name>OIS3N</name>
+              <description>Output Idle state 3</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="OIS1N"/>
+            </field>
+            <field>
+              <name>OIS3</name>
+              <description>Output Idle state 3</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="OIS1"/>
+            </field>
+            <field>
+              <name>OIS2N</name>
+              <description>Output Idle state 2</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="OIS1N"/>
+            </field>
+            <field>
+              <name>OIS2</name>
+              <description>Output Idle state 2</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="OIS1"/>
+            </field>
+            <field>
+              <name>OIS1N</name>
+              <description>Output Idle state 1</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OIS1N</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>OCxN=0 after a dead-time when MOE=0</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Set</name>
+                  <description>OCxN=1 after a dead-time when MOE=0</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OIS1</name>
+              <description>Output Idle state 1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OIS1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>OCx=0 (after a dead-time if OCx(N) is implemented) when MOE=0</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Set</name>
+                  <description>OCx=1 (after a dead-time if OCx(N) is implemented) when MOE=0</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TI1S</name>
+              <description>TI1 selection</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TI1S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Normal</name>
+                  <description>The TIMx_CH1 pin is connected to TI1 input</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>XOR</name>
+                  <description>The TIMx_CH1, CH2, CH3 pins are connected to TI1 input</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MMS</name>
+              <description>Master mode selection</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>MMS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>The UG bit from the TIMx_EGR register is used as trigger output</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enable</name>
+                  <description>The counter enable signal, CNT_EN, is used as trigger output</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Update</name>
+                  <description>The update event is selected as trigger output</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ComparePulse</name>
+                  <description>The trigger output send a positive pulse when the CC1IF flag it to be set, as soon as a capture or a compare match occurred</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC1</name>
+                  <description>OC1REF signal is used as trigger output</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC2</name>
+                  <description>OC2REF signal is used as trigger output</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC3</name>
+                  <description>OC3REF signal is used as trigger output</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC4</name>
+                  <description>OC4REF signal is used as trigger output</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CCDS</name>
+              <description>Capture/compare DMA
+              selection</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CCDS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>OnCompare</name>
+                  <description>CCx DMA request sent when CCx event occurs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>OnUpdate</name>
+                  <description>CCx DMA request sent when update event occurs</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CCUS</name>
+              <description>Capture/compare control update
+              selection</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CCPC</name>
+              <description>Capture/compare preloaded
+              control</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SMCR</name>
+          <displayName>SMCR</displayName>
+          <description>slave mode control register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ETP</name>
+              <description>External trigger polarity</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ETP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NotInverted</name>
+                  <description>ETR is noninverted, active at high level or rising edge</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Inverted</name>
+                  <description>ETR is inverted, active at low level or falling edge</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ECE</name>
+              <description>External clock enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ECE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>External clock mode 2 disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>External clock mode 2 enabled. The counter is clocked by any active edge on the ETRF signal.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ETPS</name>
+              <description>External trigger prescaler</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>ETPS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>Prescaler OFF</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>ETRP frequency divided by 2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>ETRP frequency divided by 4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div8</name>
+                  <description>ETRP frequency divided by 8</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ETF</name>
+              <description>External trigger filter</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>ETF</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoFilter</name>
+                  <description>No filter, sampling is done at fDTS</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N2</name>
+                  <description>fSAMPLING=fCK_INT, N=2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N4</name>
+                  <description>fSAMPLING=fCK_INT, N=4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N8</name>
+                  <description>fSAMPLING=fCK_INT, N=8</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N6</name>
+                  <description>fSAMPLING=fDTS/2, N=6</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N8</name>
+                  <description>fSAMPLING=fDTS/2, N=8</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N6</name>
+                  <description>fSAMPLING=fDTS/4, N=6</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N8</name>
+                  <description>fSAMPLING=fDTS/4, N=8</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N6</name>
+                  <description>fSAMPLING=fDTS/8, N=6</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N8</name>
+                  <description>fSAMPLING=fDTS/8, N=8</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N5</name>
+                  <description>fSAMPLING=fDTS/16, N=5</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N6</name>
+                  <description>fSAMPLING=fDTS/16, N=6</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N8</name>
+                  <description>fSAMPLING=fDTS/16, N=8</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N5</name>
+                  <description>fSAMPLING=fDTS/32, N=5</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N6</name>
+                  <description>fSAMPLING=fDTS/32, N=6</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N8</name>
+                  <description>fSAMPLING=fDTS/32, N=8</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MSM</name>
+              <description>Master/Slave mode</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MSM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoSync</name>
+                  <description>No action</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Sync</name>
+                  <description>The effect of an event on the trigger input (TRGI) is delayed to allow a perfect synchronization between the current timer and its slaves (through TRGO). It is useful if we want to synchronize several timers on a single external event.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TS</name>
+              <description>Trigger selection</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>TS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>ITR0</name>
+                  <description>Internal Trigger 0 (ITR0)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ITR1</name>
+                  <description>Internal Trigger 1 (ITR1)</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ITR2</name>
+                  <description>Internal Trigger 2 (ITR2)</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI1F_ED</name>
+                  <description>TI1 Edge Detector (TI1F_ED)</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI1FP1</name>
+                  <description>Filtered Timer Input 1 (TI1FP1)</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI2FP2</name>
+                  <description>Filtered Timer Input 2 (TI2FP2)</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ETRF</name>
+                  <description>External Trigger input (ETRF)</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SMS</name>
+              <description>Slave mode selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>SMS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Slave mode disabled - if CEN = ‘1 then the prescaler is clocked directly by the internal clock.</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Encoder_Mode_1</name>
+                  <description>Encoder mode 1 - Counter counts up/down on TI2FP1 edge depending on TI1FP2 level.</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Encoder_Mode_2</name>
+                  <description>Encoder mode 2 - Counter counts up/down on TI1FP2 edge depending on TI2FP1 level.</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Encoder_Mode_3</name>
+                  <description>Encoder mode 3 - Counter counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input.</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Reset_Mode</name>
+                  <description>Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter and generates an update of the registers.</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Gated_Mode</name>
+                  <description>Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled.</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Trigger_Mode</name>
+                  <description>Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled.</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Ext_Clock_Mode</name>
+                  <description>External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter.</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIER</name>
+          <displayName>DIER</displayName>
+          <description>DMA/Interrupt enable register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TDE</name>
+              <description>Trigger DMA request enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TDE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Trigger DMA request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Trigger DMA request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>COMDE</name>
+              <description>COM DMA request enable</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC4DE</name>
+              <description>Capture/Compare 4 DMA request
+              enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1DE"/>
+            </field>
+            <field>
+              <name>CC3DE</name>
+              <description>Capture/Compare 3 DMA request
+              enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1DE"/>
+            </field>
+            <field>
+              <name>CC2DE</name>
+              <description>Capture/Compare 2 DMA request
+              enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1DE"/>
+            </field>
+            <field>
+              <name>CC1DE</name>
+              <description>Capture/Compare 1 DMA request
+              enable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CC1DE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>CCx DMA request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>CCx DMA request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UDE</name>
+              <description>Update DMA request enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UDE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update DMA request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update DMA request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TIE</name>
+              <description>Trigger interrupt enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Trigger interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Trigger interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC4IE</name>
+              <description>Capture/Compare 4 interrupt
+              enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1IE"/>
+            </field>
+            <field>
+              <name>CC3IE</name>
+              <description>Capture/Compare 3 interrupt
+              enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1IE"/>
+            </field>
+            <field>
+              <name>CC2IE</name>
+              <description>Capture/Compare 2 interrupt
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1IE"/>
+            </field>
+            <field>
+              <name>CC1IE</name>
+              <description>Capture/Compare 1 interrupt
+              enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CC1IE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>CCx interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>CCx interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UIE</name>
+              <description>Update interrupt enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BIE</name>
+              <description>Break interrupt enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>COMIE</name>
+              <description>COM interrupt enable</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC4OF</name>
+              <description>Capture/Compare 4 overcapture
+              flag</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1OFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1OFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC3OF</name>
+              <description>Capture/Compare 3 overcapture
+              flag</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1OFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1OFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC2OF</name>
+              <description>Capture/compare 2 overcapture
+              flag</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1OFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1OFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC1OF</name>
+              <description>Capture/Compare 1 overcapture
+              flag</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>CC1OFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Overcapture</name>
+                  <description>The counter value has been captured in TIMx_CCRx register while CCxIF flag was already set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>CC1OFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BIF</name>
+              <description>Break interrupt flag</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TIF</name>
+              <description>Trigger interrupt flag</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>TIFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoTrigger</name>
+                  <description>No trigger event occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Trigger</name>
+                  <description>Trigger interrupt pending</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>TIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>COMIF</name>
+              <description>COM interrupt flag</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC4IF</name>
+              <description>Capture/Compare 4 interrupt
+              flag</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1IFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1IFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC3IF</name>
+              <description>Capture/Compare 3 interrupt
+              flag</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1IFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1IFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC2IF</name>
+              <description>Capture/Compare 2 interrupt
+              flag</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1IFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1IFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC1IF</name>
+              <description>Capture/compare 1 interrupt
+              flag</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>CC1IFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Match</name>
+                  <description>If CC1 is an output: The content of the counter TIMx_CNT matches the content of the TIMx_CCR1 register. If CC1 is an input: The counter value has been captured in TIMx_CCR1 register.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>CC1IFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UIF</name>
+              <description>Update interrupt flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>UIFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoUpdateOccurred</name>
+                  <description>No update occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>UpdatePending</name>
+                  <description>Update interrupt pending</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>UIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>EGR</name>
+          <displayName>EGR</displayName>
+          <description>event generation register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>BG</name>
+              <description>Break generation</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TG</name>
+              <description>Trigger generation</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TGW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Trigger</name>
+                  <description>The TIF flag is set in TIMx_SR register. Related interrupt or DMA transfer can occur if enabled.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>COMG</name>
+              <description>Capture/Compare control update
+              generation</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC4G</name>
+              <description>Capture/compare 4
+              generation</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1GW"/>
+            </field>
+            <field>
+              <name>CC3G</name>
+              <description>Capture/compare 3
+              generation</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1GW"/>
+            </field>
+            <field>
+              <name>CC2G</name>
+              <description>Capture/compare 2
+              generation</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1GW"/>
+            </field>
+            <field>
+              <name>CC1G</name>
+              <description>Capture/compare 1
+              generation</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CC1GW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Trigger</name>
+                  <description>If CC1 is an output: CC1IF flag is set, Corresponding interrupt or DMA request is sent if enabled. If CC1 is an input: The current value of the counter is captured in TIMx_CCR1 register.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UG</name>
+              <description>Update generation</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UG</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Update</name>
+                  <description>Re-initializes the timer counter and generates an update of the registers.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR1_Output</name>
+          <displayName>CCMR1_Output</displayName>
+          <description>capture/compare mode register 1 (output
+          mode)</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OC2CE</name>
+              <description>Output Compare 2 clear
+              enable</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC2M</name>
+              <description>Output Compare 2 mode</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="OC1M"/>
+            </field>
+            <field>
+              <name>OC2PE</name>
+              <description>Output Compare 2 preload
+              enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC2PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR2 disabled. New values written to CCR2 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR2 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC2FE</name>
+              <description>Output Compare 2 fast
+              enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2S</name>
+              <description>Capture/Compare 2
+              selection</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC2S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC2 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1CE</name>
+              <description>Output Compare 1 clear
+              enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC1M</name>
+              <description>Output Compare 1 mode</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>OC1M</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Frozen</name>
+                  <description>The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the outputs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveOnMatch</name>
+                  <description>Set channel to active level on match. OCyREF signal is forced high when the counter matches the capture/compare register</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InactiveOnMatch</name>
+                  <description>Set channel to inactive level on match. OCyREF signal is forced low when the counter matches the capture/compare register</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Toggle</name>
+                  <description>OCyREF toggles when TIMx_CNT=TIMx_CCRy</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceInactive</name>
+                  <description>OCyREF is forced low</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceActive</name>
+                  <description>OCyREF is forced high</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode1</name>
+                  <description>In upcounting, channel is active as long as TIMx_CNT&lt;TIMx_CCRy else inactive. In downcounting, channel is inactive as long as TIMx_CNT>TIMx_CCRy else active</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode2</name>
+                  <description>Inversely to PwmMode1</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1PE</name>
+              <description>Output Compare 1 preload
+              enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC1PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR1 disabled. New values written to CCR1 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR1 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1FE</name>
+              <description>Output Compare 1 fast
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1S</name>
+              <description>Capture/Compare 1
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC1S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC1 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR1_Input</name>
+          <displayName>CCMR1_Input</displayName>
+          <description>capture/compare mode register 1 (input
+          mode)</description>
+          <alternateRegister>CCMR1_Output</alternateRegister>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IC2F</name>
+              <description>Input capture 2 filter</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>IC2PSC</name>
+              <description>Input capture 2 prescaler</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>CC2S</name>
+              <description>Capture/Compare 2
+              selection</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC2S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI2</name>
+                  <description>CC2 channel is configured as input, IC2 is mapped on TI2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI1</name>
+                  <description>CC2 channel is configured as input, IC2 is mapped on TI1</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC2 channel is configured as input, IC2 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IC1F</name>
+              <description>Input capture 1 filter</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>IC1F</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoFilter</name>
+                  <description>No filter, sampling is done at fDTS</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N2</name>
+                  <description>fSAMPLING=fCK_INT, N=2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N4</name>
+                  <description>fSAMPLING=fCK_INT, N=4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N8</name>
+                  <description>fSAMPLING=fCK_INT, N=8</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N6</name>
+                  <description>fSAMPLING=fDTS/2, N=6</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N8</name>
+                  <description>fSAMPLING=fDTS/2, N=8</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N6</name>
+                  <description>fSAMPLING=fDTS/4, N=6</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N8</name>
+                  <description>fSAMPLING=fDTS/4, N=8</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N6</name>
+                  <description>fSAMPLING=fDTS/8, N=6</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N8</name>
+                  <description>fSAMPLING=fDTS/8, N=8</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N5</name>
+                  <description>fSAMPLING=fDTS/16, N=5</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N6</name>
+                  <description>fSAMPLING=fDTS/16, N=6</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N8</name>
+                  <description>fSAMPLING=fDTS/16, N=8</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N5</name>
+                  <description>fSAMPLING=fDTS/32, N=5</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N6</name>
+                  <description>fSAMPLING=fDTS/32, N=6</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N8</name>
+                  <description>fSAMPLING=fDTS/32, N=8</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IC1PSC</name>
+              <description>Input capture 1 prescaler</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>CC1S</name>
+              <description>Capture/Compare 1
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC1S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI1</name>
+                  <description>CC1 channel is configured as input, IC1 is mapped on TI1</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI2</name>
+                  <description>CC1 channel is configured as input, IC1 is mapped on TI2</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC1 channel is configured as input, IC1 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR2_Output</name>
+          <displayName>CCMR2_Output</displayName>
+          <description>capture/compare mode register 2 (output
+          mode)</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OC4CE</name>
+              <description>Output compare 4 clear
+              enable</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC4M</name>
+              <description>Output compare 4 mode</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="OC3M"/>
+            </field>
+            <field>
+              <name>OC4PE</name>
+              <description>Output compare 4 preload
+              enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC4PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR4 disabled. New values written to CCR4 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR4 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC4FE</name>
+              <description>Output compare 4 fast
+              enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC4S</name>
+              <description>Capture/Compare 4
+              selection</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC4S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC4 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC3CE</name>
+              <description>Output compare 3 clear
+              enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC3M</name>
+              <description>Output compare 3 mode</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>OC3M</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Frozen</name>
+                  <description>The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the outputs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveOnMatch</name>
+                  <description>Set channel to active level on match. OCyREF signal is forced high when the counter matches the capture/compare register</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InactiveOnMatch</name>
+                  <description>Set channel to inactive level on match. OCyREF signal is forced low when the counter matches the capture/compare register</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Toggle</name>
+                  <description>OCyREF toggles when TIMx_CNT=TIMx_CCRy</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceInactive</name>
+                  <description>OCyREF is forced low</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceActive</name>
+                  <description>OCyREF is forced high</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode1</name>
+                  <description>In upcounting, channel is active as long as TIMx_CNT&lt;TIMx_CCRy else inactive. In downcounting, channel is inactive as long as TIMx_CNT>TIMx_CCRy else active</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode2</name>
+                  <description>Inversely to PwmMode1</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC3PE</name>
+              <description>Output compare 3 preload
+              enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC3PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR3 disabled. New values written to CCR3 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR3 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC3FE</name>
+              <description>Output compare 3 fast
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3S</name>
+              <description>Capture/Compare 3
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC3S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC3 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR2_Input</name>
+          <displayName>CCMR2_Input</displayName>
+          <description>capture/compare mode register 2 (input
+          mode)</description>
+          <alternateRegister>CCMR2_Output</alternateRegister>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IC4F</name>
+              <description>Input capture 4 filter</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>IC4PSC</name>
+              <description>Input capture 4 prescaler</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>2</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>3</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>CC4S</name>
+              <description>Capture/Compare 4
+              selection</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC4S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI4</name>
+                  <description>CC4 channel is configured as input, IC4 is mapped on TI4</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI3</name>
+                  <description>CC4 channel is configured as input, IC4 is mapped on TI3</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC4 channel is configured as input, IC4 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IC3F</name>
+              <description>Input capture 3 filter</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>IC3PSC</name>
+              <description>Input capture 3 prescaler</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>3</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>CC3S</name>
+              <description>Capture/compare 3
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC3S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI3</name>
+                  <description>CC3 channel is configured as input, IC3 is mapped on TI3</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI4</name>
+                  <description>CC3 channel is configured as input, IC3 is mapped on TI4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC3 channel is configured as input, IC3 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCER</name>
+          <displayName>CCER</displayName>
+          <description>capture/compare enable
+          register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC4P</name>
+              <description>Capture/Compare 3 output
+              Polarity</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC4E</name>
+              <description>Capture/Compare 4 output
+              enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3NP</name>
+              <description>Capture/Compare 3 output
+              Polarity</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3NE</name>
+              <description>Capture/Compare 3 complementary output
+              enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3P</name>
+              <description>Capture/Compare 3 output
+              Polarity</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3E</name>
+              <description>Capture/Compare 3 output
+              enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2NP</name>
+              <description>Capture/Compare 2 output
+              Polarity</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2NE</name>
+              <description>Capture/Compare 2 complementary output
+              enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2P</name>
+              <description>Capture/Compare 2 output
+              Polarity</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2E</name>
+              <description>Capture/Compare 2 output
+              enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1NP</name>
+              <description>Capture/Compare 1 output
+              Polarity</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1NE</name>
+              <description>Capture/Compare 1 complementary output
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1P</name>
+              <description>Capture/Compare 1 output
+              Polarity</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1E</name>
+              <description>Capture/Compare 1 output
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CNT</name>
+          <displayName>CNT</displayName>
+          <description>counter</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CNT</name>
+              <description>counter value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PSC</name>
+          <displayName>PSC</displayName>
+          <description>prescaler</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PSC</name>
+              <description>Prescaler value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ARR</name>
+          <displayName>ARR</displayName>
+          <description>auto-reload register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ARR</name>
+              <description>Auto-reload value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>4</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>1-4</dimIndex>
+          <name>CCR%s</name>
+          <displayName>CCR1</displayName>
+          <description>capture/compare register</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CCR</name>
+              <description>Capture/Compare value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DCR</name>
+          <displayName>DCR</displayName>
+          <description>DMA control register</description>
+          <addressOffset>0x48</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DBL</name>
+              <description>DMA burst length</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>DBA</name>
+              <description>DMA base address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>31</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DMAR</name>
+          <displayName>DMAR</displayName>
+          <description>DMA address for full transfer</description>
+          <addressOffset>0x4C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DMAB</name>
+              <description>DMA register for burst
+              accesses</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>RCR</name>
+          <displayName>RCR</displayName>
+          <description>repetition counter register</description>
+          <addressOffset>0x30</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>REP</name>
+              <description>Repetition counter value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>BDTR</name>
+          <displayName>BDTR</displayName>
+          <description>break and dead-time register</description>
+          <addressOffset>0x44</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>MOE</name>
+              <description>Main output enable</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MOE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>DisabledIdle</name>
+                  <description>OC/OCN are disabled or forced idle depending on OSSI</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>OC/OCN are enabled if CCxE/CCxNE are set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>AOE</name>
+              <description>Automatic output enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>AOE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Manual</name>
+                  <description>MOE can be set only by software</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Automatic</name>
+                  <description>MOE can be set by software or automatically at the next update event (if none of the break inputs BRK and BRK2 is active)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BKP</name>
+              <description>Break polarity</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BKP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>ActiveLow</name>
+                  <description>Break input BRKx is active low</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveHigh</name>
+                  <description>Break input BRKx is active high</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BKE</name>
+              <description>Break enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BKE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Break function x disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Break function x disabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OSSR</name>
+              <description>Off-state selection for Run
+              mode</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OSSR</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>When inactive, OC/OCN outputs are disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>IdleLevel</name>
+                  <description>When inactive, OC/OCN outputs are enabled with their inactive level</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OSSI</name>
+              <description>Off-state selection for Idle
+              mode</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OSSI</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>When inactive, OC/OCN outputs are disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>IdleLevel</name>
+                  <description>When inactive, OC/OCN outputs are forced to idle level</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LOCK</name>
+              <description>Lock configuration</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>LOCK</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Off</name>
+                  <description>No bit is write protected</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Level1</name>
+                  <description>Any bits except MOE, OSSR, OSSI and LOCK in TIMx_BDTR register, OISx and OISxN bits in TIMx_CR2 register can no longer be written</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Level2</name>
+                  <description>LOCK Level 1 + CC Polarity bits (CCxP/CCxNP bits in TIMx_CCER register, as long as the related channel is configured in output through the CCxS bits) as well as OSSR and OSSI bits can no longer be written</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Level3</name>
+                  <description>LOCK Level 2 + CC Control bits (OCxM and OCxPE bits in TIMx_CCMRx registers, as long as the related channel is configured in output through the CCxS bits) can no longer be written</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DTG</name>
+              <description>Dead-time generator setup</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral derivedFrom="TIM1">
+      <name>TIM8</name>
+      <groupName>TIM</groupName>
+      <baseAddress>0x40010400</baseAddress>
+      <interrupt>
+        <name>TIM8_BRK_TIM12</name>
+        <description>TIM8 Break interrupt and TIM12 global
+        interrupt</description>
+        <value>43</value>
+      </interrupt>
+      <interrupt>
+        <name>TIM8_UP_TIM13</name>
+        <description>TIM8 Update interrupt and TIM13 global
+        interrupt</description>
+        <value>44</value>
+      </interrupt>
+      <interrupt>
+        <name>TIM8_TRG_COM_TIM14</name>
+        <description>TIM8 Trigger and Commutation interrupts and
+        TIM14 global interrupt</description>
+        <value>45</value>
+      </interrupt>
+      <interrupt>
+        <name>TIM8_CC</name>
+        <description>TIM8 Capture Compare interrupt</description>
+        <value>46</value>
+      </interrupt>
+    </peripheral>
+    <peripheral>
+      <name>TIM2</name>
+      <description>General purpose timers</description>
+      <groupName>TIM</groupName>
+      <baseAddress>0x40000000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>TIM2</name>
+        <description>TIM2 global interrupt</description>
+        <value>28</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR1</name>
+          <displayName>CR1</displayName>
+          <description>control register 1</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CKD</name>
+              <description>Clock division</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CKD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>t_DTS = t_CK_INT</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>t_DTS = 2 × t_CK_INT</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>t_DTS = 4 × t_CK_INT</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ARPE</name>
+              <description>Auto-reload preload enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ARPE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>TIMx_APRR register is not buffered</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>TIMx_APRR register is buffered</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CMS</name>
+              <description>Center-aligned mode
+              selection</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CMS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>EdgeAligned</name>
+                  <description>The counter counts up or down depending on the direction bit</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CenterAligned1</name>
+                  <description>The counter counts up and down alternatively. Output compare interrupt flags are set only when the counter is counting down.</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CenterAligned2</name>
+                  <description>The counter counts up and down alternatively. Output compare interrupt flags are set only when the counter is counting up.</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CenterAligned3</name>
+                  <description>The counter counts up and down alternatively. Output compare interrupt flags are set both when the counter is counting up or down.</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DIR</name>
+              <description>Direction</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DIR</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Up</name>
+                  <description>Counter used as upcounter</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Down</name>
+                  <description>Counter used as downcounter</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OPM</name>
+              <description>One-pulse mode</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OPM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter is not stopped at update event</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter stops counting at the next update event (clearing the CEN bit)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>URS</name>
+              <description>Update request source</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>URS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AnyEvent</name>
+                  <description>Any of counter overflow/underflow, setting UG, or update through slave mode, generates an update interrupt or DMA request</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CounterOnly</name>
+                  <description>Only counter overflow/underflow generates an update interrupt or DMA request</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UDIS</name>
+              <description>Update disable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UDIS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update event enabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update event disabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CEN</name>
+              <description>Counter enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR2</name>
+          <displayName>CR2</displayName>
+          <description>control register 2</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TI1S</name>
+              <description>TI1 selection</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TI1S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Normal</name>
+                  <description>The TIMx_CH1 pin is connected to TI1 input</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>XOR</name>
+                  <description>The TIMx_CH1, CH2, CH3 pins are connected to TI1 input</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MMS</name>
+              <description>Master mode selection</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>MMS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>The UG bit from the TIMx_EGR register is used as trigger output</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enable</name>
+                  <description>The counter enable signal, CNT_EN, is used as trigger output</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Update</name>
+                  <description>The update event is selected as trigger output</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ComparePulse</name>
+                  <description>The trigger output send a positive pulse when the CC1IF flag it to be set, as soon as a capture or a compare match occurred</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC1</name>
+                  <description>OC1REF signal is used as trigger output</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC2</name>
+                  <description>OC2REF signal is used as trigger output</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC3</name>
+                  <description>OC3REF signal is used as trigger output</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC4</name>
+                  <description>OC4REF signal is used as trigger output</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CCDS</name>
+              <description>Capture/compare DMA
+              selection</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CCDS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>OnCompare</name>
+                  <description>CCx DMA request sent when CCx event occurs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>OnUpdate</name>
+                  <description>CCx DMA request sent when update event occurs</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SMCR</name>
+          <displayName>SMCR</displayName>
+          <description>slave mode control register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ETP</name>
+              <description>External trigger polarity</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ETP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NotInverted</name>
+                  <description>ETR is noninverted, active at high level or rising edge</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Inverted</name>
+                  <description>ETR is inverted, active at low level or falling edge</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ECE</name>
+              <description>External clock enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ECE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>External clock mode 2 disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>External clock mode 2 enabled. The counter is clocked by any active edge on the ETRF signal.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ETPS</name>
+              <description>External trigger prescaler</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>ETPS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>Prescaler OFF</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>ETRP frequency divided by 2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>ETRP frequency divided by 4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div8</name>
+                  <description>ETRP frequency divided by 8</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ETF</name>
+              <description>External trigger filter</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>ETF</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoFilter</name>
+                  <description>No filter, sampling is done at fDTS</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N2</name>
+                  <description>fSAMPLING=fCK_INT, N=2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N4</name>
+                  <description>fSAMPLING=fCK_INT, N=4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N8</name>
+                  <description>fSAMPLING=fCK_INT, N=8</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N6</name>
+                  <description>fSAMPLING=fDTS/2, N=6</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N8</name>
+                  <description>fSAMPLING=fDTS/2, N=8</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N6</name>
+                  <description>fSAMPLING=fDTS/4, N=6</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N8</name>
+                  <description>fSAMPLING=fDTS/4, N=8</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N6</name>
+                  <description>fSAMPLING=fDTS/8, N=6</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N8</name>
+                  <description>fSAMPLING=fDTS/8, N=8</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N5</name>
+                  <description>fSAMPLING=fDTS/16, N=5</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N6</name>
+                  <description>fSAMPLING=fDTS/16, N=6</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N8</name>
+                  <description>fSAMPLING=fDTS/16, N=8</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N5</name>
+                  <description>fSAMPLING=fDTS/32, N=5</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N6</name>
+                  <description>fSAMPLING=fDTS/32, N=6</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N8</name>
+                  <description>fSAMPLING=fDTS/32, N=8</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MSM</name>
+              <description>Master/Slave mode</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MSM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoSync</name>
+                  <description>No action</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Sync</name>
+                  <description>The effect of an event on the trigger input (TRGI) is delayed to allow a perfect synchronization between the current timer and its slaves (through TRGO). It is useful if we want to synchronize several timers on a single external event.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TS</name>
+              <description>Trigger selection</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>TS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>ITR0</name>
+                  <description>Internal Trigger 0 (ITR0)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ITR1</name>
+                  <description>Internal Trigger 1 (ITR1)</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ITR2</name>
+                  <description>Internal Trigger 2 (ITR2)</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI1F_ED</name>
+                  <description>TI1 Edge Detector (TI1F_ED)</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI1FP1</name>
+                  <description>Filtered Timer Input 1 (TI1FP1)</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI2FP2</name>
+                  <description>Filtered Timer Input 2 (TI2FP2)</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ETRF</name>
+                  <description>External Trigger input (ETRF)</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SMS</name>
+              <description>Slave mode selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>SMS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Slave mode disabled - if CEN = ‘1 then the prescaler is clocked directly by the internal clock.</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Encoder_Mode_1</name>
+                  <description>Encoder mode 1 - Counter counts up/down on TI2FP1 edge depending on TI1FP2 level.</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Encoder_Mode_2</name>
+                  <description>Encoder mode 2 - Counter counts up/down on TI1FP2 edge depending on TI2FP1 level.</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Encoder_Mode_3</name>
+                  <description>Encoder mode 3 - Counter counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input.</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Reset_Mode</name>
+                  <description>Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter and generates an update of the registers.</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Gated_Mode</name>
+                  <description>Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled.</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Trigger_Mode</name>
+                  <description>Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled.</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Ext_Clock_Mode</name>
+                  <description>External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter.</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIER</name>
+          <displayName>DIER</displayName>
+          <description>DMA/Interrupt enable register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TDE</name>
+              <description>Trigger DMA request enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TDE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Trigger DMA request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Trigger DMA request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC4DE</name>
+              <description>Capture/Compare 4 DMA request
+              enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1DE"/>
+            </field>
+            <field>
+              <name>CC3DE</name>
+              <description>Capture/Compare 3 DMA request
+              enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1DE"/>
+            </field>
+            <field>
+              <name>CC2DE</name>
+              <description>Capture/Compare 2 DMA request
+              enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1DE"/>
+            </field>
+            <field>
+              <name>CC1DE</name>
+              <description>Capture/Compare 1 DMA request
+              enable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CC1DE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>CCx DMA request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>CCx DMA request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UDE</name>
+              <description>Update DMA request enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UDE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update DMA request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update DMA request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TIE</name>
+              <description>Trigger interrupt enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Trigger interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Trigger interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC4IE</name>
+              <description>Capture/Compare 4 interrupt
+              enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1IE"/>
+            </field>
+            <field>
+              <name>CC3IE</name>
+              <description>Capture/Compare 3 interrupt
+              enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1IE"/>
+            </field>
+            <field>
+              <name>CC2IE</name>
+              <description>Capture/Compare 2 interrupt
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1IE"/>
+            </field>
+            <field>
+              <name>CC1IE</name>
+              <description>Capture/Compare 1 interrupt
+              enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CC1IE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>CCx interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>CCx interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UIE</name>
+              <description>Update interrupt enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC4OF</name>
+              <description>Capture/Compare 4 overcapture
+              flag</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1OFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1OFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC3OF</name>
+              <description>Capture/Compare 3 overcapture
+              flag</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1OFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1OFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC2OF</name>
+              <description>Capture/compare 2 overcapture
+              flag</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1OFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1OFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC1OF</name>
+              <description>Capture/Compare 1 overcapture
+              flag</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>CC1OFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Overcapture</name>
+                  <description>The counter value has been captured in TIMx_CCRx register while CCxIF flag was already set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>CC1OFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TIF</name>
+              <description>Trigger interrupt flag</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>TIFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoTrigger</name>
+                  <description>No trigger event occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Trigger</name>
+                  <description>Trigger interrupt pending</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>TIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC4IF</name>
+              <description>Capture/Compare 4 interrupt
+              flag</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1IFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1IFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC3IF</name>
+              <description>Capture/Compare 3 interrupt
+              flag</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1IFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1IFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC2IF</name>
+              <description>Capture/Compare 2 interrupt
+              flag</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1IFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1IFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC1IF</name>
+              <description>Capture/compare 1 interrupt
+              flag</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>CC1IFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Match</name>
+                  <description>If CC1 is an output: The content of the counter TIMx_CNT matches the content of the TIMx_CCR1 register. If CC1 is an input: The counter value has been captured in TIMx_CCR1 register.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>CC1IFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UIF</name>
+              <description>Update interrupt flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>UIFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoUpdateOccurred</name>
+                  <description>No update occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>UpdatePending</name>
+                  <description>Update interrupt pending</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>UIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>EGR</name>
+          <displayName>EGR</displayName>
+          <description>event generation register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TG</name>
+              <description>Trigger generation</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TGW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Trigger</name>
+                  <description>The TIF flag is set in TIMx_SR register. Related interrupt or DMA transfer can occur if enabled.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC4G</name>
+              <description>Capture/compare 4
+              generation</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1GW"/>
+            </field>
+            <field>
+              <name>CC3G</name>
+              <description>Capture/compare 3
+              generation</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1GW"/>
+            </field>
+            <field>
+              <name>CC2G</name>
+              <description>Capture/compare 2
+              generation</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1GW"/>
+            </field>
+            <field>
+              <name>CC1G</name>
+              <description>Capture/compare 1
+              generation</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CC1GW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Trigger</name>
+                  <description>If CC1 is an output: CC1IF flag is set, Corresponding interrupt or DMA request is sent if enabled. If CC1 is an input: The current value of the counter is captured in TIMx_CCR1 register.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UG</name>
+              <description>Update generation</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UG</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Update</name>
+                  <description>Re-initializes the timer counter and generates an update of the registers.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR1_Output</name>
+          <displayName>CCMR1_Output</displayName>
+          <description>capture/compare mode register 1 (output
+          mode)</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OC2CE</name>
+              <description>OC2CE</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC2M</name>
+              <description>OC2M</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="OC1M"/>
+            </field>
+            <field>
+              <name>OC2PE</name>
+              <description>OC2PE</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC2PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR2 disabled. New values written to CCR2 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR2 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC2FE</name>
+              <description>OC2FE</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2S</name>
+              <description>CC2S</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC2S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC2 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1CE</name>
+              <description>OC1CE</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC1M</name>
+              <description>OC1M</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>OC1M</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Frozen</name>
+                  <description>The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the outputs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveOnMatch</name>
+                  <description>Set channel to active level on match. OCyREF signal is forced high when the counter matches the capture/compare register</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InactiveOnMatch</name>
+                  <description>Set channel to inactive level on match. OCyREF signal is forced low when the counter matches the capture/compare register</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Toggle</name>
+                  <description>OCyREF toggles when TIMx_CNT=TIMx_CCRy</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceInactive</name>
+                  <description>OCyREF is forced low</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceActive</name>
+                  <description>OCyREF is forced high</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode1</name>
+                  <description>In upcounting, channel is active as long as TIMx_CNT&lt;TIMx_CCRy else inactive. In downcounting, channel is inactive as long as TIMx_CNT>TIMx_CCRy else active</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode2</name>
+                  <description>Inversely to PwmMode1</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1PE</name>
+              <description>OC1PE</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC1PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR1 disabled. New values written to CCR1 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR1 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1FE</name>
+              <description>OC1FE</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1S</name>
+              <description>CC1S</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC1S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC1 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR1_Input</name>
+          <displayName>CCMR1_Input</displayName>
+          <description>capture/compare mode register 1 (input
+          mode)</description>
+          <alternateRegister>CCMR1_Output</alternateRegister>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IC2F</name>
+              <description>Input capture 2 filter</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>IC2PSC</name>
+              <description>Input capture 2 prescaler</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>CC2S</name>
+              <description>Capture/Compare 2
+              selection</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC2S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI2</name>
+                  <description>CC2 channel is configured as input, IC2 is mapped on TI2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI1</name>
+                  <description>CC2 channel is configured as input, IC2 is mapped on TI1</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC2 channel is configured as input, IC2 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IC1F</name>
+              <description>Input capture 1 filter</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>IC1F</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoFilter</name>
+                  <description>No filter, sampling is done at fDTS</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N2</name>
+                  <description>fSAMPLING=fCK_INT, N=2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N4</name>
+                  <description>fSAMPLING=fCK_INT, N=4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N8</name>
+                  <description>fSAMPLING=fCK_INT, N=8</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N6</name>
+                  <description>fSAMPLING=fDTS/2, N=6</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N8</name>
+                  <description>fSAMPLING=fDTS/2, N=8</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N6</name>
+                  <description>fSAMPLING=fDTS/4, N=6</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N8</name>
+                  <description>fSAMPLING=fDTS/4, N=8</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N6</name>
+                  <description>fSAMPLING=fDTS/8, N=6</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N8</name>
+                  <description>fSAMPLING=fDTS/8, N=8</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N5</name>
+                  <description>fSAMPLING=fDTS/16, N=5</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N6</name>
+                  <description>fSAMPLING=fDTS/16, N=6</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N8</name>
+                  <description>fSAMPLING=fDTS/16, N=8</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N5</name>
+                  <description>fSAMPLING=fDTS/32, N=5</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N6</name>
+                  <description>fSAMPLING=fDTS/32, N=6</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N8</name>
+                  <description>fSAMPLING=fDTS/32, N=8</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IC1PSC</name>
+              <description>Input capture 1 prescaler</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>CC1S</name>
+              <description>Capture/Compare 1
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC1S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI1</name>
+                  <description>CC1 channel is configured as input, IC1 is mapped on TI1</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI2</name>
+                  <description>CC1 channel is configured as input, IC1 is mapped on TI2</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC1 channel is configured as input, IC1 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR2_Output</name>
+          <displayName>CCMR2_Output</displayName>
+          <description>capture/compare mode register 2 (output
+          mode)</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OC4CE</name>
+              <description>O24CE</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC4M</name>
+              <description>OC4M</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="OC3M"/>
+            </field>
+            <field>
+              <name>OC4PE</name>
+              <description>OC4PE</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC4PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR4 disabled. New values written to CCR4 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR4 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC4FE</name>
+              <description>OC4FE</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC4S</name>
+              <description>CC4S</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC4S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC4 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC3CE</name>
+              <description>OC3CE</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC3M</name>
+              <description>OC3M</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>OC3M</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Frozen</name>
+                  <description>The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the outputs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveOnMatch</name>
+                  <description>Set channel to active level on match. OCyREF signal is forced high when the counter matches the capture/compare register</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InactiveOnMatch</name>
+                  <description>Set channel to inactive level on match. OCyREF signal is forced low when the counter matches the capture/compare register</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Toggle</name>
+                  <description>OCyREF toggles when TIMx_CNT=TIMx_CCRy</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceInactive</name>
+                  <description>OCyREF is forced low</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceActive</name>
+                  <description>OCyREF is forced high</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode1</name>
+                  <description>In upcounting, channel is active as long as TIMx_CNT&lt;TIMx_CCRy else inactive. In downcounting, channel is inactive as long as TIMx_CNT>TIMx_CCRy else active</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode2</name>
+                  <description>Inversely to PwmMode1</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC3PE</name>
+              <description>OC3PE</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC3PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR3 disabled. New values written to CCR3 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR3 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC3FE</name>
+              <description>OC3FE</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3S</name>
+              <description>CC3S</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC3S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC3 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR2_Input</name>
+          <displayName>CCMR2_Input</displayName>
+          <description>capture/compare mode register 2 (input
+          mode)</description>
+          <alternateRegister>CCMR2_Output</alternateRegister>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IC4F</name>
+              <description>Input capture 4 filter</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>IC4PSC</name>
+              <description>Input capture 4 prescaler</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>2</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>3</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>CC4S</name>
+              <description>Capture/Compare 4
+              selection</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC4S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI4</name>
+                  <description>CC4 channel is configured as input, IC4 is mapped on TI4</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI3</name>
+                  <description>CC4 channel is configured as input, IC4 is mapped on TI3</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC4 channel is configured as input, IC4 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IC3F</name>
+              <description>Input capture 3 filter</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>IC3PSC</name>
+              <description>Input capture 3 prescaler</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>3</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>CC3S</name>
+              <description>Capture/compare 3
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC3S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI3</name>
+                  <description>CC3 channel is configured as input, IC3 is mapped on TI3</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI4</name>
+                  <description>CC3 channel is configured as input, IC3 is mapped on TI4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC3 channel is configured as input, IC3 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCER</name>
+          <displayName>CCER</displayName>
+          <description>capture/compare enable
+          register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC4NP</name>
+              <description>Capture/Compare 4 output
+              Polarity</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC4P</name>
+              <description>Capture/Compare 3 output
+              Polarity</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC4E</name>
+              <description>Capture/Compare 4 output
+              enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3NP</name>
+              <description>Capture/Compare 3 output
+              Polarity</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3P</name>
+              <description>Capture/Compare 3 output
+              Polarity</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3E</name>
+              <description>Capture/Compare 3 output
+              enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2NP</name>
+              <description>Capture/Compare 2 output
+              Polarity</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2P</name>
+              <description>Capture/Compare 2 output
+              Polarity</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2E</name>
+              <description>Capture/Compare 2 output
+              enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1NP</name>
+              <description>Capture/Compare 1 output
+              Polarity</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1P</name>
+              <description>Capture/Compare 1 output
+              Polarity</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1E</name>
+              <description>Capture/Compare 1 output
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CNT</name>
+          <displayName>CNT</displayName>
+          <description>counter</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CNT</name>
+              <description>Counter value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PSC</name>
+          <displayName>PSC</displayName>
+          <description>prescaler</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PSC</name>
+              <description>Prescaler value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ARR</name>
+          <displayName>ARR</displayName>
+          <description>auto-reload register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ARR</name>
+              <description>Auto-reload value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>4</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>1-4</dimIndex>
+          <name>CCR%s</name>
+          <displayName>CCR1</displayName>
+          <description>capture/compare register</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CCR</name>
+              <description>Capture/Compare value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DCR</name>
+          <displayName>DCR</displayName>
+          <description>DMA control register</description>
+          <addressOffset>0x48</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DBL</name>
+              <description>DMA burst length</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>DBA</name>
+              <description>DMA base address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>31</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DMAR</name>
+          <displayName>DMAR</displayName>
+          <description>DMA address for full transfer</description>
+          <addressOffset>0x4C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DMAB</name>
+              <description>DMA register for burst
+              accesses</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>OR</name>
+          <displayName>OR</displayName>
+          <description>TIM5 option register</description>
+          <addressOffset>0x50</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ITR1_RMP</name>
+              <description>Timer Input 4 remap</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>ITR1_RMP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TIM8_TRGOUT</name>
+                  <description>TIM8 trigger output is connected to TIM2_ITR1 input</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>OTG_FS_SOF</name>
+                  <description>OTG FS SOF is connected to the TIM2_ITR1 input</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>OTG_HS_SOF</name>
+                  <description>OTG HS SOF is connected to the TIM2_ITR1 input</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>TIM3</name>
+      <description>General purpose timers</description>
+      <groupName>TIM</groupName>
+      <baseAddress>0x40000400</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>TIM3</name>
+        <description>TIM3 global interrupt</description>
+        <value>29</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR1</name>
+          <displayName>CR1</displayName>
+          <description>control register 1</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CKD</name>
+              <description>Clock division</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CKD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>t_DTS = t_CK_INT</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>t_DTS = 2 × t_CK_INT</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>t_DTS = 4 × t_CK_INT</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ARPE</name>
+              <description>Auto-reload preload enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ARPE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>TIMx_APRR register is not buffered</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>TIMx_APRR register is buffered</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CMS</name>
+              <description>Center-aligned mode
+              selection</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CMS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>EdgeAligned</name>
+                  <description>The counter counts up or down depending on the direction bit</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CenterAligned1</name>
+                  <description>The counter counts up and down alternatively. Output compare interrupt flags are set only when the counter is counting down.</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CenterAligned2</name>
+                  <description>The counter counts up and down alternatively. Output compare interrupt flags are set only when the counter is counting up.</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CenterAligned3</name>
+                  <description>The counter counts up and down alternatively. Output compare interrupt flags are set both when the counter is counting up or down.</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DIR</name>
+              <description>Direction</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DIR</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Up</name>
+                  <description>Counter used as upcounter</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Down</name>
+                  <description>Counter used as downcounter</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OPM</name>
+              <description>One-pulse mode</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OPM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter is not stopped at update event</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter stops counting at the next update event (clearing the CEN bit)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>URS</name>
+              <description>Update request source</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>URS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AnyEvent</name>
+                  <description>Any of counter overflow/underflow, setting UG, or update through slave mode, generates an update interrupt or DMA request</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CounterOnly</name>
+                  <description>Only counter overflow/underflow generates an update interrupt or DMA request</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UDIS</name>
+              <description>Update disable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UDIS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update event enabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update event disabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CEN</name>
+              <description>Counter enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR2</name>
+          <displayName>CR2</displayName>
+          <description>control register 2</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TI1S</name>
+              <description>TI1 selection</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TI1S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Normal</name>
+                  <description>The TIMx_CH1 pin is connected to TI1 input</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>XOR</name>
+                  <description>The TIMx_CH1, CH2, CH3 pins are connected to TI1 input</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MMS</name>
+              <description>Master mode selection</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>MMS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>The UG bit from the TIMx_EGR register is used as trigger output</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enable</name>
+                  <description>The counter enable signal, CNT_EN, is used as trigger output</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Update</name>
+                  <description>The update event is selected as trigger output</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ComparePulse</name>
+                  <description>The trigger output send a positive pulse when the CC1IF flag it to be set, as soon as a capture or a compare match occurred</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC1</name>
+                  <description>OC1REF signal is used as trigger output</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC2</name>
+                  <description>OC2REF signal is used as trigger output</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC3</name>
+                  <description>OC3REF signal is used as trigger output</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC4</name>
+                  <description>OC4REF signal is used as trigger output</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CCDS</name>
+              <description>Capture/compare DMA
+              selection</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CCDS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>OnCompare</name>
+                  <description>CCx DMA request sent when CCx event occurs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>OnUpdate</name>
+                  <description>CCx DMA request sent when update event occurs</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SMCR</name>
+          <displayName>SMCR</displayName>
+          <description>slave mode control register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ETP</name>
+              <description>External trigger polarity</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ETP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NotInverted</name>
+                  <description>ETR is noninverted, active at high level or rising edge</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Inverted</name>
+                  <description>ETR is inverted, active at low level or falling edge</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ECE</name>
+              <description>External clock enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ECE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>External clock mode 2 disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>External clock mode 2 enabled. The counter is clocked by any active edge on the ETRF signal.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ETPS</name>
+              <description>External trigger prescaler</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>ETPS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>Prescaler OFF</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>ETRP frequency divided by 2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>ETRP frequency divided by 4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div8</name>
+                  <description>ETRP frequency divided by 8</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ETF</name>
+              <description>External trigger filter</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>ETF</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoFilter</name>
+                  <description>No filter, sampling is done at fDTS</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N2</name>
+                  <description>fSAMPLING=fCK_INT, N=2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N4</name>
+                  <description>fSAMPLING=fCK_INT, N=4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N8</name>
+                  <description>fSAMPLING=fCK_INT, N=8</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N6</name>
+                  <description>fSAMPLING=fDTS/2, N=6</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N8</name>
+                  <description>fSAMPLING=fDTS/2, N=8</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N6</name>
+                  <description>fSAMPLING=fDTS/4, N=6</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N8</name>
+                  <description>fSAMPLING=fDTS/4, N=8</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N6</name>
+                  <description>fSAMPLING=fDTS/8, N=6</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N8</name>
+                  <description>fSAMPLING=fDTS/8, N=8</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N5</name>
+                  <description>fSAMPLING=fDTS/16, N=5</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N6</name>
+                  <description>fSAMPLING=fDTS/16, N=6</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N8</name>
+                  <description>fSAMPLING=fDTS/16, N=8</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N5</name>
+                  <description>fSAMPLING=fDTS/32, N=5</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N6</name>
+                  <description>fSAMPLING=fDTS/32, N=6</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N8</name>
+                  <description>fSAMPLING=fDTS/32, N=8</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MSM</name>
+              <description>Master/Slave mode</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MSM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoSync</name>
+                  <description>No action</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Sync</name>
+                  <description>The effect of an event on the trigger input (TRGI) is delayed to allow a perfect synchronization between the current timer and its slaves (through TRGO). It is useful if we want to synchronize several timers on a single external event.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TS</name>
+              <description>Trigger selection</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>TS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>ITR0</name>
+                  <description>Internal Trigger 0 (ITR0)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ITR1</name>
+                  <description>Internal Trigger 1 (ITR1)</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ITR2</name>
+                  <description>Internal Trigger 2 (ITR2)</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI1F_ED</name>
+                  <description>TI1 Edge Detector (TI1F_ED)</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI1FP1</name>
+                  <description>Filtered Timer Input 1 (TI1FP1)</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI2FP2</name>
+                  <description>Filtered Timer Input 2 (TI2FP2)</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ETRF</name>
+                  <description>External Trigger input (ETRF)</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SMS</name>
+              <description>Slave mode selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>SMS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Slave mode disabled - if CEN = ‘1 then the prescaler is clocked directly by the internal clock.</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Encoder_Mode_1</name>
+                  <description>Encoder mode 1 - Counter counts up/down on TI2FP1 edge depending on TI1FP2 level.</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Encoder_Mode_2</name>
+                  <description>Encoder mode 2 - Counter counts up/down on TI1FP2 edge depending on TI2FP1 level.</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Encoder_Mode_3</name>
+                  <description>Encoder mode 3 - Counter counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input.</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Reset_Mode</name>
+                  <description>Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter and generates an update of the registers.</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Gated_Mode</name>
+                  <description>Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled.</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Trigger_Mode</name>
+                  <description>Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled.</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Ext_Clock_Mode</name>
+                  <description>External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter.</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIER</name>
+          <displayName>DIER</displayName>
+          <description>DMA/Interrupt enable register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TDE</name>
+              <description>Trigger DMA request enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TDE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Trigger DMA request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Trigger DMA request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC4DE</name>
+              <description>Capture/Compare 4 DMA request
+              enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1DE"/>
+            </field>
+            <field>
+              <name>CC3DE</name>
+              <description>Capture/Compare 3 DMA request
+              enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1DE"/>
+            </field>
+            <field>
+              <name>CC2DE</name>
+              <description>Capture/Compare 2 DMA request
+              enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1DE"/>
+            </field>
+            <field>
+              <name>CC1DE</name>
+              <description>Capture/Compare 1 DMA request
+              enable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CC1DE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>CCx DMA request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>CCx DMA request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UDE</name>
+              <description>Update DMA request enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UDE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update DMA request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update DMA request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TIE</name>
+              <description>Trigger interrupt enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Trigger interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Trigger interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC4IE</name>
+              <description>Capture/Compare 4 interrupt
+              enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1IE"/>
+            </field>
+            <field>
+              <name>CC3IE</name>
+              <description>Capture/Compare 3 interrupt
+              enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1IE"/>
+            </field>
+            <field>
+              <name>CC2IE</name>
+              <description>Capture/Compare 2 interrupt
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1IE"/>
+            </field>
+            <field>
+              <name>CC1IE</name>
+              <description>Capture/Compare 1 interrupt
+              enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CC1IE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>CCx interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>CCx interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UIE</name>
+              <description>Update interrupt enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC4OF</name>
+              <description>Capture/Compare 4 overcapture
+              flag</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1OFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1OFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC3OF</name>
+              <description>Capture/Compare 3 overcapture
+              flag</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1OFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1OFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC2OF</name>
+              <description>Capture/compare 2 overcapture
+              flag</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1OFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1OFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC1OF</name>
+              <description>Capture/Compare 1 overcapture
+              flag</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>CC1OFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Overcapture</name>
+                  <description>The counter value has been captured in TIMx_CCRx register while CCxIF flag was already set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>CC1OFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TIF</name>
+              <description>Trigger interrupt flag</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>TIFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoTrigger</name>
+                  <description>No trigger event occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Trigger</name>
+                  <description>Trigger interrupt pending</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>TIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC4IF</name>
+              <description>Capture/Compare 4 interrupt
+              flag</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1IFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1IFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC3IF</name>
+              <description>Capture/Compare 3 interrupt
+              flag</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1IFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1IFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC2IF</name>
+              <description>Capture/Compare 2 interrupt
+              flag</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1IFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1IFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC1IF</name>
+              <description>Capture/compare 1 interrupt
+              flag</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>CC1IFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Match</name>
+                  <description>If CC1 is an output: The content of the counter TIMx_CNT matches the content of the TIMx_CCR1 register. If CC1 is an input: The counter value has been captured in TIMx_CCR1 register.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>CC1IFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UIF</name>
+              <description>Update interrupt flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>UIFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoUpdateOccurred</name>
+                  <description>No update occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>UpdatePending</name>
+                  <description>Update interrupt pending</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>UIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>EGR</name>
+          <displayName>EGR</displayName>
+          <description>event generation register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TG</name>
+              <description>Trigger generation</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TGW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Trigger</name>
+                  <description>The TIF flag is set in TIMx_SR register. Related interrupt or DMA transfer can occur if enabled.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC4G</name>
+              <description>Capture/compare 4
+              generation</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1GW"/>
+            </field>
+            <field>
+              <name>CC3G</name>
+              <description>Capture/compare 3
+              generation</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1GW"/>
+            </field>
+            <field>
+              <name>CC2G</name>
+              <description>Capture/compare 2
+              generation</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1GW"/>
+            </field>
+            <field>
+              <name>CC1G</name>
+              <description>Capture/compare 1
+              generation</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CC1GW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Trigger</name>
+                  <description>If CC1 is an output: CC1IF flag is set, Corresponding interrupt or DMA request is sent if enabled. If CC1 is an input: The current value of the counter is captured in TIMx_CCR1 register.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UG</name>
+              <description>Update generation</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UG</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Update</name>
+                  <description>Re-initializes the timer counter and generates an update of the registers.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR1_Output</name>
+          <displayName>CCMR1_Output</displayName>
+          <description>capture/compare mode register 1 (output
+          mode)</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OC2CE</name>
+              <description>OC2CE</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC2M</name>
+              <description>OC2M</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="OC1M"/>
+            </field>
+            <field>
+              <name>OC2PE</name>
+              <description>OC2PE</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC2PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR2 disabled. New values written to CCR2 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR2 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC2FE</name>
+              <description>OC2FE</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2S</name>
+              <description>CC2S</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC2S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC2 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1CE</name>
+              <description>OC1CE</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC1M</name>
+              <description>OC1M</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>OC1M</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Frozen</name>
+                  <description>The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the outputs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveOnMatch</name>
+                  <description>Set channel to active level on match. OCyREF signal is forced high when the counter matches the capture/compare register</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InactiveOnMatch</name>
+                  <description>Set channel to inactive level on match. OCyREF signal is forced low when the counter matches the capture/compare register</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Toggle</name>
+                  <description>OCyREF toggles when TIMx_CNT=TIMx_CCRy</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceInactive</name>
+                  <description>OCyREF is forced low</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceActive</name>
+                  <description>OCyREF is forced high</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode1</name>
+                  <description>In upcounting, channel is active as long as TIMx_CNT&lt;TIMx_CCRy else inactive. In downcounting, channel is inactive as long as TIMx_CNT>TIMx_CCRy else active</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode2</name>
+                  <description>Inversely to PwmMode1</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1PE</name>
+              <description>OC1PE</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC1PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR1 disabled. New values written to CCR1 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR1 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1FE</name>
+              <description>OC1FE</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1S</name>
+              <description>CC1S</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC1S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC1 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR1_Input</name>
+          <displayName>CCMR1_Input</displayName>
+          <description>capture/compare mode register 1 (input
+          mode)</description>
+          <alternateRegister>CCMR1_Output</alternateRegister>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IC2F</name>
+              <description>Input capture 2 filter</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>IC2PSC</name>
+              <description>Input capture 2 prescaler</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>CC2S</name>
+              <description>Capture/Compare 2
+              selection</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC2S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI2</name>
+                  <description>CC2 channel is configured as input, IC2 is mapped on TI2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI1</name>
+                  <description>CC2 channel is configured as input, IC2 is mapped on TI1</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC2 channel is configured as input, IC2 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IC1F</name>
+              <description>Input capture 1 filter</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>IC1F</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoFilter</name>
+                  <description>No filter, sampling is done at fDTS</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N2</name>
+                  <description>fSAMPLING=fCK_INT, N=2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N4</name>
+                  <description>fSAMPLING=fCK_INT, N=4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N8</name>
+                  <description>fSAMPLING=fCK_INT, N=8</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N6</name>
+                  <description>fSAMPLING=fDTS/2, N=6</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N8</name>
+                  <description>fSAMPLING=fDTS/2, N=8</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N6</name>
+                  <description>fSAMPLING=fDTS/4, N=6</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N8</name>
+                  <description>fSAMPLING=fDTS/4, N=8</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N6</name>
+                  <description>fSAMPLING=fDTS/8, N=6</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N8</name>
+                  <description>fSAMPLING=fDTS/8, N=8</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N5</name>
+                  <description>fSAMPLING=fDTS/16, N=5</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N6</name>
+                  <description>fSAMPLING=fDTS/16, N=6</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N8</name>
+                  <description>fSAMPLING=fDTS/16, N=8</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N5</name>
+                  <description>fSAMPLING=fDTS/32, N=5</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N6</name>
+                  <description>fSAMPLING=fDTS/32, N=6</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N8</name>
+                  <description>fSAMPLING=fDTS/32, N=8</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IC1PSC</name>
+              <description>Input capture 1 prescaler</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>CC1S</name>
+              <description>Capture/Compare 1
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC1S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI1</name>
+                  <description>CC1 channel is configured as input, IC1 is mapped on TI1</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI2</name>
+                  <description>CC1 channel is configured as input, IC1 is mapped on TI2</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC1 channel is configured as input, IC1 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR2_Output</name>
+          <displayName>CCMR2_Output</displayName>
+          <description>capture/compare mode register 2 (output
+          mode)</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OC4CE</name>
+              <description>O24CE</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC4M</name>
+              <description>OC4M</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="OC3M"/>
+            </field>
+            <field>
+              <name>OC4PE</name>
+              <description>OC4PE</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC4PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR4 disabled. New values written to CCR4 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR4 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC4FE</name>
+              <description>OC4FE</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC4S</name>
+              <description>CC4S</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC4S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC4 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC3CE</name>
+              <description>OC3CE</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC3M</name>
+              <description>OC3M</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>OC3M</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Frozen</name>
+                  <description>The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the outputs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveOnMatch</name>
+                  <description>Set channel to active level on match. OCyREF signal is forced high when the counter matches the capture/compare register</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InactiveOnMatch</name>
+                  <description>Set channel to inactive level on match. OCyREF signal is forced low when the counter matches the capture/compare register</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Toggle</name>
+                  <description>OCyREF toggles when TIMx_CNT=TIMx_CCRy</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceInactive</name>
+                  <description>OCyREF is forced low</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceActive</name>
+                  <description>OCyREF is forced high</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode1</name>
+                  <description>In upcounting, channel is active as long as TIMx_CNT&lt;TIMx_CCRy else inactive. In downcounting, channel is inactive as long as TIMx_CNT>TIMx_CCRy else active</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode2</name>
+                  <description>Inversely to PwmMode1</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC3PE</name>
+              <description>OC3PE</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC3PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR3 disabled. New values written to CCR3 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR3 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC3FE</name>
+              <description>OC3FE</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3S</name>
+              <description>CC3S</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC3S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC3 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR2_Input</name>
+          <displayName>CCMR2_Input</displayName>
+          <description>capture/compare mode register 2 (input
+          mode)</description>
+          <alternateRegister>CCMR2_Output</alternateRegister>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IC4F</name>
+              <description>Input capture 4 filter</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>IC4PSC</name>
+              <description>Input capture 4 prescaler</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>2</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>3</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>CC4S</name>
+              <description>Capture/Compare 4
+              selection</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC4S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI4</name>
+                  <description>CC4 channel is configured as input, IC4 is mapped on TI4</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI3</name>
+                  <description>CC4 channel is configured as input, IC4 is mapped on TI3</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC4 channel is configured as input, IC4 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IC3F</name>
+              <description>Input capture 3 filter</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>IC3PSC</name>
+              <description>Input capture 3 prescaler</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>3</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>CC3S</name>
+              <description>Capture/compare 3
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC3S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI3</name>
+                  <description>CC3 channel is configured as input, IC3 is mapped on TI3</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI4</name>
+                  <description>CC3 channel is configured as input, IC3 is mapped on TI4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC3 channel is configured as input, IC3 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCER</name>
+          <displayName>CCER</displayName>
+          <description>capture/compare enable
+          register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC4NP</name>
+              <description>Capture/Compare 4 output
+              Polarity</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC4P</name>
+              <description>Capture/Compare 3 output
+              Polarity</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC4E</name>
+              <description>Capture/Compare 4 output
+              enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3NP</name>
+              <description>Capture/Compare 3 output
+              Polarity</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3P</name>
+              <description>Capture/Compare 3 output
+              Polarity</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3E</name>
+              <description>Capture/Compare 3 output
+              enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2NP</name>
+              <description>Capture/Compare 2 output
+              Polarity</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2P</name>
+              <description>Capture/Compare 2 output
+              Polarity</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2E</name>
+              <description>Capture/Compare 2 output
+              enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1NP</name>
+              <description>Capture/Compare 1 output
+              Polarity</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1P</name>
+              <description>Capture/Compare 1 output
+              Polarity</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1E</name>
+              <description>Capture/Compare 1 output
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CNT</name>
+          <displayName>CNT</displayName>
+          <description>counter</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CNT</name>
+              <description>Counter value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PSC</name>
+          <displayName>PSC</displayName>
+          <description>prescaler</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PSC</name>
+              <description>Prescaler value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ARR</name>
+          <displayName>ARR</displayName>
+          <description>auto-reload register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ARR</name>
+              <description>Auto-reload value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>4</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>1-4</dimIndex>
+          <name>CCR%s</name>
+          <displayName>CCR1</displayName>
+          <description>capture/compare register</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CCR</name>
+              <description>Capture/Compare value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DCR</name>
+          <displayName>DCR</displayName>
+          <description>DMA control register</description>
+          <addressOffset>0x48</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DBL</name>
+              <description>DMA burst length</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>DBA</name>
+              <description>DMA base address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>31</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DMAR</name>
+          <displayName>DMAR</displayName>
+          <description>DMA address for full transfer</description>
+          <addressOffset>0x4C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DMAB</name>
+              <description>DMA register for burst
+              accesses</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral derivedFrom="TIM3">
+      <name>TIM4</name>
+      <groupName>TIM</groupName>
+      <baseAddress>0x40000800</baseAddress>
+      <interrupt>
+        <name>TIM4</name>
+        <description>TIM4 global interrupt</description>
+        <value>30</value>
+      </interrupt>
+    </peripheral>
+    <peripheral>
+      <name>TIM5</name>
+      <description>General-purpose-timers</description>
+      <groupName>TIM</groupName>
+      <baseAddress>0x40000C00</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>TIM5</name>
+        <description>TIM5 global interrupt</description>
+        <value>50</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR1</name>
+          <displayName>CR1</displayName>
+          <description>control register 1</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CKD</name>
+              <description>Clock division</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CKD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>t_DTS = t_CK_INT</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>t_DTS = 2 × t_CK_INT</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>t_DTS = 4 × t_CK_INT</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ARPE</name>
+              <description>Auto-reload preload enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ARPE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>TIMx_APRR register is not buffered</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>TIMx_APRR register is buffered</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CMS</name>
+              <description>Center-aligned mode
+              selection</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CMS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>EdgeAligned</name>
+                  <description>The counter counts up or down depending on the direction bit</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CenterAligned1</name>
+                  <description>The counter counts up and down alternatively. Output compare interrupt flags are set only when the counter is counting down.</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CenterAligned2</name>
+                  <description>The counter counts up and down alternatively. Output compare interrupt flags are set only when the counter is counting up.</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CenterAligned3</name>
+                  <description>The counter counts up and down alternatively. Output compare interrupt flags are set both when the counter is counting up or down.</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DIR</name>
+              <description>Direction</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>DIR</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Up</name>
+                  <description>Counter used as upcounter</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Down</name>
+                  <description>Counter used as downcounter</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OPM</name>
+              <description>One-pulse mode</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OPM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter is not stopped at update event</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter stops counting at the next update event (clearing the CEN bit)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>URS</name>
+              <description>Update request source</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>URS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AnyEvent</name>
+                  <description>Any of counter overflow/underflow, setting UG, or update through slave mode, generates an update interrupt or DMA request</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CounterOnly</name>
+                  <description>Only counter overflow/underflow generates an update interrupt or DMA request</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UDIS</name>
+              <description>Update disable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UDIS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update event enabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update event disabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CEN</name>
+              <description>Counter enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR2</name>
+          <displayName>CR2</displayName>
+          <description>control register 2</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TI1S</name>
+              <description>TI1 selection</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TI1S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Normal</name>
+                  <description>The TIMx_CH1 pin is connected to TI1 input</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>XOR</name>
+                  <description>The TIMx_CH1, CH2, CH3 pins are connected to TI1 input</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MMS</name>
+              <description>Master mode selection</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>MMS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>The UG bit from the TIMx_EGR register is used as trigger output</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enable</name>
+                  <description>The counter enable signal, CNT_EN, is used as trigger output</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Update</name>
+                  <description>The update event is selected as trigger output</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ComparePulse</name>
+                  <description>The trigger output send a positive pulse when the CC1IF flag it to be set, as soon as a capture or a compare match occurred</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC1</name>
+                  <description>OC1REF signal is used as trigger output</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC2</name>
+                  <description>OC2REF signal is used as trigger output</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC3</name>
+                  <description>OC3REF signal is used as trigger output</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CompareOC4</name>
+                  <description>OC4REF signal is used as trigger output</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CCDS</name>
+              <description>Capture/compare DMA
+              selection</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CCDS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>OnCompare</name>
+                  <description>CCx DMA request sent when CCx event occurs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>OnUpdate</name>
+                  <description>CCx DMA request sent when update event occurs</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SMCR</name>
+          <displayName>SMCR</displayName>
+          <description>slave mode control register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ETP</name>
+              <description>External trigger polarity</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ETP</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NotInverted</name>
+                  <description>ETR is noninverted, active at high level or rising edge</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Inverted</name>
+                  <description>ETR is inverted, active at low level or falling edge</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ECE</name>
+              <description>External clock enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ECE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>External clock mode 2 disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>External clock mode 2 enabled. The counter is clocked by any active edge on the ETRF signal.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ETPS</name>
+              <description>External trigger prescaler</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>ETPS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>Prescaler OFF</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>ETRP frequency divided by 2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>ETRP frequency divided by 4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div8</name>
+                  <description>ETRP frequency divided by 8</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ETF</name>
+              <description>External trigger filter</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>ETF</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoFilter</name>
+                  <description>No filter, sampling is done at fDTS</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N2</name>
+                  <description>fSAMPLING=fCK_INT, N=2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N4</name>
+                  <description>fSAMPLING=fCK_INT, N=4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N8</name>
+                  <description>fSAMPLING=fCK_INT, N=8</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N6</name>
+                  <description>fSAMPLING=fDTS/2, N=6</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N8</name>
+                  <description>fSAMPLING=fDTS/2, N=8</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N6</name>
+                  <description>fSAMPLING=fDTS/4, N=6</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N8</name>
+                  <description>fSAMPLING=fDTS/4, N=8</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N6</name>
+                  <description>fSAMPLING=fDTS/8, N=6</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N8</name>
+                  <description>fSAMPLING=fDTS/8, N=8</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N5</name>
+                  <description>fSAMPLING=fDTS/16, N=5</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N6</name>
+                  <description>fSAMPLING=fDTS/16, N=6</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N8</name>
+                  <description>fSAMPLING=fDTS/16, N=8</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N5</name>
+                  <description>fSAMPLING=fDTS/32, N=5</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N6</name>
+                  <description>fSAMPLING=fDTS/32, N=6</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N8</name>
+                  <description>fSAMPLING=fDTS/32, N=8</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MSM</name>
+              <description>Master/Slave mode</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MSM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoSync</name>
+                  <description>No action</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Sync</name>
+                  <description>The effect of an event on the trigger input (TRGI) is delayed to allow a perfect synchronization between the current timer and its slaves (through TRGO). It is useful if we want to synchronize several timers on a single external event.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TS</name>
+              <description>Trigger selection</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>TS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>ITR0</name>
+                  <description>Internal Trigger 0 (ITR0)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ITR1</name>
+                  <description>Internal Trigger 1 (ITR1)</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ITR2</name>
+                  <description>Internal Trigger 2 (ITR2)</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI1F_ED</name>
+                  <description>TI1 Edge Detector (TI1F_ED)</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI1FP1</name>
+                  <description>Filtered Timer Input 1 (TI1FP1)</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI2FP2</name>
+                  <description>Filtered Timer Input 2 (TI2FP2)</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ETRF</name>
+                  <description>External Trigger input (ETRF)</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SMS</name>
+              <description>Slave mode selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>SMS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Slave mode disabled - if CEN = ‘1 then the prescaler is clocked directly by the internal clock.</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Encoder_Mode_1</name>
+                  <description>Encoder mode 1 - Counter counts up/down on TI2FP1 edge depending on TI1FP2 level.</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Encoder_Mode_2</name>
+                  <description>Encoder mode 2 - Counter counts up/down on TI1FP2 edge depending on TI2FP1 level.</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Encoder_Mode_3</name>
+                  <description>Encoder mode 3 - Counter counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input.</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Reset_Mode</name>
+                  <description>Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter and generates an update of the registers.</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Gated_Mode</name>
+                  <description>Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled.</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Trigger_Mode</name>
+                  <description>Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled.</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Ext_Clock_Mode</name>
+                  <description>External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter.</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIER</name>
+          <displayName>DIER</displayName>
+          <description>DMA/Interrupt enable register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TDE</name>
+              <description>Trigger DMA request enable</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TDE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Trigger DMA request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Trigger DMA request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC4DE</name>
+              <description>Capture/Compare 4 DMA request
+              enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1DE"/>
+            </field>
+            <field>
+              <name>CC3DE</name>
+              <description>Capture/Compare 3 DMA request
+              enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1DE"/>
+            </field>
+            <field>
+              <name>CC2DE</name>
+              <description>Capture/Compare 2 DMA request
+              enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1DE"/>
+            </field>
+            <field>
+              <name>CC1DE</name>
+              <description>Capture/Compare 1 DMA request
+              enable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CC1DE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>CCx DMA request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>CCx DMA request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UDE</name>
+              <description>Update DMA request enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UDE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update DMA request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update DMA request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TIE</name>
+              <description>Trigger interrupt enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Trigger interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Trigger interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC4IE</name>
+              <description>Capture/Compare 4 interrupt
+              enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1IE"/>
+            </field>
+            <field>
+              <name>CC3IE</name>
+              <description>Capture/Compare 3 interrupt
+              enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1IE"/>
+            </field>
+            <field>
+              <name>CC2IE</name>
+              <description>Capture/Compare 2 interrupt
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1IE"/>
+            </field>
+            <field>
+              <name>CC1IE</name>
+              <description>Capture/Compare 1 interrupt
+              enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CC1IE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>CCx interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>CCx interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UIE</name>
+              <description>Update interrupt enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC4OF</name>
+              <description>Capture/Compare 4 overcapture
+              flag</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1OFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1OFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC3OF</name>
+              <description>Capture/Compare 3 overcapture
+              flag</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1OFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1OFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC2OF</name>
+              <description>Capture/compare 2 overcapture
+              flag</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1OFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1OFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC1OF</name>
+              <description>Capture/Compare 1 overcapture
+              flag</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>CC1OFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Overcapture</name>
+                  <description>The counter value has been captured in TIMx_CCRx register while CCxIF flag was already set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>CC1OFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TIF</name>
+              <description>Trigger interrupt flag</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>TIFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoTrigger</name>
+                  <description>No trigger event occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Trigger</name>
+                  <description>Trigger interrupt pending</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>TIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC4IF</name>
+              <description>Capture/Compare 4 interrupt
+              flag</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1IFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1IFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC3IF</name>
+              <description>Capture/Compare 3 interrupt
+              flag</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1IFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1IFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC2IF</name>
+              <description>Capture/Compare 2 interrupt
+              flag</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="CC1IFR">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="CC1IFW">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC1IF</name>
+              <description>Capture/compare 1 interrupt
+              flag</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>CC1IFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>Match</name>
+                  <description>If CC1 is an output: The content of the counter TIMx_CNT matches the content of the TIMx_CCR1 register. If CC1 is an input: The counter value has been captured in TIMx_CCR1 register.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>CC1IFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UIF</name>
+              <description>Update interrupt flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>UIFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoUpdateOccurred</name>
+                  <description>No update occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>UpdatePending</name>
+                  <description>Update interrupt pending</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>UIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>EGR</name>
+          <displayName>EGR</displayName>
+          <description>event generation register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TG</name>
+              <description>Trigger generation</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TGW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Trigger</name>
+                  <description>The TIF flag is set in TIMx_SR register. Related interrupt or DMA transfer can occur if enabled.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CC4G</name>
+              <description>Capture/compare 4
+              generation</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1GW"/>
+            </field>
+            <field>
+              <name>CC3G</name>
+              <description>Capture/compare 3
+              generation</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1GW"/>
+            </field>
+            <field>
+              <name>CC2G</name>
+              <description>Capture/compare 2
+              generation</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="CC1GW"/>
+            </field>
+            <field>
+              <name>CC1G</name>
+              <description>Capture/compare 1
+              generation</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CC1GW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Trigger</name>
+                  <description>If CC1 is an output: CC1IF flag is set, Corresponding interrupt or DMA request is sent if enabled. If CC1 is an input: The current value of the counter is captured in TIMx_CCR1 register.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UG</name>
+              <description>Update generation</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UG</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Update</name>
+                  <description>Re-initializes the timer counter and generates an update of the registers.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR1_Output</name>
+          <displayName>CCMR1_Output</displayName>
+          <description>capture/compare mode register 1 (output
+          mode)</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OC2CE</name>
+              <description>OC2CE</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC2M</name>
+              <description>OC2M</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="OC1M"/>
+            </field>
+            <field>
+              <name>OC2PE</name>
+              <description>OC2PE</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC2PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR2 disabled. New values written to CCR2 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR2 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC2FE</name>
+              <description>OC2FE</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2S</name>
+              <description>CC2S</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC2S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC2 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1CE</name>
+              <description>OC1CE</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC1M</name>
+              <description>OC1M</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>OC1M</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Frozen</name>
+                  <description>The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the outputs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveOnMatch</name>
+                  <description>Set channel to active level on match. OCyREF signal is forced high when the counter matches the capture/compare register</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InactiveOnMatch</name>
+                  <description>Set channel to inactive level on match. OCyREF signal is forced low when the counter matches the capture/compare register</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Toggle</name>
+                  <description>OCyREF toggles when TIMx_CNT=TIMx_CCRy</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceInactive</name>
+                  <description>OCyREF is forced low</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceActive</name>
+                  <description>OCyREF is forced high</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode1</name>
+                  <description>In upcounting, channel is active as long as TIMx_CNT&lt;TIMx_CCRy else inactive. In downcounting, channel is inactive as long as TIMx_CNT>TIMx_CCRy else active</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode2</name>
+                  <description>Inversely to PwmMode1</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1PE</name>
+              <description>OC1PE</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC1PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR1 disabled. New values written to CCR1 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR1 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1FE</name>
+              <description>OC1FE</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1S</name>
+              <description>CC1S</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC1S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC1 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR1_Input</name>
+          <displayName>CCMR1_Input</displayName>
+          <description>capture/compare mode register 1 (input
+          mode)</description>
+          <alternateRegister>CCMR1_Output</alternateRegister>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IC2F</name>
+              <description>Input capture 2 filter</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>IC2PSC</name>
+              <description>Input capture 2 prescaler</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>CC2S</name>
+              <description>Capture/Compare 2
+              selection</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC2S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI2</name>
+                  <description>CC2 channel is configured as input, IC2 is mapped on TI2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI1</name>
+                  <description>CC2 channel is configured as input, IC2 is mapped on TI1</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC2 channel is configured as input, IC2 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IC1F</name>
+              <description>Input capture 1 filter</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+              <enumeratedValues>
+                <name>IC1F</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoFilter</name>
+                  <description>No filter, sampling is done at fDTS</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N2</name>
+                  <description>fSAMPLING=fCK_INT, N=2</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N4</name>
+                  <description>fSAMPLING=fCK_INT, N=4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FCK_INT_N8</name>
+                  <description>fSAMPLING=fCK_INT, N=8</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N6</name>
+                  <description>fSAMPLING=fDTS/2, N=6</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div2_N8</name>
+                  <description>fSAMPLING=fDTS/2, N=8</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N6</name>
+                  <description>fSAMPLING=fDTS/4, N=6</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div4_N8</name>
+                  <description>fSAMPLING=fDTS/4, N=8</description>
+                  <value>7</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N6</name>
+                  <description>fSAMPLING=fDTS/8, N=6</description>
+                  <value>8</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div8_N8</name>
+                  <description>fSAMPLING=fDTS/8, N=8</description>
+                  <value>9</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N5</name>
+                  <description>fSAMPLING=fDTS/16, N=5</description>
+                  <value>10</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N6</name>
+                  <description>fSAMPLING=fDTS/16, N=6</description>
+                  <value>11</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div16_N8</name>
+                  <description>fSAMPLING=fDTS/16, N=8</description>
+                  <value>12</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N5</name>
+                  <description>fSAMPLING=fDTS/32, N=5</description>
+                  <value>13</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N6</name>
+                  <description>fSAMPLING=fDTS/32, N=6</description>
+                  <value>14</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FDTS_Div32_N8</name>
+                  <description>fSAMPLING=fDTS/32, N=8</description>
+                  <value>15</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IC1PSC</name>
+              <description>Input capture 1 prescaler</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>CC1S</name>
+              <description>Capture/Compare 1
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC1S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI1</name>
+                  <description>CC1 channel is configured as input, IC1 is mapped on TI1</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI2</name>
+                  <description>CC1 channel is configured as input, IC1 is mapped on TI2</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC1 channel is configured as input, IC1 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR2_Output</name>
+          <displayName>CCMR2_Output</displayName>
+          <description>capture/compare mode register 2 (output
+          mode)</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OC4CE</name>
+              <description>O24CE</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC4M</name>
+              <description>OC4M</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="OC3M"/>
+            </field>
+            <field>
+              <name>OC4PE</name>
+              <description>OC4PE</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC4PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR4 disabled. New values written to CCR4 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR4 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC4FE</name>
+              <description>OC4FE</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC4S</name>
+              <description>CC4S</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC4S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC4 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC3CE</name>
+              <description>OC3CE</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC3M</name>
+              <description>OC3M</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>OC3M</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Frozen</name>
+                  <description>The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the outputs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveOnMatch</name>
+                  <description>Set channel to active level on match. OCyREF signal is forced high when the counter matches the capture/compare register</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InactiveOnMatch</name>
+                  <description>Set channel to inactive level on match. OCyREF signal is forced low when the counter matches the capture/compare register</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Toggle</name>
+                  <description>OCyREF toggles when TIMx_CNT=TIMx_CCRy</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceInactive</name>
+                  <description>OCyREF is forced low</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceActive</name>
+                  <description>OCyREF is forced high</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode1</name>
+                  <description>In upcounting, channel is active as long as TIMx_CNT&lt;TIMx_CCRy else inactive. In downcounting, channel is inactive as long as TIMx_CNT>TIMx_CCRy else active</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode2</name>
+                  <description>Inversely to PwmMode1</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC3PE</name>
+              <description>OC3PE</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OC3PE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Preload register on CCR3 disabled. New values written to CCR3 are taken into account immediately</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Preload register on CCR3 enabled. Preload value is loaded into active register on each update event</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC3FE</name>
+              <description>OC3FE</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3S</name>
+              <description>CC3S</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC3S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Output</name>
+                  <description>CC3 channel is configured as output</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR2_Input</name>
+          <displayName>CCMR2_Input</displayName>
+          <description>capture/compare mode register 2 (input
+          mode)</description>
+          <alternateRegister>CCMR2_Output</alternateRegister>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IC4F</name>
+              <description>Input capture 4 filter</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>IC4PSC</name>
+              <description>Input capture 4 prescaler</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>2</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>3</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>CC4S</name>
+              <description>Capture/Compare 4
+              selection</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC4S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI4</name>
+                  <description>CC4 channel is configured as input, IC4 is mapped on TI4</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI3</name>
+                  <description>CC4 channel is configured as input, IC4 is mapped on TI3</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC4 channel is configured as input, IC4 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IC3F</name>
+              <description>Input capture 3 filter</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>15</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>IC3PSC</name>
+              <description>Input capture 3 prescaler</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>3</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>CC3S</name>
+              <description>Capture/compare 3
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CC3S</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>TI3</name>
+                  <description>CC3 channel is configured as input, IC3 is mapped on TI3</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TI4</name>
+                  <description>CC3 channel is configured as input, IC3 is mapped on TI4</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>TRC</name>
+                  <description>CC3 channel is configured as input, IC3 is mapped on TRC</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCER</name>
+          <displayName>CCER</displayName>
+          <description>capture/compare enable
+          register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC4NP</name>
+              <description>Capture/Compare 4 output
+              Polarity</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC4P</name>
+              <description>Capture/Compare 3 output
+              Polarity</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC4E</name>
+              <description>Capture/Compare 4 output
+              enable</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3NP</name>
+              <description>Capture/Compare 3 output
+              Polarity</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3P</name>
+              <description>Capture/Compare 3 output
+              Polarity</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC3E</name>
+              <description>Capture/Compare 3 output
+              enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2NP</name>
+              <description>Capture/Compare 2 output
+              Polarity</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2P</name>
+              <description>Capture/Compare 2 output
+              Polarity</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2E</name>
+              <description>Capture/Compare 2 output
+              enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1NP</name>
+              <description>Capture/Compare 1 output
+              Polarity</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1P</name>
+              <description>Capture/Compare 1 output
+              Polarity</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1E</name>
+              <description>Capture/Compare 1 output
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CNT</name>
+          <displayName>CNT</displayName>
+          <description>counter</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CNT</name>
+              <description>Counter value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PSC</name>
+          <displayName>PSC</displayName>
+          <description>prescaler</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PSC</name>
+              <description>Prescaler value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ARR</name>
+          <displayName>ARR</displayName>
+          <description>auto-reload register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ARR</name>
+              <description>Auto-reload value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>4</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>1-4</dimIndex>
+          <name>CCR%s</name>
+          <displayName>CCR1</displayName>
+          <description>capture/compare register</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CCR</name>
+              <description>Capture/Compare value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DCR</name>
+          <displayName>DCR</displayName>
+          <description>DMA control register</description>
+          <addressOffset>0x48</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DBL</name>
+              <description>DMA burst length</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>18</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>DBA</name>
+              <description>DMA base address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>5</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>31</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DMAR</name>
+          <displayName>DMAR</displayName>
+          <description>DMA address for full transfer</description>
+          <addressOffset>0x4C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DMAB</name>
+              <description>DMA register for burst
+              accesses</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>OR</name>
+          <displayName>OR</displayName>
+          <description>TIM5 option register</description>
+          <addressOffset>0x50</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IT4_RMP</name>
+              <description>Timer Input 4 remap</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>TIM9</name>
+      <description>General purpose timers</description>
+      <groupName>TIM</groupName>
+      <baseAddress>0x40014000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>TIM1_BRK_TIM9</name>
+        <description>TIM1 Break interrupt and TIM9 global
+        interrupt</description>
+        <value>24</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR1</name>
+          <displayName>CR1</displayName>
+          <description>control register 1</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CKD</name>
+              <description>Clock division</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CKD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>t_DTS = t_CK_INT</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>t_DTS = 2 × t_CK_INT</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>t_DTS = 4 × t_CK_INT</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ARPE</name>
+              <description>Auto-reload preload enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ARPE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>TIMx_APRR register is not buffered</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>TIMx_APRR register is buffered</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OPM</name>
+              <description>One-pulse mode</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OPM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter is not stopped at update event</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter stops counting at the next update event (clearing the CEN bit)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>URS</name>
+              <description>Update request source</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>URS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AnyEvent</name>
+                  <description>Any of counter overflow/underflow, setting UG, or update through slave mode, generates an update interrupt or DMA request</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CounterOnly</name>
+                  <description>Only counter overflow/underflow generates an update interrupt or DMA request</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UDIS</name>
+              <description>Update disable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UDIS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update event enabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update event disabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CEN</name>
+              <description>Counter enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR2</name>
+          <displayName>CR2</displayName>
+          <description>control register 2</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>MMS</name>
+              <description>Master mode selection</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SMCR</name>
+          <displayName>SMCR</displayName>
+          <description>slave mode control register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>MSM</name>
+              <description>Master/Slave mode</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TS</name>
+              <description>Trigger selection</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+            </field>
+            <field>
+              <name>SMS</name>
+              <description>Slave mode selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>3</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIER</name>
+          <displayName>DIER</displayName>
+          <description>DMA/Interrupt enable register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TIE</name>
+              <description>Trigger interrupt enable</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2IE</name>
+              <description>Capture/Compare 2 interrupt
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1IE</name>
+              <description>Capture/Compare 1 interrupt
+              enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>UIE</name>
+              <description>Update interrupt enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC2OF</name>
+              <description>Capture/compare 2 overcapture
+              flag</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1OF</name>
+              <description>Capture/Compare 1 overcapture
+              flag</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TIF</name>
+              <description>Trigger interrupt flag</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2IF</name>
+              <description>Capture/Compare 2 interrupt
+              flag</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1IF</name>
+              <description>Capture/compare 1 interrupt
+              flag</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>UIF</name>
+              <description>Update interrupt flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>UIFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoUpdateOccurred</name>
+                  <description>No update occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>UpdatePending</name>
+                  <description>Update interrupt pending</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>UIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>EGR</name>
+          <displayName>EGR</displayName>
+          <description>event generation register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TG</name>
+              <description>Trigger generation</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2G</name>
+              <description>Capture/compare 2
+              generation</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1G</name>
+              <description>Capture/compare 1
+              generation</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>UG</name>
+              <description>Update generation</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UG</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Update</name>
+                  <description>Re-initializes the timer counter and generates an update of the registers.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR1_Output</name>
+          <displayName>CCMR1_Output</displayName>
+          <description>capture/compare mode register 1 (output
+          mode)</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OC2M</name>
+              <description>Output Compare 2 mode</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues derivedFrom="OC1M"/>
+            </field>
+            <field>
+              <name>OC2PE</name>
+              <description>Output Compare 2 preload
+              enable</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC2FE</name>
+              <description>Output Compare 2 fast
+              enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2S</name>
+              <description>Capture/Compare 2
+              selection</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>OC1M</name>
+              <description>Output Compare 1 mode</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>OC1M</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Frozen</name>
+                  <description>The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the outputs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveOnMatch</name>
+                  <description>Set channel to active level on match. OCyREF signal is forced high when the counter matches the capture/compare register</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InactiveOnMatch</name>
+                  <description>Set channel to inactive level on match. OCyREF signal is forced low when the counter matches the capture/compare register</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Toggle</name>
+                  <description>OCyREF toggles when TIMx_CNT=TIMx_CCRy</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceInactive</name>
+                  <description>OCyREF is forced low</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceActive</name>
+                  <description>OCyREF is forced high</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode1</name>
+                  <description>In upcounting, channel is active as long as TIMx_CNT&lt;TIMx_CCRy else inactive. In downcounting, channel is inactive as long as TIMx_CNT>TIMx_CCRy else active</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode2</name>
+                  <description>Inversely to PwmMode1</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1PE</name>
+              <description>Output Compare 1 preload
+              enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC1FE</name>
+              <description>Output Compare 1 fast
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1S</name>
+              <description>Capture/Compare 1
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR1_Input</name>
+          <displayName>CCMR1_Input</displayName>
+          <description>capture/compare mode register 1 (input
+          mode)</description>
+          <alternateRegister>CCMR1_Output</alternateRegister>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IC2F</name>
+              <description>Input capture 2 filter</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+            </field>
+            <field>
+              <name>IC2PSC</name>
+              <description>Input capture 2 prescaler</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>CC2S</name>
+              <description>Capture/Compare 2
+              selection</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>IC1F</name>
+              <description>Input capture 1 filter</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+            </field>
+            <field>
+              <name>IC1PSC</name>
+              <description>Input capture 1 prescaler</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>CC1S</name>
+              <description>Capture/Compare 1
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCER</name>
+          <displayName>CCER</displayName>
+          <description>capture/compare enable
+          register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC2NP</name>
+              <description>Capture/Compare 2 output
+              Polarity</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2P</name>
+              <description>Capture/Compare 2 output
+              Polarity</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC2E</name>
+              <description>Capture/Compare 2 output
+              enable</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1NP</name>
+              <description>Capture/Compare 1 output
+              Polarity</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1P</name>
+              <description>Capture/Compare 1 output
+              Polarity</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1E</name>
+              <description>Capture/Compare 1 output
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CNT</name>
+          <displayName>CNT</displayName>
+          <description>counter</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CNT</name>
+              <description>counter value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PSC</name>
+          <displayName>PSC</displayName>
+          <description>prescaler</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PSC</name>
+              <description>Prescaler value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ARR</name>
+          <displayName>ARR</displayName>
+          <description>auto-reload register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ARR</name>
+              <description>Auto-reload value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>2</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>1-2</dimIndex>
+          <name>CCR%s</name>
+          <displayName>CCR1</displayName>
+          <description>capture/compare register</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CCR</name>
+              <description>Capture/Compare value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral derivedFrom="TIM9">
+      <name>TIM12</name>
+      <groupName>TIM</groupName>
+      <baseAddress>0x40001800</baseAddress>
+      <interrupt>
+        <name>TIM8_BRK_TIM12</name>
+        <description>TIM8 Break interrupt and TIM12 global
+        interrupt</description>
+        <value>43</value>
+      </interrupt>
+    </peripheral>
+    <peripheral>
+      <name>TIM10</name>
+      <description>General-purpose-timers</description>
+      <groupName>TIM</groupName>
+      <baseAddress>0x40014400</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>TIM1_UP_TIM10</name>
+        <description>TIM1 Update interrupt and TIM10 global
+        interrupt</description>
+        <value>25</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR1</name>
+          <displayName>CR1</displayName>
+          <description>control register 1</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CKD</name>
+              <description>Clock division</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CKD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>t_DTS = t_CK_INT</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>t_DTS = 2 × t_CK_INT</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>t_DTS = 4 × t_CK_INT</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ARPE</name>
+              <description>Auto-reload preload enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ARPE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>TIMx_APRR register is not buffered</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>TIMx_APRR register is buffered</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>URS</name>
+              <description>Update request source</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>URS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AnyEvent</name>
+                  <description>Any of counter overflow/underflow, setting UG, or update through slave mode, generates an update interrupt or DMA request</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CounterOnly</name>
+                  <description>Only counter overflow/underflow generates an update interrupt or DMA request</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UDIS</name>
+              <description>Update disable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UDIS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update event enabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update event disabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CEN</name>
+              <description>Counter enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OPM</name>
+              <description>One-pulse mode</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>OPM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter is not stopped at update event</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter stops counting at the next update event (clearing the CEN bit)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIER</name>
+          <displayName>DIER</displayName>
+          <description>DMA/Interrupt enable register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC1IE</name>
+              <description>Capture/Compare 1 interrupt
+              enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>UIE</name>
+              <description>Update interrupt enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC1OF</name>
+              <description>Capture/Compare 1 overcapture
+              flag</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1IF</name>
+              <description>Capture/compare 1 interrupt
+              flag</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>UIF</name>
+              <description>Update interrupt flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>UIFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoUpdateOccurred</name>
+                  <description>No update occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>UpdatePending</name>
+                  <description>Update interrupt pending</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>UIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>EGR</name>
+          <displayName>EGR</displayName>
+          <description>event generation register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC1G</name>
+              <description>Capture/compare 1
+              generation</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>UG</name>
+              <description>Update generation</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UG</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Update</name>
+                  <description>Re-initializes the timer counter and generates an update of the registers.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR1_Output</name>
+          <displayName>CCMR1_Output</displayName>
+          <description>capture/compare mode register 1 (output
+          mode)</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OC1M</name>
+              <description>Output Compare 1 mode</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>OC1M</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Frozen</name>
+                  <description>The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the outputs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveOnMatch</name>
+                  <description>Set channel to active level on match. OCyREF signal is forced high when the counter matches the capture/compare register</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InactiveOnMatch</name>
+                  <description>Set channel to inactive level on match. OCyREF signal is forced low when the counter matches the capture/compare register</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Toggle</name>
+                  <description>OCyREF toggles when TIMx_CNT=TIMx_CCRy</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceInactive</name>
+                  <description>OCyREF is forced low</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceActive</name>
+                  <description>OCyREF is forced high</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode1</name>
+                  <description>In upcounting, channel is active as long as TIMx_CNT&lt;TIMx_CCRy else inactive. In downcounting, channel is inactive as long as TIMx_CNT>TIMx_CCRy else active</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode2</name>
+                  <description>Inversely to PwmMode1</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1PE</name>
+              <description>Output Compare 1 preload
+              enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC1FE</name>
+              <description>Output Compare 1 fast
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1S</name>
+              <description>Capture/Compare 1
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR1_Input</name>
+          <displayName>CCMR1_Input</displayName>
+          <description>capture/compare mode register 1 (input
+          mode)</description>
+          <alternateRegister>CCMR1_Output</alternateRegister>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IC1F</name>
+              <description>Input capture 1 filter</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>IC1PSC</name>
+              <description>Input capture 1 prescaler</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>CC1S</name>
+              <description>Capture/Compare 1
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCER</name>
+          <displayName>CCER</displayName>
+          <description>capture/compare enable
+          register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC1NP</name>
+              <description>Capture/Compare 1 output
+              Polarity</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1P</name>
+              <description>Capture/Compare 1 output
+              Polarity</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1E</name>
+              <description>Capture/Compare 1 output
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CNT</name>
+          <displayName>CNT</displayName>
+          <description>counter</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CNT</name>
+              <description>counter value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PSC</name>
+          <displayName>PSC</displayName>
+          <description>prescaler</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PSC</name>
+              <description>Prescaler value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ARR</name>
+          <displayName>ARR</displayName>
+          <description>auto-reload register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ARR</name>
+              <description>Auto-reload value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>1</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>1-1</dimIndex>
+          <name>CCR%s</name>
+          <displayName>CCR1</displayName>
+          <description>capture/compare register</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CCR</name>
+              <description>Capture/Compare value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral derivedFrom="TIM10">
+      <name>TIM13</name>
+      <groupName>TIM</groupName>
+      <baseAddress>0x40001C00</baseAddress>
+      <interrupt>
+        <name>TIM8_UP_TIM13</name>
+        <description>TIM8 Update interrupt and TIM13 global
+        interrupt</description>
+        <value>44</value>
+      </interrupt>
+    </peripheral>
+    <peripheral derivedFrom="TIM10">
+      <name>TIM14</name>
+      <groupName>TIM</groupName>
+      <baseAddress>0x40002000</baseAddress>
+      <interrupt>
+        <name>TIM8_TRG_COM_TIM14</name>
+        <description>TIM8 Trigger and Commutation interrupts and
+        TIM14 global interrupt</description>
+        <value>45</value>
+      </interrupt>
+    </peripheral>
+    <peripheral>
+      <name>TIM11</name>
+      <description>General-purpose-timers</description>
+      <groupName>TIM</groupName>
+      <baseAddress>0x40014800</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>TIM1_TRG_COM_TIM11</name>
+        <description>TIM1 Trigger and Commutation interrupts and
+        TIM11 global interrupt</description>
+        <value>26</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR1</name>
+          <displayName>CR1</displayName>
+          <description>control register 1</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CKD</name>
+              <description>Clock division</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>CKD</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Div1</name>
+                  <description>t_DTS = t_CK_INT</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div2</name>
+                  <description>t_DTS = 2 × t_CK_INT</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Div4</name>
+                  <description>t_DTS = 4 × t_CK_INT</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ARPE</name>
+              <description>Auto-reload preload enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ARPE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>TIMx_APRR register is not buffered</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>TIMx_APRR register is buffered</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>URS</name>
+              <description>Update request source</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>URS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AnyEvent</name>
+                  <description>Any of counter overflow/underflow, setting UG, or update through slave mode, generates an update interrupt or DMA request</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CounterOnly</name>
+                  <description>Only counter overflow/underflow generates an update interrupt or DMA request</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UDIS</name>
+              <description>Update disable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UDIS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update event enabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update event disabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CEN</name>
+              <description>Counter enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OPM</name>
+              <description>One-pulse mode</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>OPM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter is not stopped at update event</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter stops counting at the next update event (clearing the CEN bit)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIER</name>
+          <displayName>DIER</displayName>
+          <description>DMA/Interrupt enable register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC1IE</name>
+              <description>Capture/Compare 1 interrupt
+              enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>UIE</name>
+              <description>Update interrupt enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC1OF</name>
+              <description>Capture/Compare 1 overcapture
+              flag</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1IF</name>
+              <description>Capture/compare 1 interrupt
+              flag</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>UIF</name>
+              <description>Update interrupt flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>UIFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoUpdateOccurred</name>
+                  <description>No update occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>UpdatePending</name>
+                  <description>Update interrupt pending</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>UIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>EGR</name>
+          <displayName>EGR</displayName>
+          <description>event generation register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC1G</name>
+              <description>Capture/compare 1
+              generation</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>UG</name>
+              <description>Update generation</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UG</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Update</name>
+                  <description>Re-initializes the timer counter and generates an update of the registers.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR1_Output</name>
+          <displayName>CCMR1_Output</displayName>
+          <description>capture/compare mode register 1 (output
+          mode)</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OC1M</name>
+              <description>Output Compare 1 mode</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>OC1M</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Frozen</name>
+                  <description>The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the outputs</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveOnMatch</name>
+                  <description>Set channel to active level on match. OCyREF signal is forced high when the counter matches the capture/compare register</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>InactiveOnMatch</name>
+                  <description>Set channel to inactive level on match. OCyREF signal is forced low when the counter matches the capture/compare register</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Toggle</name>
+                  <description>OCyREF toggles when TIMx_CNT=TIMx_CCRy</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceInactive</name>
+                  <description>OCyREF is forced low</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ForceActive</name>
+                  <description>OCyREF is forced high</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode1</name>
+                  <description>In upcounting, channel is active as long as TIMx_CNT&lt;TIMx_CCRy else inactive. In downcounting, channel is inactive as long as TIMx_CNT>TIMx_CCRy else active</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PwmMode2</name>
+                  <description>Inversely to PwmMode1</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OC1PE</name>
+              <description>Output Compare 1 preload
+              enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OC1FE</name>
+              <description>Output Compare 1 fast
+              enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1S</name>
+              <description>Capture/Compare 1
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCMR1_Input</name>
+          <displayName>CCMR1_Input</displayName>
+          <description>capture/compare mode register 1 (input
+          mode)</description>
+          <alternateRegister>CCMR1_Output</alternateRegister>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IC1F</name>
+              <description>Input capture 1 filter</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>IC1PSC</name>
+              <description>Input capture 1 prescaler</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>CC1S</name>
+              <description>Capture/Compare 1
+              selection</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCER</name>
+          <displayName>CCER</displayName>
+          <description>capture/compare enable
+          register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CC1NP</name>
+              <description>Capture/Compare 1 output
+              Polarity</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1P</name>
+              <description>Capture/Compare 1 output
+              Polarity</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CC1E</name>
+              <description>Capture/Compare 1 output
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CNT</name>
+          <displayName>CNT</displayName>
+          <description>counter</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CNT</name>
+              <description>counter value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PSC</name>
+          <displayName>PSC</displayName>
+          <description>prescaler</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PSC</name>
+              <description>Prescaler value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ARR</name>
+          <displayName>ARR</displayName>
+          <description>auto-reload register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ARR</name>
+              <description>Auto-reload value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>1</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>1-1</dimIndex>
+          <name>CCR%s</name>
+          <displayName>CCR1</displayName>
+          <description>capture/compare register</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CCR</name>
+              <description>Capture/Compare value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>OR</name>
+          <displayName>OR</displayName>
+          <description>option register</description>
+          <addressOffset>0x50</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>RMP</name>
+              <description>Input 1 remapping
+              capability</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>TIM6</name>
+      <description>Basic timers</description>
+      <groupName>TIM</groupName>
+      <baseAddress>0x40001000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>TIM6_DAC</name>
+        <description>TIM6 global interrupt, DAC1 and DAC2 underrun
+        error interrupt</description>
+        <value>54</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR1</name>
+          <displayName>CR1</displayName>
+          <description>control register 1</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ARPE</name>
+              <description>Auto-reload preload enable</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ARPE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>TIMx_APRR register is not buffered</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>TIMx_APRR register is buffered</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OPM</name>
+              <description>One-pulse mode</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>OPM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter is not stopped at update event</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter stops counting at the next update event (clearing the CEN bit)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>URS</name>
+              <description>Update request source</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>URS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>AnyEvent</name>
+                  <description>Any of counter overflow/underflow, setting UG, or update through slave mode, generates an update interrupt or DMA request</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>CounterOnly</name>
+                  <description>Only counter overflow/underflow generates an update interrupt or DMA request</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UDIS</name>
+              <description>Update disable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UDIS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update event enabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update event disabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CEN</name>
+              <description>Counter enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>CEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Counter disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Counter enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR2</name>
+          <displayName>CR2</displayName>
+          <description>control register 2</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>MMS</name>
+              <description>Master mode selection</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <enumeratedValues>
+                <name>MMS</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>Use UG bit from TIMx_EGR register</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enable</name>
+                  <description>Use CNT bit from TIMx_CEN register</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Update</name>
+                  <description>Use the update event</description>
+                  <value>2</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIER</name>
+          <displayName>DIER</displayName>
+          <description>DMA/Interrupt enable register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>UDE</name>
+              <description>Update DMA request enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UDE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update DMA request disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update DMA request enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>UIE</name>
+              <description>Update interrupt enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Update interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Update interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>UIF</name>
+              <description>Update interrupt flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>zeroToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>UIFR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoUpdateOccurred</name>
+                  <description>No update occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>UpdatePending</name>
+                  <description>Update interrupt pending</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>UIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>0</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>EGR</name>
+          <displayName>EGR</displayName>
+          <description>event generation register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>UG</name>
+              <description>Update generation</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>UG</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Update</name>
+                  <description>Re-initializes the timer counter and generates an update of the registers.</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CNT</name>
+          <displayName>CNT</displayName>
+          <description>counter</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CNT</name>
+              <description>Low counter value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PSC</name>
+          <displayName>PSC</displayName>
+          <description>prescaler</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PSC</name>
+              <description>Prescaler value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ARR</name>
+          <displayName>ARR</displayName>
+          <description>auto-reload register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ARR</name>
+              <description>Low Auto-reload value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>65535</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral derivedFrom="TIM6">
+      <name>TIM7</name>
+      <groupName>TIM</groupName>
+      <baseAddress>0x40001400</baseAddress>
+      <interrupt>
+        <name>TIM7</name>
+        <description>TIM7 global interrupt</description>
+        <value>55</value>
+      </interrupt>
+    </peripheral>
+    <peripheral>
+      <name>CRC</name>
+      <description>Cryptographic processor</description>
+      <groupName>CRC</groupName>
+      <baseAddress>0x40023000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>DR</name>
+          <displayName>DR</displayName>
+          <description>Data register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0xFFFFFFFF</resetValue>
+          <fields>
+            <field>
+              <name>DR</name>
+              <description>Data Register</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IDR</name>
+          <displayName>IDR</displayName>
+          <description>Independent Data register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IDR</name>
+              <description>Independent Data register</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR</name>
+          <displayName>CR</displayName>
+          <description>Control register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>RESET</name>
+              <description>Control regidter</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RESETW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>Resets the CRC calculation unit and sets the data register to 0xFFFF FFFF</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>OTG_FS_GLOBAL</name>
+      <description>USB on the go full speed</description>
+      <groupName>USB_OTG_FS</groupName>
+      <baseAddress>0x50000000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>OTG_FS_WKUP</name>
+        <description>USB On-The-Go FS Wakeup through EXTI line
+        interrupt</description>
+        <value>42</value>
+      </interrupt>
+      <interrupt>
+        <name>OTG_FS</name>
+        <description>USB On The Go FS global
+        interrupt</description>
+        <value>67</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>GOTGCTL</name>
+          <displayName>GOTGCTL</displayName>
+          <description>OTG_FS control and status register
+          (OTG_FS_GOTGCTL)</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000800</resetValue>
+          <fields>
+            <field>
+              <name>SRQSCS</name>
+              <description>Session request success</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>SRQ</name>
+              <description>Session request</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>HNGSCS</name>
+              <description>Host negotiation success</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>HNPRQ</name>
+              <description>HNP request</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>HSHNPEN</name>
+              <description>Host set HNP enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>DHNPEN</name>
+              <description>Device HNP enabled</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>CIDSTS</name>
+              <description>Connector ID status</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>DBCT</name>
+              <description>Long/short debounce time</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>ASVLD</name>
+              <description>A-session valid</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>BSVLD</name>
+              <description>B-session valid</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GOTGINT</name>
+          <displayName>GOTGINT</displayName>
+          <description>OTG_FS interrupt register
+          (OTG_FS_GOTGINT)</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SEDET</name>
+              <description>Session end detected</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>SRSSCHG</name>
+              <description>Session request success status
+              change</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>HNSSCHG</name>
+              <description>Host negotiation success status
+              change</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>HNGDET</name>
+              <description>Host negotiation detected</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ADTOCHG</name>
+              <description>A-device timeout change</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBCDNE</name>
+              <description>Debounce done</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GAHBCFG</name>
+          <displayName>GAHBCFG</displayName>
+          <description>OTG_FS AHB configuration register
+          (OTG_FS_GAHBCFG)</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>GINT</name>
+              <description>Global interrupt mask</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TXFELVL</name>
+              <description>TxFIFO empty level</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PTXFELVL</name>
+              <description>Periodic TxFIFO empty
+              level</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GUSBCFG</name>
+          <displayName>GUSBCFG</displayName>
+          <description>OTG_FS USB configuration register
+          (OTG_FS_GUSBCFG)</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000A00</resetValue>
+          <fields>
+            <field>
+              <name>TOCAL</name>
+              <description>FS timeout calibration</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PHYSEL</name>
+              <description>Full Speed serial transceiver
+              select</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+            </field>
+            <field>
+              <name>SRPCAP</name>
+              <description>SRP-capable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>HNPCAP</name>
+              <description>HNP-capable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TRDT</name>
+              <description>USB turnaround time</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>4</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>FHMOD</name>
+              <description>Force host mode</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>FDMOD</name>
+              <description>Force device mode</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>CTXPKT</name>
+              <description>Corrupt Tx packet</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GRSTCTL</name>
+          <displayName>GRSTCTL</displayName>
+          <description>OTG_FS reset register
+          (OTG_FS_GRSTCTL)</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x20000000</resetValue>
+          <fields>
+            <field>
+              <name>CSRST</name>
+              <description>Core soft reset</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>HSRST</name>
+              <description>HCLK soft reset</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>FCRST</name>
+              <description>Host frame counter reset</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>RXFFLSH</name>
+              <description>RxFIFO flush</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TXFFLSH</name>
+              <description>TxFIFO flush</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TXFNUM</name>
+              <description>TxFIFO number</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>5</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>AHBIDL</name>
+              <description>AHB master idle</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GINTSTS</name>
+          <displayName>GINTSTS</displayName>
+          <description>OTG_FS core interrupt register
+          (OTG_FS_GINTSTS)</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x04000020</resetValue>
+          <fields>
+            <field>
+              <name>CMOD</name>
+              <description>Current mode of operation</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>MMIS</name>
+              <description>Mode mismatch interrupt</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>OTGINT</name>
+              <description>OTG interrupt</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>SOF</name>
+              <description>Start of frame</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>RXFLVL</name>
+              <description>RxFIFO non-empty</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>NPTXFE</name>
+              <description>Non-periodic TxFIFO empty</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>GINAKEFF</name>
+              <description>Global IN non-periodic NAK
+              effective</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>GOUTNAKEFF</name>
+              <description>Global OUT NAK effective</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>ESUSP</name>
+              <description>Early suspend</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>USBSUSP</name>
+              <description>USB suspend</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>USBRST</name>
+              <description>USB reset</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ENUMDNE</name>
+              <description>Enumeration done</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ISOODRP</name>
+              <description>Isochronous OUT packet dropped
+              interrupt</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>EOPF</name>
+              <description>End of periodic frame
+              interrupt</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>IEPINT</name>
+              <description>IN endpoint interrupt</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>OEPINT</name>
+              <description>OUT endpoint interrupt</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>IISOIXFR</name>
+              <description>Incomplete isochronous IN
+              transfer</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>IPXFR_INCOMPISOOUT</name>
+              <description>Incomplete periodic transfer(Host
+              mode)/Incomplete isochronous OUT transfer(Device
+              mode)</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>HPRTINT</name>
+              <description>Host port interrupt</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>HCINT</name>
+              <description>Host channels interrupt</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>PTXFE</name>
+              <description>Periodic TxFIFO empty</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>CIDSCHG</name>
+              <description>Connector ID status change</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>DISCINT</name>
+              <description>Disconnect detected
+              interrupt</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>SRQINT</name>
+              <description>Session request/new session detected
+              interrupt</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>WKUPINT</name>
+              <description>Resume/remote wakeup detected
+              interrupt</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GINTMSK</name>
+          <displayName>GINTMSK</displayName>
+          <description>OTG_FS interrupt mask register
+          (OTG_FS_GINTMSK)</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>MMISM</name>
+              <description>Mode mismatch interrupt
+              mask</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>OTGINT</name>
+              <description>OTG interrupt mask</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>SOFM</name>
+              <description>Start of frame mask</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>RXFLVLM</name>
+              <description>Receive FIFO non-empty
+              mask</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>NPTXFEM</name>
+              <description>Non-periodic TxFIFO empty
+              mask</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>GINAKEFFM</name>
+              <description>Global non-periodic IN NAK effective
+              mask</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>GONAKEFFM</name>
+              <description>Global OUT NAK effective
+              mask</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ESUSPM</name>
+              <description>Early suspend mask</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>USBSUSPM</name>
+              <description>USB suspend mask</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>USBRST</name>
+              <description>USB reset mask</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ENUMDNEM</name>
+              <description>Enumeration done mask</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ISOODRPM</name>
+              <description>Isochronous OUT packet dropped interrupt
+              mask</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>EOPFM</name>
+              <description>End of periodic frame interrupt
+              mask</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>EPMISM</name>
+              <description>Endpoint mismatch interrupt
+              mask</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>IEPINT</name>
+              <description>IN endpoints interrupt
+              mask</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>OEPINT</name>
+              <description>OUT endpoints interrupt
+              mask</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>IISOIXFRM</name>
+              <description>Incomplete isochronous IN transfer
+              mask</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>IPXFRM_IISOOXFRM</name>
+              <description>Incomplete periodic transfer mask(Host
+              mode)/Incomplete isochronous OUT transfer mask(Device
+              mode)</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PRTIM</name>
+              <description>Host port interrupt mask</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>HCIM</name>
+              <description>Host channels interrupt
+              mask</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PTXFEM</name>
+              <description>Periodic TxFIFO empty mask</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>CIDSCHGM</name>
+              <description>Connector ID status change
+              mask</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>DISCINT</name>
+              <description>Disconnect detected interrupt
+              mask</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>SRQIM</name>
+              <description>Session request/new session detected
+              interrupt mask</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>WUIM</name>
+              <description>Resume/remote wakeup detected interrupt
+              mask</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GRXSTSR_Device</name>
+          <displayName>GRXSTSR_Device</displayName>
+          <description>OTG_FS Receive status debug read(Device
+          mode)</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>EPNUM</name>
+              <description>Endpoint number</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>BCNT</name>
+              <description>Byte count</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>11</bitWidth>
+            </field>
+            <field>
+              <name>DPID</name>
+              <description>Data PID</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>PKTSTS</name>
+              <description>Packet status</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>FRMNUM</name>
+              <description>Frame number</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GRXSTSR_Host</name>
+          <displayName>GRXSTSR_Host</displayName>
+          <description>OTG status debug read (host mode)</description>
+          <alternateRegister>GRXSTSR_Device</alternateRegister>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CHNUM</name>
+              <description>Channel number</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>BCNT</name>
+              <description>Byte count</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>11</bitWidth>
+            </field>
+            <field>
+              <name>DPID</name>
+              <description>Data PID</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>PKTSTS</name>
+              <description>Packet status</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GRXFSIZ</name>
+          <displayName>GRXFSIZ</displayName>
+          <description>OTG_FS Receive FIFO size register
+          (OTG_FS_GRXFSIZ)</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000200</resetValue>
+          <fields>
+            <field>
+              <name>RXFD</name>
+              <description>RxFIFO depth</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIEPTXF0</name>
+          <displayName>DIEPTXF0</displayName>
+          <description>OTG_FS non-periodic transmit FIFO size
+          register (Device mode)</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000200</resetValue>
+          <fields>
+            <field>
+              <name>TX0FSA</name>
+              <description>Endpoint 0 transmit RAM start
+              address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>TX0FD</name>
+              <description>Endpoint 0 TxFIFO depth</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HNPTXFSIZ</name>
+          <displayName>HNPTXFSIZ</displayName>
+          <description>OTG_FS non-periodic transmit FIFO size
+          register (Host mode)</description>
+          <alternateRegister>DIEPTXF0</alternateRegister>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000200</resetValue>
+          <fields>
+            <field>
+              <name>NPTXFSA</name>
+              <description>Non-periodic transmit RAM start
+              address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>NPTXFD</name>
+              <description>Non-periodic TxFIFO depth</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GNPTXSTS</name>
+          <displayName>GNPTXSTS</displayName>
+          <description>OTG_FS non-periodic transmit FIFO/queue
+          status register (OTG_FS_GNPTXSTS)</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00080200</resetValue>
+          <fields>
+            <field>
+              <name>NPTXFSAV</name>
+              <description>Non-periodic TxFIFO space
+              available</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>NPTQXSAV</name>
+              <description>Non-periodic transmit request queue
+              space available</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>NPTXQTOP</name>
+              <description>Top of the non-periodic transmit request
+              queue</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>7</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GCCFG</name>
+          <displayName>GCCFG</displayName>
+          <description>OTG_FS general core configuration register
+          (OTG_FS_GCCFG)</description>
+          <addressOffset>0x38</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PWRDWN</name>
+              <description>Power down</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>VBUSASEN</name>
+              <description>Enable the VBUS sensing
+              device</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>VBUSBSEN</name>
+              <description>Enable the VBUS sensing
+              device</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>SOFOUTEN</name>
+              <description>SOF output enable</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>NOVBUSSENS</name>
+              <description>Vbus sensing disable option</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CID</name>
+          <displayName>CID</displayName>
+          <description>core ID register</description>
+          <addressOffset>0x3C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00001000</resetValue>
+          <fields>
+            <field>
+              <name>PRODUCT_ID</name>
+              <description>Product ID field</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HPTXFSIZ</name>
+          <displayName>HPTXFSIZ</displayName>
+          <description>OTG_FS Host periodic transmit FIFO size
+          register (OTG_FS_HPTXFSIZ)</description>
+          <addressOffset>0x100</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x02000600</resetValue>
+          <fields>
+            <field>
+              <name>PTXSA</name>
+              <description>Host periodic TxFIFO start
+              address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>PTXFSIZ</name>
+              <description>Host periodic TxFIFO depth</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>5</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>1-5</dimIndex>
+          <name>DIEPTXF%s</name>
+          <displayName>DIEPTXF1</displayName>
+          <description>OTF_FS device IN endpoint transmit FIFO size register</description>
+          <addressOffset>0x104</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x02000400</resetValue>
+          <fields>
+            <field>
+              <name>INEPTXSA</name>
+              <description>IN endpoint FIFO2 transmit RAM start
+              address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>INEPTXFD</name>
+              <description>IN endpoint TxFIFO depth</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GRXSTSP_Device</name>
+          <description>OTG status read and pop (device mode)</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>FRMNUM</name>
+              <description>Frame number</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>PKTSTS</name>
+              <description>Packet status</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>DPID</name>
+              <description>Data PID</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>BCNT</name>
+              <description>Byte count</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>11</bitWidth>
+            </field>
+            <field>
+              <name>EPNUM</name>
+              <description>Endpoint number</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GRXSTSP_Host</name>
+          <description>OTG status read and pop (host mode)</description>
+          <alternateRegister>GRXSTSP_Device</alternateRegister>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PKTSTS</name>
+              <description>Packet status</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>DPID</name>
+              <description>Data PID</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>BCNT</name>
+              <description>Byte count</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>11</bitWidth>
+            </field>
+            <field>
+              <name>CHNUM</name>
+              <description>Channel number</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>OTG_FS_HOST</name>
+      <description>USB on the go full speed</description>
+      <groupName>USB_OTG_FS</groupName>
+      <baseAddress>0x50000400</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>HCFG</name>
+          <displayName>HCFG</displayName>
+          <description>OTG_FS host configuration register
+          (OTG_FS_HCFG)</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>FSLSPCS</name>
+              <description>FS/LS PHY clock select</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>FSLSS</name>
+              <description>FS- and LS-only support</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HFIR</name>
+          <displayName>HFIR</displayName>
+          <description>OTG_FS Host frame interval
+          register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x0000EA60</resetValue>
+          <fields>
+            <field>
+              <name>FRIVL</name>
+              <description>Frame interval</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HFNUM</name>
+          <displayName>HFNUM</displayName>
+          <description>OTG_FS host frame number/frame time
+          remaining register (OTG_FS_HFNUM)</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00003FFF</resetValue>
+          <fields>
+            <field>
+              <name>FRNUM</name>
+              <description>Frame number</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>FTREM</name>
+              <description>Frame time remaining</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HPTXSTS</name>
+          <displayName>HPTXSTS</displayName>
+          <description>OTG_FS_Host periodic transmit FIFO/queue
+          status register (OTG_FS_HPTXSTS)</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00080100</resetValue>
+          <fields>
+            <field>
+              <name>PTXFSAVL</name>
+              <description>Periodic transmit data FIFO space
+              available</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PTXQSAV</name>
+              <description>Periodic transmit request queue space
+              available</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>PTXQTOP</name>
+              <description>Top of the periodic transmit request
+              queue</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HAINT</name>
+          <displayName>HAINT</displayName>
+          <description>OTG_FS Host all channels interrupt
+          register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>HAINT</name>
+              <description>Channel interrupts</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HAINTMSK</name>
+          <displayName>HAINTMSK</displayName>
+          <description>OTG_FS host all channels interrupt mask
+          register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>HAINTM</name>
+              <description>Channel interrupt mask</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HPRT</name>
+          <displayName>HPRT</displayName>
+          <description>OTG_FS host port control and status register
+          (OTG_FS_HPRT)</description>
+          <addressOffset>0x40</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PCSTS</name>
+              <description>Port connect status</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>PCDET</name>
+              <description>Port connect detected</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PENA</name>
+              <description>Port enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PENCHNG</name>
+              <description>Port enable/disable change</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>POCA</name>
+              <description>Port overcurrent active</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>POCCHNG</name>
+              <description>Port overcurrent change</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PRES</name>
+              <description>Port resume</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PSUSP</name>
+              <description>Port suspend</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PRST</name>
+              <description>Port reset</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PLSTS</name>
+              <description>Port line status</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>2</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>PPWR</name>
+              <description>Port power</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PTCTL</name>
+              <description>Port test control</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>4</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PSPD</name>
+              <description>Port speed</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>2</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <cluster>
+          <dim>12</dim>
+          <dimIncrement>0x20</dimIncrement>
+          <dimIndex>0-11</dimIndex>
+          <name>HC%s</name>
+          <description>Host channel</description>
+          <addressOffset>0x100</addressOffset>
+          <register>
+            <name>CHAR</name>
+            <displayName>HCCHAR0</displayName>
+            <description>OTG_FS host channel-0 characteristics
+          register (OTG_FS_HCCHAR0)</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>MPSIZ</name>
+                <description>Maximum packet size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>11</bitWidth>
+              </field>
+              <field>
+                <name>EPNUM</name>
+                <description>Endpoint number</description>
+                <bitOffset>11</bitOffset>
+                <bitWidth>4</bitWidth>
+              </field>
+              <field>
+                <name>EPDIR</name>
+                <description>Endpoint direction</description>
+                <bitOffset>15</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>LSDEV</name>
+                <description>Low-speed device</description>
+                <bitOffset>17</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>EPTYP</name>
+                <description>Endpoint type</description>
+                <bitOffset>18</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+              <field>
+                <name>MCNT</name>
+                <description>Multicount</description>
+                <bitOffset>20</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+              <field>
+                <name>DAD</name>
+                <description>Device address</description>
+                <bitOffset>22</bitOffset>
+                <bitWidth>7</bitWidth>
+              </field>
+              <field>
+                <name>ODDFRM</name>
+                <description>Odd frame</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>CHDIS</name>
+                <description>Channel disable</description>
+                <bitOffset>30</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>CHENA</name>
+                <description>Channel enable</description>
+                <bitOffset>31</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>INT</name>
+            <displayName>HCINT0</displayName>
+            <description>OTG_FS host channel-0 interrupt register
+          (OTG_FS_HCINT0)</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>XFRC</name>
+                <description>Transfer completed</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>CHH</name>
+                <description>Channel halted</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>STALL</name>
+                <description>STALL response received
+              interrupt</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>NAK</name>
+                <description>NAK response received
+              interrupt</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>ACK</name>
+                <description>ACK response received/transmitted
+              interrupt</description>
+                <bitOffset>5</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>TXERR</name>
+                <description>Transaction error</description>
+                <bitOffset>7</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>BBERR</name>
+                <description>Babble error</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>FRMOR</name>
+                <description>Frame overrun</description>
+                <bitOffset>9</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>DTERR</name>
+                <description>Data toggle error</description>
+                <bitOffset>10</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>INTMSK</name>
+            <displayName>HCINTMSK0</displayName>
+            <description>OTG_FS host channel-0 mask register
+          (OTG_FS_HCINTMSK0)</description>
+            <addressOffset>0xC</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>XFRCM</name>
+                <description>Transfer completed mask</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>CHHM</name>
+                <description>Channel halted mask</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>STALLM</name>
+                <description>STALL response received interrupt
+              mask</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>NAKM</name>
+                <description>NAK response received interrupt
+              mask</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>ACKM</name>
+                <description>ACK response received/transmitted
+              interrupt mask</description>
+                <bitOffset>5</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>NYET</name>
+                <description>response received interrupt
+              mask</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>TXERRM</name>
+                <description>Transaction error mask</description>
+                <bitOffset>7</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>BBERRM</name>
+                <description>Babble error mask</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>FRMORM</name>
+                <description>Frame overrun mask</description>
+                <bitOffset>9</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>DTERRM</name>
+                <description>Data toggle error mask</description>
+                <bitOffset>10</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TSIZ</name>
+            <displayName>HCTSIZ0</displayName>
+            <description>OTG_FS host channel-0 transfer size
+          register</description>
+            <addressOffset>0x10</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>XFRSIZ</name>
+                <description>Transfer size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>19</bitWidth>
+              </field>
+              <field>
+                <name>PKTCNT</name>
+                <description>Packet count</description>
+                <bitOffset>19</bitOffset>
+                <bitWidth>10</bitWidth>
+              </field>
+              <field>
+                <name>DPID</name>
+                <description>Data PID</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>OTG_FS_DEVICE</name>
+      <description>USB on the go full speed</description>
+      <groupName>USB_OTG_FS</groupName>
+      <baseAddress>0x50000800</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>DCFG</name>
+          <displayName>DCFG</displayName>
+          <description>OTG_FS device configuration register
+          (OTG_FS_DCFG)</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x02200000</resetValue>
+          <fields>
+            <field>
+              <name>DSPD</name>
+              <description>Device speed</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>NZLSOHSK</name>
+              <description>Non-zero-length status OUT
+              handshake</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DAD</name>
+              <description>Device address</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>7</bitWidth>
+            </field>
+            <field>
+              <name>PFIVL</name>
+              <description>Periodic frame interval</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DCTL</name>
+          <displayName>DCTL</displayName>
+          <description>OTG_FS device control register
+          (OTG_FS_DCTL)</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>RWUSIG</name>
+              <description>Remote wakeup signaling</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>SDIS</name>
+              <description>Soft disconnect</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>GINSTS</name>
+              <description>Global IN NAK status</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>GONSTS</name>
+              <description>Global OUT NAK status</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>TCTL</name>
+              <description>Test control</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>SGINAK</name>
+              <description>Set global IN NAK</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>CGINAK</name>
+              <description>Clear global IN NAK</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>SGONAK</name>
+              <description>Set global OUT NAK</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>CGONAK</name>
+              <description>Clear global OUT NAK</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>POPRGDNE</name>
+              <description>Power-on programming done</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DSTS</name>
+          <displayName>DSTS</displayName>
+          <description>OTG_FS device status register
+          (OTG_FS_DSTS)</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000010</resetValue>
+          <fields>
+            <field>
+              <name>SUSPSTS</name>
+              <description>Suspend status</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ENUMSPD</name>
+              <description>Enumerated speed</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>EERR</name>
+              <description>Erratic error</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>FNSOF</name>
+              <description>Frame number of the received
+              SOF</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>14</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIEPMSK</name>
+          <displayName>DIEPMSK</displayName>
+          <description>OTG_FS device IN endpoint common interrupt
+          mask register (OTG_FS_DIEPMSK)</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>XFRCM</name>
+              <description>Transfer completed interrupt
+              mask</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>EPDM</name>
+              <description>Endpoint disabled interrupt
+              mask</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TOM</name>
+              <description>Timeout condition mask (Non-isochronous
+              endpoints)</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ITTXFEMSK</name>
+              <description>IN token received when TxFIFO empty
+              mask</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>INEPNMM</name>
+              <description>IN token received with EP mismatch
+              mask</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>INEPNEM</name>
+              <description>IN endpoint NAK effective
+              mask</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DOEPMSK</name>
+          <displayName>DOEPMSK</displayName>
+          <description>OTG_FS device OUT endpoint common interrupt
+          mask register (OTG_FS_DOEPMSK)</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>XFRCM</name>
+              <description>Transfer completed interrupt
+              mask</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>EPDM</name>
+              <description>Endpoint disabled interrupt
+              mask</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>STUPM</name>
+              <description>SETUP phase done mask</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OTEPDM</name>
+              <description>OUT token received when endpoint
+              disabled mask</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DAINT</name>
+          <displayName>DAINT</displayName>
+          <description>OTG_FS device all endpoints interrupt
+          register (OTG_FS_DAINT)</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IEPINT</name>
+              <description>IN endpoint interrupt bits</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>OEPINT</name>
+              <description>OUT endpoint interrupt
+              bits</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DAINTMSK</name>
+          <displayName>DAINTMSK</displayName>
+          <description>OTG_FS all endpoints interrupt mask register
+          (OTG_FS_DAINTMSK)</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IEPM</name>
+              <description>IN EP interrupt mask bits</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>OEPM</name>
+              <description>OUT EP interrupt mask bits</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DVBUSDIS</name>
+          <displayName>DVBUSDIS</displayName>
+          <description>OTG_FS device VBUS discharge time
+          register</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x000017D7</resetValue>
+          <fields>
+            <field>
+              <name>VBUSDT</name>
+              <description>Device VBUS discharge time</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DVBUSPULSE</name>
+          <displayName>DVBUSPULSE</displayName>
+          <description>OTG_FS device VBUS pulsing time
+          register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x000005B8</resetValue>
+          <fields>
+            <field>
+              <name>DVBUSP</name>
+              <description>Device VBUS pulsing time</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>12</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIEPEMPMSK</name>
+          <displayName>DIEPEMPMSK</displayName>
+          <description>OTG_FS device IN endpoint FIFO empty
+          interrupt mask register</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>INEPTXFEM</name>
+              <description>IN EP Tx FIFO empty interrupt mask
+              bits</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <cluster>
+          <name>DIEP0</name>
+          <description>Device IN endpoint 0</description>
+          <addressOffset>0x100</addressOffset>
+          <register>
+            <name>CTL</name>
+            <displayName>DIEPCTL0</displayName>
+            <description>OTG_FS device control IN endpoint 0 control
+          register (OTG_FS_DIEPCTL0)</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>MPSIZ</name>
+                <description>Maximum packet size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>2</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>USBAEP</name>
+                <description>USB active endpoint</description>
+                <bitOffset>15</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>NAKSTS</name>
+                <description>NAK status</description>
+                <bitOffset>17</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>EPTYP</name>
+                <description>Endpoint type</description>
+                <bitOffset>18</bitOffset>
+                <bitWidth>2</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>STALL</name>
+                <description>STALL handshake</description>
+                <bitOffset>21</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>TXFNUM</name>
+                <description>TxFIFO number</description>
+                <bitOffset>22</bitOffset>
+                <bitWidth>4</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>CNAK</name>
+                <description>Clear NAK</description>
+                <bitOffset>26</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SNAK</name>
+                <description>Set NAK</description>
+                <bitOffset>27</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>EPDIS</name>
+                <description>Endpoint disable</description>
+                <bitOffset>30</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>EPENA</name>
+                <description>Endpoint enable</description>
+                <bitOffset>31</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>INT</name>
+            <displayName>DIEPINT0</displayName>
+            <description>device endpoint-x interrupt
+          register</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <resetValue>0x00000080</resetValue>
+            <fields>
+              <field>
+                <name>TXFE</name>
+                <description>TXFE</description>
+                <bitOffset>7</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>INEPNE</name>
+                <description>INEPNE</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>ITTXFE</name>
+                <description>ITTXFE</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>TOC</name>
+                <description>TOC</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EPDISD</name>
+                <description>EPDISD</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>XFRC</name>
+                <description>XFRC</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TSIZ</name>
+            <displayName>DIEPTSIZ0</displayName>
+            <description>device endpoint-0 transfer size
+          register</description>
+            <addressOffset>0x10</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>PKTCNT</name>
+                <description>Packet count</description>
+                <bitOffset>19</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+              <field>
+                <name>XFRSIZ</name>
+                <description>Transfer size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>7</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TXFSTS</name>
+            <displayName>DTXFSTS0</displayName>
+            <description>OTG_FS device IN endpoint transmit FIFO
+          status register</description>
+            <addressOffset>0x18</addressOffset>
+            <size>0x20</size>
+            <access>read-only</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>INEPTFSAV</name>
+                <description>IN endpoint TxFIFO space
+              available</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>16</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+        <cluster>
+          <dim>5</dim>
+          <dimIncrement>0x20</dimIncrement>
+          <dimIndex>1-5</dimIndex>
+          <name>DIEP%s</name>
+          <description>Device IN endpoint X</description>
+          <addressOffset>0x120</addressOffset>
+          <register>
+            <name>CTL</name>
+            <displayName>DIEPCTL1</displayName>
+            <description>OTG device endpoint-1 control
+          register</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>EPENA</name>
+                <description>EPENA</description>
+                <bitOffset>31</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EPDIS</name>
+                <description>EPDIS</description>
+                <bitOffset>30</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>SODDFRM_SD1PID</name>
+                <description>SODDFRM/SD1PID</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SD0PID_SEVNFRM</name>
+                <description>SD0PID/SEVNFRM</description>
+                <bitOffset>28</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SNAK</name>
+                <description>SNAK</description>
+                <bitOffset>27</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>CNAK</name>
+                <description>CNAK</description>
+                <bitOffset>26</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>TXFNUM</name>
+                <description>TXFNUM</description>
+                <bitOffset>22</bitOffset>
+                <bitWidth>4</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>STALL</name>
+                <description>STALL handshake</description>
+                <bitOffset>21</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EPTYP</name>
+                <description>EPTYP</description>
+                <bitOffset>18</bitOffset>
+                <bitWidth>2</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>NAKSTS</name>
+                <description>NAKSTS</description>
+                <bitOffset>17</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>EONUM_DPID</name>
+                <description>EONUM/DPID</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>USBAEP</name>
+                <description>USBAEP</description>
+                <bitOffset>15</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>MPSIZ</name>
+                <description>MPSIZ</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>11</bitWidth>
+                <access>read-write</access>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>INT</name>
+            <displayName>DIEPINT1</displayName>
+            <description>device endpoint-1 interrupt
+          register</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <resetValue>0x00000080</resetValue>
+            <fields>
+              <field>
+                <name>TXFE</name>
+                <description>TXFE</description>
+                <bitOffset>7</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>INEPNE</name>
+                <description>INEPNE</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>ITTXFE</name>
+                <description>ITTXFE</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>TOC</name>
+                <description>TOC</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EPDISD</name>
+                <description>EPDISD</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>XFRC</name>
+                <description>XFRC</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TSIZ</name>
+            <displayName>DIEPTSIZ1</displayName>
+            <description>device endpoint-1 transfer size
+          register</description>
+            <addressOffset>0x10</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>MCNT</name>
+                <description>Multi count</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+              <field>
+                <name>PKTCNT</name>
+                <description>Packet count</description>
+                <bitOffset>19</bitOffset>
+                <bitWidth>10</bitWidth>
+              </field>
+              <field>
+                <name>XFRSIZ</name>
+                <description>Transfer size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>19</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TXFSTS</name>
+            <displayName>DTXFSTS1</displayName>
+            <description>OTG_FS device IN endpoint transmit FIFO
+          status register</description>
+            <addressOffset>0x18</addressOffset>
+            <size>0x20</size>
+            <access>read-only</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>INEPTFSAV</name>
+                <description>IN endpoint TxFIFO space
+              available</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>16</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+        <cluster>
+          <name>DOEP0</name>
+          <description>Device OUT endpoint 0</description>
+          <addressOffset>0x300</addressOffset>
+          <register>
+            <name>CTL</name>
+            <displayName>DOEPCTL0</displayName>
+            <description>device endpoint-0 control
+          register</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <resetValue>0x00008000</resetValue>
+            <fields>
+              <field>
+                <name>EPENA</name>
+                <description>EPENA</description>
+                <bitOffset>31</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EPDIS</name>
+                <description>EPDIS</description>
+                <bitOffset>30</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>SNAK</name>
+                <description>SNAK</description>
+                <bitOffset>27</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>CNAK</name>
+                <description>CNAK</description>
+                <bitOffset>26</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>STALL</name>
+                <description>STALL handshake</description>
+                <bitOffset>21</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>SNPM</name>
+                <description>SNPM</description>
+                <bitOffset>20</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EPTYP</name>
+                <description>EPTYP</description>
+                <bitOffset>18</bitOffset>
+                <bitWidth>2</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>NAKSTS</name>
+                <description>NAKSTS</description>
+                <bitOffset>17</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>USBAEP</name>
+                <description>USBAEP</description>
+                <bitOffset>15</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>MPSIZ</name>
+                <description>MPSIZ</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>2</bitWidth>
+                <access>read-only</access>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>INT</name>
+            <displayName>DOEPINT0</displayName>
+            <description>device endpoint-0 interrupt
+          register</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000080</resetValue>
+            <fields>
+              <field>
+                <name>B2BSTUP</name>
+                <description>B2BSTUP</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>OTEPDIS</name>
+                <description>OTEPDIS</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>STUP</name>
+                <description>STUP</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>EPDISD</name>
+                <description>EPDISD</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>XFRC</name>
+                <description>XFRC</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TSIZ</name>
+            <displayName>DOEPTSIZ0</displayName>
+            <description>device OUT endpoint-0 transfer size
+          register</description>
+            <addressOffset>0x10</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>STUPCNT</name>
+                <description>SETUP packet count</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+              <field>
+                <name>PKTCNT</name>
+                <description>Packet count</description>
+                <bitOffset>19</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>XFRSIZ</name>
+                <description>Transfer size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>7</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+        <cluster>
+          <dim>5</dim>
+          <dimIncrement>0x20</dimIncrement>
+          <dimIndex>1-5</dimIndex>
+          <name>DOEP%s</name>
+          <description>Device IN endpoint X</description>
+          <addressOffset>0x320</addressOffset>
+          <register>
+            <name>CTL</name>
+            <displayName>DOEPCTL1</displayName>
+            <description>device endpoint-1 control
+          register</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>EPENA</name>
+                <description>EPENA</description>
+                <bitOffset>31</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EPDIS</name>
+                <description>EPDIS</description>
+                <bitOffset>30</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>SODDFRM</name>
+                <description>SODDFRM</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SD0PID_SEVNFRM</name>
+                <description>SD0PID/SEVNFRM</description>
+                <bitOffset>28</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SNAK</name>
+                <description>SNAK</description>
+                <bitOffset>27</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>CNAK</name>
+                <description>CNAK</description>
+                <bitOffset>26</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>STALL</name>
+                <description>STALL handshake</description>
+                <bitOffset>21</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>SNPM</name>
+                <description>SNPM</description>
+                <bitOffset>20</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EPTYP</name>
+                <description>EPTYP</description>
+                <bitOffset>18</bitOffset>
+                <bitWidth>2</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>NAKSTS</name>
+                <description>NAKSTS</description>
+                <bitOffset>17</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>EONUM_DPID</name>
+                <description>EONUM/DPID</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>USBAEP</name>
+                <description>USBAEP</description>
+                <bitOffset>15</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>MPSIZ</name>
+                <description>MPSIZ</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>11</bitWidth>
+                <access>read-write</access>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>INT</name>
+            <displayName>DOEPINT1</displayName>
+            <description>device endpoint-1 interrupt
+          register</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000080</resetValue>
+            <fields>
+              <field>
+                <name>B2BSTUP</name>
+                <description>B2BSTUP</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>OTEPDIS</name>
+                <description>OTEPDIS</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>STUP</name>
+                <description>STUP</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>EPDISD</name>
+                <description>EPDISD</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>XFRC</name>
+                <description>XFRC</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TSIZ</name>
+            <displayName>DOEPTSIZ1</displayName>
+            <description>device OUT endpoint-1 transfer size
+          register</description>
+            <addressOffset>0x10</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>RXDPID_STUPCNT</name>
+                <description>Received data PID/SETUP packet
+              count</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+              <field>
+                <name>PKTCNT</name>
+                <description>Packet count</description>
+                <bitOffset>19</bitOffset>
+                <bitWidth>10</bitWidth>
+              </field>
+              <field>
+                <name>XFRSIZ</name>
+                <description>Transfer size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>19</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>OTG_FS_PWRCLK</name>
+      <description>USB on the go full speed</description>
+      <groupName>USB_OTG_FS</groupName>
+      <baseAddress>0x50000E00</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>PCGCCTL</name>
+          <displayName>PCGCCTL</displayName>
+          <description>OTG_FS power and clock gating control
+          register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>STPPCLK</name>
+              <description>Stop PHY clock</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>GATEHCLK</name>
+              <description>Gate HCLK</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PHYSUSP</name>
+              <description>PHY Suspended</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>CAN1</name>
+      <description>Controller area network</description>
+      <groupName>CAN</groupName>
+      <baseAddress>0x40006400</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>CAN1_TX</name>
+        <description>CAN1 TX interrupts</description>
+        <value>19</value>
+      </interrupt>
+      <interrupt>
+        <name>CAN1_RX0</name>
+        <description>CAN1 RX0 interrupts</description>
+        <value>20</value>
+      </interrupt>
+      <interrupt>
+        <name>CAN1_RX1</name>
+        <description>CAN1 RX1 interrupts</description>
+        <value>21</value>
+      </interrupt>
+      <interrupt>
+        <name>CAN1_SCE</name>
+        <description>CAN1 SCE interrupt</description>
+        <value>22</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>MCR</name>
+          <displayName>MCR</displayName>
+          <description>master control register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00010002</resetValue>
+          <fields>
+            <field>
+              <name>DBF</name>
+              <description>DBF</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>RESET</name>
+              <description>RESET</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TTCM</name>
+              <description>TTCM</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ABOM</name>
+              <description>ABOM</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>AWUM</name>
+              <description>AWUM</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>NART</name>
+              <description>NART</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>RFLM</name>
+              <description>RFLM</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TXFP</name>
+              <description>TXFP</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>SLEEP</name>
+              <description>SLEEP</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>INRQ</name>
+              <description>INRQ</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>MSR</name>
+          <displayName>MSR</displayName>
+          <description>master status register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000C02</resetValue>
+          <fields>
+            <field>
+              <name>RX</name>
+              <description>RX</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>SAMP</name>
+              <description>SAMP</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>RXM</name>
+              <description>RXM</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>TXM</name>
+              <description>TXM</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>SLAKI</name>
+              <description>SLAKI</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>WKUI</name>
+              <description>WKUI</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ERRI</name>
+              <description>ERRI</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>SLAK</name>
+              <description>SLAK</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>INAK</name>
+              <description>INAK</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>TSR</name>
+          <displayName>TSR</displayName>
+          <description>transmit status register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x1C000000</resetValue>
+          <fields>
+            <field>
+              <dim>3</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-2</dimIndex>
+              <name>LOW%s</name>
+              <description>Lowest priority flag for mailbox
+              %s</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <dim>3</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-2</dimIndex>
+              <name>TME%s</name>
+              <description>Lowest priority flag for mailbox
+              %s</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>CODE</name>
+              <description>CODE</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>2</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>ABRQ2</name>
+              <description>ABRQ2</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TERR2</name>
+              <description>TERR2</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ALST2</name>
+              <description>ALST2</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TXOK2</name>
+              <description>TXOK2</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>RQCP2</name>
+              <description>RQCP2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ABRQ1</name>
+              <description>ABRQ1</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TERR1</name>
+              <description>TERR1</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ALST1</name>
+              <description>ALST1</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TXOK1</name>
+              <description>TXOK1</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>RQCP1</name>
+              <description>RQCP1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ABRQ0</name>
+              <description>ABRQ0</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TERR0</name>
+              <description>TERR0</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ALST0</name>
+              <description>ALST0</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TXOK0</name>
+              <description>TXOK0</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>RQCP0</name>
+              <description>RQCP0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>2</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>0-1</dimIndex>
+          <name>RF%sR</name>
+          <displayName>RF0R</displayName>
+          <description>receive FIFO %s register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>RFOM</name>
+              <description>RFOM0</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>RFOM0W</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Release</name>
+                  <description>Set by software to release the output mailbox of the FIFO</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FOVR</name>
+              <description>FOVR0</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>FOVR0R</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoOverrun</name>
+                  <description>No FIFO x overrun</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Overrun</name>
+                  <description>FIFO x overrun</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>FOVR0W</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FULL</name>
+              <description>FULL0</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>FULL0R</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotFull</name>
+                  <description>FIFO x is not full</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Full</name>
+                  <description>FIFO x is full</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>FULL0W</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FMP</name>
+              <description>FMP0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IER</name>
+          <displayName>IER</displayName>
+          <description>interrupt enable register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SLKIE</name>
+              <description>SLKIE</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SLKIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>No interrupt when SLAKI bit is set</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt generated when SLAKI bit is set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WKUIE</name>
+              <description>WKUIE</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>WKUIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>No interrupt when WKUI is set</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt generated when WKUI bit is set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ERRIE</name>
+              <description>ERRIE</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ERRIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>No interrupt will be generated when an error condition is pending in the CAN_ESR</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>An interrupt will be generation when an error condition is pending in the CAN_ESR</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LECIE</name>
+              <description>LECIE</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LECIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>ERRI bit will not be set when the error code in LEC[2:0] is set by hardware on error detection</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>ERRI bit will be set when the error code in LEC[2:0] is set by hardware on error detection</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BOFIE</name>
+              <description>BOFIE</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>BOFIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>ERRI bit will not be set when BOFF is set</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>ERRI bit will be set when BOFF is set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>EPVIE</name>
+              <description>EPVIE</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>EPVIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>ERRI bit will not be set when EPVF is set</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>ERRI bit will be set when EPVF is set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>EWGIE</name>
+              <description>EWGIE</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>EWGIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>ERRI bit will not be set when EWGF is set</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>ERRI bit will be set when EWGF is set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FOVIE1</name>
+              <description>FOVIE1</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FOVIE1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>No interrupt when FOVR is set</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt generation when FOVR is set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FFIE1</name>
+              <description>FFIE1</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FFIE1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>No interrupt when FULL bit is set</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt generated when FULL bit is set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FMPIE1</name>
+              <description>FMPIE1</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FMPIE1</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>No interrupt generated when state of FMP[1:0] bits are not 00b</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt generated when state of FMP[1:0] bits are not 00b</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FOVIE0</name>
+              <description>FOVIE0</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FOVIE0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>No interrupt when FOVR bit is set</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt generated when FOVR bit is set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FFIE0</name>
+              <description>FFIE0</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FFIE0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>No interrupt when FULL bit is set</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt generated when FULL bit is set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FMPIE0</name>
+              <description>FMPIE0</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FMPIE0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>No interrupt generated when state of FMP[1:0] bits are not 00</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt generated when state of FMP[1:0] bits are not 00b</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TMEIE</name>
+              <description>TMEIE</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TMEIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>No interrupt when RQCPx bit is set</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Interrupt generated when RQCPx bit is set</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ESR</name>
+          <displayName>ESR</displayName>
+          <description>interrupt enable register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>REC</name>
+              <description>REC</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>TEC</name>
+              <description>TEC</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>LEC</name>
+              <description>LEC</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>LEC</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoError</name>
+                  <description>No Error</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Stuff</name>
+                  <description>Stuff Error</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Form</name>
+                  <description>Form Error</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Ack</name>
+                  <description>Acknowledgment Error</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>BitRecessive</name>
+                  <description>Bit recessive Error</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>BitDominant</name>
+                  <description>Bit dominant Error</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Crc</name>
+                  <description>CRC Error</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Custom</name>
+                  <description>Set by software</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BOFF</name>
+              <description>BOFF</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>EPVF</name>
+              <description>EPVF</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>EWGF</name>
+              <description>EWGF</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>BTR</name>
+          <displayName>BTR</displayName>
+          <description>bit timing register</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SILM</name>
+              <description>SILM</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SILM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Normal</name>
+                  <description>Normal operation</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Silent</name>
+                  <description>Silent Mode</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LBKM</name>
+              <description>LBKM</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LBKM</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Loop Back Mode disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Loop Back Mode enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SJW</name>
+              <description>SJW</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>TS2</name>
+              <description>TS2</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>3</bitWidth>
+            </field>
+            <field>
+              <name>TS1</name>
+              <description>TS1</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>BRP</name>
+              <description>BRP</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>10</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <cluster>
+          <dim>3</dim>
+          <dimIncrement>0x10</dimIncrement>
+          <dimIndex>0-2</dimIndex>
+          <name>TX%s</name>
+          <description>CAN Transmit cluster</description>
+          <addressOffset>0x180</addressOffset>
+          <register>
+            <name>TIR</name>
+            <displayName>TI0R</displayName>
+            <description>TX mailbox identifier register</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>STID</name>
+                <description>STID</description>
+                <bitOffset>21</bitOffset>
+                <bitWidth>11</bitWidth>
+              </field>
+              <field>
+                <name>EXID</name>
+                <description>EXID</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>18</bitWidth>
+              </field>
+              <field>
+                <name>IDE</name>
+                <description>IDE</description>
+                <bitOffset>2</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>IDE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Standard</name>
+                    <description>Standard identifier</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Extended</name>
+                    <description>Extended identifier</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>RTR</name>
+                <description>RTR</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>RTR</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Data</name>
+                    <description>Data frame</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Remote</name>
+                    <description>Remote frame</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>TXRQ</name>
+                <description>TXRQ</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TDTR</name>
+            <displayName>TDT0R</displayName>
+            <description>mailbox data length control and time stamp
+          register</description>
+            <addressOffset>0x4</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>TIME</name>
+                <description>TIME</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>16</bitWidth>
+              </field>
+              <field>
+                <name>TGT</name>
+                <description>TGT</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>DLC</name>
+                <description>DLC</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>4</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>8</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TDLR</name>
+            <displayName>TDL0R</displayName>
+            <description>mailbox data low register</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <dim>4</dim>
+                <dimIncrement>0x8</dimIncrement>
+                <dimIndex>0-3</dimIndex>
+                <name>DATA%s</name>
+                <description>DATA%s</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>8</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TDHR</name>
+            <displayName>TDH0R</displayName>
+            <description>mailbox data high register</description>
+            <addressOffset>0xC</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <dim>4</dim>
+                <dimIncrement>0x8</dimIncrement>
+                <dimIndex>4-7</dimIndex>
+                <name>DATA%s</name>
+                <description>DATA%s</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>8</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+        <cluster>
+          <dim>2</dim>
+          <dimIncrement>0x10</dimIncrement>
+          <dimIndex>0-1</dimIndex>
+          <name>RX%s</name>
+          <description>CAN Receive cluster</description>
+          <addressOffset>0x1B0</addressOffset>
+          <register>
+            <name>RIR</name>
+            <displayName>RI0R</displayName>
+            <description>receive FIFO mailbox identifier
+          register</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <access>read-only</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>STID</name>
+                <description>STID</description>
+                <bitOffset>21</bitOffset>
+                <bitWidth>11</bitWidth>
+              </field>
+              <field>
+                <name>EXID</name>
+                <description>EXID</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>18</bitWidth>
+              </field>
+              <field>
+                <name>IDE</name>
+                <description>IDE</description>
+                <bitOffset>2</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>IDE</name>
+                  <usage>read</usage>
+                  <enumeratedValue>
+                    <name>Standard</name>
+                    <description>Standard identifier</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Extended</name>
+                    <description>Extended identifier</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>RTR</name>
+                <description>RTR</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>RTR</name>
+                  <usage>read</usage>
+                  <enumeratedValue>
+                    <name>Data</name>
+                    <description>Data frame</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Remote</name>
+                    <description>Remote frame</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>RDTR</name>
+            <displayName>RDT0R</displayName>
+            <description>mailbox data high register</description>
+            <addressOffset>0x4</addressOffset>
+            <size>0x20</size>
+            <access>read-only</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>TIME</name>
+                <description>TIME</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>16</bitWidth>
+              </field>
+              <field>
+                <name>FMI</name>
+                <description>FMI</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>8</bitWidth>
+              </field>
+              <field>
+                <name>DLC</name>
+                <description>DLC</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>4</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>8</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>RDLR</name>
+            <displayName>RDL0R</displayName>
+            <description>mailbox data high register</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <access>read-only</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <dim>4</dim>
+                <dimIncrement>0x8</dimIncrement>
+                <dimIndex>0-3</dimIndex>
+                <name>DATA%s</name>
+                <description>DATA%s</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>8</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>RDHR</name>
+            <displayName>RDH0R</displayName>
+            <description>receive FIFO mailbox data high
+          register</description>
+            <addressOffset>0xC</addressOffset>
+            <size>0x20</size>
+            <access>read-only</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <dim>4</dim>
+                <dimIncrement>0x8</dimIncrement>
+                <dimIndex>4-7</dimIndex>
+                <name>DATA%s</name>
+                <description>DATA%s</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>8</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+        <register>
+          <name>FMR</name>
+          <displayName>FMR</displayName>
+          <description>filter master register</description>
+          <addressOffset>0x200</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x2A1C0E01</resetValue>
+          <fields>
+            <field>
+              <name>CAN2SB</name>
+              <description>CAN2SB</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>6</bitWidth>
+            </field>
+            <field>
+              <name>FINIT</name>
+              <description>FINIT</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>FM1R</name>
+          <displayName>FM1R</displayName>
+          <description>filter mode register</description>
+          <addressOffset>0x204</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>28</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-27</dimIndex>
+              <name>FBM%s</name>
+              <description>Filter mode</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>FS1R</name>
+          <displayName>FS1R</displayName>
+          <description>filter scale register</description>
+          <addressOffset>0x20C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>28</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-27</dimIndex>
+              <name>FSC%s</name>
+              <description>Filter scale configuration</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>FFA1R</name>
+          <displayName>FFA1R</displayName>
+          <description>filter FIFO assignment
+          register</description>
+          <addressOffset>0x214</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>28</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-27</dimIndex>
+              <name>FFA%s</name>
+              <description>Filter FIFO assignment for filter %s</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>FA1R</name>
+          <displayName>FA1R</displayName>
+          <description>filter activation register</description>
+          <addressOffset>0x21C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <dim>28</dim>
+              <dimIncrement>0x1</dimIncrement>
+              <dimIndex>0-27</dimIndex>
+              <name>FACT%s</name>
+              <description>Filter active</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <cluster>
+          <dim>28</dim>
+          <dimIncrement>0x8</dimIncrement>
+          <dimIndex>0-27</dimIndex>
+          <name>FB%s</name>
+          <description>CAN Filter Bank cluster</description>
+          <addressOffset>0x240</addressOffset>
+          <register>
+            <name>FR1</name>
+            <displayName>F0R1</displayName>
+            <description>Filter bank x register 1</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>FB</name>
+                <description>Filter bits</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>FR2</name>
+            <displayName>F0R2</displayName>
+            <description>Filter bank x register 2</description>
+            <addressOffset>0x4</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>FB</name>
+                <description>Filter bits</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+      </registers>
+    </peripheral>
+    <peripheral derivedFrom="CAN1">
+      <name>CAN2</name>
+      <baseAddress>0x40006800</baseAddress>
+      <interrupt>
+        <name>CAN2_TX</name>
+        <description>CAN2 TX interrupts</description>
+        <value>63</value>
+      </interrupt>
+      <interrupt>
+        <name>CAN2_RX0</name>
+        <description>CAN2 RX0 interrupts</description>
+        <value>64</value>
+      </interrupt>
+      <interrupt>
+        <name>CAN2_RX1</name>
+        <description>CAN2 RX1 interrupts</description>
+        <value>65</value>
+      </interrupt>
+      <interrupt>
+        <name>CAN2_SCE</name>
+        <description>CAN2 SCE interrupt</description>
+        <value>66</value>
+      </interrupt>
+    </peripheral>
+    <peripheral>
+      <name>FLASH</name>
+      <description>FLASH</description>
+      <groupName>FLASH</groupName>
+      <baseAddress>0x40023C00</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>ACR</name>
+          <displayName>ACR</displayName>
+          <description>Flash access control register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>LATENCY</name>
+              <description>Latency</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>LATENCY</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>WS0</name>
+                  <description>0 wait states</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>WS1</name>
+                  <description>1 wait states</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>WS2</name>
+                  <description>2 wait states</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>WS3</name>
+                  <description>3 wait states</description>
+                  <value>3</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>WS4</name>
+                  <description>4 wait states</description>
+                  <value>4</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>WS5</name>
+                  <description>5 wait states</description>
+                  <value>5</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>WS6</name>
+                  <description>6 wait states</description>
+                  <value>6</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>WS7</name>
+                  <description>7 wait states</description>
+                  <value>7</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PRFTEN</name>
+              <description>Prefetch enable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>PRFTEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Prefetch is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Prefetch is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ICEN</name>
+              <description>Instruction cache enable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>ICEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Instruction cache is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Instruction cache is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DCEN</name>
+              <description>Data cache enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>DCEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Data cache is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Data cache is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ICRST</name>
+              <description>Instruction cache reset</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+              <enumeratedValues>
+                <name>ICRST</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>NotReset</name>
+                  <description>Instruction cache is not reset</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>Instruction cache is reset</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DCRST</name>
+              <description>Data cache reset</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>DCRST</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NotReset</name>
+                  <description>Data cache is not reset</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Reset</name>
+                  <description>Data cache is reset</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>KEYR</name>
+          <displayName>KEYR</displayName>
+          <description>Flash key register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>KEY</name>
+              <description>FPEC key</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>OPTKEYR</name>
+          <displayName>OPTKEYR</displayName>
+          <description>Flash option key register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OPTKEY</name>
+              <description>Option byte key</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4294967295</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>Status register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>EOP</name>
+              <description>End of operation</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>EOPW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear error flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>OPERR</name>
+              <description>Operation error</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>OPERRW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear error flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>WRPERR</name>
+              <description>Write protection error</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>WRPERRW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear error flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PGAERR</name>
+              <description>Programming alignment
+              error</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>PGAERRW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear error flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PGPERR</name>
+              <description>Programming parallelism
+              error</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>PGPERRW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear error flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PGSERR</name>
+              <description>Programming sequence error</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>PGSERRW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clear error flag</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>BSY</name>
+              <description>Busy</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+              <enumeratedValues>
+                <name>BSYR</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotBusy</name>
+                  <description>no Flash memory operation ongoing</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Busy</name>
+                  <description>Flash memory operation ongoing</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CR</name>
+          <displayName>CR</displayName>
+          <description>Control register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x80000000</resetValue>
+          <fields>
+            <field>
+              <name>PG</name>
+              <description>Programming</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>PG</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Program</name>
+                  <description>Flash programming activated</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SER</name>
+              <description>Sector Erase</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SER</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>SectorErase</name>
+                  <description>Erase activated for selected sector</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MER</name>
+              <description>Mass Erase</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MER</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>MassErase</name>
+                  <description>Erase activated for all user sectors</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SNB</name>
+              <description>Sector number</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>4</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>11</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>PSIZE</name>
+              <description>Program size</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <enumeratedValues>
+                <name>PSIZE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>PSIZE8</name>
+                  <description>Program x8</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PSIZE16</name>
+                  <description>Program x16</description>
+                  <value>1</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PSIZE32</name>
+                  <description>Program x32</description>
+                  <value>2</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>PSIZE64</name>
+                  <description>Program x64</description>
+                  <value>3</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>STRT</name>
+              <description>Start</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>STRT</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Start</name>
+                  <description>Trigger an erase operation</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>EOPIE</name>
+              <description>End of operation interrupt
+              enable</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>EOPIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>End of operation interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>End of operation interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>ERRIE</name>
+              <description>Error interrupt enable</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>ERRIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Error interrupt generation disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Error interrupt generation enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LOCK</name>
+              <description>Lock</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LOCK</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Unlocked</name>
+                  <description>FLASH_CR register is unlocked</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Locked</name>
+                  <description>FLASH_CR register is locked</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>OPTCR</name>
+          <displayName>OPTCR</displayName>
+          <description>Flash option control register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000014</resetValue>
+          <fields>
+            <field>
+              <name>OPTLOCK</name>
+              <description>Option lock</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OPTSTRT</name>
+              <description>Option start</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>BOR_LEV</name>
+              <description>BOR reset Level</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>WDG_SW</name>
+              <description>WDG_SW User option bytes</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>nRST_STOP</name>
+              <description>nRST_STOP User option
+              bytes</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>nRST_STDBY</name>
+              <description>nRST_STDBY User option
+              bytes</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>RDP</name>
+              <description>Read protect</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>nWRP</name>
+              <description>Not write protect</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>12</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>EXTI</name>
+      <description>External interrupt/event
+      controller</description>
+      <groupName>EXTI</groupName>
+      <baseAddress>0x40013C00</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>TAMP_STAMP</name>
+        <description>Tamper and TimeStamp interrupts through the
+        EXTI line</description>
+        <value>2</value>
+      </interrupt>
+      <interrupt>
+        <name>EXTI0</name>
+        <description>EXTI Line0 interrupt</description>
+        <value>6</value>
+      </interrupt>
+      <interrupt>
+        <name>EXTI1</name>
+        <description>EXTI Line1 interrupt</description>
+        <value>7</value>
+      </interrupt>
+      <interrupt>
+        <name>EXTI2</name>
+        <description>EXTI Line2 interrupt</description>
+        <value>8</value>
+      </interrupt>
+      <interrupt>
+        <name>EXTI3</name>
+        <description>EXTI Line3 interrupt</description>
+        <value>9</value>
+      </interrupt>
+      <interrupt>
+        <name>EXTI4</name>
+        <description>EXTI Line4 interrupt</description>
+        <value>10</value>
+      </interrupt>
+      <interrupt>
+        <name>EXTI9_5</name>
+        <description>EXTI Line[9:5] interrupts</description>
+        <value>23</value>
+      </interrupt>
+      <interrupt>
+        <name>EXTI9_5</name>
+        <description>EXTI Line[9:5] interrupts</description>
+        <value>23</value>
+      </interrupt>
+      <interrupt>
+        <name>EXTI15_10</name>
+        <description>EXTI Line[15:10] interrupts</description>
+        <value>40</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>IMR</name>
+          <displayName>IMR</displayName>
+          <description>Interrupt mask register
+          (EXTI_IMR)</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>MR0</name>
+              <description>Interrupt Mask on line 0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MR0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Masked</name>
+                  <description>Interrupt request line is masked</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Unmasked</name>
+                  <description>Interrupt request line is unmasked</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MR1</name>
+              <description>Interrupt Mask on line 1</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR2</name>
+              <description>Interrupt Mask on line 2</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR3</name>
+              <description>Interrupt Mask on line 3</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR4</name>
+              <description>Interrupt Mask on line 4</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR5</name>
+              <description>Interrupt Mask on line 5</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR6</name>
+              <description>Interrupt Mask on line 6</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR7</name>
+              <description>Interrupt Mask on line 7</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR8</name>
+              <description>Interrupt Mask on line 8</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR9</name>
+              <description>Interrupt Mask on line 9</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR10</name>
+              <description>Interrupt Mask on line 10</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR11</name>
+              <description>Interrupt Mask on line 11</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR12</name>
+              <description>Interrupt Mask on line 12</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR13</name>
+              <description>Interrupt Mask on line 13</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR14</name>
+              <description>Interrupt Mask on line 14</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR15</name>
+              <description>Interrupt Mask on line 15</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR16</name>
+              <description>Interrupt Mask on line 16</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR17</name>
+              <description>Interrupt Mask on line 17</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR18</name>
+              <description>Interrupt Mask on line 18</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR19</name>
+              <description>Interrupt Mask on line 19</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR20</name>
+              <description>Interrupt Mask on line 20</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR21</name>
+              <description>Interrupt Mask on line 21</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR22</name>
+              <description>Interrupt Mask on line 22</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>EMR</name>
+          <displayName>EMR</displayName>
+          <description>Event mask register (EXTI_EMR)</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>MR0</name>
+              <description>Event Mask on line 0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>MR0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Masked</name>
+                  <description>Interrupt request line is masked</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Unmasked</name>
+                  <description>Interrupt request line is unmasked</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>MR1</name>
+              <description>Event Mask on line 1</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR2</name>
+              <description>Event Mask on line 2</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR3</name>
+              <description>Event Mask on line 3</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR4</name>
+              <description>Event Mask on line 4</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR5</name>
+              <description>Event Mask on line 5</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR6</name>
+              <description>Event Mask on line 6</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR7</name>
+              <description>Event Mask on line 7</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR8</name>
+              <description>Event Mask on line 8</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR9</name>
+              <description>Event Mask on line 9</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR10</name>
+              <description>Event Mask on line 10</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR11</name>
+              <description>Event Mask on line 11</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR12</name>
+              <description>Event Mask on line 12</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR13</name>
+              <description>Event Mask on line 13</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR14</name>
+              <description>Event Mask on line 14</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR15</name>
+              <description>Event Mask on line 15</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR16</name>
+              <description>Event Mask on line 16</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR17</name>
+              <description>Event Mask on line 17</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR18</name>
+              <description>Event Mask on line 18</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR19</name>
+              <description>Event Mask on line 19</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR20</name>
+              <description>Event Mask on line 20</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR21</name>
+              <description>Event Mask on line 21</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+            <field>
+              <name>MR22</name>
+              <description>Event Mask on line 22</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="MR0"/>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>RTSR</name>
+          <displayName>RTSR</displayName>
+          <description>Rising Trigger selection register
+          (EXTI_RTSR)</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TR0</name>
+              <description>Rising trigger event configuration of
+              line 0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TR0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Rising edge trigger is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Rising edge trigger is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TR1</name>
+              <description>Rising trigger event configuration of
+              line 1</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR2</name>
+              <description>Rising trigger event configuration of
+              line 2</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR3</name>
+              <description>Rising trigger event configuration of
+              line 3</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR4</name>
+              <description>Rising trigger event configuration of
+              line 4</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR5</name>
+              <description>Rising trigger event configuration of
+              line 5</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR6</name>
+              <description>Rising trigger event configuration of
+              line 6</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR7</name>
+              <description>Rising trigger event configuration of
+              line 7</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR8</name>
+              <description>Rising trigger event configuration of
+              line 8</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR9</name>
+              <description>Rising trigger event configuration of
+              line 9</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR10</name>
+              <description>Rising trigger event configuration of
+              line 10</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR11</name>
+              <description>Rising trigger event configuration of
+              line 11</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR12</name>
+              <description>Rising trigger event configuration of
+              line 12</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR13</name>
+              <description>Rising trigger event configuration of
+              line 13</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR14</name>
+              <description>Rising trigger event configuration of
+              line 14</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR15</name>
+              <description>Rising trigger event configuration of
+              line 15</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR16</name>
+              <description>Rising trigger event configuration of
+              line 16</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR17</name>
+              <description>Rising trigger event configuration of
+              line 17</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR18</name>
+              <description>Rising trigger event configuration of
+              line 18</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR19</name>
+              <description>Rising trigger event configuration of
+              line 19</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR20</name>
+              <description>Rising trigger event configuration of
+              line 20</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR21</name>
+              <description>Rising trigger event configuration of
+              line 21</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR22</name>
+              <description>Rising trigger event configuration of
+              line 22</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>FTSR</name>
+          <displayName>FTSR</displayName>
+          <description>Falling Trigger selection register
+          (EXTI_FTSR)</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TR0</name>
+              <description>Falling trigger event configuration of
+              line 0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TR0</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Falling edge trigger is disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Falling edge trigger is enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TR1</name>
+              <description>Falling trigger event configuration of
+              line 1</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR2</name>
+              <description>Falling trigger event configuration of
+              line 2</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR3</name>
+              <description>Falling trigger event configuration of
+              line 3</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR4</name>
+              <description>Falling trigger event configuration of
+              line 4</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR5</name>
+              <description>Falling trigger event configuration of
+              line 5</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR6</name>
+              <description>Falling trigger event configuration of
+              line 6</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR7</name>
+              <description>Falling trigger event configuration of
+              line 7</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR8</name>
+              <description>Falling trigger event configuration of
+              line 8</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR9</name>
+              <description>Falling trigger event configuration of
+              line 9</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR10</name>
+              <description>Falling trigger event configuration of
+              line 10</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR11</name>
+              <description>Falling trigger event configuration of
+              line 11</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR12</name>
+              <description>Falling trigger event configuration of
+              line 12</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR13</name>
+              <description>Falling trigger event configuration of
+              line 13</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR14</name>
+              <description>Falling trigger event configuration of
+              line 14</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR15</name>
+              <description>Falling trigger event configuration of
+              line 15</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR16</name>
+              <description>Falling trigger event configuration of
+              line 16</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR17</name>
+              <description>Falling trigger event configuration of
+              line 17</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR18</name>
+              <description>Falling trigger event configuration of
+              line 18</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR19</name>
+              <description>Falling trigger event configuration of
+              line 19</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR20</name>
+              <description>Falling trigger event configuration of
+              line 20</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR21</name>
+              <description>Falling trigger event configuration of
+              line 21</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+            <field>
+              <name>TR22</name>
+              <description>Falling trigger event configuration of
+              line 22</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="TR0"/>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SWIER</name>
+          <displayName>SWIER</displayName>
+          <description>Software interrupt event register
+          (EXTI_SWIER)</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SWIER0</name>
+              <description>Software Interrupt on line
+              0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>SWIER0W</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Pend</name>
+                  <description>Generates an interrupt request</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>SWIER1</name>
+              <description>Software Interrupt on line
+              1</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER2</name>
+              <description>Software Interrupt on line
+              2</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER3</name>
+              <description>Software Interrupt on line
+              3</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER4</name>
+              <description>Software Interrupt on line
+              4</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER5</name>
+              <description>Software Interrupt on line
+              5</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER6</name>
+              <description>Software Interrupt on line
+              6</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER7</name>
+              <description>Software Interrupt on line
+              7</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER8</name>
+              <description>Software Interrupt on line
+              8</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER9</name>
+              <description>Software Interrupt on line
+              9</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER10</name>
+              <description>Software Interrupt on line
+              10</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER11</name>
+              <description>Software Interrupt on line
+              11</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER12</name>
+              <description>Software Interrupt on line
+              12</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER13</name>
+              <description>Software Interrupt on line
+              13</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER14</name>
+              <description>Software Interrupt on line
+              14</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER15</name>
+              <description>Software Interrupt on line
+              15</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER16</name>
+              <description>Software Interrupt on line
+              16</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER17</name>
+              <description>Software Interrupt on line
+              17</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER18</name>
+              <description>Software Interrupt on line
+              18</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER19</name>
+              <description>Software Interrupt on line
+              19</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER20</name>
+              <description>Software Interrupt on line
+              20</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER21</name>
+              <description>Software Interrupt on line
+              21</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+            <field>
+              <name>SWIER22</name>
+              <description>Software Interrupt on line
+              22</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues derivedFrom="SWIER0W"/>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>PR</name>
+          <displayName>PR</displayName>
+          <description>Pending register (EXTI_PR)</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PR0</name>
+              <description>Pending bit 0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>PR0R</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotPending</name>
+                  <description>No trigger request occurred</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Pending</name>
+                  <description>Selected trigger request occurred</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+              <enumeratedValues>
+                <name>PR0W</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clears pending bit</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR1</name>
+              <description>Pending bit 1</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR2</name>
+              <description>Pending bit 2</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR3</name>
+              <description>Pending bit 3</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR4</name>
+              <description>Pending bit 4</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR5</name>
+              <description>Pending bit 5</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR6</name>
+              <description>Pending bit 6</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR7</name>
+              <description>Pending bit 7</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR8</name>
+              <description>Pending bit 8</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR9</name>
+              <description>Pending bit 9</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR10</name>
+              <description>Pending bit 10</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR11</name>
+              <description>Pending bit 11</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR12</name>
+              <description>Pending bit 12</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR13</name>
+              <description>Pending bit 13</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR14</name>
+              <description>Pending bit 14</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR15</name>
+              <description>Pending bit 15</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR16</name>
+              <description>Pending bit 16</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR17</name>
+              <description>Pending bit 17</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR18</name>
+              <description>Pending bit 18</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR19</name>
+              <description>Pending bit 19</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR20</name>
+              <description>Pending bit 20</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR21</name>
+              <description>Pending bit 21</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PR22</name>
+              <description>Pending bit 22</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues derivedFrom="PR0R">
+                <usage>read</usage>
+              </enumeratedValues>
+              <enumeratedValues derivedFrom="PR0W">
+                <usage>write</usage>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>OTG_HS_GLOBAL</name>
+      <description>USB on the go high speed</description>
+      <groupName>USB_OTG_HS</groupName>
+      <baseAddress>0x40040000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x131</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>OTG_HS_EP1_OUT</name>
+        <description>USB On The Go HS End Point 1 Out global
+        interrupt</description>
+        <value>74</value>
+      </interrupt>
+      <interrupt>
+        <name>OTG_HS_EP1_IN</name>
+        <description>USB On The Go HS End Point 1 In global
+        interrupt</description>
+        <value>75</value>
+      </interrupt>
+      <interrupt>
+        <name>OTG_HS_WKUP</name>
+        <description>USB On The Go HS Wakeup through EXTI
+        interrupt</description>
+        <value>76</value>
+      </interrupt>
+      <interrupt>
+        <name>OTG_HS</name>
+        <description>USB On The Go HS global
+        interrupt</description>
+        <value>77</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>GOTGCTL</name>
+          <displayName>GOTGCTL</displayName>
+          <description>OTG_HS control and status
+          register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000800</resetValue>
+          <fields>
+            <field>
+              <name>SRQSCS</name>
+              <description>Session request success</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>SRQ</name>
+              <description>Session request</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>HNGSCS</name>
+              <description>Host negotiation success</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>HNPRQ</name>
+              <description>HNP request</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>HSHNPEN</name>
+              <description>Host set HNP enable</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>DHNPEN</name>
+              <description>Device HNP enabled</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>CIDSTS</name>
+              <description>Connector ID status</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>DBCT</name>
+              <description>Long/short debounce time</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>ASVLD</name>
+              <description>A-session valid</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>BSVLD</name>
+              <description>B-session valid</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GOTGINT</name>
+          <displayName>GOTGINT</displayName>
+          <description>OTG_HS interrupt register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SEDET</name>
+              <description>Session end detected</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>SRSSCHG</name>
+              <description>Session request success status
+              change</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>HNSSCHG</name>
+              <description>Host negotiation success status
+              change</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>HNGDET</name>
+              <description>Host negotiation detected</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ADTOCHG</name>
+              <description>A-device timeout change</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DBCDNE</name>
+              <description>Debounce done</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GAHBCFG</name>
+          <displayName>GAHBCFG</displayName>
+          <description>OTG_HS AHB configuration
+          register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>GINT</name>
+              <description>Global interrupt mask</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>HBSTLEN</name>
+              <description>Burst length/type</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>DMAEN</name>
+              <description>DMA enable</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TXFELVL</name>
+              <description>TxFIFO empty level</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PTXFELVL</name>
+              <description>Periodic TxFIFO empty
+              level</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GUSBCFG</name>
+          <displayName>GUSBCFG</displayName>
+          <description>OTG_HS USB configuration
+          register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000A00</resetValue>
+          <fields>
+            <field>
+              <name>TOCAL</name>
+              <description>FS timeout calibration</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PHYSEL</name>
+              <description>USB 2.0 high-speed ULPI PHY or USB 1.1
+              full-speed serial transceiver select</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+            </field>
+            <field>
+              <name>SRPCAP</name>
+              <description>SRP-capable</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>HNPCAP</name>
+              <description>HNP-capable</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TRDT</name>
+              <description>USB turnaround time</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>4</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PHYLPCS</name>
+              <description>PHY Low-power clock select</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ULPIFSLS</name>
+              <description>ULPI FS/LS select</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ULPIAR</name>
+              <description>ULPI Auto-resume</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ULPICSM</name>
+              <description>ULPI Clock SuspendM</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ULPIEVBUSD</name>
+              <description>ULPI External VBUS Drive</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ULPIEVBUSI</name>
+              <description>ULPI external VBUS
+              indicator</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TSDPS</name>
+              <description>TermSel DLine pulsing
+              selection</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PCCI</name>
+              <description>Indicator complement</description>
+              <bitOffset>23</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PTCI</name>
+              <description>Indicator pass through</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ULPIIPD</name>
+              <description>ULPI interface protect
+              disable</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>FHMOD</name>
+              <description>Forced host mode</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>FDMOD</name>
+              <description>Forced peripheral mode</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>CTXPKT</name>
+              <description>Corrupt Tx packet</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GRSTCTL</name>
+          <displayName>GRSTCTL</displayName>
+          <description>OTG_HS reset register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x20000000</resetValue>
+          <fields>
+            <field>
+              <name>CSRST</name>
+              <description>Core soft reset</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>HSRST</name>
+              <description>HCLK soft reset</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>FCRST</name>
+              <description>Host frame counter reset</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>RXFFLSH</name>
+              <description>RxFIFO flush</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TXFFLSH</name>
+              <description>TxFIFO flush</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>TXFNUM</name>
+              <description>TxFIFO number</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>5</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>DMAREQ</name>
+              <description>DMA request signal</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>AHBIDL</name>
+              <description>AHB master idle</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GINTSTS</name>
+          <displayName>GINTSTS</displayName>
+          <description>OTG_HS core interrupt register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x04000020</resetValue>
+          <fields>
+            <field>
+              <name>CMOD</name>
+              <description>Current mode of operation</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>MMIS</name>
+              <description>Mode mismatch interrupt</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>OTGINT</name>
+              <description>OTG interrupt</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>SOF</name>
+              <description>Start of frame</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>RXFLVL</name>
+              <description>RxFIFO nonempty</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>NPTXFE</name>
+              <description>Nonperiodic TxFIFO empty</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>GINAKEFF</name>
+              <description>Global IN nonperiodic NAK
+              effective</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>BOUTNAKEFF</name>
+              <description>Global OUT NAK effective</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>ESUSP</name>
+              <description>Early suspend</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>USBSUSP</name>
+              <description>USB suspend</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>USBRST</name>
+              <description>USB reset</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ENUMDNE</name>
+              <description>Enumeration done</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ISOODRP</name>
+              <description>Isochronous OUT packet dropped
+              interrupt</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>EOPF</name>
+              <description>End of periodic frame
+              interrupt</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>IEPINT</name>
+              <description>IN endpoint interrupt</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>OEPINT</name>
+              <description>OUT endpoint interrupt</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>IISOIXFR</name>
+              <description>Incomplete isochronous IN
+              transfer</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PXFR_INCOMPISOOUT</name>
+              <description>Incomplete periodic
+              transfer</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>DATAFSUSP</name>
+              <description>Data fetch suspended</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>HPRTINT</name>
+              <description>Host port interrupt</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>HCINT</name>
+              <description>Host channels interrupt</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>PTXFE</name>
+              <description>Periodic TxFIFO empty</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>CIDSCHG</name>
+              <description>Connector ID status change</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>DISCINT</name>
+              <description>Disconnect detected
+              interrupt</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>SRQINT</name>
+              <description>Session request/new session detected
+              interrupt</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>WKUINT</name>
+              <description>Resume/remote wakeup detected
+              interrupt</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GINTMSK</name>
+          <displayName>GINTMSK</displayName>
+          <description>OTG_HS interrupt mask register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>MMISM</name>
+              <description>Mode mismatch interrupt
+              mask</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>OTGINT</name>
+              <description>OTG interrupt mask</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>SOFM</name>
+              <description>Start of frame mask</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>RXFLVLM</name>
+              <description>Receive FIFO nonempty mask</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>NPTXFEM</name>
+              <description>Nonperiodic TxFIFO empty
+              mask</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>GINAKEFFM</name>
+              <description>Global nonperiodic IN NAK effective
+              mask</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>GONAKEFFM</name>
+              <description>Global OUT NAK effective
+              mask</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ESUSPM</name>
+              <description>Early suspend mask</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>USBSUSPM</name>
+              <description>USB suspend mask</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>USBRST</name>
+              <description>USB reset mask</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ENUMDNEM</name>
+              <description>Enumeration done mask</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ISOODRPM</name>
+              <description>Isochronous OUT packet dropped interrupt
+              mask</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>EOPFM</name>
+              <description>End of periodic frame interrupt
+              mask</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>EPMISM</name>
+              <description>Endpoint mismatch interrupt
+              mask</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>IEPINT</name>
+              <description>IN endpoints interrupt
+              mask</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>OEPINT</name>
+              <description>OUT endpoints interrupt
+              mask</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>IISOIXFRM</name>
+              <description>Incomplete isochronous IN transfer
+              mask</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PXFRM_IISOOXFRM</name>
+              <description>Incomplete periodic transfer
+              mask</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>FSUSPM</name>
+              <description>Data fetch suspended mask</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PRTIM</name>
+              <description>Host port interrupt mask</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>HCIM</name>
+              <description>Host channels interrupt
+              mask</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PTXFEM</name>
+              <description>Periodic TxFIFO empty mask</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>CIDSCHGM</name>
+              <description>Connector ID status change
+              mask</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>DISCINT</name>
+              <description>Disconnect detected interrupt
+              mask</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>SRQIM</name>
+              <description>Session request/new session detected
+              interrupt mask</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>WUIM</name>
+              <description>Resume/remote wakeup detected interrupt
+              mask</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GRXSTSR_Host</name>
+          <displayName>GRXSTSR_Host</displayName>
+          <description>OTG_HS Receive status debug read register
+          (host mode)</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CHNUM</name>
+              <description>Channel number</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>BCNT</name>
+              <description>Byte count</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>11</bitWidth>
+            </field>
+            <field>
+              <name>DPID</name>
+              <description>Data PID</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>PKTSTS</name>
+              <description>Packet status</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GRXSTSP_Host</name>
+          <displayName>GRXSTSP_Host</displayName>
+          <description>OTG_HS status read and pop register (host
+          mode)</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CHNUM</name>
+              <description>Channel number</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>BCNT</name>
+              <description>Byte count</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>11</bitWidth>
+            </field>
+            <field>
+              <name>DPID</name>
+              <description>Data PID</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>PKTSTS</name>
+              <description>Packet status</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GRXFSIZ</name>
+          <displayName>GRXFSIZ</displayName>
+          <description>OTG_HS Receive FIFO size
+          register</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000200</resetValue>
+          <fields>
+            <field>
+              <name>RXFD</name>
+              <description>RxFIFO depth</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HNPTXFSIZ</name>
+          <displayName>HNPTXFSIZ</displayName>
+          <description>OTG_HS nonperiodic transmit FIFO size
+          register (host mode)</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000200</resetValue>
+          <fields>
+            <field>
+              <name>NPTXFSA</name>
+              <description>Nonperiodic transmit RAM start
+              address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>NPTXFD</name>
+              <description>Nonperiodic TxFIFO depth</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIEPTXF0</name>
+          <displayName>DIEPTXF0</displayName>
+          <description>Endpoint 0 transmit FIFO size (peripheral
+          mode)</description>
+          <alternateRegister>HNPTXFSIZ</alternateRegister>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000200</resetValue>
+          <fields>
+            <field>
+              <name>TX0FSA</name>
+              <description>Endpoint 0 transmit RAM start
+              address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>TX0FD</name>
+              <description>Endpoint 0 TxFIFO depth</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HNPTXSTS</name>
+          <displayName>GNPTXSTS</displayName>
+          <description>OTG_HS nonperiodic transmit FIFO/queue
+          status register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00080200</resetValue>
+          <fields>
+            <field>
+              <name>NPTXFSAV</name>
+              <description>Nonperiodic TxFIFO space
+              available</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>NPTQXSAV</name>
+              <description>Nonperiodic transmit request queue space
+              available</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>NPTXQTOP</name>
+              <description>Top of the nonperiodic transmit request
+              queue</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>7</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GCCFG</name>
+          <displayName>GCCFG</displayName>
+          <description>OTG_HS general core configuration
+          register</description>
+          <addressOffset>0x38</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PWRDWN</name>
+              <description>Power down</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>I2CPADEN</name>
+              <description>Enable I2C bus connection for the
+              external I2C PHY interface</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>VBUSASEN</name>
+              <description>Enable the VBUS sensing
+              device</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>VBUSBSEN</name>
+              <description>Enable the VBUS sensing
+              device</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>SOFOUTEN</name>
+              <description>SOF output enable</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>NOVBUSSENS</name>
+              <description>VBUS sensing disable
+              option</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CID</name>
+          <displayName>CID</displayName>
+          <description>OTG_HS core ID register</description>
+          <addressOffset>0x3C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00001200</resetValue>
+          <fields>
+            <field>
+              <name>PRODUCT_ID</name>
+              <description>Product ID field</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HPTXFSIZ</name>
+          <displayName>HPTXFSIZ</displayName>
+          <description>OTG_HS Host periodic transmit FIFO size
+          register</description>
+          <addressOffset>0x100</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x02000600</resetValue>
+          <fields>
+            <field>
+              <name>PTXSA</name>
+              <description>Host periodic TxFIFO start
+              address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>PTXFD</name>
+              <description>Host periodic TxFIFO depth</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>5</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>1-5</dimIndex>
+          <name>DIEPTXF%s</name>
+          <displayName>DIEPTXF1</displayName>
+          <description>OTG_HS device IN endpoint transmit FIFO size
+          register</description>
+          <addressOffset>0x104</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x02000400</resetValue>
+          <fields>
+            <field>
+              <name>INEPTXSA</name>
+              <description>IN endpoint FIFOx transmit RAM start
+              address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>INEPTXFD</name>
+              <description>IN endpoint TxFIFO depth</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GRXSTSR_Device</name>
+          <displayName>GRXSTSR_Peripheral</displayName>
+          <description>OTG_HS Receive status debug read register
+          (peripheral mode mode)</description>
+          <alternateRegister>GRXSTSR_Host</alternateRegister>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>EPNUM</name>
+              <description>Endpoint number</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>BCNT</name>
+              <description>Byte count</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>11</bitWidth>
+            </field>
+            <field>
+              <name>DPID</name>
+              <description>Data PID</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>PKTSTS</name>
+              <description>Packet status</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>FRMNUM</name>
+              <description>Frame number</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GRXSTSP_Device</name>
+          <displayName>GRXSTSP_Peripheral</displayName>
+          <description>OTG_HS status read and pop register
+          (peripheral mode)</description>
+          <alternateRegister>GRXSTSP_Host</alternateRegister>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>EPNUM</name>
+              <description>Endpoint number</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>BCNT</name>
+              <description>Byte count</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>11</bitWidth>
+            </field>
+            <field>
+              <name>DPID</name>
+              <description>Data PID</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>PKTSTS</name>
+              <description>Packet status</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>FRMNUM</name>
+              <description>Frame number</description>
+              <bitOffset>21</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>OTG_HS_HOST</name>
+      <description>USB on the go high speed</description>
+      <groupName>USB_OTG_HS</groupName>
+      <baseAddress>0x40040400</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>HCFG</name>
+          <displayName>HCFG</displayName>
+          <description>OTG_HS host configuration
+          register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>FSLSPCS</name>
+              <description>FS/LS PHY clock select</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>FSLSS</name>
+              <description>FS- and LS-only support</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HFIR</name>
+          <displayName>HFIR</displayName>
+          <description>OTG_HS Host frame interval
+          register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x0000EA60</resetValue>
+          <fields>
+            <field>
+              <name>FRIVL</name>
+              <description>Frame interval</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HFNUM</name>
+          <displayName>HFNUM</displayName>
+          <description>OTG_HS host frame number/frame time
+          remaining register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00003FFF</resetValue>
+          <fields>
+            <field>
+              <name>FRNUM</name>
+              <description>Frame number</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>FTREM</name>
+              <description>Frame time remaining</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HPTXSTS</name>
+          <displayName>HPTXSTS</displayName>
+          <description>OTG_HS_Host periodic transmit FIFO/queue
+          status register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00080100</resetValue>
+          <fields>
+            <field>
+              <name>PTXFSAVL</name>
+              <description>Periodic transmit data FIFO space
+              available</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PTXQSAV</name>
+              <description>Periodic transmit request queue space
+              available</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>PTXQTOP</name>
+              <description>Top of the periodic transmit request
+              queue</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HAINT</name>
+          <displayName>HAINT</displayName>
+          <description>OTG_HS Host all channels interrupt
+          register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>HAINT</name>
+              <description>Channel interrupts</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HAINTMSK</name>
+          <displayName>HAINTMSK</displayName>
+          <description>OTG_HS host all channels interrupt mask
+          register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>HAINTM</name>
+              <description>Channel interrupt mask</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HPRT</name>
+          <displayName>HPRT</displayName>
+          <description>OTG_HS host port control and status
+          register</description>
+          <addressOffset>0x40</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PCSTS</name>
+              <description>Port connect status</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>PCDET</name>
+              <description>Port connect detected</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PENA</name>
+              <description>Port enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PENCHNG</name>
+              <description>Port enable/disable change</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>POCA</name>
+              <description>Port overcurrent active</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>POCCHNG</name>
+              <description>Port overcurrent change</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PRES</name>
+              <description>Port resume</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PSUSP</name>
+              <description>Port suspend</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PRST</name>
+              <description>Port reset</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PLSTS</name>
+              <description>Port line status</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>2</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>PPWR</name>
+              <description>Port power</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PTCTL</name>
+              <description>Port test control</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>4</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>PSPD</name>
+              <description>Port speed</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>2</bitWidth>
+              <access>read-only</access>
+            </field>
+          </fields>
+        </register>
+        <cluster>
+          <dim>12</dim>
+          <dimIncrement>0x20</dimIncrement>
+          <dimIndex>0-11</dimIndex>
+          <name>HC%s</name>
+          <description>Host channel</description>
+          <addressOffset>0x100</addressOffset>
+          <register>
+            <name>CHAR</name>
+            <displayName>HCCHAR0</displayName>
+            <description>OTG_HS host channel-0 characteristics
+          register</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>MPSIZ</name>
+                <description>Maximum packet size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>11</bitWidth>
+              </field>
+              <field>
+                <name>EPNUM</name>
+                <description>Endpoint number</description>
+                <bitOffset>11</bitOffset>
+                <bitWidth>4</bitWidth>
+              </field>
+              <field>
+                <name>EPDIR</name>
+                <description>Endpoint direction</description>
+                <bitOffset>15</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>LSDEV</name>
+                <description>Low-speed device</description>
+                <bitOffset>17</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>EPTYP</name>
+                <description>Endpoint type</description>
+                <bitOffset>18</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+              <field>
+                <name>MC</name>
+                <description>Multi Count (MC) / Error Count
+              (EC)</description>
+                <bitOffset>20</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+              <field>
+                <name>DAD</name>
+                <description>Device address</description>
+                <bitOffset>22</bitOffset>
+                <bitWidth>7</bitWidth>
+              </field>
+              <field>
+                <name>ODDFRM</name>
+                <description>Odd frame</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>CHDIS</name>
+                <description>Channel disable</description>
+                <bitOffset>30</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>CHENA</name>
+                <description>Channel enable</description>
+                <bitOffset>31</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>SPLT</name>
+            <displayName>HCSPLT0</displayName>
+            <description>OTG_HS host channel-0 split control
+          register</description>
+            <addressOffset>0x4</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>PRTADDR</name>
+                <description>Port address</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>7</bitWidth>
+              </field>
+              <field>
+                <name>HUBADDR</name>
+                <description>Hub address</description>
+                <bitOffset>7</bitOffset>
+                <bitWidth>7</bitWidth>
+              </field>
+              <field>
+                <name>XACTPOS</name>
+                <description>XACTPOS</description>
+                <bitOffset>14</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+              <field>
+                <name>COMPLSPLT</name>
+                <description>Do complete split</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>SPLITEN</name>
+                <description>Split enable</description>
+                <bitOffset>31</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>INT</name>
+            <displayName>HCINT0</displayName>
+            <description>OTG_HS host channel-11 interrupt
+          register</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>XFRC</name>
+                <description>Transfer completed</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>CHH</name>
+                <description>Channel halted</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>AHBERR</name>
+                <description>AHB error</description>
+                <bitOffset>2</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>STALL</name>
+                <description>STALL response received
+              interrupt</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>NAK</name>
+                <description>NAK response received
+              interrupt</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>ACK</name>
+                <description>ACK response received/transmitted
+              interrupt</description>
+                <bitOffset>5</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>NYET</name>
+                <description>Response received
+              interrupt</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>TXERR</name>
+                <description>Transaction error</description>
+                <bitOffset>7</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>BBERR</name>
+                <description>Babble error</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>FRMOR</name>
+                <description>Frame overrun</description>
+                <bitOffset>9</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>DTERR</name>
+                <description>Data toggle error</description>
+                <bitOffset>10</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>INTMSK</name>
+            <displayName>HCINTMSK0</displayName>
+            <description>OTG_HS host channel-11 interrupt mask
+          register</description>
+            <addressOffset>0xC</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>XFRCM</name>
+                <description>Transfer completed mask</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>CHHM</name>
+                <description>Channel halted mask</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>AHBERR</name>
+                <description>AHB error</description>
+                <bitOffset>2</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>STALLM</name>
+                <description>STALL response received interrupt
+              mask</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>NAKM</name>
+                <description>NAK response received interrupt
+              mask</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>ACKM</name>
+                <description>ACK response received/transmitted
+              interrupt mask</description>
+                <bitOffset>5</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>NYET</name>
+                <description>response received interrupt
+              mask</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>TXERRM</name>
+                <description>Transaction error mask</description>
+                <bitOffset>7</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>BBERRM</name>
+                <description>Babble error mask</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>FRMORM</name>
+                <description>Frame overrun mask</description>
+                <bitOffset>9</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>DTERRM</name>
+                <description>Data toggle error mask</description>
+                <bitOffset>10</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TSIZ</name>
+            <displayName>HCTSIZ0</displayName>
+            <description>OTG_HS host channel-11 transfer size
+          register</description>
+            <addressOffset>0x10</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>XFRSIZ</name>
+                <description>Transfer size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>19</bitWidth>
+              </field>
+              <field>
+                <name>PKTCNT</name>
+                <description>Packet count</description>
+                <bitOffset>19</bitOffset>
+                <bitWidth>10</bitWidth>
+              </field>
+              <field>
+                <name>DPID</name>
+                <description>Data PID</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>DMA</name>
+            <displayName>HCDMA0</displayName>
+            <description>OTG_HS host channel-0 DMA address
+          register</description>
+            <addressOffset>0x14</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>DMAADDR</name>
+                <description>DMA address</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>OTG_HS_DEVICE</name>
+      <description>USB on the go high speed</description>
+      <groupName>USB_OTG_HS</groupName>
+      <baseAddress>0x40040800</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>DCFG</name>
+          <displayName>DCFG</displayName>
+          <description>OTG_HS device configuration
+          register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x02200000</resetValue>
+          <fields>
+            <field>
+              <name>DSPD</name>
+              <description>Device speed</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>NZLSOHSK</name>
+              <description>Nonzero-length status OUT
+              handshake</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DAD</name>
+              <description>Device address</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>7</bitWidth>
+            </field>
+            <field>
+              <name>PFIVL</name>
+              <description>Periodic (micro)frame
+              interval</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>PERSCHIVL</name>
+              <description>Periodic scheduling
+              interval</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DCTL</name>
+          <displayName>DCTL</displayName>
+          <description>OTG_HS device control register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>RWUSIG</name>
+              <description>Remote wakeup signaling</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>SDIS</name>
+              <description>Soft disconnect</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>GINSTS</name>
+              <description>Global IN NAK status</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>GONSTS</name>
+              <description>Global OUT NAK status</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>TCTL</name>
+              <description>Test control</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>SGINAK</name>
+              <description>Set global IN NAK</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+            </field>
+            <field>
+              <name>CGINAK</name>
+              <description>Clear global IN NAK</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+            </field>
+            <field>
+              <name>SGONAK</name>
+              <description>Set global OUT NAK</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+            </field>
+            <field>
+              <name>CGONAK</name>
+              <description>Clear global OUT NAK</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+            </field>
+            <field>
+              <name>POPRGDNE</name>
+              <description>Power-on programming done</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DSTS</name>
+          <displayName>DSTS</displayName>
+          <description>OTG_HS device status register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000010</resetValue>
+          <fields>
+            <field>
+              <name>SUSPSTS</name>
+              <description>Suspend status</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ENUMSPD</name>
+              <description>Enumerated speed</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>EERR</name>
+              <description>Erratic error</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>FNSOF</name>
+              <description>Frame number of the received
+              SOF</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>14</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIEPMSK</name>
+          <displayName>DIEPMSK</displayName>
+          <description>OTG_HS device IN endpoint common interrupt
+          mask register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>XFRCM</name>
+              <description>Transfer completed interrupt
+              mask</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>EPDM</name>
+              <description>Endpoint disabled interrupt
+              mask</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TOM</name>
+              <description>Timeout condition mask (nonisochronous
+              endpoints)</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ITTXFEMSK</name>
+              <description>IN token received when TxFIFO empty
+              mask</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>INEPNMM</name>
+              <description>IN token received with EP mismatch
+              mask</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>INEPNEM</name>
+              <description>IN endpoint NAK effective
+              mask</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TXFURM</name>
+              <description>FIFO underrun mask</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>BIM</name>
+              <description>BNA interrupt mask</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DOEPMSK</name>
+          <displayName>DOEPMSK</displayName>
+          <description>OTG_HS device OUT endpoint common interrupt
+          mask register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>XFRCM</name>
+              <description>Transfer completed interrupt
+              mask</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>EPDM</name>
+              <description>Endpoint disabled interrupt
+              mask</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>STUPM</name>
+              <description>SETUP phase done mask</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OTEPDM</name>
+              <description>OUT token received when endpoint
+              disabled mask</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>B2BSTUP</name>
+              <description>Back-to-back SETUP packets received
+              mask</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OPEM</name>
+              <description>OUT packet error mask</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>BOIM</name>
+              <description>BNA interrupt mask</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DAINT</name>
+          <displayName>DAINT</displayName>
+          <description>OTG_HS device all endpoints interrupt
+          register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IEPINT</name>
+              <description>IN endpoint interrupt bits</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>OEPINT</name>
+              <description>OUT endpoint interrupt
+              bits</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DAINTMSK</name>
+          <displayName>DAINTMSK</displayName>
+          <description>OTG_HS all endpoints interrupt mask
+          register</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IEPM</name>
+              <description>IN EP interrupt mask bits</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>OEPM</name>
+              <description>OUT EP interrupt mask bits</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DVBUSDIS</name>
+          <displayName>DVBUSDIS</displayName>
+          <description>OTG_HS device VBUS discharge time
+          register</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x000017D7</resetValue>
+          <fields>
+            <field>
+              <name>VBUSDT</name>
+              <description>Device VBUS discharge time</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DVBUSPULSE</name>
+          <displayName>DVBUSPULSE</displayName>
+          <description>OTG_HS device VBUS pulsing time
+          register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x000005B8</resetValue>
+          <fields>
+            <field>
+              <name>DVBUSP</name>
+              <description>Device VBUS pulsing time</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>12</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DTHRCTL</name>
+          <displayName>DTHRCTL</displayName>
+          <description>OTG_HS Device threshold control
+          register</description>
+          <addressOffset>0x30</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>NONISOTHREN</name>
+              <description>Nonisochronous IN endpoints threshold
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ISOTHREN</name>
+              <description>ISO IN endpoint threshold
+              enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TXTHRLEN</name>
+              <description>Transmit threshold length</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>9</bitWidth>
+            </field>
+            <field>
+              <name>RXTHREN</name>
+              <description>Receive threshold enable</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>RXTHRLEN</name>
+              <description>Receive threshold length</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>9</bitWidth>
+            </field>
+            <field>
+              <name>ARPEN</name>
+              <description>Arbiter parking enable</description>
+              <bitOffset>27</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIEPEMPMSK</name>
+          <displayName>DIEPEMPMSK</displayName>
+          <description>OTG_HS device IN endpoint FIFO empty
+          interrupt mask register</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>INEPTXFEM</name>
+              <description>IN EP Tx FIFO empty interrupt mask
+              bits</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DEACHINT</name>
+          <displayName>DEACHINT</displayName>
+          <description>OTG_HS device each endpoint interrupt
+          register</description>
+          <addressOffset>0x38</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IEP1INT</name>
+              <description>IN endpoint 1interrupt bit</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OEP1INT</name>
+              <description>OUT endpoint 1 interrupt
+              bit</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DEACHINTMSK</name>
+          <displayName>DEACHINTMSK</displayName>
+          <description>OTG_HS device each endpoint interrupt
+          register mask</description>
+          <addressOffset>0x3C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IEP1INTM</name>
+              <description>IN Endpoint 1 interrupt mask
+              bit</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OEP1INTM</name>
+              <description>OUT Endpoint 1 interrupt mask
+              bit</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIEPEACHMSK1</name>
+          <displayName>DIEPEACHMSK1</displayName>
+          <description>OTG_HS device each in endpoint-1 interrupt
+          register</description>
+          <addressOffset>0x44</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>XFRCM</name>
+              <description>Transfer completed interrupt
+              mask</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>EPDM</name>
+              <description>Endpoint disabled interrupt
+              mask</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TOM</name>
+              <description>Timeout condition mask (nonisochronous
+              endpoints)</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ITTXFEMSK</name>
+              <description>IN token received when TxFIFO empty
+              mask</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>INEPNMM</name>
+              <description>IN token received with EP mismatch
+              mask</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>INEPNEM</name>
+              <description>IN endpoint NAK effective
+              mask</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TXFURM</name>
+              <description>FIFO underrun mask</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>BIM</name>
+              <description>BNA interrupt mask</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>NAKM</name>
+              <description>NAK interrupt mask</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DOEPEACHMSK1</name>
+          <displayName>DOEPEACHMSK1</displayName>
+          <description>OTG_HS device each OUT endpoint-1 interrupt
+          register</description>
+          <addressOffset>0x84</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>XFRCM</name>
+              <description>Transfer completed interrupt
+              mask</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>EPDM</name>
+              <description>Endpoint disabled interrupt
+              mask</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TOM</name>
+              <description>Timeout condition mask</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ITTXFEMSK</name>
+              <description>IN token received when TxFIFO empty
+              mask</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>INEPNMM</name>
+              <description>IN token received with EP mismatch
+              mask</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>INEPNEM</name>
+              <description>IN endpoint NAK effective
+              mask</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TXFURM</name>
+              <description>OUT packet error mask</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>BIM</name>
+              <description>BNA interrupt mask</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>BERRM</name>
+              <description>Bubble error interrupt
+              mask</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>NAKM</name>
+              <description>NAK interrupt mask</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>NYETM</name>
+              <description>NYET interrupt mask</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <cluster>
+          <name>DIEP0</name>
+          <description>Device IN endpoint 0</description>
+          <addressOffset>0x100</addressOffset>
+          <register>
+            <name>CTL</name>
+            <displayName>DIEPCTL0</displayName>
+            <description>OTG device endpoint-0 control
+          register</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>MPSIZ</name>
+                <description>Maximum packet size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>11</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>USBAEP</name>
+                <description>USB active endpoint</description>
+                <bitOffset>15</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EONUM_DPID</name>
+                <description>Even/odd frame</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>NAKSTS</name>
+                <description>NAK status</description>
+                <bitOffset>17</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>EPTYP</name>
+                <description>Endpoint type</description>
+                <bitOffset>18</bitOffset>
+                <bitWidth>2</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>STALL</name>
+                <description>STALL handshake</description>
+                <bitOffset>21</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>TXFNUM</name>
+                <description>TxFIFO number</description>
+                <bitOffset>22</bitOffset>
+                <bitWidth>4</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>CNAK</name>
+                <description>Clear NAK</description>
+                <bitOffset>26</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SNAK</name>
+                <description>Set NAK</description>
+                <bitOffset>27</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SD0PID_SEVNFRM</name>
+                <description>Set DATA0 PID</description>
+                <bitOffset>28</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SODDFRM</name>
+                <description>Set odd frame</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>EPDIS</name>
+                <description>Endpoint disable</description>
+                <bitOffset>30</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EPENA</name>
+                <description>Endpoint enable</description>
+                <bitOffset>31</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>INT</name>
+            <displayName>DIEPINT0</displayName>
+            <description>OTG device endpoint-0 interrupt
+          register</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <resetValue>0x00000080</resetValue>
+            <fields>
+              <field>
+                <name>XFRC</name>
+                <description>Transfer completed
+              interrupt</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EPDISD</name>
+                <description>Endpoint disabled
+              interrupt</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>TOC</name>
+                <description>Timeout condition</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>ITTXFE</name>
+                <description>IN token received when TxFIFO is
+              empty</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>INEPNE</name>
+                <description>IN endpoint NAK effective</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>TXFE</name>
+                <description>Transmit FIFO empty</description>
+                <bitOffset>7</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>TXFIFOUDRN</name>
+                <description>Transmit Fifo Underrun</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>BNA</name>
+                <description>Buffer not available
+              interrupt</description>
+                <bitOffset>9</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>PKTDRPSTS</name>
+                <description>Packet dropped status</description>
+                <bitOffset>11</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>BERR</name>
+                <description>Babble error interrupt</description>
+                <bitOffset>12</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>NAK</name>
+                <description>NAK interrupt</description>
+                <bitOffset>13</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TSIZ</name>
+            <displayName>DIEPTSIZ0</displayName>
+            <description>OTG_HS device IN endpoint 0 transfer size
+          register</description>
+            <addressOffset>0x10</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>XFRSIZ</name>
+                <description>Transfer size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>7</bitWidth>
+              </field>
+              <field>
+                <name>PKTCNT</name>
+                <description>Packet count</description>
+                <bitOffset>19</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>DMA</name>
+            <description>OTG_HS device endpoint-0 DMA address register</description>
+            <addressOffset>0x14</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>DMAADDR</name>
+                <description>DMA address</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TXFSTS</name>
+            <displayName>DTXFSTS0</displayName>
+            <description>OTG_HS device IN endpoint transmit FIFO
+          status register</description>
+            <addressOffset>0x18</addressOffset>
+            <size>0x20</size>
+            <access>read-only</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>INEPTFSAV</name>
+                <description>IN endpoint TxFIFO space
+              avail</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>16</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+        <cluster>
+          <dim>5</dim>
+          <dimIncrement>0x20</dimIncrement>
+          <dimIndex>1-5</dimIndex>
+          <name>DIEP%s</name>
+          <description>Device IN endpoint X</description>
+          <addressOffset>0x120</addressOffset>
+          <register>
+            <name>CTL</name>
+            <displayName>DIEPCTL1</displayName>
+            <description>OTG device endpoint-1 control
+          register</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>MPSIZ</name>
+                <description>Maximum packet size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>11</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>USBAEP</name>
+                <description>USB active endpoint</description>
+                <bitOffset>15</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EONUM_DPID</name>
+                <description>Even/odd frame</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>NAKSTS</name>
+                <description>NAK status</description>
+                <bitOffset>17</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>EPTYP</name>
+                <description>Endpoint type</description>
+                <bitOffset>18</bitOffset>
+                <bitWidth>2</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>STALL</name>
+                <description>STALL handshake</description>
+                <bitOffset>21</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>TXFNUM</name>
+                <description>TxFIFO number</description>
+                <bitOffset>22</bitOffset>
+                <bitWidth>4</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>CNAK</name>
+                <description>Clear NAK</description>
+                <bitOffset>26</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SNAK</name>
+                <description>Set NAK</description>
+                <bitOffset>27</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SD0PID_SEVNFRM</name>
+                <description>Set DATA0 PID</description>
+                <bitOffset>28</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SODDFRM</name>
+                <description>Set odd frame</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>EPDIS</name>
+                <description>Endpoint disable</description>
+                <bitOffset>30</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EPENA</name>
+                <description>Endpoint enable</description>
+                <bitOffset>31</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>INT</name>
+            <displayName>DIEPINT1</displayName>
+            <description>OTG device endpoint-1 interrupt
+          register</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>XFRC</name>
+                <description>Transfer completed
+              interrupt</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EPDISD</name>
+                <description>Endpoint disabled
+              interrupt</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>TOC</name>
+                <description>Timeout condition</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>ITTXFE</name>
+                <description>IN token received when TxFIFO is
+              empty</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>INEPNE</name>
+                <description>IN endpoint NAK effective</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>TXFE</name>
+                <description>Transmit FIFO empty</description>
+                <bitOffset>7</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>TXFIFOUDRN</name>
+                <description>Transmit Fifo Underrun</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>BNA</name>
+                <description>Buffer not available
+              interrupt</description>
+                <bitOffset>9</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>PKTDRPSTS</name>
+                <description>Packet dropped status</description>
+                <bitOffset>11</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>BERR</name>
+                <description>Babble error interrupt</description>
+                <bitOffset>12</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>NAK</name>
+                <description>NAK interrupt</description>
+                <bitOffset>13</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TSIZ</name>
+            <displayName>DIEPTSIZ1</displayName>
+            <description>OTG_HS device endpoint transfer size
+          register</description>
+            <addressOffset>0x10</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>XFRSIZ</name>
+                <description>Transfer size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>19</bitWidth>
+              </field>
+              <field>
+                <name>PKTCNT</name>
+                <description>Packet count</description>
+                <bitOffset>19</bitOffset>
+                <bitWidth>10</bitWidth>
+              </field>
+              <field>
+                <name>MCNT</name>
+                <description>Multi count</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>DMA</name>
+            <displayName>DIEPDMA1</displayName>
+            <description>OTG_HS device endpoint-1 DMA address
+          register</description>
+            <addressOffset>0x14</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>DMAADDR</name>
+                <description>DMA address</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TXFSTS</name>
+            <displayName>DTXFSTS1</displayName>
+            <description>OTG_HS device IN endpoint transmit FIFO
+          status register</description>
+            <addressOffset>0x18</addressOffset>
+            <size>0x20</size>
+            <access>read-only</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>INEPTFSAV</name>
+                <description>IN endpoint TxFIFO space
+              avail</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>16</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+        <cluster>
+          <name>DOEP0</name>
+          <description>Device OUT endpoint 0</description>
+          <addressOffset>0x300</addressOffset>
+          <register>
+            <name>CTL</name>
+            <displayName>DOEPCTL0</displayName>
+            <description>OTG_HS device control OUT endpoint 0 control
+          register</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <resetValue>0x00008000</resetValue>
+            <fields>
+              <field>
+                <name>MPSIZ</name>
+                <description>Maximum packet size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>2</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>USBAEP</name>
+                <description>USB active endpoint</description>
+                <bitOffset>15</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>NAKSTS</name>
+                <description>NAK status</description>
+                <bitOffset>17</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>EPTYP</name>
+                <description>Endpoint type</description>
+                <bitOffset>18</bitOffset>
+                <bitWidth>2</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>SNPM</name>
+                <description>Snoop mode</description>
+                <bitOffset>20</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>STALL</name>
+                <description>STALL handshake</description>
+                <bitOffset>21</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>CNAK</name>
+                <description>Clear NAK</description>
+                <bitOffset>26</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SNAK</name>
+                <description>Set NAK</description>
+                <bitOffset>27</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>EPDIS</name>
+                <description>Endpoint disable</description>
+                <bitOffset>30</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>EPENA</name>
+                <description>Endpoint enable</description>
+                <bitOffset>31</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>INT</name>
+            <displayName>DOEPINT0</displayName>
+            <description>OTG_HS device endpoint-0 interrupt
+          register</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000080</resetValue>
+            <fields>
+              <field>
+                <name>XFRC</name>
+                <description>Transfer completed
+              interrupt</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>EPDISD</name>
+                <description>Endpoint disabled
+              interrupt</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>STUP</name>
+                <description>SETUP phase done</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>OTEPDIS</name>
+                <description>OUT token received when endpoint
+              disabled</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>B2BSTUP</name>
+                <description>Back-to-back SETUP packets
+              received</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>NYET</name>
+                <description>NYET interrupt</description>
+                <bitOffset>14</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TSIZ</name>
+            <displayName>DOEPTSIZ0</displayName>
+            <description>OTG_HS device endpoint-1 transfer size
+          register</description>
+            <addressOffset>0x10</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>XFRSIZ</name>
+                <description>Transfer size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>7</bitWidth>
+              </field>
+              <field>
+                <name>PKTCNT</name>
+                <description>Packet count</description>
+                <bitOffset>19</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>STUPCNT</name>
+                <description>SETUP packet count</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>DMA</name>
+            <description>OTG_HS device endpoint-0 DMA address register</description>
+            <addressOffset>0x14</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>DMAADDR</name>
+                <description>DMA address</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+        <cluster>
+          <dim>5</dim>
+          <dimIncrement>0x20</dimIncrement>
+          <dimIndex>1-5</dimIndex>
+          <name>DOEP%s</name>
+          <description>Device IN endpoint X</description>
+          <addressOffset>0x320</addressOffset>
+          <register>
+            <name>CTL</name>
+            <displayName>DOEPCTL1</displayName>
+            <description>OTG device endpoint-1 control
+          register</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>MPSIZ</name>
+                <description>Maximum packet size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>11</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>USBAEP</name>
+                <description>USB active endpoint</description>
+                <bitOffset>15</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EONUM_DPID</name>
+                <description>Even odd frame/Endpoint data
+              PID</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>NAKSTS</name>
+                <description>NAK status</description>
+                <bitOffset>17</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-only</access>
+              </field>
+              <field>
+                <name>EPTYP</name>
+                <description>Endpoint type</description>
+                <bitOffset>18</bitOffset>
+                <bitWidth>2</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>SNPM</name>
+                <description>Snoop mode</description>
+                <bitOffset>20</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>STALL</name>
+                <description>STALL handshake</description>
+                <bitOffset>21</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>CNAK</name>
+                <description>Clear NAK</description>
+                <bitOffset>26</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SNAK</name>
+                <description>Set NAK</description>
+                <bitOffset>27</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SD0PID_SEVNFRM</name>
+                <description>Set DATA0 PID/Set even
+              frame</description>
+                <bitOffset>28</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>SODDFRM</name>
+                <description>Set odd frame</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>write-only</access>
+              </field>
+              <field>
+                <name>EPDIS</name>
+                <description>Endpoint disable</description>
+                <bitOffset>30</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>EPENA</name>
+                <description>Endpoint enable</description>
+                <bitOffset>31</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>INT</name>
+            <displayName>DOEPINT1</displayName>
+            <description>OTG_HS device endpoint-1 interrupt
+          register</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>XFRC</name>
+                <description>Transfer completed
+              interrupt</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>EPDISD</name>
+                <description>Endpoint disabled
+              interrupt</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>STUP</name>
+                <description>SETUP phase done</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>OTEPDIS</name>
+                <description>OUT token received when endpoint
+              disabled</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>B2BSTUP</name>
+                <description>Back-to-back SETUP packets
+              received</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+              <field>
+                <name>NYET</name>
+                <description>NYET interrupt</description>
+                <bitOffset>14</bitOffset>
+                <bitWidth>1</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>DMA</name>
+            <description>OTG_HS device endpoint-1 DMA address register</description>
+            <addressOffset>0x14</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>DMAADDR</name>
+                <description>DMA address</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>TSIZ</name>
+            <displayName>DOEPTSIZ1</displayName>
+            <description>OTG_HS device endpoint-2 transfer size
+          register</description>
+            <addressOffset>0x10</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>XFRSIZ</name>
+                <description>Transfer size</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>19</bitWidth>
+              </field>
+              <field>
+                <name>PKTCNT</name>
+                <description>Packet count</description>
+                <bitOffset>19</bitOffset>
+                <bitWidth>10</bitWidth>
+              </field>
+              <field>
+                <name>RXDPID_STUPCNT</name>
+                <description>Received data PID/SETUP packet
+              count</description>
+                <bitOffset>29</bitOffset>
+                <bitWidth>2</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>OTG_HS_PWRCLK</name>
+      <description>USB on the go high speed</description>
+      <groupName>USB_OTG_HS</groupName>
+      <baseAddress>0x40040E00</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x3F200</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>PCGCCTL</name>
+          <displayName>PCGCCTL</displayName>
+          <description>Power and clock gating control
+          register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>STPPCLK</name>
+              <description>Stop PHY clock</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>GATEHCLK</name>
+              <description>Gate HCLK</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PHYSUSP</name>
+              <description>PHY suspended</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>NVIC</name>
+      <description>Nested Vectored Interrupt
+      Controller</description>
+      <groupName>NVIC</groupName>
+      <baseAddress>0xE000E100</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x351</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>ISER0</name>
+          <displayName>ISER0</displayName>
+          <description>Interrupt Set-Enable Register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SETENA</name>
+              <description>SETENA</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ISER1</name>
+          <displayName>ISER1</displayName>
+          <description>Interrupt Set-Enable Register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SETENA</name>
+              <description>SETENA</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ISER2</name>
+          <displayName>ISER2</displayName>
+          <description>Interrupt Set-Enable Register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SETENA</name>
+              <description>SETENA</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ICER0</name>
+          <displayName>ICER0</displayName>
+          <description>Interrupt Clear-Enable
+          Register</description>
+          <addressOffset>0x80</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CLRENA</name>
+              <description>CLRENA</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ICER1</name>
+          <displayName>ICER1</displayName>
+          <description>Interrupt Clear-Enable
+          Register</description>
+          <addressOffset>0x84</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CLRENA</name>
+              <description>CLRENA</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ICER2</name>
+          <displayName>ICER2</displayName>
+          <description>Interrupt Clear-Enable
+          Register</description>
+          <addressOffset>0x88</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CLRENA</name>
+              <description>CLRENA</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ISPR0</name>
+          <displayName>ISPR0</displayName>
+          <description>Interrupt Set-Pending Register</description>
+          <addressOffset>0x100</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SETPEND</name>
+              <description>SETPEND</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ISPR1</name>
+          <displayName>ISPR1</displayName>
+          <description>Interrupt Set-Pending Register</description>
+          <addressOffset>0x104</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SETPEND</name>
+              <description>SETPEND</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ISPR2</name>
+          <displayName>ISPR2</displayName>
+          <description>Interrupt Set-Pending Register</description>
+          <addressOffset>0x108</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SETPEND</name>
+              <description>SETPEND</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ICPR0</name>
+          <displayName>ICPR0</displayName>
+          <description>Interrupt Clear-Pending
+          Register</description>
+          <addressOffset>0x180</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CLRPEND</name>
+              <description>CLRPEND</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ICPR1</name>
+          <displayName>ICPR1</displayName>
+          <description>Interrupt Clear-Pending
+          Register</description>
+          <addressOffset>0x184</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CLRPEND</name>
+              <description>CLRPEND</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ICPR2</name>
+          <displayName>ICPR2</displayName>
+          <description>Interrupt Clear-Pending
+          Register</description>
+          <addressOffset>0x188</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CLRPEND</name>
+              <description>CLRPEND</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IABR0</name>
+          <displayName>IABR0</displayName>
+          <description>Interrupt Active Bit Register</description>
+          <addressOffset>0x200</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ACTIVE</name>
+              <description>ACTIVE</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IABR1</name>
+          <displayName>IABR1</displayName>
+          <description>Interrupt Active Bit Register</description>
+          <addressOffset>0x204</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ACTIVE</name>
+              <description>ACTIVE</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IABR2</name>
+          <displayName>IABR2</displayName>
+          <description>Interrupt Active Bit Register</description>
+          <addressOffset>0x208</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ACTIVE</name>
+              <description>ACTIVE</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR0</name>
+          <displayName>IPR0</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x300</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR1</name>
+          <displayName>IPR1</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x304</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR2</name>
+          <displayName>IPR2</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x308</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR3</name>
+          <displayName>IPR3</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x30C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR4</name>
+          <displayName>IPR4</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x310</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR5</name>
+          <displayName>IPR5</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x314</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR6</name>
+          <displayName>IPR6</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x318</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR7</name>
+          <displayName>IPR7</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x31C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR8</name>
+          <displayName>IPR8</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x320</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR9</name>
+          <displayName>IPR9</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x324</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR10</name>
+          <displayName>IPR10</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x328</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR11</name>
+          <displayName>IPR11</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x32C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR12</name>
+          <displayName>IPR12</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x330</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR13</name>
+          <displayName>IPR13</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x334</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR14</name>
+          <displayName>IPR14</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x338</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR15</name>
+          <displayName>IPR15</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x33C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR16</name>
+          <displayName>IPR16</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x340</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR17</name>
+          <displayName>IPR17</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x344</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR18</name>
+          <displayName>IPR18</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x348</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IPR19</name>
+          <displayName>IPR19</displayName>
+          <description>Interrupt Priority Register</description>
+          <addressOffset>0x34C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IPR_N0</name>
+              <description>IPR_N0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N1</name>
+              <description>IPR_N1</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N2</name>
+              <description>IPR_N2</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IPR_N3</name>
+              <description>IPR_N3</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>SAI1</name>
+      <description>Serial audio interface</description>
+      <groupName>SAI</groupName>
+      <baseAddress>0x40015800</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <cluster>
+          <dim>2</dim>
+          <dimIncrement>0x20</dimIncrement>
+          <dimIndex>A,B</dimIndex>
+          <name>CH%s</name>
+          <description>Cluster CH%s, containing ?CR1, ?CR2, ?FRCR, ?SLOTR, ?IM, ?SR, ?CLRFR, ?DR</description>
+          <addressOffset>0x4</addressOffset>
+          <register>
+            <name>CR1</name>
+            <displayName>ACR1</displayName>
+            <description>SAI AConfiguration register 1</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000040</resetValue>
+            <fields>
+              <field>
+                <name>MCKDIV</name>
+                <description>Master clock divider</description>
+                <bitOffset>20</bitOffset>
+                <bitWidth>4</bitWidth>
+              </field>
+              <field>
+                <name>MODE</name>
+                <description>Audio block mode</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>2</bitWidth>
+                <enumeratedValues>
+                  <name>MODE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>MasterTx</name>
+                    <description>Master transmitter</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>MasterRx</name>
+                    <description>Master receiver</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>SlaveTx</name>
+                    <description>Slave transmitter</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>SlaveRx</name>
+                    <description>Slave receiver</description>
+                    <value>3</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>PRTCFG</name>
+                <description>Protocol configuration</description>
+                <bitOffset>2</bitOffset>
+                <bitWidth>2</bitWidth>
+                <enumeratedValues>
+                  <name>PRTCFG</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Free</name>
+                    <description>Free protocol. Free protocol allows to use the powerful configuration of the audio block to address a specific audio protocol</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Spdif</name>
+                    <description>SPDIF protocol</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Ac97</name>
+                    <description>AC’97 protocol</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>DS</name>
+                <description>Data size</description>
+                <bitOffset>5</bitOffset>
+                <bitWidth>3</bitWidth>
+                <enumeratedValues>
+                  <name>DS</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Bit8</name>
+                    <description>8 bits</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Bit10</name>
+                    <description>10 bits</description>
+                    <value>3</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Bit16</name>
+                    <description>16 bits</description>
+                    <value>4</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Bit20</name>
+                    <description>20 bits</description>
+                    <value>5</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Bit24</name>
+                    <description>24 bits</description>
+                    <value>6</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Bit32</name>
+                    <description>32 bits</description>
+                    <value>7</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>LSBFIRST</name>
+                <description>Least significant bit
+              first</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>LSBFIRST</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>MsbFirst</name>
+                    <description>Data are transferred with MSB first</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>LsbFirst</name>
+                    <description>Data are transferred with LSB first</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>CKSTR</name>
+                <description>Clock strobing edge</description>
+                <bitOffset>9</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>CKSTR</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>FallingEdge</name>
+                    <description>Data strobing edge is falling edge of SCK</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>RisingEdge</name>
+                    <description>Data strobing edge is rising edge of SCK</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>SYNCEN</name>
+                <description>Synchronization enable</description>
+                <bitOffset>10</bitOffset>
+                <bitWidth>2</bitWidth>
+                <enumeratedValues>
+                  <name>SYNCEN</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Asynchronous</name>
+                    <description>audio sub-block in asynchronous mode</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Internal</name>
+                    <description>audio sub-block is synchronous with the other internal audio sub-block. In this case, the audio sub-block must be configured in slave mode</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>External</name>
+                    <description>audio sub-block is synchronous with an external SAI embedded peripheral. In this case the audio sub-block should be configured in Slave mode</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>MONO</name>
+                <description>Mono mode</description>
+                <bitOffset>12</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>MONO</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Stereo</name>
+                    <description>Stereo mode</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Mono</name>
+                    <description>Mono mode</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>OUTDRIV</name>
+                <description>Output drive</description>
+                <bitOffset>13</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>OUTDRIV</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>OnStart</name>
+                    <description>Audio block output driven when SAIEN is set</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Immediately</name>
+                    <description>Audio block output driven immediately after the setting of this bit</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>SAIEN</name>
+                <description>Audio block enable</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>SAIEN</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>SAI audio block disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>SAI audio block enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>DMAEN</name>
+                <description>DMA enable</description>
+                <bitOffset>17</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>DMAEN</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>DMA disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>DMA enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>NODIV</name>
+                <description>No divider</description>
+                <bitOffset>19</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>NODIV</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>MasterClock</name>
+                    <description>MCLK output is enabled. Forces the ratio between FS and MCLK to 256 or 512 according to the OSR value</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>NoDiv</name>
+                    <description>MCLK output enable set by the MCKEN bit (where present, else 0). Ratio between FS and MCLK depends on FRL.</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>CR2</name>
+            <displayName>ACR2</displayName>
+            <description>SAI AConfiguration register 2</description>
+            <addressOffset>0x4</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000040</resetValue>
+            <fields>
+              <field>
+                <name>FTH</name>
+                <description>FIFO threshold</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>3</bitWidth>
+                <access>read-write</access>
+                <enumeratedValues>
+                  <name>FTH</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Empty</name>
+                    <description>FIFO empty</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Quarter1</name>
+                    <description>1⁄4 FIFO</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Quarter2</name>
+                    <description>1⁄2 FIFO</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Quarter3</name>
+                    <description>3⁄4 FIFO</description>
+                    <value>3</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Full</name>
+                    <description>FIFO full</description>
+                    <value>4</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>FFLUSH</name>
+                <description>FIFO flush</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>FFLUSH</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>NoFlush</name>
+                    <description>No FIFO flush</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Flush</name>
+                    <description>FIFO flush. Programming this bit to 1 triggers the FIFO Flush. All the internal FIFO pointers (read and write) are cleared</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>TRIS</name>
+                <description>Tristate management on data
+              line</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>MUTE</name>
+                <description>Mute</description>
+                <bitOffset>5</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+                <enumeratedValues>
+                  <name>MUTE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>No mute mode</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Mute mode enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>MUTEVAL</name>
+                <description>Mute value</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+                <enumeratedValues>
+                  <name>MUTEVAL</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>SendZero</name>
+                    <description>Bit value 0 is sent during the mute mode</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>SendLast</name>
+                    <description>Last values are sent during the mute mode</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>MUTECNT</name>
+                <description>Mute counter</description>
+                <bitOffset>7</bitOffset>
+                <bitWidth>6</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>CPL</name>
+                <description>Complement bit</description>
+                <bitOffset>13</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+                <enumeratedValues>
+                  <name>CPL</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>OnesComplement</name>
+                    <description>1’s complement representation</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>TwosComplement</name>
+                    <description>2’s complement representation</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>COMP</name>
+                <description>Companding mode</description>
+                <bitOffset>14</bitOffset>
+                <bitWidth>2</bitWidth>
+                <access>read-write</access>
+                <enumeratedValues>
+                  <name>COMP</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>NoCompanding</name>
+                    <description>No companding algorithm</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>MuLaw</name>
+                    <description>μ-Law algorithm</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>ALaw</name>
+                    <description>A-Law algorithm</description>
+                    <value>3</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>FRCR</name>
+            <displayName>AFRCR</displayName>
+            <description>SAI AFrame configuration
+          register</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <resetValue>0x00000007</resetValue>
+            <fields>
+              <field>
+                <name>FRL</name>
+                <description>Frame length</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>8</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>FSALL</name>
+                <description>Frame synchronization active level
+              length</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>7</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>FSDEF</name>
+                <description>Frame synchronization
+              definition</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+              </field>
+              <field>
+                <name>FSPOL</name>
+                <description>Frame synchronization
+              polarity</description>
+                <bitOffset>17</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+                <enumeratedValues>
+                  <name>FSPOL</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>FallingEdge</name>
+                    <description>FS is active low (falling edge)</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>RisingEdge</name>
+                    <description>FS is active high (rising edge)</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>FSOFF</name>
+                <description>Frame synchronization
+              offset</description>
+                <bitOffset>18</bitOffset>
+                <bitWidth>1</bitWidth>
+                <access>read-write</access>
+                <enumeratedValues>
+                  <name>FSOFF</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>OnFirst</name>
+                    <description>FS is asserted on the first bit of the slot 0</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>BeforeFirst</name>
+                    <description>FS is asserted one bit before the first bit of the slot 0</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>SLOTR</name>
+            <displayName>ASLOTR</displayName>
+            <description>SAI ASlot register</description>
+            <addressOffset>0xC</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>FBOFF</name>
+                <description>First bit offset</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>5</bitWidth>
+              </field>
+              <field>
+                <name>SLOTSZ</name>
+                <description>Slot size</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>2</bitWidth>
+                <enumeratedValues>
+                  <name>SLOTSZ</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>DataSize</name>
+                    <description>The slot size is equivalent to the data size (specified in DS[3:0] in the SAI_xCR1 register)</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Bit16</name>
+                    <description>16-bit</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Bit32</name>
+                    <description>32-bit</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>NBSLOT</name>
+                <description>Number of slots in an audio
+              frame</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>4</bitWidth>
+              </field>
+              <field>
+                <name>SLOTEN</name>
+                <description>Slot enable</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>16</bitWidth>
+                <enumeratedValues>
+                  <name>SLOTEN</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Inactive</name>
+                    <description>Inactive slot</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Active</name>
+                    <description>Active slot</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>IM</name>
+            <displayName>AIM</displayName>
+            <description>SAI AInterrupt mask register2</description>
+            <addressOffset>0x10</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>OVRUDRIE</name>
+                <description>Overrun/underrun interrupt
+              enable</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>OVRUDRIE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>Interrupt is disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Interrupt is enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>MUTEDETIE</name>
+                <description>Mute detection interrupt
+              enable</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>MUTEDETIE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>Interrupt is disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Interrupt is enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>WCKCFGIE</name>
+                <description>Wrong clock configuration interrupt
+              enable</description>
+                <bitOffset>2</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>WCKCFGIE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>Interrupt is disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Interrupt is enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>FREQIE</name>
+                <description>FIFO request interrupt
+              enable</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>FREQIE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>Interrupt is disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Interrupt is enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>CNRDYIE</name>
+                <description>Codec not ready interrupt
+              enable</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>CNRDYIE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>Interrupt is disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Interrupt is enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>AFSDETIE</name>
+                <description>Anticipated frame synchronization
+              detection interrupt enable</description>
+                <bitOffset>5</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>AFSDETIE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>Interrupt is disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Interrupt is enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>LFSDETIE</name>
+                <description>Late frame synchronization detection
+              interrupt enable</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>LFSDETIE</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>Interrupt is disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Interrupt is enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>SR</name>
+            <displayName>ASR</displayName>
+            <description>SAI AStatus register</description>
+            <addressOffset>0x14</addressOffset>
+            <size>0x20</size>
+            <access>read-only</access>
+            <resetValue>0x00000008</resetValue>
+            <fields>
+              <field>
+                <name>OVRUDR</name>
+                <description>Overrun / underrun</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>OVRUDRR</name>
+                  <usage>read</usage>
+                  <enumeratedValue>
+                    <name>NoError</name>
+                    <description>No overrun/underrun error</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Overrun</name>
+                    <description>Overrun/underrun error detection</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>MUTEDET</name>
+                <description>Mute detection</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>MUTEDETR</name>
+                  <usage>read</usage>
+                  <enumeratedValue>
+                    <name>NoMute</name>
+                    <description>No MUTE detection on the SD input line</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Mute</name>
+                    <description>MUTE value detected on the SD input line (0 value) for a specified number of consecutive audio frame</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>WCKCFG</name>
+                <description>Wrong clock configuration
+              flag</description>
+                <bitOffset>2</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>WCKCFGR</name>
+                  <usage>read</usage>
+                  <enumeratedValue>
+                    <name>Correct</name>
+                    <description>Clock configuration is correct</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Wrong</name>
+                    <description>Clock configuration does not respect the rule concerning the frame length specification</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>FREQ</name>
+                <description>FIFO request</description>
+                <bitOffset>3</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>FREQR</name>
+                  <usage>read</usage>
+                  <enumeratedValue>
+                    <name>NoRequest</name>
+                    <description>No FIFO request</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Request</name>
+                    <description>FIFO request to read or to write the SAI_xDR</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>CNRDY</name>
+                <description>Codec not ready</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>CNRDYR</name>
+                  <usage>read</usage>
+                  <enumeratedValue>
+                    <name>Ready</name>
+                    <description>External AC’97 Codec is ready</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>NotReady</name>
+                    <description>External AC’97 Codec is not ready</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>AFSDET</name>
+                <description>Anticipated frame synchronization
+              detection</description>
+                <bitOffset>5</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>AFSDETR</name>
+                  <usage>read</usage>
+                  <enumeratedValue>
+                    <name>NoError</name>
+                    <description>No error</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>EarlySync</name>
+                    <description>Frame synchronization signal is detected earlier than expected</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>LFSDET</name>
+                <description>Late frame synchronization
+              detection</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>LFSDETR</name>
+                  <usage>read</usage>
+                  <enumeratedValue>
+                    <name>NoError</name>
+                    <description>No error</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>NoSync</name>
+                    <description>Frame synchronization signal is not present at the right time</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>FLVL</name>
+                <description>FIFO level threshold</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>3</bitWidth>
+                <enumeratedValues>
+                  <name>FLVLR</name>
+                  <usage>read</usage>
+                  <enumeratedValue>
+                    <name>Empty</name>
+                    <description>FIFO empty</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Quarter1</name>
+                    <description>FIFO &lt;= 1⁄4 but not empty</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Quarter2</name>
+                    <description>1⁄4 &lt; FIFO &lt;= 1⁄2</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Quarter3</name>
+                    <description>1⁄2 &lt; FIFO &lt;= 3⁄4</description>
+                    <value>3</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Quarter4</name>
+                    <description>3⁄4 &lt; FIFO but not full</description>
+                    <value>4</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Full</name>
+                    <description>FIFO full</description>
+                    <value>5</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>CLRFR</name>
+            <displayName>ACLRFR</displayName>
+            <description>SAI AClear flag register</description>
+            <addressOffset>0x18</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>COVRUDR</name>
+                <description>Clear overrun / underrun</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>COVRUDRW</name>
+                  <usage>write</usage>
+                  <enumeratedValue>
+                    <name>Clear</name>
+                    <description>Clears the OVRUDR flag</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>CMUTEDET</name>
+                <description>Mute detection flag</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>CMUTEDETW</name>
+                  <usage>write</usage>
+                  <enumeratedValue>
+                    <name>Clear</name>
+                    <description>Clears the MUTEDET flag</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>CWCKCFG</name>
+                <description>Clear wrong clock configuration
+              flag</description>
+                <bitOffset>2</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>CWCKCFGW</name>
+                  <usage>write</usage>
+                  <enumeratedValue>
+                    <name>Clear</name>
+                    <description>Clears the WCKCFG flag</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>CCNRDY</name>
+                <description>Clear codec not ready flag</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>CCNRDYW</name>
+                  <usage>write</usage>
+                  <enumeratedValue>
+                    <name>Clear</name>
+                    <description>Clears the CNRDY flag</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>CAFSDET</name>
+                <description>Clear anticipated frame synchronization
+              detection flag</description>
+                <bitOffset>5</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>CAFSDETW</name>
+                  <usage>write</usage>
+                  <enumeratedValue>
+                    <name>Clear</name>
+                    <description>Clears the AFSDET flag</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>CLFSDET</name>
+                <description>Clear late frame synchronization
+              detection flag</description>
+                <bitOffset>6</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>CLFSDETW</name>
+                  <usage>write</usage>
+                  <enumeratedValue>
+                    <name>Clear</name>
+                    <description>Clears the LFSDET flag</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>DR</name>
+            <displayName>ADR</displayName>
+            <description>SAI AData register</description>
+            <addressOffset>0x1C</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>DATA</name>
+                <description>Data</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>LTDC</name>
+      <description>LCD-TFT Controller</description>
+      <groupName>LTDC</groupName>
+      <baseAddress>0x40016800</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>LTDC</name>
+        <description>LTDC global interrupt</description>
+        <value>88</value>
+      </interrupt>
+      <interrupt>
+        <name>LTDC_ER</name>
+        <description>LTDC global error interrupt</description>
+        <value>89</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>SSCR</name>
+          <displayName>SSCR</displayName>
+          <description>Synchronization Size Configuration
+          Register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>HSW</name>
+              <description>Horizontal Synchronization Width (in
+              units of pixel clock period)</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>VSH</name>
+              <description>Vertical Synchronization Height (in
+              units of horizontal scan line)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>11</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>2047</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>BPCR</name>
+          <displayName>BPCR</displayName>
+          <description>Back Porch Configuration
+          Register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>AHBP</name>
+              <description>Accumulated Horizontal back porch (in
+              units of pixel clock period)</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>AVBP</name>
+              <description>Accumulated Vertical back porch (in
+              units of horizontal scan line)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>11</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>2047</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AWCR</name>
+          <displayName>AWCR</displayName>
+          <description>Active Width Configuration
+          Register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>AAW</name>
+              <description>Accumulated Active Width (in units of pixel clock period)</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>AAH</name>
+              <description>Accumulated Active Height (in units of
+              horizontal scan line)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>11</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>2047</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>TWCR</name>
+          <displayName>TWCR</displayName>
+          <description>Total Width Configuration
+          Register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TOTALW</name>
+              <description>Total Width (in units of pixel clock
+              period)</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>12</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>4095</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>TOTALH</name>
+              <description>Total Height (in units of horizontal
+              scan line)</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>11</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>2047</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>GCR</name>
+          <displayName>GCR</displayName>
+          <description>Global Control Register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00002220</resetValue>
+          <fields>
+            <field>
+              <name>HSPOL</name>
+              <description>Horizontal Synchronization
+              Polarity</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>HSPOL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>ActiveLow</name>
+                  <description>Horizontal synchronization polarity is active low</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveHigh</name>
+                  <description>Horizontal synchronization polarity is active high</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>VSPOL</name>
+              <description>Vertical Synchronization
+              Polarity</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>VSPOL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>ActiveLow</name>
+                  <description>Vertical synchronization polarity is active low</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveHigh</name>
+                  <description>Vertical synchronization polarity is active high</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DEPOL</name>
+              <description>Data Enable Polarity</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>DEPOL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>ActiveLow</name>
+                  <description>Data enable polarity is active low</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>ActiveHigh</name>
+                  <description>Data enable polarity is active high</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>PCPOL</name>
+              <description>Pixel Clock Polarity</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>PCPOL</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>RisingEdge</name>
+                  <description>Pixel clock on rising edge</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>FallingEdge</name>
+                  <description>Pixel clock on falling edge</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DEN</name>
+              <description>Dither Enable</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>DEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Dither disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Dither enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>DRW</name>
+              <description>Dither Red Width</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>DGW</name>
+              <description>Dither Green Width</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>DBW</name>
+              <description>Dither Blue Width</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>LTDCEN</name>
+              <description>LCD-TFT controller enable
+              bit</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+              <enumeratedValues>
+                <name>LTDCEN</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>LCD-TFT controller disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>LCD-TFT controller enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SRCR</name>
+          <displayName>SRCR</displayName>
+          <description>Shadow Reload Configuration
+          Register</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>VBR</name>
+              <description>Vertical Blanking Reload</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>VBR</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoEffect</name>
+                  <description>This bit is set by software and cleared only by hardware after reload (it cannot be cleared through register write once it is set)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Reload</name>
+                  <description>The shadow registers are reloaded during the vertical blanking period (at the beginning of the first line after the active display area).</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>IMR</name>
+              <description>Immediate Reload</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>IMR</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>NoEffect</name>
+                  <description>This bit is set by software and cleared only by hardware after reload (it cannot be cleared through register write once it is set)</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Reload</name>
+                  <description>The shadow registers are reloaded immediately. This bit is set by software and cleared only by hardware after reload</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>BCCR</name>
+          <displayName>BCCR</displayName>
+          <description>Background Color Configuration
+          Register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>BCBLUE</name>
+              <description>Background color blue value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>BCGREEN</name>
+              <description>Background color green value</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+            <field>
+              <name>BCRED</name>
+              <description>Background color red value</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>255</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IER</name>
+          <displayName>IER</displayName>
+          <description>Interrupt Enable Register</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>RRIE</name>
+              <description>Register Reload interrupt
+              enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RRIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Register reload interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Register reload interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TERRIE</name>
+              <description>Transfer Error Interrupt
+              Enable</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TERRIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Transfer error interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Transfer error interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FUIE</name>
+              <description>FIFO Underrun Interrupt
+              Enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FUIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>FIFO underrun interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>FIFO underrun interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LIE</name>
+              <description>Line Interrupt Enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LIE</name>
+                <usage>read-write</usage>
+                <enumeratedValue>
+                  <name>Disabled</name>
+                  <description>Line interrupt disabled</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Enabled</name>
+                  <description>Line interrupt enabled</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ISR</name>
+          <displayName>ISR</displayName>
+          <description>Interrupt Status Register</description>
+          <addressOffset>0x38</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>RRIF</name>
+              <description>Register Reload Interrupt
+              Flag</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>RRIF</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoReload</name>
+                  <description>No register reload</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Reload</name>
+                  <description>Register reload interrupt generated when a vertical blanking reload occurs (and the first line after the active area is reached)</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>TERRIF</name>
+              <description>Transfer Error interrupt
+              flag</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>TERRIF</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoError</name>
+                  <description>No transfer error</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Error</name>
+                  <description>Transfer error interrupt generated when a bus error occurs</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>FUIF</name>
+              <description>FIFO Underrun Interrupt
+              flag</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>FUIF</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NoUnderrun</name>
+                  <description>No FIFO underrun</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Underrun</name>
+                  <description>FIFO underrun interrupt generated, if one of the layer FIFOs is empty and pixel data is read from the FIFO</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>LIF</name>
+              <description>Line Interrupt flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>LIF</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotReached</name>
+                  <description>Programmed line not reached</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Reached</name>
+                  <description>Line interrupt generated when a programmed line is reached</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ICR</name>
+          <displayName>ICR</displayName>
+          <description>Interrupt Clear Register</description>
+          <addressOffset>0x3C</addressOffset>
+          <size>0x20</size>
+          <access>write-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CRRIF</name>
+              <description>Clears Register Reload Interrupt
+              Flag</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>CRRIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clears the RRIF flag in the ISR register</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CTERRIF</name>
+              <description>Clears the Transfer Error Interrupt
+              Flag</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>CTERRIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clears the TERRIF flag in the ISR register</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CFUIF</name>
+              <description>Clears the FIFO Underrun Interrupt
+              flag</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>CFUIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clears the FUIF flag in the ISR register</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>CLIF</name>
+              <description>Clears the Line Interrupt
+              Flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <modifiedWriteValues>oneToClear</modifiedWriteValues>
+              <enumeratedValues>
+                <name>CLIFW</name>
+                <usage>write</usage>
+                <enumeratedValue>
+                  <name>Clear</name>
+                  <description>Clears the LIF flag in the ISR register</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>LIPCR</name>
+          <displayName>LIPCR</displayName>
+          <description>Line Interrupt Position Configuration
+          Register</description>
+          <addressOffset>0x40</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>LIPOS</name>
+              <description>Line Interrupt Position</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>11</bitWidth>
+              <writeConstraint>
+                <range>
+                  <minimum>0</minimum>
+                  <maximum>2047</maximum>
+                </range>
+              </writeConstraint>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CPSR</name>
+          <displayName>CPSR</displayName>
+          <description>Current Position Status
+          Register</description>
+          <addressOffset>0x44</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CXPOS</name>
+              <description>Current X Position</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+            <field>
+              <name>CYPOS</name>
+              <description>Current Y Position</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CDSR</name>
+          <displayName>CDSR</displayName>
+          <description>Current Display Status
+          Register</description>
+          <addressOffset>0x48</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x0000000F</resetValue>
+          <fields>
+            <field>
+              <name>HSYNCS</name>
+              <description>Horizontal Synchronization display
+              Status</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>HSYNCS</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotActive</name>
+                  <description>Currently not in HSYNC phase</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Active</name>
+                  <description>Currently in HSYNC phase</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>VSYNCS</name>
+              <description>Vertical Synchronization display
+              Status</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>VSYNCS</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotActive</name>
+                  <description>Currently not in VSYNC phase</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Active</name>
+                  <description>Currently in VSYNC phase</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>HDES</name>
+              <description>Horizontal Data Enable display
+              Status</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>HDES</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotActive</name>
+                  <description>Currently not in horizontal Data Enable phase</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Active</name>
+                  <description>Currently in horizontal Data Enable phase</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+            <field>
+              <name>VDES</name>
+              <description>Vertical Data Enable display
+              Status</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <enumeratedValues>
+                <name>VDES</name>
+                <usage>read</usage>
+                <enumeratedValue>
+                  <name>NotActive</name>
+                  <description>Currently not in vertical Data Enable phase</description>
+                  <value>0</value>
+                </enumeratedValue>
+                <enumeratedValue>
+                  <name>Active</name>
+                  <description>Currently in vertical Data Enable phase</description>
+                  <value>1</value>
+                </enumeratedValue>
+              </enumeratedValues>
+            </field>
+          </fields>
+        </register>
+        <cluster>
+          <dim>2</dim>
+          <dimIncrement>0x80</dimIncrement>
+          <dimIndex>1-2</dimIndex>
+          <name>LAYER%s</name>
+          <description>Cluster LAYER%s, containing L?CR, L?WHPCR, L?WVPCR, L?CKCR, L?PFCR, L?CACR, L?DCCR, L?BFCR, L?CFBAR, L?CFBLR, L?CFBLNR, L?CLUTWR</description>
+          <addressOffset>0x84</addressOffset>
+          <register>
+            <name>CR</name>
+            <displayName>L1CR</displayName>
+            <description>Layerx Control Register</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>CLUTEN</name>
+                <description>Color Look-Up Table Enable</description>
+                <bitOffset>4</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>CLUTEN</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>Color look-up table disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Color look-up table enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>COLKEN</name>
+                <description>Color Keying Enable</description>
+                <bitOffset>1</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>COLKEN</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>Color keying disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Color keying enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>LEN</name>
+                <description>Layer Enable</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>1</bitWidth>
+                <enumeratedValues>
+                  <name>LEN</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Disabled</name>
+                    <description>Layer disabled</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Enabled</name>
+                    <description>Layer enabled</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>WHPCR</name>
+            <displayName>L1WHPCR</displayName>
+            <description>Layerx Window Horizontal Position
+          Configuration Register</description>
+            <addressOffset>0x4</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>WHSPPOS</name>
+                <description>Window Horizontal Stop
+              Position</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>12</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>4095</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+              <field>
+                <name>WHSTPOS</name>
+                <description>Window Horizontal Start
+              Position</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>12</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>4095</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>WVPCR</name>
+            <displayName>L1WVPCR</displayName>
+            <description>Layerx Window Vertical Position
+          Configuration Register</description>
+            <addressOffset>0x8</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>WVSPPOS</name>
+                <description>Window Vertical Stop
+              Position</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>11</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>2047</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+              <field>
+                <name>WVSTPOS</name>
+                <description>Window Vertical Start
+              Position</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>11</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>2047</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>CKCR</name>
+            <displayName>L1CKCR</displayName>
+            <description>Layerx Color Keying Configuration
+          Register</description>
+            <addressOffset>0xC</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>CKRED</name>
+                <description>Color Key Red value</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>8</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>255</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+              <field>
+                <name>CKGREEN</name>
+                <description>Color Key Green value</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>8</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>255</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+              <field>
+                <name>CKBLUE</name>
+                <description>Color Key Blue value</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>8</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>255</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>PFCR</name>
+            <displayName>L1PFCR</displayName>
+            <description>Layerx Pixel Format Configuration
+          Register</description>
+            <addressOffset>0x10</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>PF</name>
+                <description>Pixel Format</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>3</bitWidth>
+                <enumeratedValues>
+                  <name>PF</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>ARGB8888</name>
+                    <description>ARGB8888</description>
+                    <value>0</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>RGB888</name>
+                    <description>RGB888</description>
+                    <value>1</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>RGB565</name>
+                    <description>RGB565</description>
+                    <value>2</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>ARGB1555</name>
+                    <description>ARGB1555</description>
+                    <value>3</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>ARGB4444</name>
+                    <description>ARGB4444</description>
+                    <value>4</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>L8</name>
+                    <description>L8 (8-bit luminance)</description>
+                    <value>5</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>AL44</name>
+                    <description>AL44 (4-bit alpha, 4-bit luminance)</description>
+                    <value>6</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>AL88</name>
+                    <description>AL88 (8-bit alpha, 8-bit luminance)</description>
+                    <value>7</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>CACR</name>
+            <displayName>L1CACR</displayName>
+            <description>Layerx Constant Alpha Configuration
+          Register</description>
+            <addressOffset>0x14</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>CONSTA</name>
+                <description>Constant Alpha</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>8</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>255</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>DCCR</name>
+            <displayName>L1DCCR</displayName>
+            <description>Layerx Default Color Configuration
+          Register</description>
+            <addressOffset>0x18</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>DCALPHA</name>
+                <description>Default Color Alpha</description>
+                <bitOffset>24</bitOffset>
+                <bitWidth>8</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>255</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+              <field>
+                <name>DCRED</name>
+                <description>Default Color Red</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>8</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>255</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+              <field>
+                <name>DCGREEN</name>
+                <description>Default Color Green</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>8</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>255</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+              <field>
+                <name>DCBLUE</name>
+                <description>Default Color Blue</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>8</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>255</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>BFCR</name>
+            <displayName>L1BFCR</displayName>
+            <description>Layerx Blending Factors Configuration
+          Register</description>
+            <addressOffset>0x1C</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000607</resetValue>
+            <fields>
+              <field>
+                <name>BF1</name>
+                <description>Blending Factor 1</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>3</bitWidth>
+                <enumeratedValues>
+                  <name>BF1</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Constant</name>
+                    <description>BF1 = constant alpha</description>
+                    <value>4</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Pixel</name>
+                    <description>BF1 = pixel alpha * constant alpha</description>
+                    <value>6</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+              <field>
+                <name>BF2</name>
+                <description>Blending Factor 2</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>3</bitWidth>
+                <enumeratedValues>
+                  <name>BF2</name>
+                  <usage>read-write</usage>
+                  <enumeratedValue>
+                    <name>Constant</name>
+                    <description>BF2 = 1 - constant alpha</description>
+                    <value>5</value>
+                  </enumeratedValue>
+                  <enumeratedValue>
+                    <name>Pixel</name>
+                    <description>BF2 = 1 - pixel alpha * constant alpha</description>
+                    <value>7</value>
+                  </enumeratedValue>
+                </enumeratedValues>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>CFBAR</name>
+            <displayName>L1CFBAR</displayName>
+            <description>Layerx Color Frame Buffer Address
+          Register</description>
+            <addressOffset>0x28</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>CFBADD</name>
+                <description>Color Frame Buffer Start
+              Address</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>4294967295</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>CFBLR</name>
+            <displayName>L1CFBLR</displayName>
+            <description>Layerx Color Frame Buffer Length
+          Register</description>
+            <addressOffset>0x2C</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>CFBP</name>
+                <description>Color Frame Buffer Pitch in
+              bytes</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>13</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>8191</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+              <field>
+                <name>CFBLL</name>
+                <description>Color Frame Buffer Line
+              Length</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>13</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>8191</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>CFBLNR</name>
+            <displayName>L1CFBLNR</displayName>
+            <description>Layerx ColorFrame Buffer Line Number
+          Register</description>
+            <addressOffset>0x30</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>CFBLNBR</name>
+                <description>Frame Buffer Line Number</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>11</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>2047</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>CLUTWR</name>
+            <displayName>L1CLUTWR</displayName>
+            <description>Layerx CLUT Write Register</description>
+            <addressOffset>0x40</addressOffset>
+            <size>0x20</size>
+            <access>write-only</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>CLUTADD</name>
+                <description>CLUT Address</description>
+                <bitOffset>24</bitOffset>
+                <bitWidth>8</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>255</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+              <field>
+                <name>RED</name>
+                <description>Red value</description>
+                <bitOffset>16</bitOffset>
+                <bitWidth>8</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>255</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+              <field>
+                <name>GREEN</name>
+                <description>Green value</description>
+                <bitOffset>8</bitOffset>
+                <bitWidth>8</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>255</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+              <field>
+                <name>BLUE</name>
+                <description>Blue value</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>8</bitWidth>
+                <writeConstraint>
+                  <range>
+                    <minimum>0</minimum>
+                    <maximum>255</maximum>
+                  </range>
+                </writeConstraint>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>HASH</name>
+      <description>Hash processor</description>
+      <groupName>HASH</groupName>
+      <baseAddress>0x50060400</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>HASH_RNG</name>
+        <description>Hash and Rng global interrupt</description>
+        <value>80</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR</name>
+          <displayName>CR</displayName>
+          <description>control register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>INIT</name>
+              <description>Initialize message digest
+              calculation</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+            </field>
+            <field>
+              <name>DMAE</name>
+              <description>DMA enable</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>DATATYPE</name>
+              <description>Data type selection</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>2</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>MODE</name>
+              <description>Mode selection</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ALGO0</name>
+              <description>Algorithm selection</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>NBW</name>
+              <description>Number of words already
+              pushed</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>4</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>DINNE</name>
+              <description>DIN not empty</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>MDMAT</name>
+              <description>Multiple DMA Transfers</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>LKEY</name>
+              <description>Long key selection</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ALGO1</name>
+              <description>ALGO</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIN</name>
+          <displayName>DIN</displayName>
+          <description>data input register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DATAIN</name>
+              <description>Data input</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>STR</name>
+          <displayName>STR</displayName>
+          <description>start register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DCAL</name>
+              <description>Digest calculation</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+            </field>
+            <field>
+              <name>NBLW</name>
+              <description>Number of valid bits in the last word of
+              the message</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>5</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>5</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>0-4</dimIndex>
+          <name>HR%s</name>
+          <displayName>HR0</displayName>
+          <description>digest registers</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>H</name>
+              <description>H0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IMR</name>
+          <displayName>IMR</displayName>
+          <description>interrupt enable register</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DCIE</name>
+              <description>Digest calculation completion interrupt
+              enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DINIE</name>
+              <description>Data input interrupt
+              enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000001</resetValue>
+          <fields>
+            <field>
+              <name>BUSY</name>
+              <description>Busy bit</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>DMAS</name>
+              <description>DMA Status</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-only</access>
+            </field>
+            <field>
+              <name>DCIS</name>
+              <description>Digest calculation completion interrupt
+              status</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>DINIS</name>
+              <description>Data input interrupt
+              status</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>54</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>0-53</dimIndex>
+          <name>CSR%s</name>
+          <displayName>CSR0</displayName>
+          <description>context swap registers</description>
+          <addressOffset>0xF8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CSR</name>
+              <description>CSR0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>8</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>0-7</dimIndex>
+          <name>HASH_HR%s</name>
+          <displayName>HASH_HR0</displayName>
+          <description>HASH digest register %s</description>
+          <addressOffset>0x310</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>H</name>
+              <description>H0</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>CRYP</name>
+      <description>Cryptographic processor</description>
+      <groupName>CRYP</groupName>
+      <baseAddress>0x50060000</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x400</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>CRYP</name>
+        <description>CRYP crypto global interrupt</description>
+        <value>79</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>CR</name>
+          <displayName>CR</displayName>
+          <description>control register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ALGODIR</name>
+              <description>Algorithm direction</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ALGOMODE0</name>
+              <description>Algorithm mode</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>3</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>DATATYPE</name>
+              <description>Data type selection</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>2</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>KEYSIZE</name>
+              <description>Key size selection (AES mode
+              only)</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>2</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>FFLUSH</name>
+              <description>FIFO flush</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>write-only</access>
+            </field>
+            <field>
+              <name>CRYPEN</name>
+              <description>Cryptographic processor
+              enable</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>GCM_CCMPH</name>
+              <description>GCM_CCMPH</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>2</bitWidth>
+              <access>read-write</access>
+            </field>
+            <field>
+              <name>ALGOMODE3</name>
+              <description>ALGOMODE</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+              <access>read-write</access>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SR</name>
+          <displayName>SR</displayName>
+          <description>status register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000003</resetValue>
+          <fields>
+            <field>
+              <name>BUSY</name>
+              <description>Busy bit</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OFFU</name>
+              <description>Output FIFO full</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OFNE</name>
+              <description>Output FIFO not empty</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>IFNF</name>
+              <description>Input FIFO not full</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>IFEM</name>
+              <description>Input FIFO empty</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DIN</name>
+          <displayName>DIN</displayName>
+          <description>data input register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DATAIN</name>
+              <description>Data input</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DOUT</name>
+          <displayName>DOUT</displayName>
+          <description>data output register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DATAOUT</name>
+              <description>Data output</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>DMACR</name>
+          <displayName>DMACR</displayName>
+          <description>DMA control register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DOEN</name>
+              <description>DMA output enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DIEN</name>
+              <description>DMA input enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>IMSCR</name>
+          <displayName>IMSCR</displayName>
+          <description>interrupt mask set/clear
+          register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OUTIM</name>
+              <description>Output FIFO service interrupt
+              mask</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>INIM</name>
+              <description>Input FIFO service interrupt
+              mask</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>RISR</name>
+          <displayName>RISR</displayName>
+          <description>raw interrupt status register</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000001</resetValue>
+          <fields>
+            <field>
+              <name>OUTRIS</name>
+              <description>Output FIFO service raw interrupt
+              status</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>INRIS</name>
+              <description>Input FIFO service raw interrupt
+              status</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>MISR</name>
+          <displayName>MISR</displayName>
+          <description>masked interrupt status
+          register</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>OUTMIS</name>
+              <description>Output FIFO service masked interrupt
+              status</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>INMIS</name>
+              <description>Input FIFO service masked interrupt
+              status</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <cluster>
+          <dim>4</dim>
+          <dimIncrement>0x8</dimIncrement>
+          <dimIndex>0-3</dimIndex>
+          <name>KEY%s</name>
+          <description>Cluster KEY%s, containing K?LR, K?RR</description>
+          <addressOffset>0x20</addressOffset>
+          <register>
+            <name>KLR</name>
+            <displayName>K0LR</displayName>
+            <description>key registers</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <access>write-only</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>b2</name>
+                <description>b224</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>KRR</name>
+            <displayName>K0RR</displayName>
+            <description>key registers</description>
+            <addressOffset>0x4</addressOffset>
+            <size>0x20</size>
+            <access>write-only</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>b</name>
+                <description>b192</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+        <cluster>
+          <dim>2</dim>
+          <dimIncrement>0x8</dimIncrement>
+          <dimIndex>0-1</dimIndex>
+          <name>INIT%s</name>
+          <description>Cluster INIT%s, containing IV?LR, IV?RR</description>
+          <addressOffset>0x40</addressOffset>
+          <register>
+            <name>IVLR</name>
+            <displayName>IV0LR</displayName>
+            <description>initialization vector
+          registers</description>
+            <addressOffset>0x0</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>IV</name>
+                <description>IV31</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+          <register>
+            <name>IVRR</name>
+            <displayName>IV0RR</displayName>
+            <description>initialization vector
+          registers</description>
+            <addressOffset>0x4</addressOffset>
+            <size>0x20</size>
+            <access>read-write</access>
+            <resetValue>0x00000000</resetValue>
+            <fields>
+              <field>
+                <name>IV</name>
+                <description>IV63</description>
+                <bitOffset>0</bitOffset>
+                <bitWidth>32</bitWidth>
+              </field>
+            </fields>
+          </register>
+        </cluster>
+        <register>
+          <dim>8</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>0-7</dimIndex>
+          <name>CSGCMCCM%sR</name>
+          <displayName>CSGCMCCM0R</displayName>
+          <description>context swap register</description>
+          <addressOffset>0x50</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CSGCMCCM0R</name>
+              <description>CSGCMCCM0R</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <dim>8</dim>
+          <dimIncrement>0x4</dimIncrement>
+          <dimIndex>0-7</dimIndex>
+          <name>CSGCM%sR</name>
+          <displayName>CSGCM0R</displayName>
+          <description>context swap register</description>
+          <addressOffset>0x70</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CSGCMR</name>
+              <description>CSGCM0R</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>FPU</name>
+      <description>Floting point unit</description>
+      <groupName>FPU</groupName>
+      <baseAddress>0xE000EF34</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0xD</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <interrupt>
+        <name>FPU</name>
+        <description>Floating point unit interrupt</description>
+        <value>81</value>
+      </interrupt>
+      <registers>
+        <register>
+          <name>FPCCR</name>
+          <displayName>FPCCR</displayName>
+          <description>Floating-point context control
+          register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>LSPACT</name>
+              <description>LSPACT</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>USER</name>
+              <description>USER</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>THREAD</name>
+              <description>THREAD</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>HFRDY</name>
+              <description>HFRDY</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>MMRDY</name>
+              <description>MMRDY</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>BFRDY</name>
+              <description>BFRDY</description>
+              <bitOffset>6</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>MONRDY</name>
+              <description>MONRDY</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>LSPEN</name>
+              <description>LSPEN</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ASPEN</name>
+              <description>ASPEN</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>FPCAR</name>
+          <displayName>FPCAR</displayName>
+          <description>Floating-point context address
+          register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ADDRESS</name>
+              <description>Location of unpopulated
+              floating-point</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>29</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>FPSCR</name>
+          <displayName>FPSCR</displayName>
+          <description>Floating-point status control
+          register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IOC</name>
+              <description>Invalid operation cumulative exception
+              bit</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DZC</name>
+              <description>Division by zero cumulative exception
+              bit.</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>OFC</name>
+              <description>Overflow cumulative exception
+              bit</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>UFC</name>
+              <description>Underflow cumulative exception
+              bit</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>IXC</name>
+              <description>Inexact cumulative exception
+              bit</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>IDC</name>
+              <description>Input denormal cumulative exception
+              bit.</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>RMode</name>
+              <description>Rounding Mode control
+              field</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>2</bitWidth>
+            </field>
+            <field>
+              <name>FZ</name>
+              <description>Flush-to-zero mode control
+              bit:</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DN</name>
+              <description>Default NaN mode control
+              bit</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>AHP</name>
+              <description>Alternative half-precision control
+              bit</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>V</name>
+              <description>Overflow condition code
+              flag</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>C</name>
+              <description>Carry condition code flag</description>
+              <bitOffset>29</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>Z</name>
+              <description>Zero condition code flag</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>N</name>
+              <description>Negative condition code
+              flag</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>MPU</name>
+      <description>Memory protection unit</description>
+      <groupName>MPU</groupName>
+      <baseAddress>0xE000ED90</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x15</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>TYPER</name>
+          <displayName>TYPER</displayName>
+          <description>MPU type register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000800</resetValue>
+          <fields>
+            <field>
+              <name>SEPARATE</name>
+              <description>Separate flag</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DREGION</name>
+              <description>Number of MPU data regions</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>IREGION</name>
+              <description>Number of MPU instruction
+              regions</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CTRL</name>
+          <displayName>CTRL</displayName>
+          <description>MPU control register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ENABLE</name>
+              <description>Enables the MPU</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>HFNMIENA</name>
+              <description>Enables the operation of MPU during hard
+              fault</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PRIVDEFENA</name>
+              <description>Enable priviliged software access to
+              default memory map</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>RNR</name>
+          <displayName>RNR</displayName>
+          <description>MPU region number register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>REGION</name>
+              <description>MPU region</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>RBAR</name>
+          <displayName>RBAR</displayName>
+          <description>MPU region base address
+          register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>REGION</name>
+              <description>MPU region field</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>VALID</name>
+              <description>MPU region number valid</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>ADDR</name>
+              <description>Region base address field</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>27</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>RASR</name>
+          <displayName>RASR</displayName>
+          <description>MPU region attribute and size
+          register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ENABLE</name>
+              <description>Region enable bit.</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>SIZE</name>
+              <description>Size of the MPU protection
+              region</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>5</bitWidth>
+            </field>
+            <field>
+              <name>SRD</name>
+              <description>Subregion disable bits</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>B</name>
+              <description>memory attribute</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>C</name>
+              <description>memory attribute</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>S</name>
+              <description>Shareable memory attribute</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TEX</name>
+              <description>memory attribute</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>3</bitWidth>
+            </field>
+            <field>
+              <name>AP</name>
+              <description>Access permission</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>3</bitWidth>
+            </field>
+            <field>
+              <name>XN</name>
+              <description>Instruction access disable
+              bit</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>STK</name>
+      <description>SysTick timer</description>
+      <groupName>STK</groupName>
+      <baseAddress>0xE000E010</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x11</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>CTRL</name>
+          <displayName>CTRL</displayName>
+          <description>SysTick control and status
+          register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>ENABLE</name>
+              <description>Counter enable</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>TICKINT</name>
+              <description>SysTick exception request
+              enable</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>CLKSOURCE</name>
+              <description>Clock source selection</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>COUNTFLAG</name>
+              <description>COUNTFLAG</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>LOAD</name>
+          <displayName>LOAD</displayName>
+          <description>SysTick reload value register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>RELOAD</name>
+              <description>RELOAD value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>24</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>VAL</name>
+          <displayName>VAL</displayName>
+          <description>SysTick current value register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CURRENT</name>
+              <description>Current counter value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>24</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CALIB</name>
+          <displayName>CALIB</displayName>
+          <description>SysTick calibration value
+          register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TENMS</name>
+              <description>Calibration value</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>24</bitWidth>
+            </field>
+            <field>
+              <name>SKEW</name>
+              <description>SKEW flag: Indicates whether the TENMS
+              value is exact</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>NOREF</name>
+              <description>NOREF flag. Reads as zero</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>SCB</name>
+      <description>System control block</description>
+      <groupName>SCB</groupName>
+      <baseAddress>0xE000ED00</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x41</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>CPUID</name>
+          <displayName>CPUID</displayName>
+          <description>CPUID base register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-only</access>
+          <resetValue>0x410FC241</resetValue>
+          <fields>
+            <field>
+              <name>Revision</name>
+              <description>Revision number</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>PartNo</name>
+              <description>Part number of the
+              processor</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>12</bitWidth>
+            </field>
+            <field>
+              <name>Constant</name>
+              <description>Reads as 0xF</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>Variant</name>
+              <description>Variant number</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+            <field>
+              <name>Implementer</name>
+              <description>Implementer code</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>ICSR</name>
+          <displayName>ICSR</displayName>
+          <description>Interrupt control and state
+          register</description>
+          <addressOffset>0x4</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>VECTACTIVE</name>
+              <description>Active vector</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>9</bitWidth>
+            </field>
+            <field>
+              <name>RETTOBASE</name>
+              <description>Return to base level</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>VECTPENDING</name>
+              <description>Pending vector</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>7</bitWidth>
+            </field>
+            <field>
+              <name>ISRPENDING</name>
+              <description>Interrupt pending flag</description>
+              <bitOffset>22</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PENDSTCLR</name>
+              <description>SysTick exception clear-pending
+              bit</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PENDSTSET</name>
+              <description>SysTick exception set-pending
+              bit</description>
+              <bitOffset>26</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PENDSVCLR</name>
+              <description>PendSV clear-pending bit</description>
+              <bitOffset>27</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PENDSVSET</name>
+              <description>PendSV set-pending bit</description>
+              <bitOffset>28</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>NMIPENDSET</name>
+              <description>NMI set-pending bit.</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>VTOR</name>
+          <displayName>VTOR</displayName>
+          <description>Vector table offset register</description>
+          <addressOffset>0x8</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>TBLOFF</name>
+              <description>Vector table base offset
+              field</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>21</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AIRCR</name>
+          <displayName>AIRCR</displayName>
+          <description>Application interrupt and reset control
+          register</description>
+          <addressOffset>0xC</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>VECTRESET</name>
+              <description>VECTRESET</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>VECTCLRACTIVE</name>
+              <description>VECTCLRACTIVE</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>SYSRESETREQ</name>
+              <description>SYSRESETREQ</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PRIGROUP</name>
+              <description>PRIGROUP</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>3</bitWidth>
+            </field>
+            <field>
+              <name>ENDIANESS</name>
+              <description>ENDIANESS</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>VECTKEYSTAT</name>
+              <description>Register key</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>16</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SCR</name>
+          <displayName>SCR</displayName>
+          <description>System control register</description>
+          <addressOffset>0x10</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>SLEEPONEXIT</name>
+              <description>SLEEPONEXIT</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>SLEEPDEEP</name>
+              <description>SLEEPDEEP</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>SEVEONPEND</name>
+              <description>Send Event on Pending bit</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CCR</name>
+          <displayName>CCR</displayName>
+          <description>Configuration and control
+          register</description>
+          <addressOffset>0x14</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>NONBASETHRDENA</name>
+              <description>Configures how the processor enters
+              Thread mode</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>USERSETMPEND</name>
+              <description>USERSETMPEND</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>UNALIGN__TRP</name>
+              <description>UNALIGN_ TRP</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DIV_0_TRP</name>
+              <description>DIV_0_TRP</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>BFHFNMIGN</name>
+              <description>BFHFNMIGN</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>STKALIGN</name>
+              <description>STKALIGN</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SHPR1</name>
+          <displayName>SHPR1</displayName>
+          <description>System handler priority
+          registers</description>
+          <addressOffset>0x18</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PRI_4</name>
+              <description>Priority of system handler
+              4</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>PRI_5</name>
+              <description>Priority of system handler
+              5</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>PRI_6</name>
+              <description>Priority of system handler
+              6</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SHPR2</name>
+          <displayName>SHPR2</displayName>
+          <description>System handler priority
+          registers</description>
+          <addressOffset>0x1C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PRI_11</name>
+              <description>Priority of system handler
+              11</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SHPR3</name>
+          <displayName>SHPR3</displayName>
+          <description>System handler priority
+          registers</description>
+          <addressOffset>0x20</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>PRI_14</name>
+              <description>Priority of system handler
+              14</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+            <field>
+              <name>PRI_15</name>
+              <description>Priority of system handler
+              15</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>8</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>SHCRS</name>
+          <displayName>SHCRS</displayName>
+          <description>System handler control and state
+          register</description>
+          <addressOffset>0x24</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>MEMFAULTACT</name>
+              <description>Memory management fault exception active
+              bit</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>BUSFAULTACT</name>
+              <description>Bus fault exception active
+              bit</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>USGFAULTACT</name>
+              <description>Usage fault exception active
+              bit</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>SVCALLACT</name>
+              <description>SVC call active bit</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>MONITORACT</name>
+              <description>Debug monitor active bit</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PENDSVACT</name>
+              <description>PendSV exception active
+              bit</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>SYSTICKACT</name>
+              <description>SysTick exception active
+              bit</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>USGFAULTPENDED</name>
+              <description>Usage fault exception pending
+              bit</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>MEMFAULTPENDED</name>
+              <description>Memory management fault exception
+              pending bit</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>BUSFAULTPENDED</name>
+              <description>Bus fault exception pending
+              bit</description>
+              <bitOffset>14</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>SVCALLPENDED</name>
+              <description>SVC call pending bit</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>MEMFAULTENA</name>
+              <description>Memory management fault enable
+              bit</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>BUSFAULTENA</name>
+              <description>Bus fault enable bit</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>USGFAULTENA</name>
+              <description>Usage fault enable bit</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>CFSR_UFSR_BFSR_MMFSR</name>
+          <displayName>CFSR_UFSR_BFSR_MMFSR</displayName>
+          <description>Configurable fault status
+          register</description>
+          <addressOffset>0x28</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IACCVIOL</name>
+              <description>Instruction access violation
+              flag</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>MUNSTKERR</name>
+              <description>Memory manager fault on unstacking for a
+              return from exception</description>
+              <bitOffset>3</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>MSTKERR</name>
+              <description>Memory manager fault on stacking for
+              exception entry.</description>
+              <bitOffset>4</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>MLSPERR</name>
+              <description>MLSPERR</description>
+              <bitOffset>5</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>MMARVALID</name>
+              <description>Memory Management Fault Address Register
+              (MMAR) valid flag</description>
+              <bitOffset>7</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>IBUSERR</name>
+              <description>Instruction bus error</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>PRECISERR</name>
+              <description>Precise data bus error</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>IMPRECISERR</name>
+              <description>Imprecise data bus error</description>
+              <bitOffset>10</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>UNSTKERR</name>
+              <description>Bus fault on unstacking for a return
+              from exception</description>
+              <bitOffset>11</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>STKERR</name>
+              <description>Bus fault on stacking for exception
+              entry</description>
+              <bitOffset>12</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>LSPERR</name>
+              <description>Bus fault on floating-point lazy state
+              preservation</description>
+              <bitOffset>13</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>BFARVALID</name>
+              <description>Bus Fault Address Register (BFAR) valid
+              flag</description>
+              <bitOffset>15</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>UNDEFINSTR</name>
+              <description>Undefined instruction usage
+              fault</description>
+              <bitOffset>16</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>INVSTATE</name>
+              <description>Invalid state usage fault</description>
+              <bitOffset>17</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>INVPC</name>
+              <description>Invalid PC load usage
+              fault</description>
+              <bitOffset>18</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>NOCP</name>
+              <description>No coprocessor usage
+              fault.</description>
+              <bitOffset>19</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>UNALIGNED</name>
+              <description>Unaligned access usage
+              fault</description>
+              <bitOffset>24</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DIVBYZERO</name>
+              <description>Divide by zero usage fault</description>
+              <bitOffset>25</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>HFSR</name>
+          <displayName>HFSR</displayName>
+          <description>Hard fault status register</description>
+          <addressOffset>0x2C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>VECTTBL</name>
+              <description>Vector table hard fault</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>FORCED</name>
+              <description>Forced hard fault</description>
+              <bitOffset>30</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DEBUG_VT</name>
+              <description>Reserved for Debug use</description>
+              <bitOffset>31</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>MMFAR</name>
+          <displayName>MMFAR</displayName>
+          <description>Memory management fault address
+          register</description>
+          <addressOffset>0x34</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>MMFAR</name>
+              <description>Memory management fault
+              address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>BFAR</name>
+          <displayName>BFAR</displayName>
+          <description>Bus fault address register</description>
+          <addressOffset>0x38</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>BFAR</name>
+              <description>Bus fault address</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+        <register>
+          <name>AFSR</name>
+          <displayName>AFSR</displayName>
+          <description>Auxiliary fault status
+          register</description>
+          <addressOffset>0x3C</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>IMPDEF</name>
+              <description>Implementation defined</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>32</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>NVIC_STIR</name>
+      <description>Nested vectored interrupt
+      controller</description>
+      <groupName>NVIC</groupName>
+      <baseAddress>0xE000EF00</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x5</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>STIR</name>
+          <displayName>STIR</displayName>
+          <description>Software trigger interrupt
+          register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>INTID</name>
+              <description>Software generated interrupt
+              ID</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>9</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>FPU_CPACR</name>
+      <description>Floating point unit CPACR</description>
+      <groupName>FPU</groupName>
+      <baseAddress>0xE000ED88</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x5</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>CPACR</name>
+          <displayName>CPACR</displayName>
+          <description>Coprocessor access control
+          register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>CP</name>
+              <description>CP</description>
+              <bitOffset>20</bitOffset>
+              <bitWidth>4</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+    <peripheral>
+      <name>SCB_ACTRL</name>
+      <description>System control block ACTLR</description>
+      <groupName>SCB</groupName>
+      <baseAddress>0xE000E008</baseAddress>
+      <addressBlock>
+        <offset>0x0</offset>
+        <size>0x5</size>
+        <usage>registers</usage>
+      </addressBlock>
+      <registers>
+        <register>
+          <name>ACTRL</name>
+          <displayName>ACTRL</displayName>
+          <description>Auxiliary control register</description>
+          <addressOffset>0x0</addressOffset>
+          <size>0x20</size>
+          <access>read-write</access>
+          <resetValue>0x00000000</resetValue>
+          <fields>
+            <field>
+              <name>DISMCYCINT</name>
+              <description>DISMCYCINT</description>
+              <bitOffset>0</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DISDEFWBUF</name>
+              <description>DISDEFWBUF</description>
+              <bitOffset>1</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DISFOLD</name>
+              <description>DISFOLD</description>
+              <bitOffset>2</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DISFPCA</name>
+              <description>DISFPCA</description>
+              <bitOffset>8</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+            <field>
+              <name>DISOOFP</name>
+              <description>DISOOFP</description>
+              <bitOffset>9</bitOffset>
+              <bitWidth>1</bitWidth>
+            </field>
+          </fields>
+        </register>
+      </registers>
+    </peripheral>
+  </peripherals>
+</device>
