TS-7680 Accelerometer

From embeddedTS Manuals

This SBC contains an NXP MMA8451 3-axis accelerometer. It is connected to the kernel as an input device and can be accessed through the input event layers. The kernel driver is only polling and the accelerometer's IRQs are not supported. The accelerometer supports a ±2, ±4, and ±8 g dynamically selectable scale.

On a stock system with no other peripherals attached, the accelerometer will show up as

 /dev/input/event0

If other peripherals, such as mice, keyboards, or other HID devices are attached at boot, then this device may change.

In order to read from the accelerometer it must first be enabled:

echo 1 > /sys/devices/virtual/input/input0/enable

The scale mode can be changed by writing a 0 (±2 g), 1 (±4 g), or 2 (±8 g) to the scalemode sys file:

#Set the scale mode to 8 g
echo 2 > /sys/devices/virtual/input/input0/scalemode

Note that the input0 above may change if other input devices are present in the system.


From here, a tool such as 'evtest' can be installed and run to verify output:

apt-get update
apt-get install evtest
evtest /dev/input/event0

The 'evtest' command will have output similar to the following:

 Event: time 1466445467.909559, -------------- EV_SYN ------------
 Event: time 1466445468.029557, type 3 (EV_ABS), code 0 (ABS_X), value -123
 Event: time 1466445468.029557, type 3 (EV_ABS), code 1 (ABS_Y), value -35
 Event: time 1466445468.029557, type 3 (EV_ABS), code 2 (ABS_Z), value 16294
 Event: time 1466445468.029557, -------------- EV_SYN ------------
 Event: time 1466445468.149557, type 3 (EV_ABS), code 1 (ABS_Y), value -17
 Event: time 1466445468.149557, type 3 (EV_ABS), code 2 (ABS_Z), value 16224
 Event: time 1466445468.149557, -------------- EV_SYN ------------
 Event: time 1466445468.269598, type 3 (EV_ABS), code 0 (ABS_X), value -149
 Event: time 1466445468.269598, -------------- EV_SYN ------------
 Event: time 1466445468.389560, type 3 (EV_ABS), code 1 (ABS_Y), value -48
 Event: time 1466445468.389560, type 3 (EV_ABS), code 2 (ABS_Z), value 16416
 

Readings from the accelerometer are read from the kernel input event interface. The linux documentation for the input system as well as event types are the best resource for creating an application to read from the device:

https://www.kernel.org/doc/Documentation/input/input.txt

https://www.kernel.org/doc/Documentation/input/event-codes.txt

Additionally, the Openmoko documentation has a great breakdown of the input event data:

http://wiki.openmoko.org/wiki/Accelerometer_data_retrieval#Data_structure