Showing results for 
Search instead for 
Did you mean: 

STM32 Receive Multiple DMX Universes

Associate II

Hey there,

another question. I can successful output 8 DMX universes received via Artnet using DMA (Mem->Periph).

At the same time I want the possibility to receive upto 8 different DMX signals connected to the MCU. Therefore I hooked up the receive lines from the MAX485 on Pin 0 to 7 (Port D).

what would be the best practice to get the data from up to 8 universes into the MCU (for later sending them via ArtNet)? I tried using timer 8 and a DMA (Periph->Mem, Byte) but I think the time to handle 8 universes is too short.

what is the best way to recognize DMX breaks? (The signals received are not synced in any way, so every timing on the ports is different).

thank you in advance =)


> what would be the best practice to get the data from up to 8 universes into the MCU

Using 8 UARTS.


what if there aren’t enough Uarts? I plan on using the STM32F407, which has 6 Uarts. Also, wouldn’t this be using too much resources so all other stuff is getting hard to implement? (Receiving network packets, sending network packets, etc)

@Community member​ 

Use exteral UARTs, or one or several connected mcus providing the UARTs and perhaps also preprocessing the data if it helps. Use a different mcu which is more capable.

You cannot base a design on your wishes alone and expect there is some magic which will happen to make it true.


Okay, so let's say I want to start with receiving 4 universes. What would be the best way to recognize 4 different breaks? Using the frame error interrupt on 4 different UARTs?

You should bridge the RX to another input pin and measure the the pulse using a timer.

Using FE interrupt will not be enough. And yeah, use 4 different UARTS.

> Using FE interrupt will not be enough.

Why not?

The data received are correctly transferred to DR, so having FE set and DR=0x00 is indication of valid BREAK. I understand that strict reading of standard requires to detect a longer BREAK, but this should work even if it may be not as robust and resilient to various timing issues as possible.

One way to tackle this without the need for external connection to other pins might be changing the baudrate between packets to lower, where the BREAK would be of conforming timing. Other is to use mcu/pins which can be switched to timer channel in GPIO. Yet another would be to use EXTI interrupts, with all the timing/latency caveats this implies.

Yes, I agree that these may be tricky and the external connection is a sure bet.




iI have a question which belongs to the DMX topic.

i have bought a used STEVAL-ILL030V1 board on ebay. At the documentation which I have found only there was a download link to the code/software to get the board run. The code comes in a zip-file which requests a password. Inside the documentation, there is a hint, that the password can be given from your "local office of ST". So could anybody pleaase tell me the password or where I can get it from please?

thank you in advance

Hi @FMeye.2 

Did you have any luck getting the key? I am also working on a DMX project on a STM32F7.

Friendly regards, David