[android12-linux-5.1] [chip ST] La dirección de los datos es anormal después del trasplante del controlador y HAL

Después de que el controlador del sensor de ST y HAL hayan tenido éxito, se pueden obtener los datos, pero el dispositivo está en orientación horizontal y el sistema está predeterminado en orientación vertical. Habrá una situación en la que la pantalla gira automáticamente en la dirección incorrecta: cuando el dispositivo se sostiene horizontalmente, la pantalla se muestra verticalmente y cuando el dispositivo se sostiene en posición vertical, la pantalla se muestra horizontalmente.

Esto se debe a la inconsistencia entre la dirección del parche del sensor diseñada en la PCB y la pantalla horizontal. Solo necesita rotar la matriz en la capa HAL. Aprovechando el hecho de que la aceleración de la gravedad de la Tierra es de 9,8 g, la matriz de rotación requerida se puede calcular comparando sincrónicamente el teléfono móvil y el dispositivo cuando se colocan en posición plana, vertical y horizontal.

Modifique la ruta del archivo a:/hardware/STMicroelectronics/SensorHAL_IIO/configuration.h

Los datos predeterminados antes de la modificación son:

#define CONFIG_ST_HAL_ACCEL_ROT_MATRIX 1,0,0,0,1,0,0,0,1
#define CONFIG_ST_HAL_MAGN_ROT_MATRIX 1,0,0,0,1,0,0,0,1
#define CONFIG_ST_HAL_GYRO_ROT_MATRIX 1,0,0,0,1,0,0,0,1

Los datos modificados son:

#define CONFIG_ST_HAL_ACCEL_ROT_MATRIX 0,1,0,-1,0,0,0,0,1
#define CONFIG_ST_HAL_MAGN_ROT_MATRIX 0,1,0,-1,0,0,0,0,1
#define CONFIG_ST_HAL_GYRO_ROT_MATRIX 0,1,0,-1,0,0,0,0,1

 

 

Es fácil de entender por la definición del nombre: son matriz de rotación de aceleración, matriz de rotación magnética y matriz de rotación de giroscopio. Este párrafo es fácil de entender incluso con algunas matemáticas básicas. [x,y,z] son ​​los datos de muestreo originales, [X,Y,Z] son ​​los datos finalmente enviados a la aplicación y los datos de la matriz de rotación son [a1,a2,a3,a4,a5,a6,a7, a8,a9 ] Luego están:

\begin{bmatrix} X \\ Y \\ Z \end{bmatrix} = \begin{bmatrix} x \\ y \\ z \end{bmatrix}\begin{bmatrix} a1 &a2 &a3 \\ a4 &a5 &a6 \\ a7&a8 &a9 \end{bmatrix}=\begin{bmatrix} x*a1+y*a2+z*a3 \\ x*a4+y*a5+z*a6 \\ x*a7+y*a8+z*a9 \end{bmatrix}

—>

\left\{\begin{matriz} X = x*a1+y*a2+z*a3 \\ Y=x*a4+y*a5+z*a6 \\ Z=x*a7+y*a8+z *a9 \end{matrix}\derecha.

Trayendo los datos originales: [a1,a2,a3,a4,a5,a6,a7,a8,a9] = [1,0,0,0,1,0,0,0,1] entonces queda:

\left\{\begin{matrix} X=x \\ Y=y \\ Z=z \end{matrix}\right.

Es decir, se envían los datos.

Al incorporar los datos modificados [a1,a2,a3,a4,a5,a6,a7,a8,a9] = [0,1,0,-1,0,0,0,0,1] entonces queda:

\left\{\begin{matrix} X=y \\ Y=-x \\ Z=z \end{matrix}\right.

Esto gira el sistema de coordenadas 90 grados y cambia la pantalla vertical predeterminada a la pantalla horizontal predeterminada. Si no lo entiende, dibuje el sistema de coordenadas XY en una hoja de papel, gírelo y practíquelo para obtener un conocimiento verdadero.

Este párrafo se introduce en el archivo Léame. Escribe tu propia nota aquí. ¡Por favor, no me critiques!

Nuevo en la industria, comparta su experiencia. Si hay algún error, indíquelo ~

 Los derechos de autor pertenecen a: Shenzhen Qizhi Technology Co., Ltd.-Huahua

Supongo que te gusta

Origin blog.csdn.net/lsh670660992/article/details/132503031
Recomendado
Clasificación