stm32duino / Arduino_Core_STM32

STM32 core support for Arduino
https://github.com/stm32duino/Arduino_Core_STM32/wiki
Other
2.71k stars 956 forks source link

[New Variant] request list #722

Open fpistm opened 4 years ago

fpistm commented 4 years ago

Hereafter the list of all new variants requested

Note

This is a community projects so any help are welcome. To add a STM32 based board follows this wiki

Any contribution is welcome, so feel free submit a PR. πŸ˜‰

Board support requested:

3D printers:

Discovery

MP1

Nucleo

Generic / Custom

3D printer:

LoRa:

Hedda commented 4 years ago

What about the new STM32MP1 MPU series which has both a Cortex-A7 as well as an onboard Cortex-M4 microcontroller unit?

https://blog.st.com/stm32mp1-mpu-stm32mp157a-ev1-stm32mp157c-dk2/

https://www.cnx-software.com/2019/02/21/stmicro-stm32mp1-cortex-a7-m4-mpu/

Seeed Studio ODYSSEY-STM32MP157C SBC based on Seeed Studio SoM-STM32MP157C SoM

https://www.cnx-software.com/2020/01/21/odyssey-stm32mp157c-sbc-feature-stmicro-stm32mp157c-cortex-a7-m4-soc/

Emtrion emSBC-Argon

https://www.cnx-software.com/2019/07/18/emtrion-emsbc-argon-stm32mp1-dual-cortex-a7-m4-processor/

i2Som PanGu board from I2Som:

https://www.cnx-software.com/2019/06/25/pangu-board-stm32mp1-sbc/

MYIR MYD-YA157C development board based on their MYiR MYC-YA157C STM32MP1 CPU Module

https://www.cnx-software.com/2020/01/07/myir-launches-som-development-board-based-on-stm32mp1-microprocessor/

Avenger96 96Boards CE Extended Board Features an STMicro STM32MP1 SoM

https://www.cnx-software.com/2019/02/23/avenger96-96boards-stmicro-stm32mp1-som/

Shiratech Stinger96 board (96Boards board design)

https://www.cnx-software.com/2020/05/15/stinger96-nb-iot-emtc-and-avenger96-96boards-stm32mp1-sbcs-giveaway/

Direct Insight / Ka-Ro STM32MP1 QSMP 1570 / 157C SoM module and development kit with reference board:

https://www.cnx-software.com/2020/06/26/linux-powered-stmicro-stm32mp1-solder-down-qfn-style-som-measures-27x27mm/

Could we also request support for STM32MP1 (STM32 MP1) that comes onboard STM32MP157A-DK1 development board?

https://www.st.com/en/evaluation-tools/stm32mp157a-dk1.html

STM32MP157A-DK1 development board also come with the STM32MP157C-DK2 Discovery Kit

https://www.st.com/en/evaluation-tools/stm32mp157c-dk2.html

STM32MP157A-DK1 and STM32MP157C-DK2 Discovery kits are $99 with LCD or $69 without https://www.st.com/en/evaluation-tools/stm32mp157a-dk1.html https://www.st.com/en/evaluation-tools/stm32mp157c-dk2.html

STM32MP157A-EV1 Evaluation kit for PCB engineers does have a steeper price at $399 https://www.st.com/en/evaluation-tools/stm32mp157a-ev1.html

Several other boards with STM32MP1 have been announced but none released yet AFIK.

justind000 commented 4 years ago

Picked up STM32G0316-DISCO the other day. It'd be nice to port over. It's close to an ATTiny85 alternative.

MCUdude commented 4 years ago

It would be great if we could have more generic chip options. I'm particularly interested in the 48 and 64 pin versions of the STM32F401 and STM32F411, but these will be used on custom hardware and not board like the Nucleo. The F401 and F411 are also very reasonably priced on LCSC.com.

I've been a pro AVR user for years now, but have very experience with STM32. Let's say I start working on a pin definition file for all 48-pin F401C's. Can we use the same pin definition files for all variants (F401CB/CC/CD/CD)? And are there guidelines on how the Arduino pinout should look like? Perhaps similar/identical to other supported STM32's?

kbumsik commented 4 years ago

