kopia lustrzana https://github.com/micropython/micropython
stm32/octospi: Added OSPI support for STM32H7 mcus.
Added a if-statement to octospi.c to detect if the targeted MCU is one of the STM32H7 series. If that was the case, another set of variables are used for the mp_hal_pin_config_alt_static_speed() function, as well as for register OCTOSPI1->CR. This allows the STM32H723 and STM32H7B3 series MCU to use octo- spi flash like the STM32H573 serie MCU. Signed-off-by: nspsck <teng.jiang94@gmail.com>pull/12523/head
rodzic
b85331f038
commit
43eef9434f
|
@ -39,20 +39,20 @@
|
|||
// SMPS configuration
|
||||
#define MICROPY_HW_PWR_SMPS_CONFIG (PWR_DIRECT_SMPS_SUPPLY)
|
||||
|
||||
#if 1
|
||||
#if MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE
|
||||
// 512MBit external OSPI flash, used for either the filesystem or XIP memory mapped
|
||||
#define MICROPY_HW_OSPIFLASH_SIZE_BITS_LOG2 (29)
|
||||
#define MICROPY_HW_OSPIFLASH_CS (pin_G6)
|
||||
#define MICROPY_HW_OSPIFLASH_SCK (pin_B2)
|
||||
#define MICROPY_HW_OSPIFLASH_DQS (pin_C5)
|
||||
#define MICROPY_HW_OSPIFLASH_IO0 (pin_D11) // changed from pin_P8
|
||||
#define MICROPY_HW_OSPIFLASH_IO0 (pin_D11)
|
||||
#define MICROPY_HW_OSPIFLASH_IO1 (pin_F9)
|
||||
#define MICROPY_HW_OSPIFLASH_IO2 (pin_F7)
|
||||
#define MICROPY_HW_OSPIFLASH_IO3 (pin_F6)
|
||||
#define MICROPY_HW_OSPIFLASH_IO4 (pin_C1)
|
||||
#define MICROPY_HW_OSPIFLASH_IO5 (pin_H3)
|
||||
#define MICROPY_HW_OSPIFLASH_IO6 (pin_G9) // changed from pin_D6
|
||||
#define MICROPY_HW_OSPIFLASH_IO7 (pin_D7) // changed from pin_G14
|
||||
#define MICROPY_HW_OSPIFLASH_IO6 (pin_G9)
|
||||
#define MICROPY_HW_OSPIFLASH_IO7 (pin_D7)
|
||||
#endif
|
||||
|
||||
// UART buses
|
||||
|
|
|
@ -45,19 +45,24 @@
|
|||
|
||||
void octospi_init(void) {
|
||||
// Configure OCTOSPI pins (allows 1, 2, 4 or 8 line configuration).
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_CS, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI1_NCS);
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_SCK, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI1_CLK);
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO0, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI1_IO0);
|
||||
#if defined(STM32H7)
|
||||
#define STATIC_AF_OCTOSPI(signal) STATIC_AF_OCTOSPIM_P1_ ## signal
|
||||
#else
|
||||
#define STATIC_AF_OCTOSPI(signal) STATIC_AF_OCTOSPI1_ ## signal
|
||||
#endif
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_CS, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI(NCS));
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_SCK, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI(CLK));
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO0, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI(IO0));
|
||||
#if defined(MICROPY_HW_OSPIFLASH_IO1)
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO1, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI1_IO1);
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO1, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI(IO1));
|
||||
#if defined(MICROPY_HW_OSPIFLASH_IO2)
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO2, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI1_IO2);
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO3, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI1_IO3);
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO2, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI(IO2));
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO3, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI(IO3));
|
||||
#if defined(MICROPY_HW_OSPIFLASH_IO4)
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO4, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI1_IO4);
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO5, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI1_IO5);
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO6, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI1_IO6);
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO7, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI1_IO7);
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO4, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI(IO4));
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO5, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI(IO5));
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO6, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI(IO6));
|
||||
mp_hal_pin_config_alt_static_speed(MICROPY_HW_OSPIFLASH_IO7, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, MP_HAL_PIN_SPEED_VERY_HIGH, STATIC_AF_OCTOSPI(IO7));
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
@ -68,12 +73,19 @@ void octospi_init(void) {
|
|||
__HAL_RCC_OSPI1_RELEASE_RESET();
|
||||
|
||||
// Configure the OCTOSPI peripheral.
|
||||
|
||||
#if defined(STM32H7)
|
||||
OCTOSPI1->CR =
|
||||
3 << OCTOSPI_CR_FTHRES_Pos // 4 bytes must be available to read/write
|
||||
| 0 << OCTOSPI_CR_FSEL_Pos // FLASH 0 selected
|
||||
| 0 << OCTOSPI_CR_DQM_Pos // dual-memory mode disabled
|
||||
;
|
||||
#else
|
||||
OCTOSPI1->CR =
|
||||
3 << OCTOSPI_CR_FTHRES_Pos // 4 bytes must be available to read/write
|
||||
| 0 << OCTOSPI_CR_MSEL_Pos // FLASH 0 selected
|
||||
| 0 << OCTOSPI_CR_DMM_Pos // dual-memory mode disabled
|
||||
;
|
||||
#endif
|
||||
|
||||
OCTOSPI1->DCR1 =
|
||||
(MICROPY_HW_OSPIFLASH_SIZE_BITS_LOG2 - 3 - 1) << OCTOSPI_DCR1_DEVSIZE_Pos
|
||||
|
|
Ładowanie…
Reference in New Issue