BLF driver programming key v3.2 launched on Oshpark

IIRC, the ‘reason’ for this is to design future drivers to make use of this for convenience. No more fussy clips (maybe not all are fussy, but some are) and sometimes the MCU is legless, so a clip would be useless. Then there’s the access. Using a design like this makes it easier to flash while the driver is still installed in the device. That’s another point for convenience. There are already some drivers that feature vias for pogo pins so that the driver can be re-flashed. So, the idea was already there before this key was made. But, the key will make it easier for drivers that are designed to make use of it.

Sorry, but it’s a bit more complicated than that. AFAIK 12V has to be applied to reset, the MCU powered up from e.g. 3.3V, then some complicated talking (serial protocol) with the attached device. Several other pins involved.

Bigger chips can use a parallel programming solution, but you really don’t want to go there.

This is no different from attaching an USBasp or any other sort of asp e.g Arduino. Except for the high voltage and the different chattering that has to go on to re-set the fuses.

I am well out of my depth here, but the entire substance of this idea is to eliminate the clip and make/copy a standard pad layout for a pogo pin adapter/key. Preferably on the backside (accessible) of the driver without disassembly. But if that is not possible, the other side. Six pads including couple of location vias cost nothing, provided there is room. The fuse re-setter is just my mad idea, would be nice to have but not important (unless it can be done at minimal cost, I think so, but it would take effort to develop and I think we are over-stretching our firmware specialists already).

Basically, please forget I ever mentioned it.

PS: why we call it an asp:

https://en.wikipedia.org/wiki/Asp\_(reptile)

With thy sharp teeth this knot intrinsicate
Of life at once untie: poor venomous fool
Be angry, and dispatch.

—Cleopatra, Act V, scene II
Antony and Cleopatra

My dog knows an asp when he sees one, they are the only venomous snake in the UK (Adder) and gloriously bountiful where I live, but his instinct kicks in and he walks, or usually runs, away. As do the snakes.

I really welcome the idea of a programming key, as it would allow to program drivers that are soldered in or have short leads to the led. Or just not to have to pry out the SRK driver every time.
After looking at several drivers I got some additional thoughts.

  • The 1.30mm spacing will not be a problem.
    This is a slight increase to the 1.27mm footprint of the Attiny, while still well in line of the pads.
    With recent Oshpark design rules this allows a 10mil (0.254mm) trace between 16mil (0.4064mm) vias. The resulting distance is still >6mil (>0.1524mm).
    Oshpark’s resolution seems to be fine enough to allow for a 0.03mm shift.
  • I’d use as much unmasked vias as possible (instead of pads) on the driver, to allow for self aligning of the pogo pins.
  • A (pin-strip-) connector on the key is good.
    With pin strip connectors you are not bound to a certain layout and can change from driver to driver if necessary.
    You could solder for example 4+3 pogo pins to it and can then use it for drivers with different pad layouts.
  • If you stick with orientation pins, I’d not connect them to GND. Depending on components on a small driver you might short something to gnd while programming.
    Even better: connect the orientation pins to unused pins on the pin strip connectors, making them available for other pin layouts.

I would also love to see something like this, help simplify a lot of things for new people like myself getting into the wonderful hobby. Hope to see this make it from concept to finished product!!!

boards are ordered but will take a while

Same here.

I just couldn’t help trying this out on some drivers of different sizes. TomTom has a point that a narrower key is better. So I tried 3+3 first. But I agree with Lexel as well, that some orientation guide is needed, I would not want to brick the MCU.

My favourite right now is a 4+2 design.

Especially as it fits quite easily inside the SOIC8 MCUs.
You need 6 pins anyway, plus orientation pin would make it at least 7 (4+3). Just leave it at 6, it wouldn’t be wider, and makes it inherently foolproof.

Like these.

.

.

.

.

.

Can hardly wait to get this going.
I like the 2nd one with all vias best, but I’m sure the others with 4 vias will align well.

Well, I think lexel's connector works pretty well.

I for myself would'nt really suggest anything better.

It’s not always easy to fit these things. Like with a QFN-20 chip, things work a bit differently. As much as I want there to be a standard connector, I think it’ll be pretty difficult to make that happen.

Yeah a standard will be hard.

But at least the new ATTiny line makes it easier as you need only GND, VCC and Reset for programming.

Otherwise, ranked from top to bottom, I would prefer

  • An existing connector (like this one)
  • 100mil spacing pads / pads
  • Documented layout of pads (incl. their position on the driver)
  • Just some pads, unaligned, undocumented

@zeroflow
Nice work! 1+2+5 AMC7135 triple channel driver with dedicated moon? Yummy :slight_smile:

Only… Lexel’s connector wouldn’t work on your driver.
The connection points are inverted. The pinout (viewed from top) is:

Lexel key
SCK MISO MOSI
RES VCC GND
Z125M (green side)
MOSI MISO SCK
GND VCC RES

With Lexel’s pinout you’d have to use the key from the MCU side (orange side), which of course won’t work when the MCU is soldered on.
EDIT: But your layout looks fine. Hmmmm…

Anyway, don’t get me wrong, I’m far from insinuating that my 4+2 idea is best. I just wanted to show that there are reasons for a more flexible approach.

.

Yup… hear you.

There must be a reason that the keys you can find on the net have different pinouts, although 3+3 is quite common. But Lexel came up with even another distribution of the signals within the 3+3, simply what suited him.

Sure thing, a common standard would be nice. Makes it foolproof for users and for Lexel and his more commercial approach this is perfectly understandable. I’m very grateful he shared his thoughts on this, as he effectively introduced it to me as well.

