MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.35k stars 19.26k forks source link

[FR] STM32 Nucleo-144 boards based on STMicro STM32H7 (STM32 H7) SoC with 480MHz Cortex-M7 MCU #19751

Closed Gamester17 closed 1 year ago

Gamester17 commented 4 years ago

Description

Requesting HAL support for STMicroelectronics STM32 Nucleo-144 boards based on newer STMicro STM32H7 Cortex-M7 MCU.

STMicroelectronics now has relatively inexpensive development boards and evaluation board with very fast STM32 H7 series SoCs.

STM32H7 is a low-cost 32-Bit MCU series based on single-core ARM Cortex-M7 or dual-core combining Cortex-M7 and Cortex-M4.

There are many variants though most are clocked at 480MHz or 550MHz for the Cortex-M7 MCU core, with some dual-core models also feature a 240MHz Cortex-M4 MCU core as well, plus practically all variants also include embedded flash storage on-chip as well as featuring Ethernet PHY interfaces for wired networking (meaning integrated 10/100Mbps Ethernet with RJ-45 port). All MCUs in the STM32H7 series also features an integrated JPEG codec accelerator (JPEG image decoder and encoder).

All "Nucleo-144" (a.k.a. Nucleo144) boards get the "144" their name from its header ("ST Zio connector") having 144-pins.

Most of the STM32 Nucleo-144 development boards with a powerful STM32H7 MCU only goes for around $27 to $29 US-dollars.

image

There are many STM32 Nucleo-144 development boards and evaluation boards model variants available from STMicroelectronics today, however, for this STM32H7 (STM32 H7) series I read that it is suggested to first look at either NUCLEO-H745ZI-Q or NUCLEO-H755ZI-Q development board as the reference model of STM32 Nucleo-144 model with STM32H7 MCU (SoC).

https://www.st.com/resource/en/data_brief/nucleo-h743zi.pdf

NUCLEO-H745ZI-Q or NUCLEO-H755ZI-Q development boards have STMicro STM32H745ZI and STM32H755ZI MCU respectively which both are dual-core variants which feature one ARM Cortex-M7 core running at 480MHz and one ARM Cortex-M4 core running at 240MHz, 1MB RAM, 2MB flash memory, as well as Ethernet PHY interface so that model covers most variations. The only difference between those two is that NUCLEO-H755ZI-Q includes an including a Cryptographic Accelerator (Crypto/Hash processor).

https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-mpu-eval-tools/stm32-mcu-mpu-eval-tools/stm32-nucleo-boards/nucleo-h743zi.html

https://www.st.com/en/microcontrollers-microprocessors/stm32h745zi.html

Features and board specifications copied from https://www.st.com/resource/en/data_brief/nucleo-h743zi.pdf

image

stm32duino has Arduino core STM32 support STM32H743ZI and NUCLEO-H743ZI2 plus generic STM32H7 with STM32H750IB

https://github.com/stm32duino/Arduino_Core_STM32

Documentation, CAD resources, and software tools on their product page.

https://www.st.com/en/microcontrollers-microprocessors/stm32h7-series.html

https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-mpu-eval-tools/stm32-mcu-mpu-eval-tools/stm32-nucleo-boards/nucleo-h743zi.html#documentation

https://www.st.com/en/evaluation-tools/stm32-nucleo-boards.html

Additional Information

Alternative STM32 Nucleo-144 board models also with STM32H7 (STM32 H7) SoCs are:

The official STM32H735G-DK Discovery Kit with STM32H735IG MCU costs $87 and comes with a 4.3-inch touchscreen display:

Interestingly all feature embedded Ethernet PHY interfaces for integrated wired networking.

More information about the specifications in this article CNXSoft website:

https://www.cnx-software.com/2020/09/30/new-stm32h7-cortex-m7-mcus-clock-at-550-mhz-feature-octal-spi-flash-and-ethernet-interfaces/

https://www.cnx-software.com/2018/09/07/stmicro-stm32f7x0-h7x0-value-line-cortex-m7-mcu/

thisiskeithb commented 4 years ago

It's a different variant, but support for the NUCLEO-F767ZI was just merged: https://github.com/MarlinFirmware/Marlin/pull/19373

Gamester17 commented 4 years ago

It's a different variant, but support for the NUCLEO-F767ZI was just merged: #19373