@MCUdude As far as I understand about this project, it can support all generic chips, since it pulled from the official STM32 Cube libraries. The problem is that it is just impossible to define generic pinouts for all possible chips because Arduino platform requires flattened pinout definitions (like PA14 => Arduino Digial 1 pin). You should modify the source code to define your own board. The good news is that you don't need to do much works since Arduino_Core_STM32 already supports STM32F401 Series, so you only need to define a new variant. You can see the wiki to figure out how to define your own variant and see here to learn how to work with the source code.

Can we use the same pin definition files for all variants (F401CB/CC/CD/CD)?

You should look at the datasheet to see if they have the same pinouts, but as far as I know they have different memories and the same package/pinouts.

MCUdude commented 4 years ago

The problem is that it is just impossible to define generic pinouts for all possible chips because Arduino platform requires flattened pinout definitions (like PA14 => Arduino Digital 1 pin)

Luckily, (unlike on 8-bit AVRs) I can still use the generic pin names (PA14) instead of the Arduino Pin number. This makes the actual Arduino pinout not so relevant to me, since I will always have full control over the generic pin names.

The good news is that you don't need to do much works since Arduino_Core_STM32 already supports STM32F401 Series, so you only need to define a new variant. You can see the wiki to figure out how to define your own variant and see here to learn how to work with the source code.

Thanks! I'll read through the Wiki and see what I can do. I prefer working in the PlatformIO IDE, so I hope a new variant for 48 pin 401/411's will be added if I do it right, since I'll rely on an official release. In PlatformIO it's also easy to change the microcontroller variant as long as I have a working variants file for the particular target. @fpistm any thought on adding more generic targets to this core?

You should look at the datasheet to see if they have the same pinouts, but as far as I know they have different memories and the same package/pinouts.

I haven't really read through the datasheet, but according to ST's tables the only difference is flash and RAM.

kbumsik commented 4 years ago

Luckily, (unlike on 8-bit AVRs) I can still use the generic pin names (PA14) instead of the Arduino Pin number. This makes the actual Arduino pinout not so relevant to me, since I will always have full control over the generic pin names.

I mean, this project is an Arduino Core port that implements Arduino API. Even if you physically have access to the generic pin names, Arduino API forces you to use Arduino-style pin numbers. So if you want more flexibility of choice of pins you might have to define your own Arduino pins to work with.

I prefer working in the PlatformIO IDE

I don't know how PlatformIO IDE works with third-party Arduino cores, but working with the source does not require a specific IDE, since you replace the official release with the git repo.

MCUdude commented 4 years ago

I mean, this project is Arduino Core that uses Arduino API. Even if you physically have access to the generic pin names, Arduino API forces you to use Arduino pin numbers. So if you want more flexibility of choice of pins you might have to define your own Arduino pins to work with.

Yes, I'm forced to use Arduino Pin numbers. But the PA[x], PB[x]..Pn[x] macros are defined in a way that they match their Arduino Pin number. On the Nucleo 401 board I have I don't care about digital pin 13. I use the PA5 macro instead (which is defined as 13).

I have lots of experience when it comes to "wrapping" the Arduino API around AVRs. I currently host six different repos here on GitHub, and some have become quite popular.

I don't know how PlatformIO IDE works with third-party Arduino cores, but working with the source does not require a specific IDE, since you replace the official release with the git repo.

I've been involved with platformIO since three on my Arduino cores (MightyCore, MiniCore and MegaCore) are available through PlatformIO. What they do is that they will make a copy of the latest release and include it in one of their repos. It is possible to add custom core files, but it's so much easier when it is already available as an option in their project wizard.

fpistm commented 4 years ago

@MCUdude You can add an GenF4 menu, this is not a problem. About Arduino pinout this is not an issue. We only try to do a correct pins mapping when there is an Arduino connector else this is not important. As you said it is easier to use PYn naming. Only the Analog pins have to be contiguous. You can refers to other GenYx series added as an example.

MCUdude commented 4 years ago

@fpistm thanks! I'll put some time and effort into this. Does any of you guys know if there exist a good ready-made F401/f411 48-pin development board? If not I'd probably have to roll my own.

It would also be great if it was possible to use the standard stlink programmer for the generic "boards", preferably the cheap $3 knockoff's. They do work great in PlatformIO, but not in Arduino IDE. I do have a black magic probe and currently waiting for a Jlink in the mail, but it's always nice to be able to use cheap and highly available tools. Is there any particular reason why support for stlink v2 was dropped?

