Enabling DSHOT on Pico Blx (was: I can flash each ESC, but two motors won't spin)


#21

Well it’ll definitely work using ppm for d-shot.
That orange rx is a sat connection but uses ppm which is truly awful so you’re making a big improvement going serial sat anyway.
And you can connect the led strip back up :smiley:


#22

Thanks. I’m shocked at how little chatter there is on this R614XN, but I guess the PPM is just that bad, huh? The form factor is awesome.


#23

I just have a suspect that the motor might not map to the correct resource, that happen to some board from banggood, In that case we need to reassign the motor to the correct resource, but it’s seem not the case for this Pico Blx FC


#24

Ah, thanks. I’m learning a lot from this, far more than I expected, about resource mapping and stuff.


#25

Why not use the motor 5 pad?
From https://github.com/betaflight/betaflight/wiki/DSHOT-ESC-Protocol#pikoblx---re-map-motor-1-to-the-ppm-pin-same-as-motolab-solder-motor-1-signal-to-the-ppm-pad-leaving-the-sbus-jumper-shorted


#26

I’m confused now. I followed glasses suggestion and soldered the signal wire for motor 4 to the pad for motor 5, and entered CLI commands to get this:

# resource
resource BEEPER 1 A00
resource MOTOR 1 A07
resource MOTOR 2 A06
resource MOTOR 3 B00
resource MOTOR 4 A01
resource MOTOR 6 A02
resource MOTOR 7 A03
resource MOTOR 8 A08
resource LED_STRIP 1 B08
resource SERIAL_TX 1 B06
resource SERIAL_TX 2 B03
resource SERIAL_TX 3 B10
resource SERIAL_RX 1 B07
resource SERIAL_RX 2 B04
resource SERIAL_RX 3 B11

Now I get three motors, with motor 4 not responding, even with other protocols besides DSHOT.

Did I miss something?


#27

Tell me if I’m understanding this correctly…

PIKOBLX - Re-map motor 1 to the PPM pin (same as MotoLab). Solder motor 1 signal to the PPM pad leaving the SBUS jumper ‘shorted’.

I’m soldering motor 1 signal to the PPM pad because the PPM pad can use DMA, while the original motor 1 pad could NOT use DMA; DMA is necessary for the speed at which we’re sending the new DSHOT digital signals. This only overcomes the original limitation in the board for the MOTOR 1 signal pad, correct?

I don’t know why I need the SBUS jumper shorted. Can someone explain this?

To allow the use of the LED pin Re-map motor 4 to motor 5 signal out a01, which must also be soldered as such.

I’ve done this, though it’s moot since I probably won’t use the LED strip on this small build. I’ve assigned the resource A01 to motor 5, and soldered my signal pin to the motor 5 pad.

resource ppm none

I’ve done this, understanding that I do not need PPM to the receiver anymore.

resource motor 1 A07 resource motor 4 A01

This will now use those two new pins on the MCU to send DSHOT signals to motors 1 and 4, correct?

Currently, after all this, only MOTOR 4 is NOT working.

Are only certain pins on the MCU capable of being used for DMA/DSHOT?


#28

All you need to do is jumper motor 1 pad to ppm pad and enter the cli commands I I itially linked you to. Mine is done this way and rocks d_shot600 no bother. Ignore the rest of that advice.


#29

Got it working, thanks @Chaotix.

Did you like how I was overcomplicating things?

I still do want to understand some of the underpinnings for how this is working, but on to getting the receiver working properly.


#30

I love how you get yourself deep into complex thought trains :smiley: Sometimes just getting it flying is needed though. There is a huge mine of info on the inner workings of betaflight in the wiki now and it’s being maintained quite well too.
You have gained an enormous amount of knowledge in the relatively short time you’ve been a member of our great club and have shared plenty back with enthusiasm. Man, you’ve built a flight controller!
Keep learning, keep asking and enjoy all the process.
Happy flying!


#31

Thanks for your ongoing support and encouragement, @Chaotix! This has been truly engaging for the past 14 months, I’m having a great time.

If all goes well, the Raiju build will be something to behold. I’ve got plans in the works for this months RotorX contest. --wink wink nudge nudge–


#32

I have a piko blx and my understanding is if you remap and use ppm pad for dshot the led pad doesn’t work anymore.
I don’t know if that matter to you.


#33

Thanks, @cobra93. As I understand it, that’s not the only way things can be configured. This is what I understand, though I could be wrong.

The LED signal is one of several signals that benefits from DMA (Direct Memory Access), an attribute of the flight controller that is as efficient as possible a means of transmitting a signal from the MPU to some resource on the flight controller; this is necessary to have the low latency benefit of DSHOT, where the MPU can transmit a very high rate of signals, more so than analog protocols can support.

The PPM signal is another DMA resource, which is what @Chaotix suggested first in this thread (here).

If I used the PPM signal, I’d have the LED available for normal usage. If I needed PPM , then I could use the LED signal instead.

I hope that makes sense, and more importantly, I hope that’s correct.

If it is correct, then I’d like to understand how to tell which resources are DMA capable.


#34

Further research, with the disclaimer that this is the very first time I’m trying to ferret this level of detail out.

The Piko Blx uses a STM32F303 MPU, which has this datasheet: http://www.st.com/content/ccc/resource/technical/document/datasheet/f2/1f/e1/41/ef/59/4d/50/DM00058181.pdf/files/DM00058181.pdf/jcr:content/translations/en.DM00058181.pdf

In that datasheet, searching on “DMA”, there are 32 references. A good one, on page 19, reads:

This tells me that this chip provides 12 DMA channels, which answers part of my question above. Also of note is that “Configuration is done by software”, which leads me to believe this is part of the BetaFlight firmware.

When googling “betaflight dma”, we get this file in the repo:

Lines 95 through 108 lead me to believe I’m on the right track, where there’s always at least seven DMA channels, and an additional five (for a total of 12) if we’re using an F3 chip (see line 103).

On page 26, a table shows that UARTs 1 through 4 are all capable of supporting DMA:

Pinouts are described starting on page 35 of the datasheet, but I’m not seeing any obvious way of determining whether a pin listed is DMA capable.

Anyone?


#35

Hi,

Excuse for jumping in, but I was able to get ibus, dshot600 and led/buzzer pto work on my piko blx.

  1. Motor 1 signal wire directly to “rc signal” pad.
  2. Motor 4 signal wire direct to motor 5 signal pad (underneath the board).
  3. Rx signal wire (in my case ibus) is wired to rx2 pad. In betalfight this is uart3
  4. On the 3 pad (sbus/ppm) section you have to jump solder the middle pad and the ppm pad together (whatever it is called when you put a glob of solder between both pads). To me, it felt backwards.
  5. Led/buzzer went to 5v and designated pinout on the piko blx wiring guide.
    Warning: the vtx pin is 5v-Vbatt. I burned out my aio while using a 3s battery.

Then use the cli info found on the beta flight wiki.


I can’t get any clear pictures now because it’s too dirty to focus exactly, but here are some build pics.

Here are some pics, excuse the soldering it was over 10-15 years since I soldered anything…

Motor 1

Motor 4: if you look at the second wire on the front right, it’s not connected to the top, but goes underneath and loops back to motor 5.

I never saw the wiring guide you posted. Instead I watched a YouTube clip and paused the image on his board. He doesn’t swap motor 4, but following this got all 4 motors working. I then swapped motor 4 to motor 5 signal to free up the led port.

Let me know if anything is unclear, I can post pics of my board too.

Andy


#36

Thanks for sharing, Andy! Pics would be awesome, if you were willing… mind editing your initial reply so that it includes your complete solution?


#37

Added the pics.


#38

Awesome info, I appreciate you doing that!


#39

Small update, with info from Vimanse Dissanayake via FB:

DMA bypass the bus matrix avoiding additional cycle time. Dshot uses timers and DMA accelerated bit stream to send data so you just have to configure them in STPLIBS or more easily HAL