1// Main Flash memory 2// Upper size: 3// STM32G0B1xx and STM32G0C1xx: 0x0807 FFFF; STM32G071xx and STM32G081xx: 0x0801 FFFF; STM32G051xx and 4// STM32G061xx, STM32G031xx and STM32G041xx: 0x0800 FFFF. 5flash: Memory.MappedMemory @ sysbus 0x08000000 6 size: 0x20000 7 8ram: Memory.MappedMemory @ sysbus 0x20000000 9 size: 0xC000 10 11nvic: IRQControllers.NVIC @ sysbus 0xE000E000 12 priorityMask: 0xF0 13 systickFrequency: 72000000 14 IRQ -> cpu@0 15 16// This model's registers are not compatible with the EXTI in this MCU, 17// it is currently here to support direct interrupts 18exti: IRQControllers.STM32F4_EXTI @ sysbus 0x40021800 19 numberOfOutputLines: 34 20 firstDirectLine: 19 21 [0, 1] -> nvicInput5@[0, 1] 22 [2, 3] -> nvicInput6@[0, 1] 23 [4-15] -> nvicInput7@[0-11] 24 [23] -> nvic@[23] 25 [32, 33] -> nvicInput8@[0, 1] 26 [17, 18] -> nvicInput12@[0, 1] 27 28nvicInput8: Miscellaneous.CombinedInput @ none 29 numberOfInputs: 2 30 -> nvic@8 31 32nvicInput10: Miscellaneous.CombinedInput @ none 33 numberOfInputs: 2 34 -> nvic@10 35 36nvicInput11: Miscellaneous.CombinedInput @ none 37 numberOfInputs: 9 38 -> nvic@11 39 40nvicInput12: Miscellaneous.CombinedInput @ none 41 numberOfInputs: 2 42 -> nvic@12 43 44nvicInput5: Miscellaneous.CombinedInput @ none 45 numberOfInputs: 2 46 -> nvic@5 47 48nvicInput6: Miscellaneous.CombinedInput @ none 49 numberOfInputs: 2 50 -> nvic@6 51 52nvicInput7: Miscellaneous.CombinedInput @ none 53 numberOfInputs: 12 54 -> nvic@7 55 56nvicInput29: Miscellaneous.CombinedInput @ none 57 numberOfInputs: 4 58 -> nvic@29 59 60cpu: CPU.CortexM @ sysbus 61 cpuType: "cortex-m0" 62 nvic: nvic 63 64usart1: UART.STM32F7_USART @ sysbus 0x40013800 65 frequency: 200000000 66 IRQ -> nvic@27 67 68usart2: UART.STM32F7_USART @ sysbus 0x40004400 69 frequency: 200000000 70 IRQ -> nvic@28 71 72usart3: UART.STM32F7_USART @ sysbus 0x40004800 73 frequency: 200000000 74 IRQ -> nvicInput29@0 75 76usart4: UART.STM32F7_USART @ sysbus 0x40004C00 77 frequency: 200000000 78 IRQ -> nvicInput29@1 79 80usart5: UART.STM32F7_USART @ sysbus 0x40005000 81 frequency: 200000000 82 IRQ -> nvicInput29@2 83 84usart6: UART.STM32F7_USART @ sysbus 0x40013C00 85 frequency: 200000000 86 IRQ -> nvicInput29@3 87 88gpioPortA: GPIOPort.STM32_GPIOPort @ sysbus <0x50000000, +0x400> 89 modeResetValue: 0xEBFFFFFF 90 pullUpPullDownResetValue: 0x24000000 91 numberOfAFs: 8 92 [0-15] -> exti@[0-15] 93 94gpioPortB: GPIOPort.STM32_GPIOPort @ sysbus <0x50000400, +0x400> 95 modeResetValue: 0xFFFFFFFF 96 pullUpPullDownResetValue: 0x00000000 97 numberOfAFs: 8 98 [0-15] -> exti@[0-15] 99 100gpioPortC: GPIOPort.STM32_GPIOPort @ sysbus <0x50000800, +0x400> 101 modeResetValue: 0xFFFFFFFF 102 pullUpPullDownResetValue: 0x00000000 103 numberOfAFs: 8 104 [0-15] -> exti@[0-15] 105 106gpioPortD: GPIOPort.STM32_GPIOPort @ sysbus <0x50000C00, +0x400> 107 modeResetValue: 0xFFFFFFFF 108 pullUpPullDownResetValue: 0x00000000 109 numberOfAFs: 8 110 [0-15] -> exti@[0-15] 111 112gpioPortE: GPIOPort.STM32_GPIOPort @ sysbus <0x50001000, +0x400> 113 modeResetValue:0xFFFFFFFF 114 pullUpPullDownResetValue: 0x00000000 115 numberOfAFs: 8 116 [0-15] -> exti@[0-15] 117 118gpioPortF: GPIOPort.STM32_GPIOPort @ sysbus <0x50001400, +0x400> 119 modeResetValue: 0xFFFFFFFF 120 pullUpPullDownResetValue: 0x00000000 121 numberOfAFs: 8 122 [0-15] -> exti@[0-15] 123 124i2c1: I2C.STM32F7_I2C @ sysbus 0x40005400 125 EventInterrupt -> exti@23 126 127i2c2: I2C.STM32F7_I2C @ sysbus 0x40005800 128 EventInterrupt -> exti@22 129 130spi1: SPI.STM32SPI @ sysbus 0x40013000 131 IRQ -> nvic@25 132 133spi2: SPI.STM32SPI @ sysbus 0x40003800 134 IRQ -> nvic@26 135 136spi3: SPI.STM32SPI @ sysbus 0x40003C00 137 IRQ -> nvic@26 138 139timer1: Timers.STM32_Timer @ sysbus 0x40012C00 140 frequency: 10000000 141 initialLimit: 0xFFFF 142 -> nvic@14 143 144timer2: Timers.STM32_Timer @ sysbus 0x40000000 145 frequency: 10000000 146 initialLimit: 0xFFFFFFFF 147 -> nvic@15 148 149timer3: Timers.STM32_Timer @ sysbus 0x40000400 150 frequency: 10000000 151 initialLimit: 0xFFFF 152 -> nvic@16 153 154timer4: Timers.STM32_Timer @ sysbus 0x40000800 155 frequency: 10000000 156 initialLimit: 0xFFFF 157 -> nvic@16 158 159timer6: Timers.STM32_Timer @ sysbus 0x40001000 160 frequency: 10000000 161 initialLimit: 0xFFFF 162 163timer7: Timers.STM32_Timer @ sysbus 0x40001400 164 frequency: 10000000 165 initialLimit: 0xFFFF 166 -> nvic@18 167 168timer14: Timers.STM32_Timer @ sysbus 0x40002000 169 frequency: 10000000 170 initialLimit: 0xFFFF 171 -> nvic@19 172 173timer15: Timers.STM32_Timer @ sysbus 0x40014000 174 frequency: 10000000 175 initialLimit: 0xFFFF 176 -> nvic@20 177 178timer16: Timers.STM32_Timer @ sysbus 0x40014400 179 frequency: 10000000 180 initialLimit: 0xFFFF 181 -> nvic@21 182 183timer17: Timers.STM32_Timer @ sysbus 0x40014800 184 frequency: 10000000 185 initialLimit: 0xFFFF 186 -> nvic@22 187 188fdcan1: CAN.STMCAN @ sysbus <0x40006400, +0x400> 189fdcan2: CAN.STMCAN @ sysbus <0x40006800, +0x400> 190 191rtc: Timers.STM32F4_RTC @ sysbus 0x40002800 192 AlarmIRQ -> exti@19 193 194rcc: Python.PythonPeripheral @ sysbus 0x40021000 195 size: 0x400 196 initable: true 197 script: ''' 198if request.isInit: 199 lastVal = 0 200 data = {'hsion': 1, 'pllon': 0, 'sw': 0, 'lsion': 0} 201self.NoisyLog("%s on FLIPFLOP at offset 0x%x, value 0x%x, length %d, %s" % (str(request.type), request.offset, request.value, request.length, str(data))) 202 203if request.isWrite: 204 if request.offset == 0x0: 205 # HSION [doc = "Bit 8 - HSI16 clock enable"] 206 data['hsion'] = (request.value >> 8) & 0x1 207 # PLLON [doc = "Bit 24 - PLL enable"] 208 data['pllon'] = (request.value >> 24) & 0x1 209 elif request.offset == 0x8: 210 # SW_W [doc = "Bits 0:2 - System clock switch"] 211 data['sw'] = request.value & 0x7 212 elif request.offset == 0x60: 213 data['lsion'] = request.value & 0x1 214elif request.isRead: 215 lastVal = 1 - lastVal 216 if request.offset == 0x0: 217 # request.value = lastVal * 0x83 218 219 # RCC_CR [doc = "0x00 - Clock control register"] 220 # HSION_RW [doc = "Bit 8 - HSI16 clock enable flag"] 221 # HSIRDY_R [doc = "Bit 10 - HSI16 clock ready flag"] # HSIRDY == HISON for this model 222 # PLLRDY [doc = "Bit 25 - PLL clock ready flag"] 223 request.value = (data['hsion'] << 8) | (data['hsion'] << 10) | (data['pllon'] << 25) 224 elif request.offset == 0x4: 225 request.value = lastVal * 0xFFFFFFF8 226 elif request.offset == 0x24: 227 request.value = 0x0 228 elif request.offset == 0x60: 229 request.value = (data['lsion'] << 1) 230 else: 231 # RCC_CFGR [doc = "0x08 - Clock configuration register"] 232 # SWS_R [doc = "Bits 3:5 - System clock switch status"] 233 # request.value = lastVal * 0xFFFFFFFF 234 request.value = data['sw'] << 3 235 236self.NoisyLog(" 0x%x (%s)" % (request.value, str(data))) 237''' 238 239dma1: DMA.STM32G0DMA @ sysbus 0x40020000 240 numberOfChannels: 7 241 0 -> nvic@9 242 [1, 2] -> nvicInput10@[0, 1] 243 [3-6] -> nvicInput11@[0-3] 244 245dma2: DMA.STM32G0DMA @ sysbus 0x40020400 246 numberOfChannels: 5 247 [0-4] -> nvicInput11@[4-8] 248 249adc: Analog.STM32G0_ADC @ sysbus 0x40012400 250 referenceVoltage: 3.3 251 externalEventFrequency: 1000 252 -> nvic@12 253 254iwdg: Timers.STM32_IndependentWatchdog @ sysbus 0x40003000 255 frequency: 32000 256 257flash_ctrl: MTD.STM32F4_FlashController @ sysbus 0x40022000 258 flash: flash 259 260sysbus: 261 init: 262 Tag <0x40002C00, 0x40002FFF> "WWDG" 263 Tag <0x40003000, 0x400033FF> "IWDG" 264 Tag <0x40005C00, 0x40005FFF> "USB " 265 Tag <0x40006C00, 0x40006FFF> "CRS" 266 Tag <0x40007000, 0x400073FF> "PWR" 267 Tag <0x40007400, 0x400077FF> "DAC" 268 Tag <0x40007800, 0x40007BFF> "CEC" 269 Tag <0x40010000, 0x400103FF> "SYSCFG" 270 Tag <0x40015800, 0x40015BFF> "DBG" 271 Tag <0x40022000, 0x400223FF> "FLASH_INTERFACE" 272 Tag <0x40023000, 0x400233FF> "CRC" 273