fpistm commented 4 years ago

STlinkv2 is supported, you have to install the STM32CubeProgrammer.

MCUdude commented 4 years ago

Sorry for the noob questions, but I'm slowly starting to getting into things.

The Nucleo board I currently have uses the internal HFI (high-frequency internal oscillator) instead of an external crystal. To gain more accurate timing I soldered in an 8 MHz crystal, some caps and added a few 0R resistors. With a little fiddling, I was able to reconfigure the clock, and I'm now running with an external crystal!

However, one question still remains; Why would I need a 32.768 kHz crystal as well? The Nucleo board has this crystal populated, but as far as I know, it's not in use by default? Can this be used to drive the main high-frequency clock? Is it only for RTC use? Do I really need to use this at all?

The reason I'm asking is that even the cheapest boards from China has this crystal. And they are trying to cut costs everywhere, so I figured it maybe has to be there for a reason?

fpistm commented 4 years ago

AFAIK for F401 it i mainly used for RTC and allow to have a better accuracy than the LSI. I guess, this also allow to reach a better consumption in some Low Power mode. Anyway for this kind of question you should ask on ST community. Here this is for issue related to the core and this issue is to list all variant requests.

MCUdude commented 4 years ago

AFAIK for F401 it i mainly used for RTC and allow to have a better accuracy than the LSI. I guess, this also allow to reach a better consumption in some Low Power mode.

Thanks for the clarification. I understand you would like to keep this on-topic, so I'll rather ask in the community forums instead, no worries!

Back to the generic pinouts, Since I only have a 64-pin (Nucleo) 32F401R chip at the moment to work with, I started working on a generic pinout for this chip first. Is it OK for you guys if I keep the peripheral names as close to the metal as possible? This means we'll have Serial1, Serial2 and Serial6 as available objects, and the user can use setRx() and setTx() to change the pin location for each peripheral? If this is documented properly (I can help out) it should be fairly easy for the end-user to configure this properly.

fpistm commented 4 years ago

By default, only one serialx instance is defined and mapped to Serial. Most of the user only use one serial. I really don't think you should instantiate all possible Serial. Mainly if the user need to change the mapping. It is simplest to define it than changing the default pins.

If you want discuss about your variant it is better to open a new issue than polluted this one.

kargeor commented 4 years ago

Can you add support for new BlackPill STM32F411CEU6?

fpistm commented 4 years ago

Hi @kargeor as the F401 version exists it should not be difficult to add this one.

TzOk83 commented 4 years ago

The STM32F411CEU6 "Black Pill 2" apparently has 2 different board revisions: WeACT V1.3 and WeAct V2.0. The V2.0 has an additional "KEY" button, which binds pin A0 to GND when pressed.

I really can't wait support for this board...

codebk1 commented 4 years ago

Is support for NUCLEO-H745ZI-Q planned in the near future?

BennehBoy commented 4 years ago

I just knocked up a quick Pill 411CE variant only to realise that it is already done.

There's an error in the variant.h however, it has the USER BUTTON (KEY) mapped to PC13, this is the builting LED pin, KEY is on pin A0. Further it will define this for all boards that are NOT defined as ARDUINO_BLACKPILL_F411CE. Have I misunderstood the logic?

fpistm commented 4 years ago

@BennehBoy there is no error. LED is well defined to PC13 and no user button is defined for the ARDUINO_BLACKPILL_F411CE. Anyway it seems there is one user button based on schemtaics I've found anyway I didn't see it on any pictures I've saw of the board (Weact 1.3 and 2.0).

fpistm commented 4 years ago

Hi @dooodgers

Is support for NUCLEO-H745ZI-Q planned in the near future?

I did not plan to add it specifically. Moreover, H745 is the Dual-core lines. Currently there is no dedicated management for Dual-core lines.

TzOk83 commented 4 years ago

Anyway it seems there is one user button based on schemtaics I've found anyway I didn't see it on any pictures I've saw of the board (Weact 1.3 and 2.0).

https://github.com/mcauser/WEACT_F411CEU6/blob/master/docs/STM32F411CEU6_schematics.pdf https://github.com/mcauser/WEACT_F411CEU6/blob/master/docs/STM32F411CEU6_pcb.pdf

elsni commented 4 years ago