Cool! Though that is not one of the newer STM32 Nucleo-144 boards which are all based on STMicro's new STM32H7 SoC series.

NUCLEO-F767ZI has a STM32F767ZIT6U SoC which has a STM32F767 (STM32F7x7 series) MCU with Cortex-M7 @ 216MHz.

https://www.st.com/en/microcontrollers-microprocessors/stm32f7x7.html

thinkyhead commented in that mentioned https://github.com/MarlinFirmware/Marlin/pull/19373 saying it is not bad adding support for development boards like these as they might become the basis for real boards in the future, as it will give Marlin a chance to exercise the HAL and platforms for that MCU.

IMHO, it can even economical sense for end-users as well when looking at the price and performance of these newer STM32H7 based Nucleo-144 evaluation boards from STmicro as they cost less than a third the price of an Arduino Portenta H7 with similar MCU.

Arduino Portenta H7 it has a STM32H747 (STM32H747XI) which also contains a dual-core MCU, with ARM Cortex-M7 core running at 480 MHz and one ARM-Cortex-M4 core running at 240 MHz, but Arduino Portenta H7 'only' feature 80-pins in total.

https://www.arduino.cc/pro/hardware/product/portenta-h7

sjasonsmith commented 4 years ago

I have a NUCLEO with an H7, but haven’t tried to add it yet. I was waiting for the F7 board to merge first to make sure I wasn’t wasting my time.

Gamester17 commented 4 years ago

Hopefully people in the community will make Nucleo adapter designs for RAMPS shields converting to Arduino Mega 2560 pinout.

As I understand it, STMicro made these Nucleo boards have same pinout layout design the Arduino Uno Rev3?

If and when such Nucleo adapters for RAMPS are available normal users could, in theory, be able to get started fairly quickly with it.

Example @kursatu is building a Mega2560 converter adapter for Teensy 4.1 -> https://github.com/kursatu/Teensy4.1-ramps-shield

sjasonsmith commented 4 years ago

The board I have is a STM32H743ZI, which is a single-code 480 MHz MCU.

Gamester17 commented 4 years ago

The board I have is a STM32H743ZI, which is a single-code 480 MHz MCU.

That has same physical format of the board though, rights? So has same physical measurements and pinout/pins layout design?

sjasonsmith commented 4 years ago

That has same physical format of the board though, rights? So has same physical measurements and pinout/pins layout design?

Yes, although I haven't looked at them to see how closesly they resemble one another. I don't know whether all pins will be compatible between boards, or only the portions designed to receive official ST Nucleo shields.

Gamester17 commented 4 years ago

That has same physical format of the board though, rights? So has same physical measurements and pinout/pins layout design?

Yes, although I haven't looked at them to see how closesly they resemble one another. I don't know whether all pins will be compatible between boards, or only the portions designed to receive official ST Nucleo shields.

I understand it as all "Nucleo-144" board headers should be fully pin-compatible with each other, "Nucleo-64" board headers should be fully pin-compatible with each other, however "Nucleo-144" and "Nucleo-64" headers are not fully pin-compatible with each other, instead they are only partially compatible.

https://www.st.com/resource/en/user_manual/dm00244518-stm32-nucleo144-boards-mb1137-stmicroelectronics.pdf

https://www.st.com/resource/en/user_manual/dm00105823-stm32-nucleo-64-boards-mb1136-stmicroelectronics.pdf

That should mean that all shields made for "Nucleo-64" boards should be fully compatible with "Nucleo-144" board, but boards that are made for "Nucleo-144" and utilize all its extra pins will obviously not be fully compatible with "Nucleo-64" boards.

But note that while all "Nucleo-32" board headers should be fully pin-compatible with each other, shields for "Nucleo-32" boards are not forward compatible with "Nucleo-64" or "Nucleo-144", this is as "Nucleo-32" follow the Arduino Nano standard.

Here is an ST community discussion clarifying making shields for Nucleo boards and portability of shields between boards:

https://community.st.com/s/question/0D50X00009XkX2V/migration-from-nucleo64-board-to-nucleo144

The "ST Zio connector" on Nucleo-64 as well as Nucleo-144 boards both include Arduino Uno Rev3 and ST Morpho extensions:

