TS-7250-V3 Magnetometer: Difference between revisions

From embeddedTS Manuals
(Created page with "This board includes an ST IIS2MDCTR 3 axis magnetometer. The magnetometer is accessed through Linux's industrial IIO framework as lis2mdl_magn with channels: * magn_x * magn_...")
 
No edit summary
Line 25: Line 25:
* Y: -0.2475 mG
* Y: -0.2475 mG
* Z:  0.0135 mG
* Z:  0.0135 mG
This driver also supports pulling continuous samples using the buffer interface.  These can be accessed using iio_readdev:
<source lang=bash>
iio_readdev lis2mdl_magn -T 0 -s 128 > samples.bin
</source>
The format of this file is specified with iio_attr:
<console>
root@tsimx6ul:~# iio_attr -c ism330dlc_accel
dev 'ism330dlc_accel', channel 'accel_x' (input, index: 0, format: le:S16/16>>0), found 4 channel-specific attributes
dev 'ism330dlc_accel', channel 'accel_y' (input, index: 1, format: le:S16/16>>0), found 4 channel-specific attributes
dev 'ism330dlc_accel', channel 'accel_z' (input, index: 2, format: le:S16/16>>0), found 4 channel-specific attributes
dev 'ism330dlc_accel', channel 'timestamp' (input, index: 3, format: le:S64/64>>0), found 0 channel-specific attributes
</console>
The samples are padded to the nearest 8-bytes, so this means the binary format is:
{| class=wikitable
! Bits
! Description
|-
| 15:0
| accel_x, little endian, signed
|-
| 15:0
| accel_y, little endian, signed
|-
| 15:0
| accel_z, little endian, signed
|-
| 63:0
| timestamp, little endian, signed
|-
| 15:0
| Padding
|}
The unix utility hexdump supports formatting options which can parse these fields:
<console>
root@tsimx6ul:~# hexdump samples.bin --format '1/2 "X:%d " 1/2 "Y:%d " 1/2 "Z:%d " 1/8 "TS:%d" 1/2 "" "\n"' | head -n 4
X:-95 Y:-163 Z:8221 TS:200185381271666439
X:-107 Y:-147 Z:8248 TS:200190332264480519
X:-100 Y:-155 Z:8263 TS:200195283888013063
X:-95 Y:-159 Z:8253 TS:200200232540667655
</console>
This gives the raw values which can then be multiplied by the scale to get the real world value.

Revision as of 14:51, 14 October 2021

This board includes an ST IIS2MDCTR 3 axis magnetometer.

The magnetometer is accessed through Linux's industrial IIO framework as lis2mdl_magn with channels:

  • magn_x
  • magn_y
  • magn_z
  • timestamp

For example:

root@tsimx6ul:~# iio_attr -c lis2mdl_magn -c magn_x
dev 'lis2mdl_magn', channel 'magn_x' (input), attr 'raw', value '630'
dev 'lis2mdl_magn', channel 'magn_x' (input), attr 'scale', value '0.001500'
root@tsimx6ul:~# iio_attr -c lis2mdl_magn -c magn_y
dev 'lis2mdl_magn', channel 'magn_y' (input), attr 'raw', value '-165'
dev 'lis2mdl_magn', channel 'magn_y' (input), attr 'scale', value '0.001500'
root@tsimx6ul:~# iio_attr -c lis2mdl_magn -c magn_z
dev 'lis2mdl_magn', channel 'magn_z' (input), attr 'raw', value '9'
dev 'lis2mdl_magn', channel 'magn_z' (input), attr 'scale', value '0.001500'

This shows a snapshot of the x, y, z values. To get the real world value, multiply the scale * the raw value. In this case:

  • X: 0.945 mG (milligauss)
  • Y: -0.2475 mG
  • Z: 0.0135 mG