qmk-firmware/keyboards/converter/sun_usb
Ryan c12268807d
Migrate serial_uart usages to UART driver (#15479)
* Migrate Thermal Printer feature to UART driver

* Migrate 40percentclub UT47 to UART driver

* Migrate Centromere to UART driver

* Migrate Chimera Ergo to UART driver

* Migrate Chimera Let's Split to UART driver

* Migrate Chimera Ortho to UART driver

* Migrate Chimera Ortho Plus to UART driver

* Migrate Comet46 to UART driver

* Migrate Palm USB converter to UART driver

* Migrate Sun USB converter to UART driver

* Migrate Dichotomy to UART driver

* Migrate Honeycomb to UART driver

* Migrate Mitosis to UART driver

* Migrate Redox W to UART driver

* Migrate Uni660 to UART driver

* Migrate Telophase to UART driver
2021-12-15 11:00:39 +00:00
..
type3 Merge remote-tracking branch 'upstream/master' into develop 2021-09-12 14:10:26 +10:00
type5 Merge remote-tracking branch 'upstream/master' into develop 2021-09-12 14:10:26 +10:00
.noci Initial list of keyboards to exclude from CI (#11213) 2020-12-21 15:38:39 +01:00
command_extra.c Migrate serial_uart usages to UART driver (#15479) 2021-12-15 11:00:39 +00:00
config.h Migrate serial_uart usages to UART driver (#15479) 2021-12-15 11:00:39 +00:00
led.c Migrate serial_uart usages to UART driver (#15479) 2021-12-15 11:00:39 +00:00
matrix.c Migrate serial_uart usages to UART driver (#15479) 2021-12-15 11:00:39 +00:00
readme.md
rules.mk Migrate serial_uart usages to UART driver (#15479) 2021-12-15 11:00:39 +00:00

Sun to USB keyboard protocol converter

A converter for using non-USB Sun keyboards.

Original code from the TMK firmware. Ported to QMK by Yann Hodique.

Keyboard Maintainer: Yann Hodique
Hardware Supported: See hardware section below
Hardware Availability: self-built

Make example for this keyboard (after setting up your build environment):

make converter/sun_usb/type5:default

See build environment setup then the make instructions for more information.

Hardware

Target MCU is ATMega32u4 but other USB capable AVR will also work. The maintainer mostly uses Teensy 2.0 boards. Supported keyboards: Sun Type 3 and 5 Keyboards,

Connector

8Pin mini DIN

   ___ ___
  /  |_|  \
 / 8  7  6 \
| 5    4  3 |
 \_ 2   1 _/
   \_____/
(receptacle)

Wiring:

Pin mini DIN        MCU
----------------------------------
1   GND             GND
2   GND             GND
3   5V
4   RX/TX(Mouse)
5   RX              PD3
6   TX              PD2
7   GND             GND
8   5V              VCC

Protocol

Signal: Asynchronous, Negative logic, 1200baud, No Flow control
Frame format: 1-Start bit, 8-Data bits, No-Parity, 1-Stop bit

AVR USART engine expects positive logic while Sun keyboard signal is negative.
To use AVR UART engine you need external inverter in front of RX and TX pin.
Otherwise you can software serial routine to communicate the keyboard.

This converter uses software method, you doesn't need any inverter part.

Commands From System To Keyboard

0x01 Reset
        Keyboard responds with following byte sequence:
        Success: 0xFF 0x04 0x7F
        Fail:    0x7E 0x01 0x7F
0x02 Bell On
0x03 Bell Off
0x0A Click On
0x0B Click Off
0x0E LED
        followed by LED status byte:
        bit: 3       2       1       0
        LED: CapsLk  ScrLk   Compose NumLk
0x0F Layout
        Keyboard responds with 'Layout Response' 0xFE 0xXX

Commands From Keyboard To System

0x7F Idle
        means no keys pressed.
0xFE Layout Response
0xFF Reset Response(followed by 0x04)

References