From fab5faf097c667c5b7cebcdb19173f64b20f66a9 Mon Sep 17 00:00:00 2001 From: Bob Feretich Date: Sat, 18 Nov 2017 07:55:50 -0600 Subject: [PATCH] STM32F7: Completes architecture support for the STM32 F72x and F73x families. Adds support for the Nucleo-144 boards with STM32F722. --- arch/arm/include/stm32f7/chip.h | 87 +++++++++-- arch/arm/include/stm32f7/irq.h | 7 +- arch/arm/src/stm32f7/Kconfig | 197 ++++++++++++++++++++++++ arch/arm/src/stm32f7/chip/stm32_exti.h | 6 +- arch/arm/src/stm32f7/chip/stm32_i2c.h | 6 +- arch/arm/src/stm32f7/chip/stm32_sdmmc.h | 6 +- arch/arm/src/stm32f7/chip/stm32_spi.h | 6 +- arch/arm/src/stm32f7/stm32_adc.c | 4 +- arch/arm/src/stm32f7/stm32_dma.c | 4 +- arch/arm/src/stm32f7/stm32_dtcm.h | 6 +- arch/arm/src/stm32f7/stm32_dumpgpio.c | 4 +- arch/arm/src/stm32f7/stm32_exti_gpio.c | 4 +- arch/arm/src/stm32f7/stm32_gpio.c | 6 +- arch/arm/src/stm32f7/stm32_i2c.c | 7 + configs/Kconfig | 5 +- configs/nucleo-144/Kconfig | 22 ++- configs/nucleo-144/README.txt | 15 +- configs/nucleo-144/include/board.h | 33 +++- 18 files changed, 387 insertions(+), 38 deletions(-) diff --git a/arch/arm/include/stm32f7/chip.h b/arch/arm/include/stm32f7/chip.h index 7246cb2a2d..5735683959 100644 --- a/arch/arm/include/stm32f7/chip.h +++ b/arch/arm/include/stm32f7/chip.h @@ -1,9 +1,10 @@ /************************************************************************************ * arch/arm/include/stm32f7/chip.h * - * Copyright (C) 2015-2016 Gregory Nutt. All rights reserved. + * Copyright (C) 2015-2017 Gregory Nutt. All rights reserved. * Authors: Gregory Nutt * David Sidrane + * Bob Feretich * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -46,13 +47,23 @@ /************************************************************************************ * Pre-processor Definitions ************************************************************************************/ -/* STM32F745xx, STM32F746xx, STM32F756xx, STM32F765xx, STM32F767xx, STM32F768xx, +/* STM32F722xx, STM32F723xx, + * STM32F745xx, STM32F746xx, STM32F756xx, STM32F765xx, STM32F767xx, STM32F768xx, * STM32F769xx, STM32F777xx and STM32F779xx Differences between family members: * * ----------- ---------------- ----- ---- ----- ---- ---- ---- ---- ---- ----- ----- ---- ------------ ------ * SPI ADC LCD * PART PACKAGE GPIOs I2S CHAN TFT MIPI JPEG CAN ETH DFSDM CRYPTO FPU RAM L1 * ----------- ---------------- ----- ---- ----- ---- ---- ---- ---- ---- ----- ----- ---- ------------ ------ + * STM32F722Rx LQFP64 50 3/3 16 No No No 1 No No No SFPU (176+16+64) 8+8 + * STM32F722Vx LQFP100 82 4/3 16 No No No 1 No No No SFPU (176+16+64) 8+8 + * STM32F722Zx LQFP144 114 5/3 24 No No No 1 No No No SFPU (176+16+64) 8+8 + * STM32F722Ix UFBGA176/LQFP176 140 5/3 24 No No No 1 No No No SFPU (176+16+64) 8+8 + * + * STM32F723Vx WLCSP100 79 4/3 16 No No No 1 No No No SFPU (176+16+64) 8+8 + * STM32F723Zx UFBGA144/LQFP144 112 5/3 24 No No No 1 No No No SFPU (176+16+64) 8+8 + * STM32F723Ix UFBGA176/LQFP176 138 5/3 24 No No No 1 No No No SFPU (176+16+64) 8+8 + * * STM32F745Vx LQFP100 82 4/3 16 No No No 2 Yes No No SFPU (240+16+64) 4+4 * STM32F745Zx WLCSP143/LQFP144 114 6/3 24 No No No 2 Yes No No SFPU (240+16+64) 4+4 * STM32F745Ix UFBGA176/LQFP176 140 6/3 24 No No No 2 Yes No No SFPU (240+16+64) 4+4 @@ -108,6 +119,8 @@ * STM32F779Ax WLCSP180 129 6/3 24 Yes Yes Yes 3 No Yes Yes DFPU (368+16+128) 16+16 * ----------- ---------------- ----- ---- ----- ---- ---- ---- ---- ---- ----- ----- ---- ------------ ------ * + * Parts STM32F72xxC & STM32F73xxC have 256Kb of FLASH + * Parts STM32F72xxE & STM32F73xxE have 512Kb of FLASH * Parts STM32F74xxE have 512Kb of FLASH * Parts STM32F74xxG have 1024Kb of FLASH * Parts STM32F74xxI have 2048Kb of FLASH @@ -116,7 +129,23 @@ * with CONFIG_STM32F7_FLASH_OVERRIDE_x * */ -#if defined(CONFIG_ARCH_CHIP_STM32F745VG) || \ +#if defined(CONFIG_ARCH_CHIP_STM32F722RC) || \ + defined(CONFIG_ARCH_CHIP_STM32F722RE) || \ + defined(CONFIG_ARCH_CHIP_STM32F722VC) || \ + defined(CONFIG_ARCH_CHIP_STM32F722VE) || \ + defined(CONFIG_ARCH_CHIP_STM32F722ZC) || \ + defined(CONFIG_ARCH_CHIP_STM32F722ZE) || \ + defined(CONFIG_ARCH_CHIP_STM32F722IC) || \ + defined(CONFIG_ARCH_CHIP_STM32F722IE) || \ + defined(CONFIG_ARCH_CHIP_STM32F723RC) || \ + defined(CONFIG_ARCH_CHIP_STM32F723RE) || \ + defined(CONFIG_ARCH_CHIP_STM32F723VC) || \ + defined(CONFIG_ARCH_CHIP_STM32F723VE) || \ + defined(CONFIG_ARCH_CHIP_STM32F723ZC) || \ + defined(CONFIG_ARCH_CHIP_STM32F723ZE) || \ + defined(CONFIG_ARCH_CHIP_STM32F723IC) || \ + defined(CONFIG_ARCH_CHIP_STM32F723IE) || \ + defined(CONFIG_ARCH_CHIP_STM32F745VG) || \ defined(CONFIG_ARCH_CHIP_STM32F745VE) || \ defined(CONFIG_ARCH_CHIP_STM32F745IG) || \ defined(CONFIG_ARCH_CHIP_STM32F745IE) || \ @@ -179,7 +208,20 @@ /* Size SRAM */ -#if defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) +#if defined(CONFIG_STM32F7_STM32F72XX) || defined(CONFIG_STM32F7_STM32F73XX) +# define STM32F7_SRAM1_SIZE (176*1024) /* 176Kb SRAM1 on AHB bus Matrix */ +# define STM32F7_SRAM2_SIZE (16*1024) /* 16Kb SRAM2 on AHB bus Matrix */ +# if defined(CONFIG_ARMV7M_HAVE_DTCM) +# define STM32F7_DTCM_SRAM_SIZE (64*1024) /* 64Kb DTCM SRAM on TCM interface */ +# else +# define STM32F7_DTCM_SRAM_SIZE (0) /* No DTCM SRAM on TCM interface */ +# endif +# if defined(CONFIG_ARMV7M_HAVE_ITCM) +# define STM32F7_ITCM_SRAM_SIZE (16*1024) /* 16Kb ITCM SRAM on TCM interface */ +# else +# define STM32F7_ITCM_SRAM_SIZE (0) /* No ITCM SRAM on TCM interface */ +# endif +#elif defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) # define STM32F7_SRAM1_SIZE (240*1024) /* 240Kb SRAM1 on AHB bus Matrix */ # define STM32F7_SRAM2_SIZE (16*1024) /* 16Kb SRAM2 on AHB bus Matrix */ # if defined(CONFIG_ARMV7M_HAVE_DTCM) @@ -209,6 +251,18 @@ # error STM32 F7 chip Family not identified #endif +/* Common to all Advanced (vs Foundation) Family members */ + +#if defined(CONFIG_STM32F7_STM32F72XX) || defined(CONFIG_STM32F7_STM32F73XX) +# define STM32F7_NSPDIFRX 0 /* Not supported */ +# define STM32F7_NGPIO 9 /* 9 GPIO ports, GPIOA-I */ +# define STM32F7_NI2C 3 /* I2C1-3 */ +#else +# define STM32F7_NSPDIFRX 4 /* 4 SPDIFRX inputs */ +# define STM32F7_NGPIO 11 /* 11 GPIO ports, GPIOA-K */ +# define STM32F7_NI2C 4 /* I2C1-4 */ +#endif + /* Common to all Family members */ # define STM32F7_NATIM 2 /* Two advanced timers TIM1 and 8 */ @@ -219,14 +273,11 @@ # define STM32F7_NUART 4 /* UART 4-5 and 7-8 */ # define STM32F7_NUSART 4 /* USART1-3 and 6 */ # define STM32F7_NI2S 3 /* I2S1-2 (multiplexed with SPI1-3) */ -# define STM32F7_NI2C 4 /* I2C1-4 */ # define STM32F7_NUSBOTGFS 1 /* USB OTG FS */ # define STM32F7_NUSBOTGHS 1 /* USB OTG HS */ # define STM32F7_NSAI 2 /* SAI1-2 */ -# define STM32F7_NSPDIFRX 4 /* 4 SPDIFRX inputs */ # define STM32F7_NDMA 2 /* DMA1-2 */ -# define STM32F7_NGPIO 11 /* 11 GPIO ports, GPIOA-K */ -# define STM32F7_NADC 3 /* 12-bit ADC1-3, 24 channels *except V series) */ +# define STM32F7_NADC 3 /* 12-bit ADC1-3, number of channels vary */ # define STM32F7_NDAC 2 /* 12-bit DAC1-2 */ # define STM32F7_NCAPSENSE 0 /* No capacitive sensing channels */ # define STM32F7_NCRC 1 /* CRC */ @@ -258,11 +309,17 @@ #else # define STM32F7_NRNG 0 /* No Random number generator (RNG) */ #endif + #if defined(CONFIG_STM32F7_HAVE_SPI5) && defined(CONFIG_STM32F7_HAVE_SPI6) -# define STM32F7_NSPI 6 /* SPI1-6 (Except V series) */ -#else +# define STM32F7_NSPI 6 /* SPI1-6 (Advanced Family Except V series) */ +#elif defined(CONFIG_STM32F7_HAVE_SPI5) +# define STM32F7_NSPI 5 /* SPI1-5 (Foundation Family Except V & R series) */ +#elif defined(CONFIG_STM32F7_HAVE_SPI4) # define STM32F7_NSPI 4 /* SPI1-4 V series */ +#else +# define STM32F7_NSPI 3 /* SPI1-3 R series */ #endif + #if defined(CONFIG_STM32F7_HAVE_SDMMC2) # define STM32F7_NSDMMC 2 /* 2 SDMMC interfaces */ #else @@ -270,8 +327,10 @@ #endif #if defined(CONFIG_STM32F7_HAVE_CAN3) # define STM32F7_NCAN 3 /* CAN1-3 */ -#else +#elif defined(CONFIG_STM32F7_HAVE_CAN2) # define STM32F7_NCAN 2 /* CAN1-2 */ +#else +# define STM32F7_NCAN 1 /* CAN1 only */ #endif #if defined(CONFIG_STM32F7_HAVE_DCMI) # define STM32F7_NDCMI 1 /* Digital camera interface (DCMI) */ @@ -288,10 +347,10 @@ #else # define STM32F7_NLCDTFT 0 /* No LCD-TFT */ #endif -#if defined(CONFIG_STM32F7_HAVE_DMA2D) -# define STM32F7_NDMA2D 0 /* No DChrom-ART Acceleratorâ„¢ (DMA2D) */ -#else +#if defined(CONFIG_STM32F7_HAVE_DMA2D) /* bf20171107 Swapped defines they were reversed. */ # define STM32F7_NDMA2D 1 /* DChrom-ART Acceleratorâ„¢ (DMA2D) */ +#else +# define STM32F7_NDMA2D 0 /* No DChrom-ART Acceleratorâ„¢ (DMA2D) */ #endif #if defined(CONFIG_STM32F7_HAVE_JPEG) #define STM32F7_NJPEG 1 /* One JPEG Converter */ diff --git a/arch/arm/include/stm32f7/irq.h b/arch/arm/include/stm32f7/irq.h index f09659190b..19e2596f7d 100644 --- a/arch/arm/include/stm32f7/irq.h +++ b/arch/arm/include/stm32f7/irq.h @@ -1,8 +1,9 @@ /************************************************************************************ * arch/arm/include/stm32f7/irq.h * - * Copyright (C) 2015 Gregory Nutt. All rights reserved. + * Copyright (C) 2015, 2017 Gregory Nutt. All rights reserved. * Author: Gregory Nutt + * Bob Feretich * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -76,7 +77,9 @@ #define STM32_IRQ_FIRST (16) /* Vector number of the first external interrupt */ -#if defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) +#if defined(CONFIG_STM32F7_STM32F72XX) || defined(CONFIG_STM32F7_STM32F73XX) +# include +#elif defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) # include #elif defined(CONFIG_STM32F7_STM32F76XX) || defined(CONFIG_STM32F7_STM32F77XX) # include diff --git a/arch/arm/src/stm32f7/Kconfig b/arch/arm/src/stm32f7/Kconfig index 3e55d22a01..9e80a64934 100644 --- a/arch/arm/src/stm32f7/Kconfig +++ b/arch/arm/src/stm32f7/Kconfig @@ -12,6 +12,134 @@ choice default ARCH_CHIP_STM32F746 depends on ARCH_CHIP_STM32F7 +config ARCH_CHIP_STM32F722RC + bool "STM32F722RC" + select STM32F7_STM32F722XX + select STM32F7_FLASH_CONFIG_C + select STM32F7_IO_CONFIG_R + ---help--- + STM32 F7 Cortex M7, 256 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F722RE + bool "STM32F722RE" + select STM32F7_STM32F722XX + select STM32F7_FLASH_CONFIG_E + select STM32F7_IO_CONFIG_R + ---help--- + STM32 F7 Cortex M7, 512 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F722VC + bool "STM32F722VC" + select STM32F7_STM32F722XX + select STM32F7_FLASH_CONFIG_C + select STM32F7_IO_CONFIG_V + ---help--- + STM32 F7 Cortex M7, 256 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F722VE + bool "STM32F722VE" + select STM32F7_STM32F722XX + select STM32F7_FLASH_CONFIG_E + select STM32F7_IO_CONFIG_V + ---help--- + STM32 F7 Cortex M7, 512 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F722ZC + bool "STM32F722ZC" + select STM32F7_STM32F722XX + select STM32F7_FLASH_CONFIG_C + select STM32F7_IO_CONFIG_Z + ---help--- + STM32 F7 Cortex M7, 256 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F722ZE + bool "STM32F722ZE" + select STM32F7_STM32F722XX + select STM32F7_FLASH_CONFIG_E + select STM32F7_IO_CONFIG_Z + ---help--- + STM32 F7 Cortex M7, 512 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F722IC + bool "STM32F722IC" + select STM32F7_STM32F722XX + select STM32F7_FLASH_CONFIG_C + select STM32F7_IO_CONFIG_I + ---help--- + STM32 F7 Cortex M7, 256 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F722IE + bool "STM32F722IE" + select STM32F7_STM32F722XX + select STM32F7_FLASH_CONFIG_E + select STM32F7_IO_CONFIG_I + ---help--- + STM32 F7 Cortex M7, 512 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F723RC + bool "STM32F723RC" + select STM32F7_STM32F723XX + select STM32F7_FLASH_CONFIG_C + select STM32F7_IO_CONFIG_R + ---help--- + STM32 F7 Cortex M7, 256 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F723RE + bool "STM32F723RE" + select STM32F7_STM32F723XX + select STM32F7_FLASH_CONFIG_E + select STM32F7_IO_CONFIG_R + ---help--- + STM32 F7 Cortex M7, 512 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F723VC + bool "STM32F723VC" + select STM32F7_STM32F723XX + select STM32F7_FLASH_CONFIG_C + select STM32F7_IO_CONFIG_V + ---help--- + STM32 F7 Cortex M7, 256 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F723VE + bool "STM32F723VE" + select STM32F7_STM32F723XX + select STM32F7_FLASH_CONFIG_E + select STM32F7_IO_CONFIG_V + ---help--- + STM32 F7 Cortex M7, 512 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F723ZC + bool "STM32F723ZC" + select STM32F7_STM32F723XX + select STM32F7_FLASH_CONFIG_C + select STM32F7_IO_CONFIG_Z + ---help--- + STM32 F7 Cortex M7, 256 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F723ZE + bool "STM32F723ZE" + select STM32F7_STM32F723XX + select STM32F7_FLASH_CONFIG_E + select STM32F7_IO_CONFIG_Z + ---help--- + STM32 F7 Cortex M7, 512 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F723IC + bool "STM32F723IC" + select STM32F7_STM32F723XX + select STM32F7_FLASH_CONFIG_C + select STM32F7_IO_CONFIG_I + ---help--- + STM32 F7 Cortex M7, 256 FLASH, 256K (176+16+64) Kb SRAM + +config ARCH_CHIP_STM32F723IE + bool "STM32F723IE" + select STM32F7_STM32F723XX + select STM32F7_FLASH_CONFIG_E + select STM32F7_IO_CONFIG_I + ---help--- + STM32 F7 Cortex M7, 512 FLASH, 256K (176+16+64) Kb SRAM + config ARCH_CHIP_STM32F745VG bool "STM32F745VG" select STM32F7_STM32F745XX @@ -470,6 +598,14 @@ config ARCH_CHIP_STM32F779AI endchoice # STM32 F7 Chip Selection +config STM32F7_STM32F72XX + bool + default n + +config STM32F7_STM32F73XX + bool + default n + config STM32F7_STM32F74XX bool default n @@ -486,6 +622,10 @@ config STM32F7_STM32F77XX bool default n +config STM32F7_IO_CONFIG_R + bool + default n + config STM32F7_IO_CONFIG_V bool default n @@ -510,6 +650,22 @@ config STM32F7_IO_CONFIG_A bool default n +config STM32F7_STM32F722XX + bool + default n + select STM32F7_STM32F72XX + select ARCH_HAVE_FPU + select ARMV7M_HAVE_ICACHE + select ARMV7M_HAVE_DCACHE + select ARMV7M_HAVE_ITCM + select ARMV7M_HAVE_DTCM + select STM32F7_HAVE_FMC + select STM32F7_HAVE_RNG + select STM32F7_HAVE_SPI4 if !STM32F7_IO_CONFIG_R + select STM32F7_HAVE_SPI5 if !(STM32F7_IO_CONFIG_R || STM32F7_IO_CONFIG_V) + select STM32F7_HAVE_CRYP + select STM32F7_HAVE_SDMMC2 if !STM32F7_IO_CONFIG_R + config STM32F7_STM32F745XX bool default n @@ -526,6 +682,8 @@ config STM32F7_STM32F745XX select STM32F7_HAVE_SPI6 if !STM32F7_IO_CONFIG_V select STM32F7_HAVE_DCMI select STM32F7_HAVE_DMA2D + select STM32F7_HAVE_CAN2 + select STM32F7_HAVE_SPI4 config STM32F7_STM32F746XX bool @@ -544,6 +702,8 @@ config STM32F7_STM32F746XX select STM32F7_HAVE_DCMI select STM32F7_HAVE_LTDC select STM32F7_HAVE_DMA2D + select STM32F7_HAVE_CAN2 + select STM32F7_HAVE_SPI4 config STM32F7_STM32F756XX bool @@ -563,6 +723,8 @@ config STM32F7_STM32F756XX select STM32F7_HAVE_DMA2D select STM32F7_HAVE_CRYP select STM32F7_HAVE_HASH + select STM32F7_HAVE_CAN2 + select STM32F7_HAVE_SPI4 config STM32F7_STM32F765XX bool @@ -584,6 +746,8 @@ config STM32F7_STM32F765XX select STM32F7_HAVE_DCMI select STM32F7_HAVE_DMA2D select STM32F7_HAVE_DFSDM1 + select STM32F7_HAVE_CAN2 + select STM32F7_HAVE_SPI4 config STM32F7_STM32F767XX bool @@ -608,6 +772,8 @@ config STM32F7_STM32F767XX select STM32F7_HAVE_DMA2D select STM32F7_HAVE_JPEG select STM32F7_HAVE_DFSDM1 + select STM32F7_HAVE_CAN2 + select STM32F7_HAVE_SPI4 config STM32F7_STM32F768XX # Revisit Wehn parts released bool @@ -632,6 +798,8 @@ config STM32F7_STM32F768XX # Revisit Wehn parts released select STM32F7_HAVE_DMA2D select STM32F7_HAVE_JPEG select STM32F7_HAVE_DFSDM1 + select STM32F7_HAVE_CAN2 + select STM32F7_HAVE_SPI4 config STM32F7_STM32F768AX # Revisit When parts released bool @@ -655,6 +823,8 @@ config STM32F7_STM32F768AX # Revisit When parts released select STM32F7_HAVE_DMA2D select STM32F7_HAVE_JPEG select STM32F7_HAVE_DFSDM1 + select STM32F7_HAVE_CAN2 + select STM32F7_HAVE_SPI4 config STM32F7_STM32F769XX bool @@ -679,6 +849,8 @@ config STM32F7_STM32F769XX select STM32F7_HAVE_DMA2D select STM32F7_HAVE_JPEG select STM32F7_HAVE_DFSDM1 + select STM32F7_HAVE_CAN2 + select STM32F7_HAVE_SPI4 config STM32F7_STM32F769AX # Revisit When parts released bool @@ -702,6 +874,8 @@ config STM32F7_STM32F769AX # Revisit When parts released select STM32F7_HAVE_DMA2D select STM32F7_HAVE_JPEG select STM32F7_HAVE_DFSDM1 + select STM32F7_HAVE_CAN2 + select STM32F7_HAVE_SPI4 config STM32F7_STM32F777XX bool @@ -728,6 +902,8 @@ config STM32F7_STM32F777XX select STM32F7_HAVE_CRYP select STM32F7_HAVE_HASH select STM32F7_HAVE_DFSDM1 + select STM32F7_HAVE_CAN2 + select STM32F7_HAVE_SPI4 config STM32F7_STM32F778XX # Revisit when parts released bool @@ -754,6 +930,8 @@ config STM32F7_STM32F778XX # Revisit when parts released select STM32F7_HAVE_CRYP select STM32F7_HAVE_HASH select STM32F7_HAVE_DFSDM1 + select STM32F7_HAVE_CAN2 + select STM32F7_HAVE_SPI4 config STM32F7_STM32F778AX bool @@ -779,6 +957,8 @@ config STM32F7_STM32F778AX select STM32F7_HAVE_CRYP select STM32F7_HAVE_HASH select STM32F7_HAVE_DFSDM1 + select STM32F7_HAVE_CAN2 + select STM32F7_HAVE_SPI4 config STM32F7_STM32F779XX bool @@ -805,6 +985,8 @@ config STM32F7_STM32F779XX select STM32F7_HAVE_CRYP select STM32F7_HAVE_HASH select STM32F7_HAVE_DFSDM1 + select STM32F7_HAVE_CAN2 + select STM32F7_HAVE_SPI4 config STM32F7_STM32F779AX bool @@ -830,6 +1012,8 @@ config STM32F7_STM32F779AX select STM32F7_HAVE_CRYP select STM32F7_HAVE_HASH select STM32F7_HAVE_DFSDM1 + select STM32F7_HAVE_CAN2 + select STM32F7_HAVE_SPI4 config STM32F7_FLASH_CONFIG_E bool @@ -852,6 +1036,7 @@ choice that designates the FLASH size. Designator Size in KiB + C 256 E 512 G 1024 I 2048 @@ -871,6 +1056,9 @@ choice config STM32F7_FLASH_OVERRIDE_DEFAULT bool "Default" +config STM32F7_FLASH_OVERRIDE_C + bool "C 256KiB" + config STM32F7_FLASH_OVERRIDE_E bool "E 512KiB" @@ -913,6 +1101,10 @@ config STM32F7_HAVE_RNG bool default n +config STM32F7_HAVE_SPI4 + bool + default n + config STM32F7_HAVE_SPI5 bool default n @@ -937,6 +1129,10 @@ config STM32F7_HAVE_ADC3_DMA bool default n +config STM32F7_HAVE_CAN2 + bool + default n + config STM32F7_HAVE_CAN3 bool default n @@ -1269,6 +1465,7 @@ config STM32F7_SPI3 config STM32F7_SPI4 bool "SPI4" default n + depends on STM32F7_HAVE_SPI4 select SPI select STM32F7_SPI diff --git a/arch/arm/src/stm32f7/chip/stm32_exti.h b/arch/arm/src/stm32f7/chip/stm32_exti.h index 8663d2f08e..e7de6b6953 100644 --- a/arch/arm/src/stm32f7/chip/stm32_exti.h +++ b/arch/arm/src/stm32f7/chip/stm32_exti.h @@ -1,9 +1,10 @@ /************************************************************************************ * arch/arm/src/stm32f7/chip/stm32_exti.h * - * Copyright (C) 2015 Gregory Nutt. All rights reserved. + * Copyright (C) 2015, 2017 Gregory Nutt. All rights reserved. * Authors: Gregory Nutt * David Sidrane + * Bob Feretich * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -48,7 +49,8 @@ * families */ -#if defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) || \ +#if defined(CONFIG_STM32F7_STM32F72XX) || defined(CONFIG_STM32F7_STM32F73XX) || \ + defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) || \ defined(CONFIG_STM32F7_STM32F76XX) || defined(CONFIG_STM32F7_STM32F77XX) /************************************************************************************ diff --git a/arch/arm/src/stm32f7/chip/stm32_i2c.h b/arch/arm/src/stm32f7/chip/stm32_i2c.h index f615eb6ec1..b1c295c196 100644 --- a/arch/arm/src/stm32f7/chip/stm32_i2c.h +++ b/arch/arm/src/stm32f7/chip/stm32_i2c.h @@ -1,9 +1,10 @@ /************************************************************************************ * arch/arm/src/stm32f7/chip/stm32_i2c.h * - * Copyright (C) 2016 Gregory Nutt. All rights reserved. + * Copyright (C) 2016-2017 Gregory Nutt. All rights reserved. * Authors: Gregory Nutt * David Sidrane + * Bob Feretich * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -44,7 +45,8 @@ #include #include "chip.h" -#if defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) || \ +#if defined(CONFIG_STM32F7_STM32F72XX) || defined(CONFIG_STM32F7_STM32F73XX) || \ + defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) || \ defined(CONFIG_STM32F7_STM32F76XX) || defined(CONFIG_STM32F7_STM32F77XX) # include "chip/stm32f74xx77xx_i2c.h" #else diff --git a/arch/arm/src/stm32f7/chip/stm32_sdmmc.h b/arch/arm/src/stm32f7/chip/stm32_sdmmc.h index 016ddb18fb..afe6c8910a 100644 --- a/arch/arm/src/stm32f7/chip/stm32_sdmmc.h +++ b/arch/arm/src/stm32f7/chip/stm32_sdmmc.h @@ -1,9 +1,10 @@ /************************************************************************************ * arch/arm/src/stm32f7/chip/stm32_sdmmc.h * - * Copyright (C) 2016 Gregory Nutt. All rights reserved. + * Copyright (C) 2016-2017 Gregory Nutt. All rights reserved. * Authors: Gregory Nutt * David Sidrane + * Bob Feretich * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -44,7 +45,8 @@ #include #include "chip.h" -#if defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) || \ +#if defined(CONFIG_STM32F7_STM32F72XX) || defined(CONFIG_STM32F7_STM32F73XX) || \ + defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) || \ defined(CONFIG_STM32F7_STM32F76XX) || defined(CONFIG_STM32F7_STM32F77XX) # include "stm32f74xx77xx_sdmmc.h" #else diff --git a/arch/arm/src/stm32f7/chip/stm32_spi.h b/arch/arm/src/stm32f7/chip/stm32_spi.h index 1874d88bca..1a40aa821c 100644 --- a/arch/arm/src/stm32f7/chip/stm32_spi.h +++ b/arch/arm/src/stm32f7/chip/stm32_spi.h @@ -1,9 +1,10 @@ /************************************************************************************ * arch/arm/src/stm32f7/chip/stm32_spi.h * - * Copyright (C) 2016 Gregory Nutt. All rights reserved. + * Copyright (C) 2016-2017 Gregory Nutt. All rights reserved. * Authors: Gregory Nutt * David Sidrane + * Bob Feretich * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -44,7 +45,8 @@ #include #include "chip.h" -#if defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) || \ +#if defined(CONFIG_STM32F7_STM32F72XX) || defined(CONFIG_STM32F7_STM32F73XX) || \ + defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) || \ defined(CONFIG_STM32F7_STM32F76XX) || defined(CONFIG_STM32F7_STM32F77XX) # include "chip/stm32f74xx77xx_spi.h" #else diff --git a/arch/arm/src/stm32f7/stm32_adc.c b/arch/arm/src/stm32f7/stm32_adc.c index c4db6aab4c..0d226ab46a 100644 --- a/arch/arm/src/stm32f7/stm32_adc.c +++ b/arch/arm/src/stm32f7/stm32_adc.c @@ -7,6 +7,7 @@ * Diego Sanchez * Paul Alexander Patience * David Sidrane + * Bob Feretich * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -85,7 +86,8 @@ /* This implementation is for the STM32 F7[4-7] only */ -#if defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) || \ +#if defined(CONFIG_STM32F7_STM32F72XX) || defined(CONFIG_STM32F7_STM32F73XX) || \ + defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) || \ defined(CONFIG_STM32F7_STM32F76XX) || defined(CONFIG_STM32F7_STM32F77XX) /**************************************************************************** diff --git a/arch/arm/src/stm32f7/stm32_dma.c b/arch/arm/src/stm32f7/stm32_dma.c index 4dc26358dd..a5d185944d 100644 --- a/arch/arm/src/stm32f7/stm32_dma.c +++ b/arch/arm/src/stm32f7/stm32_dma.c @@ -3,6 +3,7 @@ * * Copyright (C) 2015-2017 Gregory Nutt. All rights reserved. * Author: Gregory Nutt + * Bob Feretich * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -59,7 +60,8 @@ * families */ -#if defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) \ +#if defined(CONFIG_STM32F7_STM32F72XX) || defined(CONFIG_STM32F7_STM33F75XX) \ + || defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) \ || defined(CONFIG_STM32F7_STM32F76XX) || defined(CONFIG_STM32F7_STM32F77XX) /**************************************************************************** diff --git a/arch/arm/src/stm32f7/stm32_dtcm.h b/arch/arm/src/stm32f7/stm32_dtcm.h index 0b52bcf96c..905a5c2b42 100644 --- a/arch/arm/src/stm32f7/stm32_dtcm.h +++ b/arch/arm/src/stm32f7/stm32_dtcm.h @@ -1,9 +1,10 @@ /**************************************************************************** * arch/arm/src/stm32f7/stm32_dtcm.h * - * Copyright (C) 2015-2016 Gregory Nutt. All rights reserved. + * Copyright (C) 2015-2017 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * David Sidrane + * Bob Feretich * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -55,7 +56,8 @@ /* The STM32 F7 have DTCM memory */ -#if defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) +#if defined(CONFIG_STM32F7_STM32F72XX) || defined(CONFIG_STM32F7_STM32F73XX) \ + || defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) # define DTCM_START 0x20000000 # define DTCM_END 0x20010000 #elif defined(CONFIG_STM32F7_STM32F76XX) || defined(CONFIG_STM32F7_STM32F77XX) diff --git a/arch/arm/src/stm32f7/stm32_dumpgpio.c b/arch/arm/src/stm32f7/stm32_dumpgpio.c index 79210b4e8e..12f716316b 100644 --- a/arch/arm/src/stm32f7/stm32_dumpgpio.c +++ b/arch/arm/src/stm32f7/stm32_dumpgpio.c @@ -1,8 +1,9 @@ /**************************************************************************** * arch/arm/src/stm32f7/stm32_gpio.c * - * Copyright (C) 2015-2016 Gregory Nutt. All rights reserved. + * Copyright (C) 2015-2017 Gregory Nutt. All rights reserved. * Author: Gregory Nutt + * Bob Feretich * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -58,6 +59,7 @@ */ #if defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) \ + || defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) \ || defined(CONFIG_STM32F7_STM32F76XX) || defined(CONFIG_STM32F7_STM32F77XX) /**************************************************************************** diff --git a/arch/arm/src/stm32f7/stm32_exti_gpio.c b/arch/arm/src/stm32f7/stm32_exti_gpio.c index e388054515..e5c67e6f7d 100644 --- a/arch/arm/src/stm32f7/stm32_exti_gpio.c +++ b/arch/arm/src/stm32f7/stm32_exti_gpio.c @@ -11,6 +11,7 @@ * Copyright (C) 2011 Uros Platise. All rights reserved. * Author: Gregory Nutt * Uros Platise + * Bob Feretich * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -65,7 +66,8 @@ * families */ -#if defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) \ +#if defined(CONFIG_STM32F7_STM32F72XX) || defined(CONFIG_STM32F7_STM32F73XX) \ + || defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) \ || defined(CONFIG_STM32F7_STM32F76XX) || defined(CONFIG_STM32F7_STM32F77XX) /**************************************************************************** diff --git a/arch/arm/src/stm32f7/stm32_gpio.c b/arch/arm/src/stm32f7/stm32_gpio.c index 17e8b4c108..e9b3f0d8a9 100644 --- a/arch/arm/src/stm32f7/stm32_gpio.c +++ b/arch/arm/src/stm32f7/stm32_gpio.c @@ -1,8 +1,9 @@ /**************************************************************************** * arch/arm/src/stm32f7/stm32_gpio.c * - * Copyright (C) 2015 Gregory Nutt. All rights reserved. + * Copyright (C) 2015, 2017 Gregory Nutt. All rights reserved. * Author: Gregory Nutt + * Bob Feretich * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -57,7 +58,8 @@ * families */ -#if defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) \ +#if defined(CONFIG_STM32F7_STM32F72XX) || defined(CONFIG_STM32F7_STM32F73XX) \ + || defined(CONFIG_STM32F7_STM32F74XX) || defined(CONFIG_STM32F7_STM32F75XX) \ || defined(CONFIG_STM32F7_STM32F76XX) || defined(CONFIG_STM32F7_STM32F77XX) /**************************************************************************** diff --git a/arch/arm/src/stm32f7/stm32_i2c.c b/arch/arm/src/stm32f7/stm32_i2c.c index aea7e7764c..78500e0479 100644 --- a/arch/arm/src/stm32f7/stm32_i2c.c +++ b/arch/arm/src/stm32f7/stm32_i2c.c @@ -11,6 +11,7 @@ * Authors: Gregroy Nutt * John Wharington * David Sidrane + * Bob Feretich * * Major rewrite of ISR and supporting methods, including support * for NACK and RELOAD by: @@ -159,6 +160,8 @@ * * One of: * + * CONFIG_STM32F7_STM32F72XX + * CONFIG_STM32F7_STM32F73XX * CONFIG_STM32F7_STM32F74XX * CONFIG_STM32F7_STM32F75XX * CONFIG_STM32F7_STM32F76XX @@ -195,6 +198,10 @@ * * References: * + * RM0431: + * ST STM32F72xxx and STM32F73xxx Reference Manual + * Document ID: DocID029480 Revision 1, Jan 2017. + * * RM0316: * ST STM32F76xxx and STM32F77xxx Reference Manual * Document ID: DocID028270 Revision 2, April 2016. diff --git a/configs/Kconfig b/configs/Kconfig index cd89ea17b2..21f7a5c6ab 100644 --- a/configs/Kconfig +++ b/configs/Kconfig @@ -699,7 +699,7 @@ config ARCH_BOARD_NR5M100_NEXYS4 config ARCH_BOARD_NUCLEO_144 bool "STMicro NUCLEO-144" - depends on ARCH_CHIP_STM32F746ZG || ARCH_CHIP_STM32F767ZI + depends on ARCH_CHIP_STM32F722ZE || ARCH_CHIP_STM32F746ZG || ARCH_CHIP_STM32F767ZI select ARCH_HAVE_LEDS select ARCH_HAVE_BUTTONS select ARCH_HAVE_IRQBUTTONS @@ -713,6 +713,7 @@ config ARCH_BOARD_NUCLEO_144 STM32F303ZET6 NUCLEO-F303ZE STM32F429ZIT6 NUCLEO-F429ZI STM32F446ZET6 NUCLEO-F446ZE + STM32F722ZET6 NUCLEO-F722ZE STM32F746ZGT6 NUCLEO-F746ZG STM32F767ZIT6 NUCLEO-F767ZI STM32L496ZGT6 NUCLEO-L496ZG @@ -720,6 +721,8 @@ config ARCH_BOARD_NUCLEO_144 Supported in this configuration are: + NUCLEO-F722ZE - STM32F722ZET6 a 216MHz Cortex-M7, w/FPU - + 512KiB Flash memory and 256KiB SRAM. NUCLEO-F746ZG - STM32F746ZGT6 a 216MHz Cortex-M7, w/FPU - 1024KiB Flash memory and 320KiB SRAM. NUCLEO-F767ZI - STM32F767ZIT6 a 216MHz Cortex-M7, w/DPFPU - diff --git a/configs/nucleo-144/Kconfig b/configs/nucleo-144/Kconfig index ec1f34bc8f..f5feba8192 100644 --- a/configs/nucleo-144/Kconfig +++ b/configs/nucleo-144/Kconfig @@ -40,10 +40,22 @@ choice STM32F7 MORPHO FUNCTION GPIO -------- --------- ----- - CN12-64 USART8_RX PE0 - CN11-61 USART8_TX PE1 + CN12-64 UART8_RX PE0 + CN11-61 UART8_TX PE1 -------- --------- ----- + OR + + Morpho Connector UART4: + + STM32F7 + MORPHO FUNCTION GPIO + -------- --------- ----- + CN11-30 UART4_RX PA0 + CN11-28 UART4_TX PA1 + -------- --------- ----- + Note: SB13 must be removed to disable Ethernet. + config NUCLEO_CONSOLE_ARDUINO bool "Arduino Connector" select STM32F7_USART6 @@ -62,6 +74,12 @@ config NUCLEO_CONSOLE_MORPHO select UART8_SERIALDRIVER select UART8_SERIAL_CONSOLE +config NUCLEO_CONSOLE_MORPHO_UART4 + bool "Morpho Connector UART4" + select STM32F7_UART4 + select UART4_SERIALDRIVER + select UART4_SERIAL_CONSOLE + config NUCLEO_CONSOLE_NONE bool "No Console" diff --git a/configs/nucleo-144/README.txt b/configs/nucleo-144/README.txt index 4792bcfb09..dbac5556f7 100644 --- a/configs/nucleo-144/README.txt +++ b/configs/nucleo-144/README.txt @@ -10,6 +10,7 @@ Contents ======== - Nucleo-144 Boards + - Nucleo F722ZE - Nucleo F746ZG - Nucleo F767ZI - Development Environment @@ -38,6 +39,7 @@ LQFP144 package. Variants include STM32F303ZET6 NUCLEO-F303ZE STM32F429ZIT6 NUCLEO-F429ZI STM32F446ZET6 NUCLEO-F446ZE + STM32F722ZET6 NUCLEO-F722ZE STM32F746ZGT6 NUCLEO-F746ZG STM32F767ZIT6 NUCLEO-F767ZI STM32L496ZGT6 NUCLEO-L496ZG @@ -229,10 +231,11 @@ Hardware debugging. Because so many pins can be multiplexed with so many functions, the above mentioned graphic may be helpful in indentifying a serial port. - There are 4 choices that can be made from the menuconfig: + There are 5 choices that can be made from the menuconfig: CONFIG_NUCLEO_CONSOLE_ARDUINO or CONFIG_NUCLEO_CONSOLE_MORPHO or - CONFIG_NUCLEO_CONSOLE_VIRTUAL or CONFIG_NUCLEO_CONSOLE_NONE + CONFIG_NUCLEO_CONSOLE_MORPHO_UART4 or CONFIG_NUCLEO_CONSOLE_VIRTUAL or + CONFIG_NUCLEO_CONSOLE_NONE The CONFIG_NUCLEO_CONSOLE_NONE makes no preset for the console. YOu shuld still visit the U[S]ART selection and Device Drivers to disable any U[S]ART reamaing. @@ -256,6 +259,14 @@ Hardware SERIAL_RX PE_0 SERIAL_TX PE_1 + The CONFIG_NUCLEO_CONSOLE_MORPHO_UART4 configurations uses Serial Port 4 (UART4) + with TX on PA1 and RX on PA0. Zero Ohm resistor / solder short at + SB13 must be removed/open. (Disables Ethernet MII clocking.) + Serial + ------ + SERIAL_RX PA_1 CN11 30 + SERIAL_TX PA_0 CN11 28 + The CONFIG_NUCLEO_CONSOLE_VIRTUAL configurations uses Serial Port 3 (USART3) with TX on PD8 and RX on PD9. Serial diff --git a/configs/nucleo-144/include/board.h b/configs/nucleo-144/include/board.h index ac06c1fca9..fb08bc9762 100644 --- a/configs/nucleo-144/include/board.h +++ b/configs/nucleo-144/include/board.h @@ -1,10 +1,11 @@ /************************************************************************************ * configs/nucleo-144/include/board.h * - * Copyright (C) 2016 Gregory Nutt. All rights reserved. + * Copyright (C) 2016-2017 Gregory Nutt. All rights reserved. * Authors: Gregory Nutt * Mark Olsson * David Sidrane + * Bob Feretich * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -374,6 +375,36 @@ # define GPIO_USART3_TX GPIO_USART3_TX_3 #endif +#if defined(CONFIG_NUCLEO_CONSOLE_MORPHO_UART4) +/* UART4: + * + * This configuration assumes that you disabled Ethernet MII clocking + * by removing SB13 to free PA1. + * + * -------- --------------- + * STM32F7 + * Pin FUNCTION GPIO + * ------- --------- ----- + * CN11 30 UART4_RX PA1 + * CN11 28 UART4_TX PA0 + * ------- --------- ----- + */ + + # define GPIO_UART4_RX GPIO_UART4_RX_1 + # define GPIO_UART4_TX GPIO_UART4_TX_1 + +/* USART3 seems to be forced selected by the Nucleo-F746ZG kconfig - bug */ + + # define GPIO_USART3_RX GPIO_USART3_RX_1 + # define GPIO_USART3_TX GPIO_USART3_TX_1 + +/* USART6 seems to be forced selected by the Nucleo-F722E kconfig - bug */ + + # define GPIO_USART6_RX GPIO_USART6_RX_2 + # define GPIO_USART6_TX GPIO_USART6_TX_2 + +#endif + /* USART8: * * This configurations assume that you are connecting to the Morpho connector