X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=keyboard%2Fkl27z_kbd%2FREADME.md;fp=keyboard%2Fkl27z_kbd%2FREADME.md;h=b10e4b37ec6c8a270ec1269f0d8cc925d6f7ed1f;hb=2d0e02efe096cdfd7b5c147f763f9bd343330d9d;hp=0000000000000000000000000000000000000000;hpb=657193dd6c0bafff9bc5f8125c4b050e30c1e82c;p=max%2Ftmk_keyboard.git diff --git a/keyboard/kl27z_kbd/README.md b/keyboard/kl27z_kbd/README.md new file mode 100644 index 00000000..b10e4b37 --- /dev/null +++ b/keyboard/kl27z_kbd/README.md @@ -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