back to CForth features

CForth based USB/DMX controller with STM32G431

This is an experimental approach for a minimal user programmable USB/DMX512 controller to create auto-running or interactive lighting sequences. Several CPU I/O pins are user programmable, some with special features like ADC in, DAC out, SPI interface.
The first approach in 2020 was a "mini" version of G431 CForth. Actually a STM32 Nucleo32-G431 board was added with almost the same CForth and I/O HW features. Some hints to configure this module for best use with CForth, see bottom of this page

These devices are not intended for big stage shows. But the CForth interpreter provides good possibilities to create time based or interactive sensor animated lighting art objects or light installations for buildings or similar.

Originally this project was designed with a more conventional ASCII and MIDI based command set without possibility to create some kind of time-based action flow. The STM32 Nucleo32-G431 is much easier for user specific DIY, but does not support this original command set.

The firmware is a special version of the CForth interpreter with
an additional set of DMX related kernel operators (Forth "words") as: photo of assembled PCB and Veroboard

Most essential general features of the CForth-DMX module:

 
A detailled CForth Operating Manual (PDF file), and
A hardware DIY Construction Manual for STM32G431/G441 and STM32F042 (HTML file) is provided here.

Downloads:
The subsequently downloadable material is copyrighted (c)2020-25 by Wolfgang Schemmert.
Assembly of the devices, programming and use of the software is permitted for free by everybody for any purpose ("freeware"). For commercial use, restrictions of third-party software contributors (Segger GmbH, STM) must be respected.
All information is based on best knowledge, but "as is" and without any warranty. Any responsibility is excluded. Use for dangerous, life-threatening and medical applications is forbidden.

Firmware "CForth-G4xx-MINI48.hex" for "minimal USB/DMX conroller", SysClock = 48MHz
(08 February 2025 - HW redesign, improvements and minor bugfixes)

Firmware "CForth-G4xx-MINI144.hex" for "minimal USB/DMX conroller", SysClock = 144MHz
(08 February 2025 - HW redesign, improvements and minor bugfixes)

Source code "CForth-G4xx-v63.zip"
(state 08 February 2025) This source code is provided as complete "Segger Embedded Studio" project (ZIP file,988 kB).
Parts published by Segger GmbH are under license of Segger&|Rowley, parts published by STM are under license of STM, parts programmed by me are provided under GNU GPL3 license.)



Firmware "CForth-G431-Nucleo32-HSI48.hex" for "minimal USB/DMX conroller", internal RC oscillator, SysClock = 48MHz
(10 February 2025 - first release)

Firmware "CForth-G431-Nucleo32-HSE48.hex" optimized for "STM32G431 Nucleo32 support board", onboard 24MHz crystal clock, SysClock = 48MHz
(10 February 2025 - first release)

Firmware "CForth-G431-Nucleo32-HSE144.hex" optimized for "STM32G431 Nucleo32 support board", onboard 24MHz crystal clock, SysClock = 144MHz
(10 February 2025 - first release)

Source code "CForth-G431-Nucleo-v11.zip"
(state 10 February 2025) This source code is provided as complete "Segger Embedded Studio" project (ZIP file, 470 kB).
Parts published by Segger GmbH are under license of Segger&|Rowley, parts published by STM are under license of STM, parts programmed by me are provided under GNU GPL3 license.)

Some hints for best configuration of STM32G431 Nucleo32:
At state of delivery, there is no connection to any crystal stabilized clock source. Then source code "HSI" must be burnt. Problems with RS232-communication are possible, but tests with CPUs used here were uncritical. In case of problem (or for longtime use under rough conditions), activate the 24MHZ crystal provided on the PCB: close SB9 and SB10 with a dot of solder and burn code "HSE24M".
At state of delivery, PA6 with PA15 and PA5 with PB7 are interconnected. This is not extremely critical, but one of these connected pins should always be kept as input. A better solution is to remove SB2 and SB3. If you don't have an SMD unsolder tool, this can be handled carefully with 2 small solder pens. Socket connector CN3/pin10 (labelled PA3) is not connected internally. For this reason PA10 is routed via this to CN1.


This project is programmed directly on register level, no external libraries (except "cmsis" and startup code), no external drivers or HAL are used.

back to CForth features


* State of information February 2025.
* Right of technical modifications reserved. Provided 'as is' - without any warranty. Any responsibility is excluded.
* This description is for information only. No product specifications are assured in juridical sense.
* Trademarks and product names cited in this text are property of their respective owners.