-
Notifications
You must be signed in to change notification settings - Fork 2.1k
boards: add WeAct-f411ce #12778
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
boards: add WeAct-f411ce #12778
Conversation
@benpicco I've tried this PR on the board, |
9146024
to
83f27ca
Compare
Copy & paste error… |
Now USB is also working! |
There is a strange persistence issue though. There are two explanations that come to mind
I somehow suspect the latter because even when I add void pre_startup(void)
{
gpio_init(LED0_PIN, GPIO_OUT);
LED0_ON;
} (and disble |
Turns out the bootloader doesn't require any ROM offset. With |
ed83874
to
c1c80c8
Compare
Looks like the |
9504dbc
to
ddcdc16
Compare
ddcdc16
to
0e02dff
Compare
Btw: I think I have one of these as well as the F401 variant. Feel free to ping me, if testing/reviewing is needed. However, I got rid of the bootloader as I just used the matching nucleo-f* board to flash RIOT on it. But now that |
@maribu This should already be in a good state, the only thing I need to figure out is how to get rid of those USB ID warnings when using USB for stdio by default. |
663f9d0
to
a17caa4
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For consistency, please rename the board to all lowercase (weact-f411ce
).
I tested the following:
- Flashing via dfu-util
- stdio via USB
- LED / button definitions
- RTC conf
- ADC conf
- i2c conf
- PWM (Tested only PA15 using
tests/periph_pwm
. It seems the duty cycle is inverted - SPI config (not tested yet)
- UART config (not tested yet)
Btw: Care to add an MTD conf for the SPI Flash on the un-populated U3 footprint on the back? (The modules should still be pulled in manually, as the user would have to solder in the flash. But having the config in place would be a super nice addition.) |
b8ccf05
to
96c8cc4
Compare
Added them. Unfortunately RIOT doesn't detect the chip size automatically yet based on the JDEC ID, but that shouldn't be too hard to fix. I took the timing of the AT25SF041 which was in stock at Segor, but since those are lower bounds, any flash should work. (IMHO we should just use sensible defaults if entries in |
96c8cc4
to
5110d83
Compare
I think that's more a problem with the STM32 PWM driver than with the board config |
3f50ddf
to
1bdf72e
Compare
Rebased to the stm32 merge. |
b3b6a12
to
4399ba0
Compare
As for SPI, I used this to test the #define NRF24L01P_NG_PARAM_SPI SPI_DEV(1)
#define NRF24L01P_NG_PARAM_CS GPIO_PIN(PORT_B, 12)
#define NRF24L01P_NG_PARAM_CE GPIO_PIN(PORT_A, 8)
#define NRF24L01P_NG_PARAM_IRQ GPIO_PIN(PORT_A, 9) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some minor inline comments
boards/weact-f411ce/doc.txt
Outdated
| Frequency | up to 100MHz | | ||
| FPU | yes | | ||
| Timers | 8 (2x watchdog, 1 SysTick, 6x 16-bit) | | ||
| ADCs | 1x 12-bit | | ||
| UARTs | 3 | | ||
| SPIs | 5 | | ||
| I2Cs | 3 | | ||
| RTC | 1 | | ||
| Vcc | 2.0V - 3.6V | | ||
| Datasheet | [Datasheet](https://www.st.com/resource/en/datasheet/stm32f411ce.pdf) | | ||
| Reference Manual | [Reference Manual](https://www.st.com/content/ccc/resource/technical/document/reference_manual/9b/53/39/1c/f7/01/4a/79/DM00119316.pdf/files/DM00119316.pdf/jcr:content/translations/en.DM00119316.pdf) | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mind to align the left column of the table? (The links in the right column are too long to allow for consistent alignment there.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
aligned.
Updated testing state:
If you want this in swiftly, you could drop the UART 2 config. (Can still be added and fixed later on.) |
UART is strange, I just copied that from |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK. Thanks for adding this :-)
The WeAct-F411CE is a blackpill-like board with a STM32F411CE. It can be flashed using the vendor-provided bootloader.
df232c3
to
b20ec93
Compare
I sadly have none of these to check there as well. I can run a second round of testing for it later on the WeAct to rule out a flanky test setup and human error. But let's get this is first; this will make my life easier when testing the |
@maribu I have a branch for the F401 board too, but it sounds like you've also already flashed RIOT onto it. Mine will get stuck if I enable the 25 MHz HSE oscillator and I can't get into the DFU bootloader - maybe this is related and it's just a case of broken hardware. CDC ACM works fine using the HSI oscillator, so I'm not so sure - why would the bootloader rely on HSE then? |
I was able to run make BOARD=weact-f401cc -C examples/default flash
make BOARD=weact-f401cc -C examples/default term
Some preliminary testing was successful. Note: A button is exposed with SAUL, but it is not present on the WeAct V1.2; there is only the NRST button and the BOOT0 button. It seemingly was only added to the WeAct V1.3.
That is typical behavior if the crystal is not properly connected. RIOT loops until the clock becomes stable, which never happens in case of hardware issues. Here is the schematic of the board. You should check the solder connects of pin 5 and 6 of the STM32F401, the crystal (it is labeled 25.000 MHz, so it is easy to find) and the capacitors C3 and C4 (those should be the two left of the crystal). I guess if you just shortly reheat the solder there with a thin solder tip, the board will start to boot :-) |
With this configuration it also works for me, but that is not using the 25 MHz oscillator. diff --git a/boards/weact-f401cc/include/periph_conf.h b/boards/weact-f401cc/include/periph_conf.h
index 867c737937..81a72fe0c7 100644
--- a/boards/weact-f401cc/include/periph_conf.h
+++ b/boards/weact-f401cc/include/periph_conf.h
@@ -23,8 +23,8 @@
#define PERIPH_CONF_H
#include "periph_cpu.h"
-#include "f4/cfg_clock_84_0_1.h"
-// #include "f4/cfg_clock_84_25_1.h"
+//#include "f4/cfg_clock_84_0_1.h"
+#include "f4/cfg_clock_84_25_1.h"
#include "cfg_i2c1_pb8_pb9.h"
#include "cfg_timer_tim5.h"
#include "cfg_usb_otg_fs.h"
Yea I just copied the f411ce board, mine doesn't have a button either.
No luck so far, but I'll keep trying :) |
yep :-) I guess you just have bad luck. |
Contribution description
The WeAct-F411CE is a blackpill-like board with an STM32F411CEU6 and USB-C.
It comes with 128k RAM and 512k ROM and is available on sites like AliExpress for less than 4€.
For convenience It can be flashed using the vendor-provided bootloader.
The convenience will be complete when #12556 is merged and stdio is provided via USB CDC ACM, so no extra hardware (except for the USB-C cable) is needed.
The name is a bit odd, some call it
blackpill-f411ce
, butWeAct
is printed on the silk screen and the vendor provided demo firmware prints the nameWeAct-F411CE
, so I decided to go with that.There is also a WeFun-F401CE that comes with an STM32F401CCU6 instead.
Testing procedure
Issues/PRs references
Needs
#13652#13865 to use it's own VID:PID.