Of course I’m in the comfortable position of making my own drivers and will make a ProgKey for my needs. This enthusiast approach is less foolproof, but more flexible. My idea is a key with 4+4 pogo pins and 8 pin strip connectors. This would allow for many different layouts (including a 3+3) on a very small footprint:

oooo      oooo      oooo       ooo
 oo       o  o       ooo       ooo 

The spacing that Lexel used is perfect in my eyes (0.4mm vias, 1.3mm/1.5mm spacing). This is for a 0.8mm pcb and the 0.68mm pogo pins. At least that can serve as ‘common ground’.

About the ‘inverted’ thing

@Lexel, do you really want to run with this key version?
Is it meant to be used on the MCU side of the driver? (this would very much limit the use)
Or shall it be used from below, then your markings are quite off
because
SCK MISO MOSI
RES VCC GND
is the top layout of the Attinys (with VCC pulled down center)

while the layout that @zeroflow used comes quite naturally for a 3+3 design on a smaller driver, when you access the programming pads from the non-MCU side, which would of course need mirrored pins

.

Yeah, the 1+2+5 is planned for my Emisar D4 mod with Nichia Optisolis LEDs where I don't need a FET.

Also, I'm still thinking about changing the anduril ramping code a bit so that there is a maximum number of "non-pwm" levels.

Currently, non-pwm levels are just 1x7135, 3x7135 and full 8x7135.

If I find enough time, my goal would be to have stepped ramping with the non-pwm 7135 levels 1, 2, 3, 5, 6, 7, 8.

Maybe I'll leave out 6 and 7 as those maybe have too little change in brightness.

Also: Thanks, i usually spend a big part of the time making my layout look nice and "flowing" instead of crossing traces everywhere.

Even tho the Moonlight channel is not regulated as it is just a series resistor to a MCU Pad, it should work just fine.

Yeah, I noticed that after ordering my PCBs. Typical error where I didn't check good enough

If you do that, instead of 1+2+5, I’d suggest doing 1+1+2+4 — with PWM only on the first 1x7135 channel. It lets you do a no-PWM level every 350mA. As an added bonus, instead of using 24 bits per ramp level, the ramp data can be condensed to about 11 bits per level, or 8 bits per level (plus 8 bytes and a couple extra lines of code).

      1   1   2   4
0-1  PWM  0   0   0
1-2  PWM  1   0   0
2-3  PWM  0   1   0
3-4  PWM  1   1   0
4-5  PWM  0   0   1
5-6  PWM  1   0   1
6-7  PWM  0   1   1
7-8  PWM  1   1   1

That sounds like a good idea, but the boards are already ordered and shipped.

1+2+5+M was a compromise as I could reuse the existing triple-channel ramping code and just add a extra switch for the moon mode where one pin is set to low if the level is 0 and else is set to High-Impedance.

1+1+2+4 looks good if you have enough pins, but light and human eyes don’t really work in a simplistic linear fashion, so I think it is a bit of a waste obsessing about the lowest levels and ultra-fine precision (i.e. the 1+1 end.

I suspect you will be fine with 1+2+5, and a bit of PWMing on two of the lower channels. Which might fit with smaller MCUs that have limited timer-counters.

With the moon pin you can actually set two levels of moon. One high level using the pin pulled up hard (20 mA or more) via an external resistor to set a reasonable current, the other value using the internal MCU pullup resistor, plus anything external. This has been demonstrated and worked.

Except it seems better to pull the pins down, rather than up, to match the way that the main current to the LED is usually arranged. Never tried it myself.

Then there is the FET to deal with, which still seems to be expected.

The linear fashion was sorta the reason why I went with 1+2+5+M. This way I can have 1x7135 after connecting power, 2x7135 as the ramp ceiling and 5x 7135 as a turbo mode.

Regarding the two levels, I think you mixed up aux leds and the main LED. Aux LEDs (connected to GND and the MCU) can have high (pin set to high) and "low" (pin set to pullup)

But the main LED is constantly connected to VBat and the GND side is switched/regulated. In that case, I can only have one moon mode set by the series resistor.

I agree about the 1+1+2+4+8+16 (etc) approach being overkill, and not incredibly useful. I think it’s a pretty slick method though, and wanted to mention it since what you have is so close.

I’m generally happy with FET+1 or FET+N+1, or more generally, putting power channels about an order of magnitude apart. I haven’t found it very useful to maximize the number of no-PWM levels. And on ramping designs, swapping channels around has a tendency to create mismatched joints in the ramp, so I try to avoid that.

yeah just see I made the mistake not taking into account that the design program has vottom side mirrored
so the 10 pin connectors does not work 1:1, reverse 4 soldered leads should be no problem

atm in customs with C8F 21700, MF04S, prototype D1S, D4, D4S, MF01 aux LED boards

And yesterday is… today :smiley:

It’s really that good.

The picture shows a 4+4 key and the driver I was working on at the time I ordered the key. The DD+1 driver is 17mm and just there for size comparison.
The key-pcb is 10mm x 27mm, at the pogo-pins the pcb is only 5.6mm, that will fit about anywhere. When you only use 3x3, you can file the key even narrower.
Pcb width is 0.8mm. Pogo-pins are 0.68mm diameter, 16mm long. Via drills on the driver are 16mil (0.4064mm). Distances are 1.3mm between left and right vias and 1.5mm between up and down vias.

Just programmed a driver and it’s a hoot.

.

The size of the key is perfectly fine, can be put between thumb and middle finger with the index finger on top, gently pushing the springs of the pogo pins down. With 6 vias, aligning is of course a breeze.

Refined the key a bit, not much really. I’ll make at least two versions:

- A neutral one marked from A to H, where up to 4+4 can be used. With connectors any combination can be plugged on the fly

  • A key marked with the pin numbers of the Attinys in my preferred layout

.

EDIT: I shared them here