Observations
- There are multiple Arduino cores for STM32’s. Some dedicated for a specific STM32 model and others that are more generic.
- Some cores support the Arduino Boards Manager so they can be easily installed via Boards Manager, while other cores do not and have to be manually installed via files from a (GitHub) repository.
- Naming of different Arduino cores for STM32 is inconsistent and used inconsistently which is confusing for newcomers / non-insiders.
- Generic cores like Arduino Core STM32 and STMGENERIC are generic only in the sense of different STM32 MCU families but not generic in the sense of different STM32 based boards. Each generic core only supports it’s own limited subset of boards with partial overlap between different (generic) cores. Adding support for a board that is already supported in a different core unfortunately is (much) more complex than simply copying some files from one core to another.
Questions
- What are the correct names of each of the different cores (see Observations per core below).
- why are the names of these cores not used consistently?
- “STM Core – The official STMicroelectronics Arduino core”
Does this mean that it is officially supported by STMicroelectronics? - If STM Core (Arduino Core STM32) is the official STMicroelectronics Arduino core then why is the repository not located at https://github.com/stmicroelectronics?
- Is the STM Core the preferred generic core for new applications?
- What about other HAL (non-STM Core) based generic cores?
- There does not seem to be a separate section for Roger’s ‘Arduino STM32’ core in ‘Cores’. Why?
- Why is the ‘Arduino STM32’ Arduino package, unlike the repository, not located on github?
Suggestions
- For core specific suggestions see Observations per core below.
- Use names of cores consistently.
- For the core name property (displayed in Tools/Boards dropdown menu as title for the boards supported by that core) use the following format:
“<vendor/maintainer> <architecture>” (optionally followed by ” boards”). Vendor/maintainer and architecture can contain both uppercase and lowercase. - For vendor/maintainer and architecture folder names use lowercase only.
Important: Arduino extracts the case-sensitive architecture name from the 3rd party package architecture folder name. This is used during the build process but also for determining library compatibility (architecture property in library.properties file). - For the core name property the Arduino organisation uses the format “<vendor> <architecture> Boards” for its different cores (e.g. “Arduino AVR Boards”). Using ” Boards” in the name is in fact double because the Tools/Boards dropdown menu only contains boards.
Using Boards in the name is a matter of personal preference but it would be nice if different cores use it (or not) consistently.
_____________________________________________________________________________
Observations per core
- ‘Arduino STM32‘ aka ‘Roger’s core‘ and ‘stmduino32 core‘.
A STM32 model-specific core for STM32F103 (also available are versions for STM32F3 and STM32F4).
In the Arduino IDE Boards Manager this is listed as “STM32F1xx/GD32F1xx boards by stm32duino“.
In the IDE Tools/Boards dropdown menu the boards supported by this core are titled “STM32 Boards (STM32duino.com)“.
Repostory url: https://github.com/rogerclarkmelbourne/Arduino_STM32
Boards Manager package url: http://dan.drown.org/stm32duino/package … index.jsonObservations / inconsistencies:
– I would expect to see the name ‘Arduino STM32’ in Boards Manager somewhere but it does not.
-“by stm32duino” so stm32duino is the vendor/maintainer. What exactly is stmduino32?
– Is the name stm32duino or STM32duino?
– Based on the repository url one would expect “by Roger Clark” as maintainer.
– “STM32 Boards (STM32duino.com)” STM32duino.com is a Forum for STM32 and Arduino that covers much more boards and cores than the boards that are supported by this core, therefore this title (core name property) is incorrect and confusing. Instead it should say something like “STM32duino STM32F1 Boards” (the format “<vendor/maintainer> <architecture> Boards” appears to be the most common).
– “STM32 Boards (STM32duino.com)” this core is not STM32 generic but only for STM32F103 therefore better use “STM32duino STM32F1 Boards” instead.
– When the STMF3xx or STMF4xx ‘by stm32duino’ cores are installed these to not show ‘STM32duino’ in the title in the boards list, only “STM32F3 Boards” and “STM32F4 Boards”. This makes it impossible to see to which core these boards belong. Better make consistent with the F103 core.
- ‘Arduino Core STM32‘ aka ‘STM Core‘.
A generic STM32 HAL based Arduino Core.
In the Arduino IDE Boards Manager this is listed as “STM32 Cores by ST-Microelectronics“.
In the IDE Tools/Boards dropdown menu the boards supported by this core are titled “STM32 Boards (selected from submenu)“.
Repostory url: https://github.com/stmduino/Arduino_Core_STM32
Boards Manager package url: https://github.com/stm32duino/BoardMana … index.jsonObservations / inconsistencies:
– The Arduino IDE 1.5 3rd party Hardware specification describes the Hardware Folders structure for third parties. It specifies ‘vendor/maintainer’ and ‘architecture’ folders.
The Arduino package for this core is not compliant with the Arduino Hardware Specification because it uses STM32 as vendor/maintainer (folder) name but STM32 is the architecture not the vendor/maintainer. For vendor/maintainer folder name “stmicroelectronics”, “stm” or “st” (whatever is most correct/preferred) should be used instead. The casing is not prescribed but looking at Arduino’s own packages lower case appears to be preferred for these folder names.
Using STM32 as vendor/maintainer name is not only non-compliant but also confusing.
– The repository for this core is located at https://github.com/stm32duino/Arduino_Core_STM32. The github username stm32duino is confusing because this is not the stm32duino repository (and no other cores are available from this user).
– “STM32 Cores by ST-Microelectronics”. Is it ST-Microelectronics or should it be STMicroelectronics?
– In IDE Tools/Boards the boards supported by this core are listed as “STM32 Boards (selected from submenu)”.
The title lacks vendor/maintainer, therefore it is not possible to see to which core these boards belong.
– “STM32 Boards (selected from submenu)“. The text “(selected from submenu)” is not correct and a bit confusing.
- STM32GENERIC
Another generic STM32 HAL based Arduino Core (but different from Arduino Core STM32).
In the IDE Tools/Boards dropdown menu the boards supported by this core are titled “STM32GENERIC for STM32 Boards”“.
This core does not have support for the Arduino Boards Manager.
Repostory url: https://github.com/danieleff/STM32GENERICObservations / inconsistencies:
– STM32GENERIC is used as vendor/maintainer name. This does not comply with the Arduino 3rd party Hardware specification but it does the job. It uses the name of the core’s GitHub repository which is non-compliant but sufficient here.
– STM32 is used as architecture folder name. The Arduino 3rd party Hardware specification does not prescribe casing for the architecture folder name, but using lowercase instead of uppercase would make it consistent with other STM32 cores.
This website/forum was setup to support Roger’s core and Leaflab Maple boards. The goal was to take the libmaple code and get it running with Arduino 1.5.x. All other cores are ones that came after and are not the original mission of this website. You can read the original thread (all 176 pages) on the arduino.cc forum if you want the follow the genesis of Roger’s core and this website: https://forum.arduino.cc/index.php?topic=265904.0
If you are using an stm32f103 boards, a Leaflabs Maple board, the Baite mini maple), or the various pill boards, you should be using Roger’s libmaple based core and read http://wiki.stm32duino.com/index.php?title=Main_Page. Most of the posts you find on this site talk about Roger’s core, if the post is more than 12 months old and doesn’t specifically indicate the core being used.
If you are using Nucleo or Discovery boards, your best bet is to use the official STMicroelectronics core
All other cores you find are created by people just adding to the confusion.
[Rick Kimball – Mon Jun 18, 2018 8:37 pm] –
http://stm32duino.com/viewtopic.php?f=42&t=97 that topic is a sticky you should read it. If that post is confusing, post on that thread discussing why it is confusing.
Thanks.
I already did read that thread.
Confusing because names are not used consistently as described in my above post.
The post which you are referring to does not change that, neither does it answer all of my above questions.
[bluejedi – Mon Jun 18, 2018 9:45 pm] –
Confusing because names are not used consistently as described in my above post.
The post which you are referring to does not change that, neither does it answer all of my above questions.
Instead of using any confusing names, use the github where you obtained your core, that is what I do if there is any confusion. If I want to indicate Roger’s Core I explicity use the github url or I say “Roger’s libmaple based core”
Unfortunately, you will find new and experienced users not being precise about which core they are talking about. It is too late for people to use a consistent name. The forum is littered with people using imprecise naming. To be honest you have laid out the names used. The confusion seems to come from new users not knowing which one they are using.
Maybe it is time for all the non-Roger’s cores to find a different forum.
[Rick Kimball – Mon Jun 18, 2018 10:01 pm] –
Maybe it is time for all the non-Roger’s cores to find a different forum.
That does not sound very inviting.
And appears to contradict with:
Arduino for STM32
Everything relating to using STM32 boards with the Arduino IDE
STM32GENERIC I think Danieleff has stopped work on.
huaweiwx appears to be maintaining a fork of it however.
It’s a shame as it appears to be quite a useful core for the 407 black boards.
I think there ARE some good suggestions above but clearly they are mainly cosmetic for Roger’s core.
When you put “stm32duino” into the google, you get