Support for the HY-ministm32v would be really great, is it hard to add? https://www.hotmcu.com/hyministm32v-dev-board-32-tft-lcd-module-p-5.html

Hedda commented 4 years ago

FYI, STMicro has updated their STM32MP1 Family with models that have faster 800 MHz Cortex-A7 Processors, through the Cortex-M4 core still runs at same 209 MHz speed as previous models.

https://www.cnx-software.com/2020/02/27/stmicro-updates-stm32mp1-family-with-800-mhz-cortex-a7-processors/

https://blog.st.com/mpu-stm32mp1/

https://newsroom.st.com/media-center/press-item.html/p4236.html

fpistm commented 4 years ago

@elsni

Support for the HY-ministm32v would be really great, is it hard to add? https://www.hotmcu.com/hyministm32v-dev-board-32-tft-lcd-module-p-5.html

This should not be too hard. refers to the Wiki how to add a new board. You can also create your own package and use this core.

N0rbert commented 4 years ago

I do not know the STM32 platform well for now, but it would be really great if you support the STM32F031K6T6 as included in https://www.st.com/en/evaluation-tools/nucleo-f031k6.html (it has Arduino Nano pin-to-pin headers).

N0rbert commented 4 years ago

And having support of STM32F413ZHT6 as included in https://www.st.com/en/evaluation-tools/32f413hdiscovery.html would be great too.

fpistm commented 4 years ago

@N0rbert

As it is mentioned in the OP:

This is a community projects so any help are welcome. To add a STM32 based board follows this wiki

Any contribution is welcome, so feel free submit a PR. πŸ˜‰

stevewells20 commented 4 years ago

I too am interested in the Nucleo H745ZI. I realize it is a dual core system (Similarly to the ESP32), which is not currently supported. For a starting point, would there be a simple way to modify the existing code for the H743ZI to be compatible with the H745ZI, since they share the same Cortex M-7 CPU?

The ESP32's dual core API is quite easy to use and would be a great example to shoot for for dual core support in this project.

fpistm commented 4 years ago

@Hackswell I've answered you on the forum. Please avoid to duplicate your questions and use only the forum for question/support. Thanks πŸ˜‰

lutfisan commented 3 years ago

please add support for NUCLEO-L552ZE-Q

fpistm commented 3 years ago

please add support for NUCLEO-L552ZE-Q

L5 introduction is planned. The this board could be added. Added to the list

AnthonyDiGirolamo commented 3 years ago

Hoping to get variant support for the https://www.st.com/en/evaluation-tools/32f429idiscovery.html board including setting up the 64-Mbit SDRAM.

I'm guessing one could copy most of this variant to start? https://github.com/stm32duino/Arduino_Core_STM32/tree/master/variants/NUCLEO_F429ZI to start.

The only other variant I can see that uses SDRAM is https://github.com/stm32duino/Arduino_Core_STM32/blob/master/variants/DAISY_SEED/ldscript.ld#L74 Is that a good example of how to setup SDRAM for the STM32F429I-DISC1?

fpistm commented 3 years ago

@AnthonyDiGirolamo Yes it will come. But before adding any new variant I have to end the #1091 PR as all the variant will have a different structure for genericity. WiKi will be updated as well.

matthijskooijman commented 3 years ago

I just bought a Nucleo G031K8 board and noticed it is not supported yet (it's already on the list in this issue, though). I'm about to create and submit a variant for it, but wondered if maybe someone (@fpistm) already has a WIP-version for this board I could use of base onto?

fpistm commented 3 years ago

Hi @matthijskooijman No need to submit a PR. I'm currently reworking the variant definition for 2.0.0 release. The Nucleo G031K8 will be part of this.

matthijskooijman commented 3 years ago

@fpistm Any preview I could maybe test? In need to do some tests with this particular chip/board in the coming days to see if it's feasible for a product we're working on :-)

fpistm commented 3 years ago

Yes it could be possible. Let me few hours to clean up my branch and I will provide it to you.

P.S.: all my best wishes for this new year. :wink:

matthijskooijman commented 3 years ago

Awesome, thanks for your lightning quick and helpful (as always) reply! Best wishes for you as well! :-)

harryjph commented 3 years ago

Please could you add generic F7 targets, such as STM32F722, STM32F745, STM32F765, etc?

fpistm commented 3 years ago

