STM32F302x6/x8: Memory map inconsistencies in DS9896 Rev 8 and RM0365 Rev 8
Hello everyone,
While reviewing the STM32F302x6/x8 documents (DS9896 Rev 8 and RM0365 Rev 8), I found some inconsistencies in the memory map. Could you please look into them?
DS9896 Rev 8, Table 19, page 49

- TIM1 is
0x4001 0800 - 0x4001 2FFF(10 K). It should be0x4001 2C00 - 0x4001 2FFF(1 K). RM0365 shows TIM1 at0x4001 2C00 - 0x4001 2FFF(1 K) and the range0x4001 0800 - 0x4001 2BFFas reserved. It looks like the reserved area is inside the TIM1 row. The CMSIS device header also confirms the start address0x4001 2C00:#define TIM1_BASE (APB2PERIPH_BASE + 0x00002C00UL)(file: stm32f302x8.h).
DS9896 Rev 8, Table 19, page 50

- I2C3
0x4000 7800 - 0x4000 7BFFhas size 9 K. It should be 1 K. RM0365 also says 1 K. - Reserved
0x0804 0000 - 0x1FFF D7FFshould start at0x0801 0000. Main Flash is 64 K and ends at0x0800 FFFF, and RM0365 shows0x0801 0000 - 0x1FFF D7FF. - Typo:
0x2000 4000 - 3FFF FFFFshould be0x2000 4000 - 0x3FFF FFFF.
DS9896 Rev 8, Table 19, page 51

-
Reserved
0x0004 0000 - 0x07FF FFFFshould start at0x0001 0000. The boot area is 64 K (0x0000 0000 - 0x0000 FFFF). As written, the range0x0001 0000 - 0x0003 FFFFis not defined. -
The “APB1” label is on the boot area row. This row does not belong to any bus. RM0365 shows “-”. APB1 starts at
0x4000 0000. -
Typo:
0x0000 000should be0x0000 0000.
DS9896 Rev 8, Figure 8, page 48
-
The start addresses in Figure 8 match Table 19. But some end addresses are different from Table 19 and RM0365.
| Figure 8 | Table 19 / RM0365 |
|---|---|
AHB3 ends at 0x5000 07FF | ADC1 ends at 0x5000 03FF |
APB2 ends at 0x4001 6C00 | In RM0365, APB2 ends at 0x4001 7FFF. The last peripheral (TIM17) ends at 0x4001 4BFF, and 0x4001 4C00 - 0x4001 7FFF (13 K) is reserved. |
APB1 ends at 0x4000 A000 | In RM0365, APB1 ends at 0x4000 9BFF. The last peripheral (I2C3) ends at 0x4000 7BFF, and 0x4000 7C00 - 0x4000 9BFF (8 K) is reserved. |
Flash ends at 0x0804 0000 | Main Flash ends at 0x0800 FFFF (64 K) |
RM0365 Rev 8, Table 4, page 58

-
A reserved row is missing between TIM1 and USART1. In RM0365, TIM1 ends at
0x4001 2FFFand USART1 starts at0x4001 3800, but there is no row for the range0x4001 3000 - 0x4001 37FF(2 K). DS9896 shows this range as two reserved rows (0x4001 3000 - 0x4001 33FFand0x4001 3400 - 0x4001 37FF). -
Reserved
0x4001 0800 - 0x4001 2BFFhas size 8 K. The real size is 0x2400 bytes, which is 9 K.
