Keyboard firmwares for Atmel AVR and Cortex-M
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tmk 2d0e02efe0 Add keyboard/kl27z_kbd 5 years ago
..
boards/ELF Add keyboard/kl27z_kbd 5 years ago
Makefile Add keyboard/kl27z_kbd 5 years ago
Matrix.txt Add keyboard/kl27z_kbd 5 years ago
README.md Add keyboard/kl27z_kbd 5 years ago
chconf.h Add keyboard/kl27z_kbd 5 years ago
config.h Add keyboard/kl27z_kbd 5 years ago
halconf.h Add keyboard/kl27z_kbd 5 years ago
kl27z_kbd.c Add keyboard/kl27z_kbd 5 years ago
mcuconf.h Add keyboard/kl27z_kbd 5 years ago

README.md

KL27Z128/256 board

2016/11/30

KL27Z is configured to use internal 48MHz RC oscillator.

The board has push button on PTA4 and LED on PTD7. The button works as ‘a’ key and the LED as an indicator for capslock.

ELF board

This board acommodates 48QFN chip.

prototypte pinout

         G           G 
         N  5  D  D  N  F                      D  D  D  D  D  D
         D  V  -  +  D  G     \    USB    /    6  5  4  3  2  1
        ,--------------------- |  Conn   | --------------------.
        |39 40 41 42 43 44     |         |     1  2  3  4  5  6 |
    3.3V|38                    |_________|                    7 |D0
      A0|37  RST                                              8 |C7
      A3|36                                                   9 |C6
    +A20|35                                                   10|C5+
     E20|34                                                   11|C4
     E21|33  BL                                               12|C3
     E29|32                                                   13|C2
        |31 30 29 28 27 26 25 24   23 22 21 20 19 18 17 16 15 14|
        `-------------------------------------------------------'
         E  E  E  A  A  A  3  A    G  A  C  B  B  B  B  B  C  C
         3  2  2  1  2  4  .  1    N  1  1  1  2  3  1  1  0  1
         0  4  5  +     +  3V 8    D  9              6  7


    1   PTD6        12  PTC3         23  GND        34  PTE20*
    2   PTD5        13  PTC2         24  PTA18      35  PTA20/Reset+
    3   PTD4        14  PTC1         25  3.3V       36  PTA3/SWD_DIO
    4   PTD3*       15  PTC0*        26  PTA4/NMI+  37  PTA0/SWD_CLK
    5   PTD2*       16  PTB17*       27  PTA2       38  3.3V
    6   PTD1*       17  PTB16*       28  PTA1+      39  GND
    7   PTD0*       18  PTB3*        29  PTE25*     40  VBUS/VREGIN/5V
    8   PTC7        19  PTB2*        30  PTE24*     41  USB D-
    9   PTC6        20  PTB1         31  PTE30      42  USB D+
    10  PTC5+       21  PTB0         32  PTE29*     43  GND
    11  PTC4        22  PTA19        33  PTE21*     44  USB Shield/FB
    +: Pins with resistor or switch
    *: Pins which don't exist in QFN32

TMK KL27Z breakout

This board acommodates 48QFN chip.

Pinputs

_\ conn /_
1       28
:        :
:  PROG  :
:  RST   :
14      15
----------

1  VUSB            28  GND
2  VIN/VREGIN      27  PTD4
3  PTD5            26  PTC7
4  PTD6            25  PTC6
5  PTD7            24  PTC5+
6  PTE0*           23  PTC4

7  3.3V            22  GND
8  PTE30           21  PTC3
9  PTA0/SWD_CLK    20  PTC2
10 PTA1+           19  PTC1
11 PTA2            18  PTB1
12 PTA3/SWD_DIO    17  PTB0
13 PTA4/NMI+       16  PTA20/Reset+
14 PTA18           15  PTA19
*: Pin which doesn't exist in QFN48

Pinouts difference between 32QFN and 48QFN

48QFN doesn’t have PTE0 32QFN doesn’t have PTD0-3, PTC0, PTE20-21,24,25,29, PTB2-3,16,17

ROM bootloader pins

See Reference Manual Chapter 13.

PTA2 LPUART0_TX
PTA1 LPUART0_RX *
PTB0 I2C0_SCL
PTB1 I2C0_SDA
PTC4 SPI0_SS_b *
PTC7 SPI0_MISO
PTC6 SPI0_MOSI
PTC5 SPI0_SCK *

Due to errata e9457, need to pull-up SPI0_SS_b(or SPI0_SCK) to prevent false detection of SPI. The errata doesn’t refer UART though, LPUART0_RX also requires pull-up or down resisitor from experience. Without resistor it easily false-detects activity on UART interface with finger touch on the pin.

Resources

Deskthority thread

https://deskthority.net/workshop-f7/can-we-design-the-teensy-alternative-for-keyboards-t13662-510.html

Kinetis KL2x

http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/kinetis-cortex-m-mcus/l-series-ultra-low-power-m0-plus/kinetis-kl2x-48-mhz-usb-ultra-low-power-microcontrollers-based-on-arm-cortex-m0-plus:KL2x

KL27Z128/256 Data Sheet

http://www.nxp.com/assets/documents/data/en/data-sheets/KL27P64M48SF6.pdf

KL27Z128/256 Reference Manual

http://www.nxp.com/assets/documents/data/en/reference-manuals/KL27P64M48SF6RM.pdf

Errata

http://www.nxp.com/assets/documents/data/en/errata/KINETIS_L_1N71K.pdf

e9457: Kinetis Flashloader/ ROM Bootloader: The peripheral auto-detect code in bootloader can falsely detect presence of SPI host causing non-responsive bootloader Description: During the active peripheral detection process, the bootloader can interpret spurious data on the SPI peripheral as valid data. The spurious data causes the bootloader to shutdown all peripherals except the “falsely detected” SPI and enter the command phase loop using the SPI. After the bootloader enters the command phase loop using the SPI, the other peripherals are ignored, so the desired peripheral is no longer active. The bootloader will not falsely detect activity on the I2C, UART, or USB interfaces, so only the SPI interface is affected. Workaround: Ensure that there is an external pull-up on the SPI chip-select pin or that the pin is driven high. This will prevent the bootloader from seeing spurious data due to activity on the SPI clock pin.

Kinetis Bootloader and blhost

http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/kinetis-cortex-m-mcus/kinetis-symbols-footprints-and-models/kinetis-bootloader:KBOOT

Build

make

Program

Flash firmware with ROM bootloader.

blhost -u -- flash-image  build/kl27z.hex erase

TODO

  • Fix boards/ELF files
  • add macro USBx_CTL_RESUME to ChibiOS-Contrib/os/common/ext/CMSIS/KINETIS/kl27zxxx.h