]> git.friedersdorff.com Git - max/tmk_keyboard.git/blobdiff - keyboard/kl27z_kbd/README.md
Add keyboard/kl27z_kbd
[max/tmk_keyboard.git] / keyboard / kl27z_kbd / README.md
diff --git a/keyboard/kl27z_kbd/README.md b/keyboard/kl27z_kbd/README.md
new file mode 100644 (file)
index 0000000..b10e4b3
--- /dev/null
@@ -0,0 +1,161 @@
+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
+- pcb layout  https://deskthority.net/resources/image/33293
+- schematic  https://deskthority.net/resources/image/33252
+
+
+```
+         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