- stm32duino.JPG (55.65 KiB) Viewed 814 times
But there is always an explanation for that.
The cores have evolved over the time, starting from libmaple’s one, and the new cores had to find their own way to be integrated in this forum (because all are working with Arduino IDE).
I think a massive reconstruction of the nomenclature would be useful, but it is hard to accomplish.
So this is it, we have to live with it as it is.
[Rick Kimball – Mon Jun 18, 2018 8:37 pm] –
…
If you are using Nucleo or Discovery boards, your best bet is to use the official STMicroelectronics coreAll other cores you find are created by people just adding to the confusion.
Well .. no .. I don’t think so. For a long time the STM32GENERIC supported more variants and more interfaces than the official core.
I hope this will change in the future.
But with the STM32GENERIC I could even run the DiscoveryF746 with all interfaces except the audio interface one year ago. And as far as I can see, one year later, the official core does not have the same features.
Even such things like timer interrupts were supported in the STM32GENERIC examples. And they are essential for a 32bit ARM.
[ChrisMicro – Tue Jun 19, 2018 4:23 pm] –
Well .. no .. I don’t think so. For a long time the STM32GENERIC supported more variants and more interfaces than the official core.
I hope this will change in the future.
I don’t understand why people aren’t spending their time to advance @fpiSTM’s efforts? Why have two cores using the same technology? That crew is getting paid to work on the official STM Arduino core https://github.com/stm32duino/Arduino_Core_STM32
I contributed the STM32F030 Nucleo port because I have that board and wanted to see how easy it would be to add a new architecture and board. In the process they documented how to add a new board based on my questions. While the pull was being tested I found bugs with the ADC that benefited all the other boards. I found other issues and documented them and suggested solutions. I’m not going to do the same for other cores that people are working on part time or not at all anymore. fpiSTM’s team constantly releases new versions and they provide documentation and a json file that can load the latest from the board manager. Eventually I think their work should become “the only stm32 core”
They are paid to work on Nucleo stuff. Who is using Nucleo boards here actually?
I don’t understand why people aren’t spending their time to advance @fpiSTM’s efforts?
Maybe the people do not feel be paid ![]()
There is nothing stopping people from contributing other boards.
[Rick Kimball – Tue Jun 19, 2018 7:47 pm] –
I contributed the STM32F030 Nucleo port because I have that board and wanted to see how easy it would be to add a new architecture and board. In the process they documented how to add a new board based on my questions. While the pull was being tested I found bugs with the ADC that benefited all the other boards. I found other issues and documented them and suggested solutions.
Great.
[Rick Kimball – Tue Jun 19, 2018 7:47 pm] –
I’m not going to do the same for other cores that people are working on part time or not at all anymore. fpiSTM’s team constantly releases new versions and they provide documentation and a json file that can load the latest from the board manager.
Sure.
[Rick Kimball – Tue Jun 19, 2018 7:47 pm] –
Eventually I think their work should become “the only stm32 core”
That would benefit all users. One core to rule them all. ![]()
But as I understand it currently is not feature complete.
Looking forward to DFU support for F103.
Core is not only for ST Boards, it’s mainly for STM32 based boards.
I know there are some bottleneck or missing advanced features they are several reasons for that… anyway they will disappear with the time… always the missing ingredient… There will be also some performances enhancements.
Finally, to answer to some questions from bluejedi.
Yes i’m working for ST.
stm32duino is not a github user. It’s a github organization created by Roger.
About STM32 as maintainer/vendor, yes it’s not the best choice… anyway change it will bring a lot of issue with board manager to update. Anyway, maybe it could be changed if really needed, but don’t think st, stm,… are the right choice. Goal of this core is not to be tagged as ST product but ‘supported’ by ST and it’s provide more than ST boards support. As said before it’s for STM32 based boards. It’s a community project even if (currently) I’m the main contributor, they are more and more contributors. That’s also a reason why it is not on STMicroelectronics github. Contributing to stm32duino community seems more logical, that’s why we contact Roger.
About menu to select boards, it’s just to warn user that this is not the board name and board could be selected in a submenu later, anyway any suggestion are welcome.
Probably, I’ve forgot several things to answers or raised but midnight is past… time to go…
I understand that many things have grown historically and are not simple to change, but the inconsistencies make it much less transparant and more difficult (sometimes hard) to understand for a newcomer.
A simple example: (not to be nitpicking) the core lists in Boards Manager as “STM32 boards by ST-Microelectronics” but then uses ‘STM32’ for vendor/maintainer (with ‘stm32’ as architecture). That is confusing. The STM Core is hosted at GitHub organisation stmduino32 but then the core known as stm32duino (Roger’s Arduino STM32 core) is not hosted there. Again, rather confusing.
Just to be sure (to be able to use the correct spelling):
Is STMicroelectronics the current correct company name spelling?
Is STM the correct abbreviation (or acronym) to use?
[bluejedi – Wed Jun 20, 2018 9:24 am] –
Thanks for your answers. This clears up several of my questions.
Welcome
[bluejedi – Wed Jun 20, 2018 9:24 am] –
I understand that many things have grown historically and are not simple to change, but the inconsistencies make it much less transparant and more difficult (sometimes hard) to understand for a newcomer.
right
[bluejedi – Wed Jun 20, 2018 9:24 am] –
A simple example: (not to be nitpicking) the core lists in Boards Manager as “STM32 boards by ST-Microelectronics” but then uses ‘STM32’ for vendor/maintainer (with ‘stm32’ as architecture). That is confusing. The STM Core is hosted at GitHub organisation stmduino32 but then the core known as stm32duino (Roger’s Arduino STM32 core) is not hosted there. Again, rather confusing.
As I said it’s not oriented to support ST board but STM32 based board. Probably a generic Maintainer/vendor could be to use “stm32duino xxxx” to differentiate each core.
The main reason why Roger’s core based on leaflabs (original stm32duino) is on his personal github, I guess, is probably legacy when when he took further development after leaflabs stopped. Roger could pribably comment on this.
[bluejedi – Wed Jun 20, 2018 9:24 am] –
Just to be sure (to be able to use the correct spelling):
Is STMicroelectronics the current correct company name spelling?
Is STM the correct abbreviation (or acronym) to use?
Yes, STMicroelectronics also called ST.
STM is an alias and used also for stock exchange code ![]()
[fpiSTM – Wed Jun 20, 2018 3:51 pm] –
As I said it’s not oriented to support ST board but STM32 based board.
Yes I know, but “by ST-Microelectronics”. ![]()
[Rick Kimball – Tue Jun 19, 2018 7:47 pm] –[ChrisMicro – Tue Jun 19, 2018 4:23 pm] –
Well .. no .. I don’t think so. For a long time the STM32GENERIC supported more variants and more interfaces than the official core.
I hope this will change in the future.I don’t understand why people aren’t spending their time to advance @fpiSTM’s efforts? Why have two cores using the same technology?
..
I fully agree that it makes more sense to have only one core on which the people are working on instead of many.
The only point is: A year ago the STM32GENERIC framework was supporting much more peripherals than the official core. And it still does. I usually play with signal processing applications like sound processing and this are real time systems which needs DACs, I2S and audio-frequency interrupts. Sometimes also DMA.
And for most cases the official core didn’t work. Even simple things did not work.
Some weeks ago I stumbled across a Nucleo-STM32L476 and I though: OK, give it a try and let’s see if the official framework can be used. I tried blink: super, it worked. Than I tried the ADC-read-example: Values were displayed in the terminal but the were stuck at a fixed value. So I thought: Forget it and lets wait some other year.
I appreciate the work of Frederic and I looked in the github code. The framework is clear structured and has a clean code. Meanwhile even better than the GENERIC framework. But unfortunately for my practical applications still not usable.
[ChrisMicro – Fri Jun 22, 2018 3:59 am] –
And for most cases the official core didn’t work. Even simple things did not work.
There is a difference between “didn’t work” and “currently not supported”. And what about simple things?
Yes Daniel made a great work and support more peripherals but not so generic accross all MCU regarding to some MCU version.
And some shortcuts have been used, as daniel said he do this core mainly for his needs.
One other main difference is to be as most as possible Arduino compatible in order to be able to use as many libraries as possible or at least with minimum porting effort (ex: add core switch ARDUINO_CORE_STM32)
Anyway, yes development is slower than daniel could do. I’m currently working on CI features (build and tests) to more focus on dev. ![]()
[fpiSTM – Fri Jun 22, 2018 4:45 am] –
…
One other main difference is to be as most as possible Arduino compatible in order to be able to use as many libraries as possible or at least with minimum porting effort (ex: add core switch ARDUINO_CORE_STM32)
Anyway, yes development is slower than daniel could do. I’m currently working on CI features (build and tests) to more focus on dev.![]()
It seems a huge afford to support many platforms equally. In the beginning of the computer age the PC-clones hat this problems. Because there was so many different hardware things often didn’t work whereas Apple only supported one hardware and didn’t have that problems.
The Arduino framework was manly started with the Atmega 8 bit controllers and the compatibility is limited to this.
But the STM32 have much more calculation power and peripherals and the 8 bit framework norm is to limited. That’s why e.g. Teensy invents his own API-functions.
Let’s take a look at some other controllers like the ESP32.
Here is a MP3 and audio library:
https://github.com/earlephilhower/ESP8266Audio
With this you can built a MP3-player or web radio in 3 minutes. Even if the STM32 have the calculation power, there is no way to have this in the STM32 Arduino-Framework now.
Or let’s take the Mozzi-Library:
https://github.com/sensorium/Mozzi
For many MCUs are supported there manually but there is no way to attach this library to a generic Arduino Framework because they have no general audio interface specified.
Having a clear view of the core status may help newcomers to choose the core that is appropriate, and developers to fix missing features sooner.
HAL-based cores seem to be the way to support the extensive STM32 family, but its overhead is really heavy for low-memory devices like the F103 (sorry, I am used to Silabs’s “emlib” HAL which does the same thing with preprocessor macros and inline functions, resulting in a much lighter abstraction).
Then, extend support to all possible chips that are commonly available on eval boards; starting with STM own ones, followed by AliExpress common ones.
Then we can think of extending the API for additional stuff like sound, or porting other Atmel-tied Arduino libraries to STM32 on a case by case basis.
[fpiSTM – Sat Jun 23, 2018 9:01 am] –
my (huge) list.
Is there a specific planning?
There probably are things on the list that are worth sharing here.
To give some insight, an indication of what to expect.
DFU/USB support for the bluepill would be nice (there already exist several working examples that may be copied into the core).
There probably are things on the list that are worth sharing here.
To give some insight, an indication of what to expect.
Several months back I met a long term CIO of a Bank. We wanted to discuss some topics related to project planning. The discussion was short as he started in pretty enthusiastic way:
“I’ve passed several presentations and talks with experts and they are telling me the era of wasting the time with detailed planning is over and our future [means from tomorrow] is in Agile development. They [developers] will deliver what is actually needed, and they will do it now, next week or so, without any need to loose the time with planning and writing various Specs [as we had with waterfall approach]. I will definitely go for it..”
[Rick Kimball – Tue Jun 19, 2018 7:47 pm] –
…
I don’t understand why people aren’t spending their time to advance @fpiSTM’s efforts? Why have two cores using the same technology? That crew is getting paid to work on the official STM Arduino core https://github.com/stm32duino/Arduino_Core_STM32
…
As a member who has basically moved-on from the forum, you can dismiss any of my argument and I will not be offended; but, I simply had to respond to this thread.
New users in my time were referred to:
http://stm32duino.com/viewtopic.php?f=2&t=3111
Which essentially states that there is much disfunction in approach to cores – but for good reasons.
Some months ago, I posted a thread about folding efforts into the STM Official effort. Rick essentially restated my stance above.
There are good reasons why GENERIC may be a better core at-this-moment for some users, but those users are not just blinking LEDs… they are advanced users, generally self-sufficient.
Roger’s core is the old “community” core that evolved from the old group effort. I more think Roger’s claim to fame is his work on the bootloader and his gracious payment monthly to host this website. All bow to Daddy WarBuck$.
Frédéric and his STM team are the future of STM32duino. <—— Emphatic “period”
Of course, this is my opinion.
Ray
I agree on your status regarding the different cores, but I think we should make this obvious’to newcomers and easier to track for others by expliciting the limits of each core.
It is a shame that the ESP8266/ESP32 chips that arrived after the STM32s have now a much better Arduino support. This may be due to the lower number of chip flavors, or a quicker support from the manufacturer, a more motivated communitty, or a combination of the above factors, but I still think that the STM32 has a place in the sun for some purposes.
My current focus is on using the STM32 as an I2C slave hooked to an ESP8266 Wi-Fi node, itself part of a Raspberry Pi-based MQTT network of sensors/actuators.
[Pito – Sat Jun 23, 2018 1:49 pm] –
Is there a specific planning?
There probably are things on the list that are worth sharing here.
To give some insight, an indication of what to expect.Several months back I met a long term CIO of a Bank. We wanted to discuss some topics related to project planning. The discussion was short as he started in pretty enthusiastic way:
“I’ve passed several presentations and talks with experts and they are telling me the era of wasting the time with detailed planning is over and our future [means from tomorrow] is in Agile development. They [developers] will deliver what is actually needed, and they will do it now, next week or so, without any need to loose the time with planning and writing various Specs [as we had with waterfall approach]. I will definitely go for it..”
You are missing the point here: I am not asking for a detailed time planning carved into stone. I want information, I want some insights and know where it is heading. And with all respect, does it have a future and is it worth spending time on.
This is 2018, not 2001 (the year the agile manifesto was published). Been there done that.
Just replace my ‘planning’ with plan or strategy.
They [developers] will deliver what is actually needed
They will only under certain conditions.
Who determines what is actually needed?
They can continue only as long as management that pays their salaries stays happy with the results.
They still need a strategy and some kind of planning. But the planning is short term and is different from waterfall.
It still needs vision and setting goals.
If you don’t set goals you are never going to reach them.
Vision without execution is hallucination.
and they will do it now, next week or so
No they won’t. They still need time to do their work. Just ask @fpiSTM for his long list.
without any need to loose the time with … writing various Specs
Sure, don’t write any specs… Don’t mind architecture…
“They [developers] will deliver what is actually needed”. Yes, with all respect, every developer with it’s own ‘vision’, it own (limited) abilities, disabilities and limited view of scope.
“Scott retired three months ago. He was the only employee left who still knew about how everything works and things are hardly documented. We have a real serious problem now.”
Agile is good but it’s not snake oil. It’s a tool, not a goal.
[bluejedi – Sun Jun 24, 2018 8:02 am] –
…
You are totally missing the point here: I don’t want a detailed time planning carved into stone. I want information, I want some insights and know where it is heading. And with all respect, does it have a future and is it worth spending time on.
…
May I ask what is your goal? How do you plan to use the STM32 framework? For what purpose?
Du you want to support the development?
[mrburnette – Sat Jun 23, 2018 4:51 pm] –
New users in my time were referred to:
http://stm32duino.com/viewtopic.php?f=2&t=3111
Which essentially states that there is much disfunction in approach to cores – but for good reasons.
If have seen and read that. But for me things were still not clear enough.
There are good reasons why GENERIC may be a better core at-this-moment for some users, but those users are not just blinking LEDs… they are advanced users, generally self-sufficient.
I am only a newcomer, not with years experience on this board and not with years of STM32 experience. With all respect for Roger, authors of the different cores and contributors here on the forum, but:
STM’s Arduino Core STM32 is promoted as ‘the core with a future’, the core to go with because HAL based and supported by STM. I did not find a clear description what that support actually (not) includes, but I may have overlooked it. The STM Core is new and appears far from complete yet.
STM32GENERIC currently is a more mature HAL-based core, but it appears that there has been little development in the last months. Huaweiwx’s fork seems to be more regularly updated. So what is wise for a newcomer, what will work best (and will keep working because well supported)?
I first landed at this forum after experimenting with a bluepill board and was able to use Roger’s bootloader and F103 core. I also tried the STM Core which worked well for some of my basic sketches and it worked with the U8g2 display library. I also tried a U8g2 sketch with STM32Generic but it complained with several errors which made me back off because I only tried a simple sketch with a popular library. The error may have been my own fault, I have not invested much further time on it because the numerous mentions of incompatibilities between cores and lack of functionality of some cores. My goal is to use a core and not having to make a detailed cores study of what works in one core and not in another (as said before, with all respect and from my limited view as a ‘user’).
The LoRaM3-D boards come with their own core (derived from huaweiwx’s STM32GENERIC core). I had no issues running the U8g2 sample sketches with it. But as a newbie I thought: why is this core not based on the STM Core? Isn’t the STM Core the way to go?
Many things and cores on this forum have a long history, much time and effort has been spent by many people. I know that things have grown historically, but what is the future?
I.m.o. in general it will be good to have ‘one generic STM32 core that rules them all’. This will allow bundling efforts and resources and probably result in broader community support, but is easier said than done. (And for specific purposes a dedicated optimized core might be preferred.)
That ‘one core’ appears to currently not exist yet, at least not in a complete enough state (if I have understood correctly).
Therefore it is interesting to know where things are heading and what can be expected from different efforts/developments/cores.
E.g. will the STM Core mature fast enough and become a potential replacement for STM32GENERIC?
[bluejedi – Sun Jun 24, 2018 9:35 am] –
So what is wise for a newcomer, what works bests (and will keep working because well supported)?
Imho it depends on the application and board.
Maple mini and blue pill are best supported by Roger’s Arduino_STM32 (libmaple originated) core, which is slim and easy to adapt for new features.
For official ST boards you may be better served by the other cores, because (although not that slim as Roger’s) there you may find support for on-board HW and linked interfaces which are not (yet) supported by Roger’s core.
[ChrisMicro – Sun Jun 24, 2018 8:53 am] –
May I ask what is your goal? How do you plan to use the STM32 framework? For what purpose?
My goal is to be able to use the STM32 as a generic replacement for the older ‘Arduino’ 8-bit AVR’s.
Another option are Microchip’s SAMD and SAML ARM chips (but these boards are still relatively expensive).
This is mainly a hobby. I am not doing this commercially and I do not create custom hardware designs.
I like the Arduino framework. Not because it is the best but because of community support and because it allows me to run the same software on different hardware platforms without having to deep dive into platform specific frameworks and tool chains.
Du you want to support the development?
My main goal is using the framework and not having to develop it to be able to use it.
If I can make an incidental contribution that’s fine but not a primary goal. I’m relatively new to STM32 so I’m still in learning mode.
[bluejedi – Sun Jun 24, 2018 9:54 am] –
My main goal is using the framework and not having to develop it to be able to use it.
If I can make an incidental contribution that’s fine but not a primary goal.
It sounds like a board from adafruit would be a better fit for you.
[Rick Kimball – Sun Jun 24, 2018 11:45 am] –[bluejedi – Sun Jun 24, 2018 9:54 am] –
My main goal is using the framework and not having to develop it to be able to use it.
If I can make an incidental contribution that’s fine but not a primary goal.It sounds like a board from adafruit would be a better fit for you.
What gets lost for new forum members is that STM32DUINO was initially envisioned as a migration opportunity for Arduino 8-bit users that needed more resources than the non-Due boards provided at a better price point than Due. The original assumption was that new Maple Mini users would be very knowledgeable AVR/Arduino users and also somewhat independent … grouping advanced Arduino users into a common cause to advanced the abandoned Maple Mini effort by LeafLabs. Everyone involved initially was an advanced user.
The under $6 Maple Mini was the base-case. LeafLabs static documentation was adequate as the goal was to migrate the Leaflabs core (somewhere close to GUI 0022 level) to the newly created Arduino GUI 1.5x spec.) LeafLabs continued their support forum for a while even as STM32DUINO took root. After Roger started the dedicated stm32duino forum and it matured a bit, LeafLabs closed their forum.
Some takeaway from history:
Stm32duino was never considered to be for beginners or novice Arduino users. That said, no one ever expected that an under $2 U.S.D. shipped board would materialize or that many clone variations would be produced. The forum was based on self-sufficiency to resesrch, code, and share new libraries, ported libraries, and learned best practices. Roger was “king administration & github gateway manager” to ensure some structure, a common baseline repository, and change control. Other users branched stm32duino and worked on their own important concentrations – some features driven back to Roger and some features dormant in that user’s branch. One expects such from a group of seasoned developers.
Support was initially not required. Knowledgeable users shared code and tips and examples.
Time change everything, but cheap hardware is a more powerful driver than natural evolution. The cheap Chinese clones have brought in new forum members without development backgrounds and knowledge of uC software engineering. This is why I believe the STM Corporate developed core is the future. In time, it will be complete. Corporate software development must go thru a few more hoops than we hobbyists.
The Leaflabs core (and the current core hosted by Roger) were intended to look and act like an Arduino 8-bit machine with frills to deal with 32-bit and uC hardware enhancement.
The STM32 official core is designed to be efficient and support a broader range of hardware … porting user applications between lower to higher capability hardware is much simpler.
Hobbyists should stay with mainstream 32-bit Arduino boards. Manufacturers and distributors like SparkFun and Adafruit provide good value free support provided by elevated hardware pricing.
Cheap clone boards are not meant for new users without knowledge and the supporting experience.
Ray
Yes, developing against stm32 is confusing to get started with.
Yes, there’s a requirement for self sufficiency.
However, there are probably some simple things which could be done to make life just a little easier for newcomers – and we must acknowledge that there WILL be a lot of them given the accessibility of these devices.
We as a group could decide on a clear roadmap. Just examples here, but should Roger’s core be put into stability mode only, and all new functionality/hardware support be tragetted at STM’s core? Those who really want new functionality probably have the skill to back port it.
We could probably make it a bit easier to understand which of the most common cores achieve the best results for different flavours of hardware. I know the Wiki does this to some extent, but it also tries to cover perhaps far more than we actually should. Is it time to ditch some baggage and not so useful info about fringe cores?
We could help Roger even more with organisation here, perhaps there’s some room to make the forums even clearer in terms of where to post and how this all aligns with the roadmap we could come up with.
Finally, should we look to port as much from STMGENERIC to STM’s core as we can, not withstanding the structural differences?
Now the cores available are more complete and most of time are OK (specially for F103). My journey to stm32 world now is not limited in arduino cores anymore, I like to program stm32 directly with LL/HALMX or even in register level, and a new world of new devices like my favorites STM32L4xx parts is on front of me.
For arduino cores, we are in a transition phase, from libmaple to new LL/HALMX implementations. We have the GENERIC core (it seems like an abandoned project), the huaweiwx’s fork and the official fpiSTM’s core. I understand that fpiSTM is very careful and he has to test everything and for this reason the evolution of the core is slow, but I think that this will be finally the only STM32 arduino core for generic use. fpiSTM’s workload is huge for a person (paid or not), it is very difficult to support all these families and as I understand there are some priorities in this project.
[Rick Kimball – Sun Jun 24, 2018 11:45 am] –
It sounds like a board from adafruit would be a better fit for you.
Not really.
[mrburnette – Sun Jun 24, 2018 1:18 pm] –
What gets lost for new forum members is that STM32DUINO was initially envisioned as a migration opportunity for Arduino 8-bit users that needed
…
Thank you for your insights.
FYI, I don’t consider myself a beginner nor novice Arduino user. I have a software engineering background and a background in electronics, but not in uC software engineering. I began life programming in hex, on my first self-built uC kit.
[BennehBoy – Sun Jun 24, 2018 1:26 pm] –
I agree with many of the sentiments expressed in here.
…
Thanks.
[bluejedi – Sun Jun 24, 2018 10:38 pm] –[Rick Kimball – Sun Jun 24, 2018 11:45 am] –
It sounds like a board from adafruit would be a better fit for you.Not really.
I looked at the board you seemed to be interested in. I think I found the Lora Board you purchased. It is unlikely that is ever going to be a wildly popular board here. It is too expensive, seemed to be about $30. You can get a similar board from Adafruit that has a core and radio they support. It is cortex-m0+ based with a radio module with all the different unlicensed Lora frequencies. Adafruit has created a core and if you have problems with it you can complain to them.
So if the Adafruit stuff isn’t what you want, describe to me why you think the STM32 line is a good fit for you? You already indicated you don’t want to be making fixes to the core, you just want to use it.
[Rick Kimball – Sun Jun 24, 2018 11:33 pm] –
It is too expensive, seemed to be about $30.
They are all around €15,- Which is not too expensive. The boards include STM32, shielded LoRa module, OLED display, battery support with charging, support USB, DFU and Arduino. (But if you buy from DIY Mall site http://www.diymalls.com/lora32u4-lorawan prices are 40+% higher.)
BSFrance LoRaM3-D boards
STM32L151 https://bsfrance.fr/lora-long-range/136 … 1276.html
STM32F103 https://bsfrance.fr/lora-long-range/136 … X1276.html
STM32F303 https://bsfrance.fr/lora-long-range/136 … X1276.html
The BSFrance LoRa32u4 (AVR ATmega32u4 uC, without display) is €13. https://bsfrance.fr/lora-long-range/134 … tenna.html
A similar Adafruit Feather 32u4 LoRa costs around €31 ($36) – that is expensive.
(Above BSFrance prices include 20% VAT/sales tax.)
[Slammer – Mon Jun 25, 2018 2:38 pm] –
The main concern about this, is the software support for someone that wants to program it as “arduino board”.
It is supported by Arduino core: https://github.com/BSFrance/BSFrance-stm32
(No Boards Manager supported. Requires manual install from repository and manual tools/ARM toolchain install.)
The LMIC-Arduino library can be used for The Things Network / LoRaWAN (but requires one small patch).
I don’t know yet what is a LoRa good for, but at least I will have a F3 CPU, I might improve Libmaple support for F303.
[bluejedi – Sat Jun 23, 2018 1:20 pm] –[fpiSTM – Sat Jun 23, 2018 9:01 am] –
my (huge) list.Is there a specific planning?
There probably are things on the list that are worth sharing here.
To give some insight, an indication of what to expect.
Yes and no. There’s a lot of issue opened and PR to review and features to enhance/add USB/ADC/Timer.
This evolve also depending of user feedback’s. And talking about maintainer view there are several cross link between features.
So to integrate properly a feature this required some architecture study.
It’s always possible to release all the features… but do not complained after if this works for one mcu but not for other or if they crash another features.
End user could do what he wants with the the core, all HAL/LL are available, build options could be update, all CMSIS registers are also available.
[bluejedi – Sat Jun 23, 2018 1:20 pm] –
DFU/USB support for the bluepill would be nice (there already exist several working examples that may be copied into the core).
Feel free to contribute.
I know this would be nice and I will go further, it is mandatory not only for BP.
I saw also some assumptions in those topics which maybe have been true but now false.
I will not spent time to comment each one.
User is free to use the core which fit his need, each core has their pros/cons ![]()
I am not a professional, only a self learned hobbyist, so i have to learn mbed…. one day. I read how to add new boards on STM core and I was successfull, so I believe that it is easy. Maybe the same instructions work with danieleff STM32GENERIC core. I have to test it better and then I will make a pull request.
I wish to use LoRa for sensors that will be far at about one or more km not for a specific project but to learn how to do that. Maybe the shield alone is able to collect data (there are some ports labelled on the shield) but I have to search documentation about it. So I will use it as shield.
I don’t have a preferred core, I started with the Rogers’ one and now I am trying the STM one’s.
[stevestrong – Tue Jun 26, 2018 7:07 am] –
I just ordered a F303 LoRa module.
I don’t know yet what is a LoRa good for, but at least I will have a F3 CPU, I might improve Libmaple support for F303.
The LoRa radio module uses several STM32 pins (see pinout on BSFrance site).
If you are not using the LoRa radio module then disable it by keeping the NSS pin (SPI SS) high – it is connected to PA4.
Note: using the radio whithout an antenna connected can damage the radio module.
What LoRa is good for:
- The Things Network https://www.thethingsnetwork.org/
- LoRa https://www.semtech.com/technology/lora
- LoRaWAN https://lora-alliance.org/about-lorawan
[Pito – Tue Jun 26, 2018 11:15 am] –
each with … support”
Exactly, (for me) that is an important requirement.
[bluejedi – Tue Jun 26, 2018 12:39 pm] –[Pito – Tue Jun 26, 2018 11:15 am] –
each with … support”Exactly, that is an important requirement.
The “support” here (or elsewhere in DIY maker’s open source world) cannot be “required”, it is provided on a “voluntary” base by enthusiasts who like to mess with such a stuff in their free time…
If you buy a kit/board from olimex or mikroelektronika or digilent or stm you may “require” something like “support” (when lucky)..
[Pito – Tue Jun 26, 2018 12:51 pm] –[bluejedi – Tue Jun 26, 2018 12:39 pm] –[Pito – Tue Jun 26, 2018 11:15 am] –
each with … support”Exactly, that is an important requirement.
The “support” here (or elsewhere in DIY maker’s open source world) cannot be “required”, it is provided on a “voluntary” base by enthusiasts who like to mess with such a stuff in their free time…
If you buy a kit/board from olimex or mikroelektronika or digilent or stm you may “require” something like “support” (when lucky)..
The Arduino framework is supported by a large open source community.
Illustrative: “He was looking for a framework that is well supported by a(n open source) community. He did not want to unknowingly walk into a long dead ended street where he was not familiar, because he wanted to focus more on building applications than on building the framework and required tools. Therefore ‘being well supported’ was one of his requirements for the framework”.
I don’t see why this cannot be a valid requirement for an open source supported environment.
There is a (subtle) difference between a requirement (as in ‘need’) and requiring (as in ‘demanding’) something.
