Difference between revisions of "Keypad"
(cating in console can be dangerous ;-)) |
(Added a tabular to explain Keypad connection to the CSI interface for apf9328_devfull board) |
||
Line 29: | Line 29: | ||
| [[Image:keypad.svg|thumb|3x4 matrix keypad connected to i.MX GPIOs|150px]] | | [[Image:keypad.svg|thumb|3x4 matrix keypad connected to i.MX GPIOs|150px]] | ||
|} | |} | ||
+ | |||
+ | ===== Keypad Connection (APF9328_devfull) ===== | ||
+ | {| border="1" | ||
+ | |+ 4x4 keypad caracters and corresponding CSI signals | ||
+ | ! CSI signal name !! !! D6 !! D5 !! D4 !! D3 | ||
+ | |- | ||
+ | ! !! X23 pin number !! 7 !! 8 !! 5 !! 6 | ||
+ | |- | ||
+ | ! MCLK !! 14 | ||
+ | | 1 || 2 || 3 || <- | ||
+ | |- | ||
+ | ! D0 !! 1 | ||
+ | | 4 || 5 || 6 || -> | ||
+ | |- | ||
+ | ! D1 !! 4 | ||
+ | | 7 || 8 || 9 || ENTER | ||
+ | |- | ||
+ | ! D2 !! 3 | ||
+ | | * || 0 || _ || | ||
+ | |} | ||
+ | |||
===FPGA solution=== | ===FPGA solution=== |
Revision as of 21:36, 10 June 2010
How to connect a keypad to your Armadeus board
Contents
Introduction
Your Armadeus board allows you to connect a (matrix or not) keypad as input device. Keypads are a collection of switches assembled together to emulate a kind of keyboard to ease user interaction with your system.
Solutions
There are several solutions to connect a keypad to your Armadeus board:
Keypad directly connected to i.MXL/27
One GPIO for one key
This type of keypad generally called "common ground keypad" is the easiest one to build: connect your switch to an i.MX GPIO (with a pullup) on one side and to the ground on the other side . If you need more than 6 keys, this construction is however "GPIO consuming" and you would better use matrix keypads.
Under Test...
Matrix keypads on i.MX27
The i.MX27 has an internal controller that can drive 8x8 keypads (= 64 keys with 16 dedicated pins): Keypad usage on i.MX27. Please consult the i.MX27 Reference Manual (Chapter 25) for more informations.
Matrix keypads on i.MXL
Driver for i.MX GPIO controlled keypads
By default your board supports a direct connection with a 4x4 matrix keypad using the CSI lines: CSI_MCLK, CSI_D0...CSI_D6.
The driver uses the i.MXL GPIO's internal pull-up, therefore your board does not need any additional external resistor.
{add a big picture of the keypad link with APF_DEV_LIGHT} {add a big picture of the keypad link with APF_DEV_FULL} |
Keypad Connection (APF9328_devfull)
CSI signal name | D6 | D5 | D4 | D3 | |
---|---|---|---|---|---|
X23 pin number | 7 | 8 | 5 | 6 | |
MCLK | 14 | 1 | 2 | 3 | <- |
D0 | 1 | 4 | 5 | 6 | -> |
D1 | 4 | 7 | 8 | 9 | ENTER |
D2 | 3 | * | 0 | _ |
FPGA solution
Development are also ongoing to connect matrix keypads using the FPGA...
Test
Quick try
- If you have a graphical LCD connected to your board (= virtual terminal), then you should see what you type (if your keypad keys are mapped to alphanumeric keyboard keys).
- If you don't have any virtual terminal, but only the serial console (event0 may be event1 if you already have a running touchscreen):
# cat /dev/input/event0
Then you should see weirds characters when pressing keyboard keys:
�,~~_�,}�}�3T,QToT6,TT�,�;��, � �
- if the test wiped out your console, you can get it back with:
# reset
- if you want to see hexadecimal values of what your are receiving:
# cat /dev/input/event0 | hexdump 0000000 0283 0000 5a09 000e 0004 0004 0051 0007 0000010 0283 0000 5a30 000e 0001 006c 0001 0000 0000020 0283 0000 5a40 000e 0000 0000 .... ....
- If corresponding device node in /dev/input/ is not existing, then:
# cat /sys/class/input/input0/event0/dev 13:64 # mkdir -p /dev/input # mknod /dev/input/event0 c 13 64
Deeper one
- use target/demos/keypad_test/ test tool
Links
- external links (for exemple: locomo driver model)