Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[New Variant] request list #722

Open
34 of 83 tasks
fpistm opened this issue Oct 23, 2019 · 89 comments
Open
34 of 83 tasks

[New Variant] request list #722

fpistm opened this issue Oct 23, 2019 · 89 comments
Labels
help wanted 🙏 Extra attention is needed new variant Add support of new bard

Comments

@fpistm
Copy link
Member

fpistm commented Oct 23, 2019

Hereafter the list of all new variants requested and their linked issue.
Feel free to file an new issue then it will be added to this list.

Note

This is a community projects.
Any contribution is welcome, so feel free submit a PR. 😉

Important

To add a STM32 based board follows this wiki

Board support requested:

Discovery

Nucleo

Generic / Custom

3D printer:

LoRa:

Done
@Hedda
Copy link

Hedda commented Oct 28, 2019

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
Copy link

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

@MCUdude
Copy link
Contributor

MCUdude commented Nov 18, 2019

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
Copy link
Contributor

kbumsik commented Nov 18, 2019

@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
Copy link
Contributor

MCUdude commented Nov 18, 2019

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
Copy link
Contributor

kbumsik commented Nov 18, 2019

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
Copy link
Contributor

MCUdude commented Nov 18, 2019

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
Copy link
Member Author

fpistm commented Nov 18, 2019

@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
Copy link
Contributor

MCUdude commented Nov 18, 2019

@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
Copy link
Member Author

fpistm commented Nov 18, 2019

STlinkv2 is supported, you have to install the STM32CubeProgrammer.

@MCUdude
Copy link
Contributor

MCUdude commented Nov 19, 2019

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
Copy link
Member Author

fpistm commented Nov 19, 2019

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
Copy link
Contributor

MCUdude commented Nov 19, 2019

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
Copy link
Member Author

fpistm commented Nov 19, 2019

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
Copy link

kargeor commented Jan 3, 2020

Can you add support for new BlackPill STM32F411CEU6?

@HonestQiao
Copy link

NUCLEO-U5A5ZJ-Q is a STM32 Nucleo-144 development board.
Can we support it?
Thanks!

NUCLEO-U5A5ZJ-Q @ ST

@9to1url
Copy link

9to1url commented Apr 7, 2024

I checked the list, H755ZI already requested, but please do expedite, thanks :-)

@fpistm
Copy link
Member Author

fpistm commented Apr 8, 2024

I checked the list, H755ZI already requested, but please do expedite, thanks :-)

Feel free to contribute. 😉

@besser435
Copy link

ST recently released the STM32U0 line of microcontrollers. It would be nice if this could support them.

@fpistm
Copy link
Member Author

fpistm commented Apr 18, 2024

ST recently released the STM32U0 line of microcontrollers. It would be nice if this could support them.

Hi @besser435, this is not really a new variant. First the STM32U0xx support have to be added.
Feel free to open a issue to request it.

@thernstig
Copy link
Contributor

thernstig commented Oct 21, 2024

Can we add these two?

STM32C071R8
STM32C071RB

Or if it needs to be more specific, those pages under Sample & Buy contains these:
STM32C071RBT6N
STM32C071RBI6N
STM32C071RBT6
STM32C071R8T6
STM32C071R8T6N
STM32C071R8I6N

STM32C071RBT6 is the one I am personally most interested in.

@fpistm
Copy link
Member Author

fpistm commented Oct 22, 2024

H @thernstig

Can we add these two?

Of course. Feel free to submit a PR, this is a community project all contributions are welcome.

@thernstig
Copy link
Contributor

thernstig commented Oct 22, 2024

@fpistm I will give it a shot in a day or three. The wiki seems good. I hope there is some support channel if I get stuck, but I'll take a closer look at the wiki once I do.

Q: Should the original post be updated? It is hard to gauge how the original post works. I assume it contains previous requests, but some are checkmarked because they have been merged. Is there an idea to maybe clean up the original post to remove all already-implemented boards? I see the list as a quick overview of what is not implemented for users coming here, so they do not write a new post (like mine above) to add more to the list.

@fpistm
Copy link
Member Author

fpistm commented Oct 22, 2024

@thernstig You're right, I've made a clean up and update the description. Hope it is more clear now

@brightproject
Copy link

Hello @fpistm
Sorry for the link, the problem description is there
platformio/platform-ststm32#160 (comment)

@fpistm
Copy link
Member Author

fpistm commented Dec 20, 2024

@brightproject
Use cubeMx to generate the clock config as described in the wiki.

@brightproject
Copy link

I generated it without changing anything in the graphic designer, the function turned out like this:

void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

/** Initializes the RCC Oscillators according to the specified parameters

  • in the RCC_OscInitTypeDef structure.
    */
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
    RCC_OscInitStruct.HSIState = RCC_HSI_ON;
    RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
    RCC_OscInitStruct.PLL2.PLL2State = RCC_PLL_NONE;
    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
    {
    Error_Handler();
    }

/** Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
{
Error_Handler();
}

/** Configure the Systick interrupt time
*/
__HAL_RCC_PLLI2S_ENABLE();
}

It seemed to me that SystemClock_Config is similar to f103, the clock frequency for all is 72 MHz.

@fpistm
Copy link
Member Author

fpistm commented Dec 20, 2024

@brightproject
please in this kind of request open a discussion instead of pollute an issue opened only to reference board request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted 🙏 Extra attention is needed new variant Add support of new bard
Projects
Status: Contribution
Development

No branches or pull requests