Hi @harry1453 added to the list, with new release it will be lore easy to add generic variant as the main files required to create a variant is automatically generated and provided. Only clock config and ldscript need to be added.

Hedda commented 3 years ago

STMicroelectronics STM32 H7 (STM32H7) Discovery Kits

STM32H735G-DK Discovery Kit with STM32H735IG = https://www.st.com/en/evaluation-tools/stm32h735g-dk.html

STM32H745I-DISCO Discovery Kit with STM32H745XI https://www.st.com/en/evaluation-tools/stm32h745i-disco.html

STM32H747I-DISCO Discovery Kit STM32H747XI https://www.st.com/en/evaluation-tools/stm32h747i-disco.html

STM32H750B-DK Discovery Kit with STM32H750XB https://www.st.com/en/evaluation-tools/stm32h750b-dk.html

STMicroelectronics Nucleo boards with STM32 H7 (STM32H7):

NUCLEO-H743ZI ( STM32H743ZI / STM32H743ZIT6U ) https://www.st.com/en/evaluation-tools/nucleo-h743zi.html

NUCLEO-H745ZI-Q ( STM32H745ZI / STM32H745ZIT6U ) https://www.st.com/en/evaluation-tools/nucleo-h745zi-q.html

NUCLEO-H755ZI-Q ( STM32H755ZI/STM32H755ZIT6U ) https://www.st.com/en/evaluation-tools/nucleo-h755zi-q.html

NUCLEO-H753ZI ( STM32H753ZI/STM32H753ZIT6U ) https://www.st.com/en/evaluation-tools/nucleo-h753zi.html

NUCLEO-H723ZG ( STM32H723ZG / STM32H723ZGT6U ) https://www.st.com/en/evaluation-tools/nucleo-h723zg.html

NUCLEO-H7A3ZI-Q ( STM32H7A3ZI / STM32H7A3ZIT6QU ) https://www.st.com/en/evaluation-tools/nucleo-h7a3zi-q.html

PS: Also see https://github.com/MarlinFirmware/Marlin/issues/19751 which has more links of both generic and custom boards with STM32 H7 (STM32H7).

Gamester17 commented 3 years ago

NUCLEO-G474RE development board has STM32G474RE MCU

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

NUCLEO-G491RE development board has STM32G491RE MCU

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

fpistm commented 3 years ago

Hi @Gamester17 Nucleo G474RE is already available.

I've added the NUCLEO-G491RE in the list.

keystoneclimber commented 3 years ago

I'd love to see support for the STM32L4R9AI (ultra low power MCU) and it's associated STM32L4R9I-DISCO board for circular LCD development!

rei-vilo commented 3 years ago

Seeed Studio has launched a new range of LoRa-E5 boards based on the STM32WLE5JC:

Up to now, only the STM32Cube MCU Package for STM32WL series is listed as SDK.

Adding support for those boards could broaden the user’s base and foster new applications. Thank you!

ttimasdf commented 3 years ago

Added support for STM32F105R8/B/C. The pinmap is generated through genpinmap, clock config generated by STM32Cube.

https://github.com/ttimasdf/Arduino_Core_STM32/tree/variant-generic-stm32f105x

The board config file is also available for testing. see platformio/platform-ststm32#499


Could you please add it to the list for the record? @fpistm I think it may contain (or replace) the support to the board suggested by #869

And here's platformio configuration snippet for building the project, in case anyone wants to test it.

[env:f105rc]
platform = ststm32
framework = arduino

board = genericSTM32F105RC
platform_packages = 
    framework-arduinoststm32 @ https://github.com/ttimasdf/Arduino_Core_STM32#variant-generic-stm32f105x
fpistm commented 3 years ago

Hi @ttimasdf I will add it with the new format.

williamalexmoran commented 3 years ago

Hello, I want to add a new variant so I can use my STM H723ZG with Arduino. I was a little confused by the naming within the variants folder. Would my board (NUCLEO-H723ZG) be in the folder "H723Z(E-G)I_H730ZBI_H733ZGI" or in the folder "H723Z(E-G)T_H733ZGT"?

fpistm commented 3 years ago

Hi @williamalexmoran as stated in the databrief: (https://www.st.com/en/evaluation-tools/nucleo-h723zg.html) image

it is a STM32H723ZGT6 so you should use the H723Z(E-G)T_H733ZGT