android13/device/google/contexthub/firmware/os/drivers/st_mag40
liiir1985 7f62dcda9f initial 2024-06-22 20:45:49 +08:00
..
README initial 2024-06-22 20:45:49 +08:00
st_mag40.c initial 2024-06-22 20:45:49 +08:00

README

STMicroelectronics mag40 magnetometer sensor device driver for Google nanohub.

This drivers support following devices:
    - LSM303AGR
    - LSM303AH
    - LIS2MDL

- Supported features:

A. Reports geomagnetic field vector data
B. Different data rates: 10/20/50/100 Hz
C. I2C protocol
D. Data ready reported by interrupt


- Platform/variant porting:

The driver requires that following macros are defined in the variant.h
file of the specific variant:

  ST_MAG40_CAL_ENABLED   /* specify whether the magnetic calibration API must be included */

  ST_MAG40_I2C_BUS_ID    /* specify I2C Bus ID */
  ST_MAG40_I2C_SPEED     /* specify I2C Bus speed in hz */
  ST_MAG40_I2C_ADDR      /* specify device I2C address */

  ST_MAG40_INT_PIN       /* specify the gpio used for the DRDY irq */
  ST_MAG40_INT_IRQ       /* specify the exti interrupt of ST_MAG40_INT_PIN */
  ST_MAG40_ROT_MATRIX    /* specify how axis has to be rotated according to variant platform
                          * orientation.
                          *
                          * = r11, r12, r13, r21, r22, r23, r31, r32, r33
                          *
                          * Rotation:
                          *
                          * [x']   [r11 r12 r13]   [x]   [r11*x + r12*y +r13*z]
                          * [y'] = [r21 r22 r23] * [y] = [r21*x + r22*y +r23*z]
                          * [z']   [r31 r32 r33]   [x]   [r31*x + r32*y +r33*z]
                          */

Example:

  /*
   * Define platform/variant dependent ST_MAG40 device macros
   */
  #define ST_MAG40_CAL_ENABLED   1

  /* I2C defs to be used when device is plugged on U4 slot */
  #define ST_MAG40_I2C_BUS_ID      0
  #define ST_MAG40_I2C_SPEED       400000
  #define ST_MAG40_I2C_ADDR        0x1E

  #define ST_MAG40_INT_PIN         GPIO_PB(4)
  #define ST_MAG40_INT_IRQ         EXTI4_IRQn

  #define ST_MAG40_ROT_MATRIX      0, 1, 0, 1, 0, 0, 0, 0, 1

If these macros are not defined in the current variant the driver forces a compilation
error.