| // Main Flash memory |
| // Upper size: |
| // STM32G0B1xx and STM32G0C1xx: 0x0807 FFFF; STM32G071xx and STM32G081xx: 0x0801 FFFF; STM32G051xx and |
| // STM32G061xx, STM32G031xx and STM32G041xx: 0x0800 FFFF. |
| flash: Memory.MappedMemory @ sysbus 0x08000000 |
| size: 0x20000 |
| |
| ram: Memory.MappedMemory @ sysbus 0x20000000 |
| size: 0xC000 |
| |
| nvic: IRQControllers.NVIC @ sysbus 0xE000E000 |
| priorityMask: 0xF0 |
| systickFrequency: 72000000 |
| IRQ -> cpu@0 |
| |
| // This model's registers are not compatible with the EXTI in this MCU, |
| // it is currently here to support direct interrupts |
| exti: IRQControllers.STM32F4_EXTI @ sysbus 0x40021800 |
| numberOfOutputLines: 34 |
| firstDirectLine: 19 |
| [0, 1] -> nvicInput5@[0, 1] |
| [2, 3] -> nvicInput6@[0, 1] |
| [4-15] -> nvicInput7@[0-11] |
| [23] -> nvic@[23] |
| [32, 33] -> nvicInput8@[0, 1] |
| [17, 18] -> nvicInput12@[0, 1] |
| |
| nvicInput8: Miscellaneous.CombinedInput @ none |
| numberOfInputs: 2 |
| -> nvic@8 |
| |
| nvicInput10: Miscellaneous.CombinedInput @ none |
| numberOfInputs: 2 |
| -> nvic@10 |
| |
| nvicInput11: Miscellaneous.CombinedInput @ none |
| numberOfInputs: 9 |
| -> nvic@11 |
| |
| nvicInput12: Miscellaneous.CombinedInput @ none |
| numberOfInputs: 2 |
| -> nvic@12 |
| |
| nvicInput5: Miscellaneous.CombinedInput @ none |
| numberOfInputs: 2 |
| -> nvic@5 |
| |
| nvicInput6: Miscellaneous.CombinedInput @ none |
| numberOfInputs: 2 |
| -> nvic@6 |
| |
| nvicInput7: Miscellaneous.CombinedInput @ none |
| numberOfInputs: 12 |
| -> nvic@7 |
| |
| nvicInput29: Miscellaneous.CombinedInput @ none |
| numberOfInputs: 4 |
| -> nvic@29 |
| |
| cpu: CPU.CortexM @ sysbus |
| cpuType: "cortex-m0" |
| nvic: nvic |
| |
| usart1: UART.STM32F7_USART @ sysbus 0x40013800 |
| frequency: 200000000 |
| IRQ -> nvic@27 |
| |
| usart2: UART.STM32F7_USART @ sysbus 0x40004400 |
| frequency: 200000000 |
| IRQ -> nvic@28 |
| |
| usart3: UART.STM32F7_USART @ sysbus 0x40004800 |
| frequency: 200000000 |
| IRQ -> nvicInput29@0 |
| |
| usart4: UART.STM32F7_USART @ sysbus 0x40004C00 |
| frequency: 200000000 |
| IRQ -> nvicInput29@1 |
| |
| usart5: UART.STM32F7_USART @ sysbus 0x40005000 |
| frequency: 200000000 |
| IRQ -> nvicInput29@2 |
| |
| usart6: UART.STM32F7_USART @ sysbus 0x40013C00 |
| frequency: 200000000 |
| IRQ -> nvicInput29@3 |
| |
| gpioPortA: GPIOPort.STM32_GPIOPort @ sysbus <0x50000000, +0x400> |
| modeResetValue: 0xEBFFFFFF |
| pullUpPullDownResetValue: 0x24000000 |
| numberOfAFs: 8 |
| [0-15] -> exti@[0-15] |
| |
| gpioPortB: GPIOPort.STM32_GPIOPort @ sysbus <0x50000400, +0x400> |
| modeResetValue: 0xFFFFFFFF |
| pullUpPullDownResetValue: 0x00000000 |
| numberOfAFs: 8 |
| [0-15] -> exti@[0-15] |
| |
| gpioPortC: GPIOPort.STM32_GPIOPort @ sysbus <0x50000800, +0x400> |
| modeResetValue: 0xFFFFFFFF |
| pullUpPullDownResetValue: 0x00000000 |
| numberOfAFs: 8 |
| [0-15] -> exti@[0-15] |
| |
| gpioPortD: GPIOPort.STM32_GPIOPort @ sysbus <0x50000C00, +0x400> |
| modeResetValue: 0xFFFFFFFF |
| pullUpPullDownResetValue: 0x00000000 |
| numberOfAFs: 8 |
| [0-15] -> exti@[0-15] |
| |
| gpioPortE: GPIOPort.STM32_GPIOPort @ sysbus <0x50001000, +0x400> |
| modeResetValue:0xFFFFFFFF |
| pullUpPullDownResetValue: 0x00000000 |
| numberOfAFs: 8 |
| [0-15] -> exti@[0-15] |
| |
| gpioPortF: GPIOPort.STM32_GPIOPort @ sysbus <0x50001400, +0x400> |
| modeResetValue: 0xFFFFFFFF |
| pullUpPullDownResetValue: 0x00000000 |
| numberOfAFs: 8 |
| [0-15] -> exti@[0-15] |
| |
| i2c1: I2C.STM32F7_I2C @ sysbus 0x40005400 |
| EventInterrupt -> exti@23 |
| |
| i2c2: I2C.STM32F7_I2C @ sysbus 0x40005800 |
| EventInterrupt -> exti@22 |
| |
| spi1: SPI.STM32SPI @ sysbus 0x40013000 |
| IRQ -> nvic@25 |
| |
| spi2: SPI.STM32SPI @ sysbus 0x40003800 |
| IRQ -> nvic@26 |
| |
| spi3: SPI.STM32SPI @ sysbus 0x40003C00 |
| IRQ -> nvic@26 |
| |
| timer1: Timers.STM32_Timer @ sysbus 0x40012C00 |
| frequency: 10000000 |
| initialLimit: 0xFFFF |
| -> nvic@14 |
| |
| timer2: Timers.STM32_Timer @ sysbus 0x40000000 |
| frequency: 10000000 |
| initialLimit: 0xFFFFFFFF |
| -> nvic@15 |
| |
| timer3: Timers.STM32_Timer @ sysbus 0x40000400 |
| frequency: 10000000 |
| initialLimit: 0xFFFF |
| -> nvic@16 |
| |
| timer4: Timers.STM32_Timer @ sysbus 0x40000800 |
| frequency: 10000000 |
| initialLimit: 0xFFFF |
| -> nvic@16 |
| |
| timer6: Timers.STM32_Timer @ sysbus 0x40001000 |
| frequency: 10000000 |
| initialLimit: 0xFFFF |
| |
| timer7: Timers.STM32_Timer @ sysbus 0x40001400 |
| frequency: 10000000 |
| initialLimit: 0xFFFF |
| -> nvic@18 |
| |
| timer14: Timers.STM32_Timer @ sysbus 0x40002000 |
| frequency: 10000000 |
| initialLimit: 0xFFFF |
| -> nvic@19 |
| |
| timer15: Timers.STM32_Timer @ sysbus 0x40014000 |
| frequency: 10000000 |
| initialLimit: 0xFFFF |
| -> nvic@20 |
| |
| timer16: Timers.STM32_Timer @ sysbus 0x40014400 |
| frequency: 10000000 |
| initialLimit: 0xFFFF |
| -> nvic@21 |
| |
| timer17: Timers.STM32_Timer @ sysbus 0x40014800 |
| frequency: 10000000 |
| initialLimit: 0xFFFF |
| -> nvic@22 |
| |
| fdcan1: CAN.STMCAN @ sysbus <0x40006400, +0x400> |
| fdcan2: CAN.STMCAN @ sysbus <0x40006800, +0x400> |
| |
| rtc: Timers.STM32F4_RTC @ sysbus 0x40002800 |
| AlarmIRQ -> exti@19 |
| |
| rcc: Python.PythonPeripheral @ sysbus 0x40021000 |
| size: 0x400 |
| initable: true |
| script: ''' |
| if request.isInit: |
| lastVal = 0 |
| data = {'hsion': 0, 'pllon': 0, 'sw': 0} |
| self.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))) |
| |
| if request.isWrite: |
| if request.offset == 0x0: |
| # HSION [doc = "Bit 8 - HSI16 clock enable"] |
| data['hsion'] = (request.value >> 8) & 0x1 |
| # PLLON [doc = "Bit 24 - PLL enable"] |
| data['pllon'] = (request.value >> 24) & 0x1 |
| elif request.offset == 0x8: |
| # SW_W [doc = "Bits 0:2 - System clock switch"] |
| data['sw'] = request.value & 0x7 |
| elif request.isRead: |
| lastVal = 1 - lastVal |
| if request.offset == 0x0: |
| # request.value = lastVal * 0x83 |
| |
| # RCC_CR [doc = "0x00 - Clock control register"] |
| # HSIRDY_R [doc = "Bit 10 - HSI16 clock ready flag"] |
| # PLLRDY [doc = "Bit 25 - PLL clock ready flag"] |
| request.value = (data['hsion'] << 10) | (data['pllon'] << 25) |
| elif request.offset == 0x4: |
| request.value = lastVal * 0xFFFFFFF8 |
| elif request.offset == 0x24: |
| request.value = 0x0 |
| else: |
| # RCC_CFGR [doc = "0x08 - Clock configuration register"] |
| # SWS_R [doc = "Bits 3:5 - System clock switch status"] |
| # request.value = lastVal * 0xFFFFFFFF |
| request.value = data['sw'] << 3 |
| |
| self.NoisyLog(" 0x%x (%s)" % (request.value, str(data))) |
| ''' |
| |
| dma1: DMA.STM32G0DMA @ sysbus 0x40020000 |
| numberOfChannels: 7 |
| 0 -> nvic@9 |
| [1, 2] -> nvicInput10@[0, 1] |
| [3-6] -> nvicInput11@[0-3] |
| |
| dma2: DMA.STM32G0DMA @ sysbus 0x40020400 |
| numberOfChannels: 5 |
| [0-4] -> nvicInput11@[4-8] |
| |
| adc: Analog.STM32F0_ADC @ sysbus 0x40012400 |
| referenceVoltage: 3.3 |
| externalEventFrequency: 1000 |
| -> nvic@12 |
| |
| sysbus: |
| init: |
| Tag <0x40002C00, 0x40002FFF> "WWDG" |
| Tag <0x40003000, 0x400033FF> "IWDG" |
| Tag <0x40005C00, 0x40005FFF> "USB " |
| Tag <0x40006C00, 0x40006FFF> "CRS" |
| Tag <0x40007000, 0x400073FF> "PWR" |
| Tag <0x40007400, 0x400077FF> "DAC" |
| Tag <0x40007800, 0x40007BFF> "CEC" |
| Tag <0x40010000, 0x400103FF> "SYSCFG" |
| Tag <0x40015800, 0x40015BFF> "DBG" |
| Tag <0x40022000, 0x400223FF> "FLASH_INTERFACE" |
| Tag <0x40023000, 0x400233FF> "CRC" |