簡體   English   中英

如何從/ dev / iio:deviceX中的LSM330讀取數據?

[英]How to read data from LSM330 in /dev/iio:deviceX?

我正在嘗試在i.MX6板上連接LSM330加速度計/陀螺儀模塊。 該模塊連接到I2C總線,設備樹文件的相關部分如下:

&i2c1 {
    clock-frequency = <100000>;
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_i2c1_2>;
    status = "okay";

    /* LSM330 motion detector (accelerometer) */
    lsm330_accel: lsm330_accel@0x1e {
        compatible = "st,lsm330-accel";
        st,drdy-int-pin = <1>;
        reg = <0x1e>;
    };

    /* LSM330 motion detector (gyroscope) */
    lsm330_gyro: lsm330_gyro@0x6a {
        compatible = "st,lsm330-gyro";
        st,drdy-int-pin = <2>;
        reg = <0x6a>;
    };
};

該模塊顯示為/dev/iio:device0的加速度計和/dev/iio:device1的陀螺儀。 它們還顯示為/sys/bus/iio/devices/iio:device0/sys/bus/iio/devices/iio:device1 /sys/bus/iio/devices/iio:device0 我可以通過cat in_accel_x_raw等獲取傳感器讀數。但是,運行cat /dev/iio:device0立即返回並且不產生任何輸出。

在Internet上搜索之后,我還嘗試了以下命令:

cd /sys/bus/iio/devices/iio_sysfs_trigger
echo 0 > add_trigger
cd /sys/bus/iio/devices/iio:device0
echo 1 > scan_elements/in_accel_x_en
echo 1 > scan_elements/in_accel_y_en
echo 1 > scan_elements/in_accel_z_en
echo 1 > scan_elements/in_timestamp_en
echo sysfstrig0 > trigger/current_trigger
echo 100 > buffer/length
echo 1 > buffer/enable
echo 1 > /sys/bus/iio/devices/trigger0/trigger_now

這應該設置通道,啟用緩沖區並向緩沖區中讀取一些讀數。 據我所知, cat /dev/iio:device0應該顯示緩沖區,但是它給我Device or resource busy 使用cat /sys/bus/iio/devices/iio:device0/in_accel_x_raw從內核進行的進一步讀取不再起作用,並給出相同的錯誤消息。

我是Linux內核的新手,我的目標是將傳感器數據公開給Android系統,以便用戶可以旋轉屏幕等。如何獲得Android以從模塊中獲取傳感器讀數?

查看android logcat之后,事實證明Android HAL沒有讀取或寫入sysfs中目錄的權限。 最后,我在init.rc文件中放置了一堆chmod命令,以便Android可以訪問傳感器數據。

# Change permissions for the LSM330 sysfs entries (accelerometer)
chmod 0666 /sys/bus/iio/devices/iio\:device0/sampling_frequency
chmod 0666 /sys/bus/iio/devices/iio\:device0/buffer/enable
chmod 0666 /sys/bus/iio/devices/iio\:device0/buffer/length
chmod 0666 /sys/bus/iio/devices/iio\:device0/trigger/current_trigger
chmod 0666 /sys/bus/iio/devices/iio\:device0/scan_elements/in_accel_x_en
chmod 0666 /sys/bus/iio/devices/iio\:device0/scan_elements/in_accel_y_en
chmod 0666 /sys/bus/iio/devices/iio\:device0/scan_elements/in_accel_z_en
chmod 0666 /sys/bus/iio/devices/iio\:device0/scan_elements/in_timestamp_en
chmod 0666 /dev/iio\:device0

希望這對某人有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM