rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
mcuconf_stm32h723.h
Go to the documentation of this file.
1/*
2 * Memory attributes settings.
3 */
4#ifndef STM32_NOCACHE_ENABLE
5#define STM32_NOCACHE_ENABLE TRUE
6#endif
7#define STM32_NOCACHE_MPU_REGION MPU_REGION_6
8#define STM32_NOCACHE_RBAR 0x30002000U
9#define STM32_NOCACHE_RASR MPU_RASR_SIZE_16K
10
11/*
12 * PWR system settings.
13 * Reading STM32 Reference Manual is required, settings in PWR_CR3 are
14 * very critical.
15 * Register constants are taken from the ST header.
16 */
17#define STM32_VOS STM32_VOS_SCALE0
18#define STM32_PWR_CR1 (PWR_CR1_SVOS_1 | PWR_CR1_SVOS_0)
19#define STM32_PWR_CR2 (PWR_CR2_BREN)
20#define STM32_PWR_CR3 (PWR_CR3_LDOEN | PWR_CR3_USB33DEN)
21#define STM32_PWR_CPUCR 0
22
23/*
24 * Clock tree static settings.
25 * Reading STM32 Reference Manual is required.
26 */
27#define STM32_HSI_ENABLED TRUE
28#define STM32_LSI_ENABLED TRUE
29#define STM32_CSI_ENABLED TRUE
30#define STM32_HSI48_ENABLED TRUE
31#define STM32_HSE_ENABLED TRUE
32#ifndef STM32_LSE_ENABLED
33#define STM32_LSE_ENABLED TRUE
34#endif
35#define STM32_HSIDIV STM32_HSIDIV_DIV1
36
37/*
38 * PLLs static settings.
39 * Reading STM32 Reference Manual is required.
40 */
41#define STM32_PLLSRC STM32_PLLSRC_HSE_CK
42#define STM32_PLLCFGR_MASK ~0
43
44#if (STM32_HSECLK == 20000000)
45 #define STM32_PLLX_DIVM_VALUE 4
46#elif (STM32_HSECLK == 25000000)
47 #define STM32_PLLX_DIVM_VALUE 5
48#else
49 #error "We have no confing for this STM32_HSECLK"
50#endif
51
52/* PLL1 output clock is 520MHz */
53#define STM32_PLL1_ENABLED TRUE
54#define STM32_PLL1_P_ENABLED TRUE
55#define STM32_PLL1_Q_ENABLED TRUE
56#define STM32_PLL1_R_ENABLED TRUE
57#define STM32_PLL1_DIVM_VALUE STM32_PLLX_DIVM_VALUE
58#define STM32_PLL1_DIVN_VALUE 104
59#define STM32_PLL1_FRACN_VALUE 0
60#define STM32_PLL1_DIVP_VALUE 1
61#define STM32_PLL1_DIVQ_VALUE 10
62#define STM32_PLL1_DIVR_VALUE 4
63
64/* PLL2 output clock is 800 MHz */
65#define STM32_PLL2_ENABLED TRUE
66#define STM32_PLL2_P_ENABLED TRUE
67#define STM32_PLL2_Q_ENABLED TRUE
68#define STM32_PLL2_R_ENABLED TRUE
69#define STM32_PLL2_DIVM_VALUE STM32_PLLX_DIVM_VALUE
70#define STM32_PLL2_DIVN_VALUE 160
71#define STM32_PLL2_FRACN_VALUE 0
72#define STM32_PLL2_DIVP_VALUE 40
73#define STM32_PLL2_DIVQ_VALUE 10
74#define STM32_PLL2_DIVR_VALUE 8
75
76/* PLL3 output clock is 480MHz */
77#define STM32_PLL3_ENABLED TRUE
78#define STM32_PLL3_P_ENABLED TRUE
79#define STM32_PLL3_Q_ENABLED TRUE
80#define STM32_PLL3_R_ENABLED TRUE
81#define STM32_PLL3_DIVM_VALUE STM32_PLLX_DIVM_VALUE
82#define STM32_PLL3_DIVN_VALUE 96
83#define STM32_PLL3_FRACN_VALUE 0
84#define STM32_PLL3_DIVP_VALUE 10
85#define STM32_PLL3_DIVQ_VALUE 10
86#define STM32_PLL3_DIVR_VALUE 10
87
88/*
89 * Core clocks dynamic settings (can be changed at runtime).
90 * Reading STM32 Reference Manual is required.
91 */
92#define STM32_SW STM32_SW_PLL1_P_CK
93#if (STM32_LSE_ENABLED == TRUE)
94#define STM32_RTCSEL STM32_RTCSEL_LSE_CK
95#else
96#define STM32_RTCSEL STM32_RTCSEL_LSI_CK
97#endif
98#define STM32_D1CPRE STM32_D1CPRE_DIV1
99#define STM32_D1HPRE STM32_D1HPRE_DIV2
100#define STM32_D1PPRE3 STM32_D1PPRE3_DIV2
101#define STM32_D2PPRE1 STM32_D2PPRE1_DIV2
102#define STM32_D2PPRE2 STM32_D2PPRE2_DIV2
103#define STM32_D3PPRE4 STM32_D3PPRE4_DIV2
104
105/*
106 * Peripherals clocks static settings.
107 * Reading STM32 Reference Manual is required.
108 */
109#define STM32_MCO1SEL STM32_MCO1SEL_HSI_CK
110#define STM32_MCO1PRE_VALUE 4
111#define STM32_MCO2SEL STM32_MCO2SEL_SYS_CK
112#define STM32_MCO2PRE_VALUE 4
113#define STM32_TIMPRE_ENABLE TRUE
114#define STM32_HRTIMSEL 0
115#define STM32_STOPKERWUCK 0
116#define STM32_STOPWUCK 0
117#define STM32_RTCPRE_VALUE 8
118#define STM32_CKPERSEL STM32_CKPERSEL_HSE_CK
119#define STM32_SDMMCSEL STM32_SDMMCSEL_PLL1_Q_CK
120#define STM32_OCTOSPISEL STM32_OCTOSPISEL_HCLK
121#define STM32_FMCSEL STM32_FMCSEL_HCLK
122#define STM32_SWPSEL STM32_SWPSEL_PCLK1
123#define STM32_FDCANSEL STM32_FDCANSEL_PLL2_Q_CK
124#define STM32_DFSDM1SEL STM32_DFSDM1SEL_PCLK2
125#define STM32_SPDIFSEL STM32_SPDIFSEL_PLL1_Q_CK
126#define STM32_SPI45SEL STM32_SPI45SEL_PLL2_Q_CK
127#define STM32_SPI123SEL STM32_SPI123SEL_PLL2_P_CK
128#define STM32_SAI1SEL STM32_SAI1SEL_PLL1_Q_CK
129#define STM32_LPTIM1SEL STM32_LPTIM1SEL_PCLK1
130#define STM32_CECSEL STM32_CECSEL_LSE_CK
131#define STM32_USBSEL STM32_USBSEL_PLL3_Q_CK
132#define STM32_I2C1235SEL STM32_I2C1235SEL_PCLK1
133#define STM32_RNGSEL STM32_RNGSEL_HSI48_CK
134#define STM32_USART16910SEL STM32_USART16910SEL_PCLK2
135#define STM32_USART234578SEL STM32_USART234578SEL_PCLK1
136#define STM32_SPI6SEL STM32_SPI6SEL_PLL2_Q_CK
137#define STM32_SAI4BSEL STM32_SAI4BSEL_PLL1_Q_CK
138#define STM32_SAI4ASEL STM32_SAI4ASEL_PLL1_Q_CK
139#define STM32_ADCSEL STM32_ADCSEL_PLL2_P_CK
140#define STM32_LPTIM345SEL STM32_LPTIM345SEL_PCLK4
141#define STM32_LPTIM2SEL STM32_LPTIM2SEL_PCLK4
142#define STM32_I2C4SEL STM32_I2C4SEL_PCLK4
143#define STM32_LPUART1SEL STM32_LPUART1SEL_PCLK4
144
145/*
146 * CAN driver system settings.
147 */
148#define STM32_CAN_USE_FDCAN3 TRUE
149
150/*
151 * USB driver system settings.
152 */
153#define STM32_USB_USE_OTG2 TRUE
154#define STM32_USB_OTG2_RX_FIFO_SIZE 1024
155#define STM32_USB_HOST_WAKEUP_DURATION 2
156
157/*
158 * WSPI driver system settings.
159 */
160#define STM32_WSPI_USE_OCTOSPI1 FALSE
161#define STM32_WSPI_USE_OCTOSPI2 FALSE
162#define STM32_WSPI_OCTOSPI1_PRESCALER_VALUE 1
163#define STM32_WSPI_OCTOSPI2_PRESCALER_VALUE 1
164#define STM32_WSPI_OCTOSPI1_SSHIFT FALSE
165#define STM32_WSPI_OCTOSPI2_SSHIFT FALSE
166#define STM32_WSPI_OCTOSPI1_DHQC FALSE
167#define STM32_WSPI_OCTOSPI2_DHQC FALSE
168#define STM32_WSPI_OCTOSPI1_MDMA_CHANNEL STM32_MDMA_CHANNEL_ID_ANY
169#define STM32_WSPI_OCTOSPI2_MDMA_CHANNEL STM32_MDMA_CHANNEL_ID_ANY
170#define STM32_WSPI_OCTOSPI1_MDMA_PRIORITY 1
171#define STM32_WSPI_OCTOSPI2_MDMA_PRIORITY 1
172#define STM32_WSPI_OCTOSPI1_MDMA_IRQ_PRIORITY 10
173#define STM32_WSPI_OCTOSPI2_MDMA_IRQ_PRIORITY 10
174#define STM32_WSPI_DMA_ERROR_HOOK(wspip) osalSysHalt("MDMA failure")