Skip to content

Instantly share code, notes, and snippets.

@skullydazed
Last active December 16, 2018 18:22
Show Gist options
  • Save skullydazed/11eafe84b28370fb113164dd66db6916 to your computer and use it in GitHub Desktop.
Save skullydazed/11eafe84b28370fb113164dd66db6916 to your computer and use it in GitHub Desktop.

What is Proton C?

It's a "drop in" replacement for the Pro Micro with some improvements:

  • USB Type C connector
  • 72mhz ARM M4 Processor (STM32F303CC)
  • Additional pins broken out
  • Built-in speaker support

Why would I want to use a Proton C instead of another controller?

Proton C is ARM based, rather than AVR (such as the Pro Micro). This means that it's a 32-bit processor, rather than an 8 bit. This comes with some optimization, inherently. It also has a higher clock speed (72MHz vs 16MHz), more RAM (40KB vs 2.5KB), a lot more firmware capacity (256KB vs 28KB), and more IO options.

Basically, it's better in every way, but a bit pricer.

Where can I get my own Proton C?

The comprehensive list can be found on Proton C's product page.

https://qmk.fm/proton-c

As of this writing it's available at the following retailers:

Where can I get a compatible speaker?

Mouser, Digikey, Arrow. Etc. The part is "mallory AST1109MLTRQ"

In fact Amazon US has a 5 pack, that Drashna is a big fan of: https://www.amazon.com/gp/product/B00LQP9XT2

What can I use each pin for?

That depends on the pin. All of the I/O pins on the Proton C can be used for GPIO (IE, for your keyboard's matrix) and most have hardware PWM support. Some of the pins have hardware support for SPI, I2C, Serial, Interrupts, and other low-level protocols. For a comprehensive list refer to the STM32F303 datasheet.

Can I use two Proton C's on a split board?

Yes! However, ARM support for split keyboards isn't complete yet. We hope to have complete support by early 2019.

Can I pair a Proton C with a Pro Micro for a split board?

Yes, as long as the Pro Micro is running at 3.3v. If it's running at 5v you will have to convert or replace it.

Should I build my firmware differently for Proton C?

Yes, and no.

When flashing you want to use :dfu-util to flash it, not dfu or avrdude.

If you are replacing a pro-micro you will need to add FIXME: Proton flag? to your build command as described (FIXME: Add doc link here.)

FIXME: Add copy here about Pro Micro pins vs Proton C pins when creating a keyboard from scratch.

Should I program my custom code differently when using Proton C?

Yes, there are differences between AVR and ARM APIs. We attempt to provide abstractions to hide these differences, but there's still a lot of AVR specific code in keymaps.

If you're using _delay_ms(x), you'll want to use wait_ms(x) instead (as wait_ms is for both AVR and ARM, where _delay_ms is not compatible with ARM).

You cannot use PORTx or DDRx on ARM. There are special functions you have to use instead. See https://github.com/qmk/qmk_firmware/blob/master/docs/internals_gpio_control.md

Can I still use my WS2812 drivers?

Yes, and no. The ARM RGB branch uses the RGB Matrix to control these lights right now. Currently you are limited to choosing one RGB matrix however, work is being done on adding proper RGB Underglow support to ARM. We hope to have that merged in, by early 2019.

Since Proton C is 3.3v and WS2812 requires 5v I/O a level shifter is required. One is built into Proton C on pin A3. You will need to use this pin for your WS2812 strip.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment