2023-07-10 05:32 AM
Hi,
I am working with ASM330lhh, connected to my linux device via i2c.
in the sysfs i can see the device with the command "ls -l /sys/bus/iio/devices/iio:device1/" that return:
total 0
-r--r--r-- 1 root root 4096 Mar 24 14:21 consumers
-rw-r--r-- 1 root root 4096 Mar 24 14:21 current_timestamp_clock
-r--r--r-- 1 root root 4096 Mar 24 14:21 dev
drwxr-xr-x 2 root root 0 Mar 24 14:21 events
--w------- 1 root root 4096 Mar 24 14:21 hwfifo_flush
-rw-r--r-- 1 root root 4096 Mar 24 14:21 hwfifo_watermark
-r--r--r-- 1 root root 4096 Mar 24 14:21 hwfifo_watermark_max
-r--r--r-- 1 root root 4096 Mar 24 14:21 in_anglvel_scale_available
-rw-r--r-- 1 root root 4096 Mar 24 14:21 in_anglvel_x_raw
-rw-r--r-- 1 root root 4096 Mar 24 14:21 in_anglvel_x_scale
-rw-r--r-- 1 root root 4096 Mar 24 14:21 in_anglvel_y_raw
-rw-r--r-- 1 root root 4096 Mar 24 14:21 in_anglvel_y_scale
-rw-r--r-- 1 root root 4096 Mar 24 14:21 in_anglvel_z_raw
-rw-r--r-- 1 root root 4096 Mar 24 14:21 in_anglvel_z_scale
-r--r--r-- 1 root root 4096 Mar 24 14:21 name
lrwxrwxrwx 1 root root 0 Mar 24 14:21 of_node -> ../../../../../../../../firmware/devicetree/base/soc@0/bus@30800000/i2c@30a40000/asm330lhh@6a
drwxr-xr-x 2 root root 0 Mar 24 14:21 power
-rw-r--r-- 1 root root 4096 Mar 29 15:59 sampling_frequency
-r--r--r-- 1 root root 4096 Mar 24 14:21 sampling_frequency_available
lrwxrwxrwx 1 root root 0 Mar 24 10:25 subsystem -> ../../../../../../../../bus/iio
-r--r--r-- 1 root root 4096 Mar 24 14:21 suppliers
-rw-r--r-- 1 root root 4096 Mar 24 10:25 uevent
from the linux terminal i am reading the device registers with 'i2cdump -f -y 2 0x6a' command, so the i2c is working.
my questions:
1. What are the units the i got from the command "cat in_anglvel_x_raw" ? degrres/second, milli degrees/second or radians?
2. what i need to do with the value of "in_anglvel_x_scale" ?
3. is there is a special mode to read from the libiio user space application?
FIFO or somthing like that? a code example will be great!
4.how should i initiate the device via i2c in the start?
Thanks
2023-07-11 02:29 AM
Hi @Orenzv ,
Welcome to ST Community =D
to reply directly to your questions:
If this answers your question, please, mark this as "best answer", by clicking on the "accept as solution" to help the other users of the community
Niccolò
2024-01-29 02:39 AM
As you already know, I am working with ASM330LHH and I am trying to work with Gyroscope.
I found in STM's Git an example application code, as you can see in the link: https://github.com/STMicroelectronics/STMems_Standard_C_drivers/blob/master/asm330lhh_STdC/examples/asm330lhh_read_data_pollng.c
I Took only the Gyroscope relevant code(Configuration and data polling) and Converted it to CPP.
I Am using I2C that is working fine, I can read the Device ID.
The problem is the X, Y and Z values I am reading as you can see in my prints:
x: -6.58, y: -9.38 , z: -2.31
x: -6.58, y: -9.66 , z: 1935.92
x: -6.09, y: -9.73 , z: 1923.32
x: -6.30, y: -10.01 , z: -7.84
x: -6.37, y: -9.73 , z: -1.96
x: -6.44, y: -9.73 , z: -2.10
x: -6.65, y: -9.66 , z: -4.76
x: -6.09, y: -9.94 , z: -4.62
x: -6.58, y: -9.73 , z: -7.14
x: -6.44, y: -9.66 , z: -4.62
x: -6.09, y: -9.52 , z: 1925.91
x: -5.81, y: -9.52 , z:
x: -6.65, y: -9.73 , z: -4.83
x: -6.30, y: -9.45 , z: 1901.97
. . . .
The values are not around '0' and Z sometimes gets high values('1923.32', '1903.23',…)
Appreciate any help in this issue,
Oren