Nucleo-144 with STM32F7 (STM32 F7) and STM32H7 (STM32 H7) also looks to be fully pin-compatible with each other.

https://www.st.com/en/evaluation-tools/nucleo-h745zi-q.html

https://www.st.com/en/evaluation-tools/nucleo-f767zi.html

image

STM32 Nucleo Board matrix:

https://www.st.com/en/evaluation-tools/stm32-nucleo-boards.html

image

Gamester17 commented 4 years ago

Anyone know of more Nucleo-144 (or Nucleo-64) shields, RAMPS, breakout-boards, or expansion boards made for 3D-printers?

https://easyeda.com/component/f126c14dfc254dc3ac45cf7f3654c534

https://easyeda.com/component/1669b809c25e4c15bd0a1a1042d2a0df

https://easyeda.com/component/24277d33f67b4c1d99191e935f343468

AnttiNykanen has designed this Nucleo-144 Prototyping Shield 5-years ago which I believe should still be valid here too?

https://github.com/AnttiNykanen/stm32_nucleo-144_proto_shield

According to @ghent360 it sounds as if Nucleo-64 boards with their 64-pins does not have enough pins for advanced 3D-printers:

https://www.youtube.com/watch?v=WxM7jmwh20s

@ghent360 has this 3D-printer controller board open-source hardware design for Nucleo-64 and a modified board with 100-pins:

https://github.com/ghent360/PrntrBoard

https://blog.pcbxprt.com/index.php/2018/05/11/prntr-board-v1/

Gamester17 commented 4 years ago

FYI, apparently, @hasenbanck looks to have developed an STM32H7 based 3D printer controller board he calls "Heteromycin":

https://github.com/hasenbanck/heteromycin

Though it seems like he has abandoned that project or at least not touched it since end of April 2020?

Same with his STM32F7 based 3D-printer controller board called "RemRam"?

https://github.com/hasenbanck/remram

Both projects are however open source hardware (CERN OHL) licensed.

Gamester17 commented 4 years ago

@thinkyhead missed you had made and closed PR https://github.com/MarlinFirmware/Marlin/pull/16021 last year for Nucleo STM32H7 support based on https://github.com/MarlinFirmware/Marlin/pull/13657 by @dekra54

@dekra54 you mentioned in https://github.com/MarlinFirmware/Marlin/pull/13657 that you are a hardware guy and were then working on something for it, any news on that?

Hedda commented 4 years ago

The new BigTreeTech SKR SE-BX V1.0 board inside the upcoming BIQU BX 3D-printer is also based on an STM32H7 series MCU

https://www.kickstarter.com/projects/1440007055/biqu-bx-worlds-lightest-direct-extruder-fdm-3d-printer

BIQU specifically state STM32H743IIT6 as the chip used in their video running the 32-bit ARM Cortex-M7 core at 400MHz

https://www.youtube.com/watch?v=YuYOQ6SHBAU (same video as https://www.youtube.com/watch?v=Yu3xfzXXBYA )

The "400 MHz" was maybe confusing people since STMicro list the Cortex-M7 32-bit RISC core operating at "up to 480 MHz"

https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-high-performance-mcus/stm32h7-series/stm32h743-753/stm32h743ii.html

Presumably that BTT SKR SE-BX V1.0 board or a newer variant of it will also be sold as stand-alone upgrade boards from BIQU.

ghent360 commented 4 years ago

There is STM32H750VB, chip which is relatively affordable. I made a version of my PrntrBoardV2 with that chip - it is very similar pinout to F407. However it has a downside - flash is only 128K, compared with 512k on the F407VE. One can use SPI flash to store the firmware and load it to ram or use sd-card, but it is more hustle.

It is also not clear what benefit the high clock rate does offer for Marlin, it runs quite happily on sub 100MHz MCUs.

ghent360 commented 4 years ago

After I finished my Nucleo-64 based board, I briefly considered using Nucleo-144. I decided against it because these nucleo boards are gigantic. You will loose quite a bit of board real estate, just in the huge headers needed to connect the two boards.

Hedda commented 3 years ago

FYI, MCUDev DevEBox STM32H7XX_M V2.0 STM32H750VBT6 and STM32H743VIT6 dev boards is now available from $12

https://github.com/stm32duino/Arduino_Core_STM32/issues/1266

https://stm32-base.org/boards/STM32H750VBT6-STM32H7XX-M.html

