80 lines
2 KiB
Text
80 lines
2 KiB
Text
|
Sun to USB keyboard protocol converter
|
||
|
======================================
|
||
|
Target MCU is ATMega32u4 but other USB capable AVR will also work.
|
||
|
Supported keyboards: Sun Type 5 Keyboard, CTCSP SHORT TYPE KEYBOARD(CKUB)
|
||
|
|
||
|
CTCSP SHORT TYPE KEYBOARD: http://imgur.com/a/QIv6p
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
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
|
||
|
--------
|
||
|
Singnal: 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 exteral 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)
|
||
|
|
||
|
Reference
|
||
|
http://kentie.net/article/sunkbd/page2.htm
|
||
|
http://kentie.net/article/sunkbd/KBD.pdf
|
||
|
|
||
|
|
||
|
Build Firmware
|
||
|
--------------
|
||
|
Just use 'make'
|
||
|
$ cd sun_usb
|
||
|
$ make
|
||
|
Then, load the binary to MCU with your favorite programmer.
|