食品網(wǎng)站建設(shè)方案項(xiàng)目書(shū)百度推廣獲客成本大概多少
一、環(huán)境介紹
RK3588主板搭載Android12操作系統(tǒng),內(nèi)核是Linux5.10,使用ST的六軸傳感器LSM6DSR芯片。
二、芯片介紹
LSM6DSR是一款加速度和角速度(陀螺儀)六軸傳感器,還內(nèi)置了一個(gè)溫度傳感器。該芯片可以選擇I2C,SPI通訊,還有可編程終端,可以后置攝像頭等設(shè)備,功能是很強(qiáng)大的(感興趣的可以去看數(shù)據(jù)手冊(cè))。該芯片原廠公開(kāi)了input和iio兩種驅(qū)動(dòng)和HAL,我這邊選用的是iio驅(qū)動(dòng),所以HAL也配套選擇了iio的。
三、驅(qū)動(dòng)移植
【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】驅(qū)動(dòng)移植__花花的博客-CSDN博客
四、HAL移植
源碼鏈接:https://github.com/STMicroelectronics/STMems_Android_Sensor_HAL_IIO/tree/STMems_Android_Sensor_HAL_IIO
1,拷貝整個(gè)文件夾到hardware/目錄下
2,在/device/rockchip/rk3588/device.mk中增加
PRODUCT_PACKAGES += sensors.rk3588
3,HAL目錄下,執(zhí)行生成cofig指令
source android_data_config
make sensors-defconfig
報(bào)錯(cuò)失敗可以參考【android12-linux-5.1】【ST芯片】HAL移植后配置文件生成報(bào)錯(cuò)__花花的博客-CSDN博客
4,增加權(quán)限配置參考(開(kāi)機(jī)會(huì)卡住報(bào)錯(cuò)-13)
【android12-linux-5.1】【ST芯片】HAL移植后開(kāi)機(jī)卡死__花花的博客-CSDN博客
5,編譯后調(diào)不到HAL參考(HAL增加日志不會(huì)出來(lái))
【android12-linux-5.1】【ST芯片】HAL移植后沒(méi)調(diào)起來(lái)__花花的博客-CSDN博客
6,多HAL兼容參考
RK平臺(tái)的sensor框架HAL層兼容其他HAL層so庫(kù)__花花的博客-CSDN博客
7,測(cè)試任然SensorManger調(diào)不到的話,參考配置
Solved: Re: Android P can't get LSM6DSM HAL Accelerometer/... - STMicroelectronics Community
五,測(cè)試
直接系統(tǒng)接口SensorManger調(diào)用即可
1,MainActivity.java
package com.example.sensorsdata;import static android.hardware.SensorManager.SENSOR_DELAY_GAME;
import static android.hardware.SensorManager.SENSOR_DELAY_NORMAL;
import static android.hardware.SensorManager.SENSOR_DELAY_UI;
import static java.lang.Math.atan2;import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;import com.google.android.material.snackbar.Snackbar;import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;import android.os.Environment;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.View;import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;public class MainActivityRaw extends Activity implements SensorEventListener {private SensorManager sensorManager = null;private Sensor accSensor = null;//加速度傳感器private Sensor gyroSensor = null;//角速度傳感器private Sensor magSensor = null;//磁力傳感器private Sensor stepSensor = null;//計(jì)步傳感器private Sensor tempSensor = null;//溫度傳感器private Sensor tempSensor2 = null;//溫度傳感器private TextView textView_AccName, textView_AccX, textView_AccY, textView_AccZ;//加速度傳感器參數(shù)private TextView textView_GyrName, textView_GyrX, textView_GyrY, textView_GyrZ;//角速度傳感器參數(shù)private TextView textView_MagName, textView_MagX, textView_MagY, textView_MagZ;//磁力