https://stm32-base.org/boards/STM32H743VIT6-STM32H7XX-M.html

https://github.com/mcauser/MCUDEV_DEVEBOX_H7XX_M

https://github.com/elzoughby/STM32H7xx-Startup

https://www.aliexpress.com/item/4000300005466.html

https://www.aliexpress.com/item/1005001543610862.html

https://www.banggood.com/STM32H750VBT6-or-STM32H743VIT6-STM32H7-Development-Board-STM32-System-Board-M7-Core-Board-TFT-Interface-with-USB-Cable-p-1661383.html

image

image

image

Simple 3D model of STM32H7 DevEBox board

https://grabcad.com/library/stm32f7-devebox-board-prototype-1

It appears to use the same board design as the older STM32F407VGT6 based STM32F7XX M development board by DevEBox

https://github.com/mcauser/MCUDEV_DEVEBOX_F407VGT6

Thus I would assume that the DevEBox STM32H7XX M devboard is probably pin-compatible with DevEBox STM32F7XX M.

This is just an FYI as I have no affiliation what so ever with any manufacturers or any resellers of this of any other boards.

dreamcat4 commented 3 years ago

Thanks for the information. Currently speaking for a more proven solution we are stopped at the f4 over on the klipper firmware. (not marlin). The open source team at annex engineering have released klipper configurations for the fysetc s6 controller. Which is the current best. I asked the author of klipper software if he thought there would be any meaningful improvement in performance going from the f4 to the h7 and the response was no, not really.

Still... I would suggest it would not hurt to email somebody at fsetc to ask them if they are already working to make a new controller board based on the h7. Since given the very low cost of this MCU it would not impact the bom cost very much. And maybe if their existing s6 has already been out for a long enough time to become 'old'. Or because if fsetc want to make a new product to compete with the new flagship from BTT which is their (still f4 based) 'GTR'.

The reason Fsetc are being recommended as having good silk screen and a well thought out design. And the existing annex users feel their boards are overall better than the equivalents from BIQU / BTT.

slowbro commented 3 years ago

It looks like stm32duino has added variant files for the H7 chips: https://github.com/stm32duino/Arduino_Core_STM32/commit/2f7d6884e57566aa3672ee0049f9a1cbbd1c3d46

thisiskeithb commented 3 years ago

It looks like stm32duino has added variant files for the H7 chips: stm32duino/Arduino_Core_STM32@2f7d688

Marlin also supports the Biqu BX under the STM32 HAL which uses an STM32H743IIT6:

https://github.com/MarlinFirmware/Marlin/blob/a006752fc2fde7a1f13a57eea190e2959fa19094/ini/stm32f7.ini#L42-L65

ag88 commented 3 years ago

a peek at a near future, hope they works well ;) edit: this is merged in the stm32duino core https://github.com/stm32duino/Arduino_Core_STM32/pull/1559 https://github.com/stm32duino/Arduino_Core_STM32/pull/1552 note that the MCUDev DevEBox STM32H7XX_M mentioned prior has somewhat different pin assignments from the WeAct boards though both boards uses a 25 Mhz HSE crystal.

A different thought though, we need a 'different' kind of 'ramps' board which is not a 'shield'. i.e. the motor controllers and other stuff that drives the motors, mosfets, temperature sensors and all are probably connected say using 'dupont' cables etc. to the 'controller' board. That way different boards say stm32f4xx, stm32f103, stm32f7xx etc can be hooked up to a same 'ramps' board. It'd seem like '3d printers controllers' eventually would have 'form factors' just like old 'ATX' PC cases. https://reprap.org/forum/read.php?219,887227

there are various sorts of funky stuff for h7 hanging around these days e.g. https://github.com/koendv/micropython-psram

thisiskeithb commented 1 year ago

Requesting HAL support for STMicroelectronics STM32 Nucleo-144 boards based on newer STMicro STM32H7 Cortex-M7 MCU.

As far as HAL support goes, Marlin supports many STM32H7-based boards now, including the 144-pin H7 variant in the Octopus Max EZ. Take a look at stm32h7.ini for details:

https://www.st.com/resource/en/data_brief/nucleo-h743zi.pdf

If a developer wants to add a specific Nucleo board, they can submit a PR.

github-actions[bot] commented 1 year ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.