QMP32B: ARM Cortex M4F 3D Printer Controller Board

STM32F446RE + TMC2224 Controller Board for Creality 3D Printer

Similar projects worth following
QMP32B is a direct upgrade for stock Creality board. It features:
- MCU: STMicroelectronics STM32F446RET6
+ Speed: 180MHz (168MHz with USB Support)
+ Flash: 512kB
+ RAM: 128kB
- Stepper Driver: Trinamic TMC2224 with Stealthchop2
- Better MOSFET for high current bed
- Diode Protection for Bed and Hotend
- 5V 3A for powering Raspberry Pi
- Servo 0 pin for BLTouch and Filament Sensor Pin

I bought my first 3D Printer which is an Ender 3 and I really like it for what it can perform for its price. However, one big downside of it was that it was very loud, and I put my printer in my room, so I can barely sleep when the printer is working. 

Because of that, I decided to upgrade its stock controller board to something else that is pin compatible. I looked on internet and I found that there are 3 boards that do that: EZBoard from TH3D, Cheetah from FYSETC, SKR Mini E3 from BIQU. But, EZBoard is pretty pricey, both FYSETC and BIQU use a pretty basic MCU: STM32F103RCT6. I want something better with hardware FPU (not available for Cortex M3), faster speed for native 1/256 microstepping and native support for Marlin 2.0. So I made my own 3D Printer Board: which is QMP32B. This uses STM32F446RET6 which is 180MHz (168MHz with USB) and TMC2224 connected with UART mode so everything is done in software. This is just better and much quieter than the stock one. And this has been printing more than 150 Hours now and it has proven to be very stable.

When I design the board, I know that most users (including me) will not want to toggle pin BOOT0 for uploading code. I had modifed the startup assembly code and a custom gcode (M8150) to make the MCU jump to USB DFU mode. So now the user just need to type M8150 on any serial monitor then the MCU will jump directly to DFU. They just need to install STM32CubeProgrammer to upload the program. 

P.S: Same with MINHF4, I don't plan to manufacture this board since I have no funding nor time (Prepping for Second Year Uni T.T ). But if you have any questions, feel free to ask :))

sch - 1.49 MB - 03/08/2020 at 00:42


brd - 445.55 kB - 03/08/2020 at 00:42



QMP32B Schematic

Adobe Portable Document Format - 95.05 kB - 07/24/2019 at 03:09


View project log

Enjoy this project?



Serhii wrote 12/11/2022 at 21:14 point

Hello. It is very interesting project. I want to repeat this project for my 3d printer, of course with you permit. I learned you schematic and recognized such thing: you used 3 pin for LCD display, LCD_EN, LCD_RS, LCD_D4. I want to ask you. How it works? Because for 12864 LCD needs at least 4 data pin and EN and CS. Please explaine me. Thank you

  Are you sure? yes | no

minh7a6 wrote 03/19/2023 at 06:31 point


Sorry for this late reply, feel free to use my design based on your needs. In terms of  your question about the LCD, basically the 12864 has 2 modes: parallel and serial (SPI). The normal mode that is being used in the LCD that has EXP1 and EXP2 is basically parallel. For Creality screen, they operated in serial mode. 

The board that I designed operates using Software SPI (ideally Hardware SPI is much better as it relieves CPU resources). 

Here's a Youtube demo of 12864 screen in Serial mode: Even though it's not Marlin, it can give you an idea why this mode could work.


  Are you sure? yes | no

Griff wrote 03/08/2021 at 22:11 point

Do you have a marlin build I can use? Would like to try and create one of these.

  Are you sure? yes | no

grant williamson wrote 11/05/2019 at 02:35 point

Hi there, amazing work, wondered id you would share the pcb layout, and a components list, want to give this a shot my self! 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates