Crossfire protocol not working

I have Mateksys F405-std and crossfire nano RX connected to RX4, TX5 on Matek board. SERIAL2_PROTOCOL = 23.

Unfortunately, when I set CRSF TX and RX on outputs 1 and 2 on the receiver I get no signal on radio channels in arducopter. When I set (non inverted sbus) on output 1 protocol is recognized and I have radio input working. Is there anything I am missing here? I have 4.1 firmware.

The only uart on that board with DMA is UART1 - you should use that for CRSF. You could also use the bdshot build which switches the DMA-enable uart to UART3

How do you know that dma is required and which ports on this board support it? Where can I read about it?

I have my gps on UART1 i think, will gps need dma? M8N standards gps.

What is bdshot build?

In betaflight and the same board I think I didn’t have this problem. I took first available uart and it worked. How is it possible?

Thanks in advance.

I wrote the CRSF support so I know that DMA is required. bdshot build is support for bi-directional dshot - its a separate firmware option that mission planner should give you. If you don’t use bi-directional dshot its still fine to use the firmware and this may be a more convenient way of getting a different uart with DMA than lots of rewiring.

Comparing with betaflight is like comparing a banana to a tomato.

1 Like

Ok, but I understand f405 board can handle only one dma uart? I know betaflight is different software, but in case of hardware limitations bf I think doesn’t require dma for crsf? So dma requirement comes from the approach You used in your code? I am just curious about it.

Basically there is a lot more going on in AP so using DMA is the only way to handle higher bitrate protocols without blowing up the CPU

Ok. Good to know. And in Matek H743-wing which uart can be used for crsf? How can i know that? I am building an electric glider right now and for sure I want ardupilot inside.

The wing target is the same as the regular H743.

UART4, UART7, UART8, UART1, UART2, UART3 all have full DMA

I was looking at my H743-Mini yesterday and this is what Mavproxy reported which I thought was odd.

I think this may be because we now switch off DMA TX for baudrates <= 115k

1 Like

I’m trying to connect crossfire but nothing works for me
Board Matek f405 wing

I tried connecting it to uart6, uart3 and uart1
I also tried to connect to uart 2 with the BRD_ALT_Config = 1 option,
this also does not work ((
serialX_ protocol=23
serialX_boud=57/115/230 (tested all)

If I connect to uart1 and exhibition. in the receiver settings, not inverted sbus, then everything works

To use CRSF you need to be on 4.1.

This is very irytating, you can’t check if it will work until you waste time for testing. Only developers know how to make something to work. It is not writen in wiki that crsf is introduced in ardu 4.1.
The good thing is that this forum is always helpfull. If not this I think not many people would be using ardu.

1 Like