I am trying to upload my own code to a BTT SKR 3 board, originally made for 3D printing. I thought it had everything I needed for my custom project.
https://biqu.equipment/products/bigtree ... 3d-printer
I am trying to upload some basic blink code to test it out but running into issues.
I seem to be able to upload a basic sketch using DFU mode after also installing "STM32CubeProgrammer v2.15.0"
However after upload the serial line no longer connects, the pin doesn't blink either.
I can get back to DFU mode but can't seem to get the serial to come back.
I am trying to figure out the proper settings for uploading. Any suggestions appreaciated!
STM32H723
Re: STM32H723
SKR 3 uses 25MHz external oscillator, generic H723 is defined with internal oscillator, you might need to define new board variant:
https://github.com/stm32duino/Arduino_C ... 28board%29
or redefine SystemClock_Config(void)
Also, I think that HS USB needs external PHY that is absent in SKR 3.
https://github.com/stm32duino/Arduino_C ... 28board%29
or redefine SystemClock_Config(void)
Also, I think that HS USB needs external PHY that is absent in SKR 3.
Re: STM32H723
Hey thanks for the response.
Clearly I have a lot to learn, thanks for the links.
The SKR-3 comes with Marlin so I know they have done some work on the variant already.
Digging into their marlin branch, I found this variant file for the SKR-3
https://github.com/bigtreetech/SKR-3/bl ... Vx.cpp#L13
This area seems to be where clock speeds are being sorted:
It seems they have switched from the H723 to the H743 model. I think that is just more ram on the chip. Is that fair assessment?
I do not completely understand the best move forward from here.
Could you elaborate on what you mean by this? I don't know these acronyms and they are hard to search for.
I might just try to learn platformIO if the variant is already working on that IDE
Clearly I have a lot to learn, thanks for the links.
The SKR-3 comes with Marlin so I know they have done some work on the variant already.
Digging into their marlin branch, I found this variant file for the SKR-3
https://github.com/bigtreetech/SKR-3/bl ... Vx.cpp#L13
This area seems to be where clock speeds are being sorted:
Code: Select all
/* PLL1 qclk used for USB 48 Mhz */
/* PLL1 qclk also used for FMC, QUADSPI, SDMMC, RNG, SAI */
/* PLL2 pclk is needed for adc max 80 Mhz (p,q,r same) */
/* PLL2 pclk also used for LP timers 2,3,4,5, SPI 1,2,3 */
/* PLL2 qclk is needed for uart, can, spi4,5,6 80 Mhz */
/* PLL3 r clk is needed for i2c 80 Mhz (p,q,r same) */
PeriphClkInitStruct.PLL2.PLL2M = 15; // M DIV 15 vco 25 / 15 ~ 1.667 Mhz
PeriphClkInitStruct.PLL2.PLL2N = 96; // N MUL 96
PeriphClkInitStruct.PLL2.PLL2P = 2; // P div 2
PeriphClkInitStruct.PLL2.PLL2Q = 2; // Q div 2
PeriphClkInitStruct.PLL2.PLL2R = 2; // R div 2
// RCC_PLL1VCIRANGE_0 Clock range frequency between 1 and 2 MHz
PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_0;
PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOMEDIUM;
PeriphClkInitStruct.PLL2.PLL2FRACN = 0;
PeriphClkInitStruct.PLL3.PLL3M = 15; // M DIV 15 vco 25 / 15 ~ 1.667 Mhz
PeriphClkInitStruct.PLL3.PLL3N = 96; // N MUL 96
PeriphClkInitStruct.PLL3.PLL3P = 2; // P div 2
PeriphClkInitStruct.PLL3.PLL3Q = 2; // Q div 2
PeriphClkInitStruct.PLL3.PLL3R = 2; // R div 2
// RCC_PLL1VCIRANGE_0 Clock range frequency between 1 and 2 MHz
PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3VCIRANGE_0;
PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3VCOMEDIUM;
PeriphClkInitStruct.PLL3.PLL3FRACN = 0;
I do not completely understand the best move forward from here.
Could you elaborate on what you mean by this? I don't know these acronyms and they are hard to search for.
All of the guides for making firmware for printing are using platformIO now. Is it reasonable to try and port this variant file over to SM32duino?
I might just try to learn platformIO if the variant is already working on that IDE
Re: How to use Interrupts on STM32F4.
I've been exploring the use of interrupts on the STM32F4 and I've encountered some challenges. Specifically, I'm trying to set up an interrupt to trigger when a specific event occurs, but I'm having trouble understanding how to properly configure the NVIC and the interrupt handler function.