aboutsummaryrefslogtreecommitdiff
path: root/lib/chibios-contrib/ext/mcux-sdk/components/mma8451q/fsl_mma.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chibios-contrib/ext/mcux-sdk/components/mma8451q/fsl_mma.h')
-rw-r--r--lib/chibios-contrib/ext/mcux-sdk/components/mma8451q/fsl_mma.h146
1 files changed, 146 insertions, 0 deletions
diff --git a/lib/chibios-contrib/ext/mcux-sdk/components/mma8451q/fsl_mma.h b/lib/chibios-contrib/ext/mcux-sdk/components/mma8451q/fsl_mma.h
new file mode 100644
index 000000000..ffc58eea4
--- /dev/null
+++ b/lib/chibios-contrib/ext/mcux-sdk/components/mma8451q/fsl_mma.h
@@ -0,0 +1,146 @@
1/*
2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
3 * Copyright 2016-2017 NXP
4 * All rights reserved.
5 *
6 * SPDX-License-Identifier: BSD-3-Clause
7 */
8
9#ifndef _FSL_MMA8451Q_H_
10#define _FSL_MMA8451Q_H_
11
12#include "fsl_common.h"
13
14#define WHO_AM_I_REG kMMA8451_WHO_AM_I
15#define MMA8451Q_ACCEL_RESOLUTION_BITS 14
16
17/*!
18 * @brief Register definitions for the MMA8451.
19 */
20enum _mma8451_constants
21{
22 kMMA8451_STATUS = 0x00,
23 kMMA8451_OUT_X_MSB = 0x01,
24 kMMA8451_OUT_X_LSB = 0x02,
25 kMMA8451_OUT_Y_MSB = 0x03,
26 kMMA8451_OUT_Y_LSB = 0x04,
27 kMMA8451_OUT_Z_MSB = 0x05,
28 kMMA8451_OUT_Z_LSB = 0x06,
29 kMMA8451_F_SETUP = 0x09,
30 kMMA8451_TRIG_CFG = 0x0a,
31 kMMA8451_SYSMOD = 0x0b,
32 kMMA8451_INT_SOURCE = 0x0c,
33 kMMA8451_WHO_AM_I = 0x0d,
34 kMMA8451_WHO_AM_I_Device_ID = 0x1a,
35 kMMA8451_XYZ_DATA_CFG = 0x0e,
36 kMMA8451_CTRL_REG1 = 0x2a,
37 kMMA8451_CTRL_REG2 = 0x2b,
38 kMMA8451_CTRL_REG3 = 0x2c,
39 kMMA8451_CTRL_REG4 = 0x2d,
40 kMMA8451_CTRL_REG5 = 0x2e
41};
42
43typedef struct _mma_data
44{
45 uint8_t accelXMSB;
46 uint8_t accelXLSB;
47 uint8_t accelYMSB;
48 uint8_t accelYLSB;
49 uint8_t accelZMSB;
50 uint8_t accelZLSB;
51} mma_data_t;
52
53/*! @brief Define I2C access function. */
54typedef status_t (*I2C_SendFunc_t)(uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint32_t txBuff);
55typedef status_t (*I2C_ReceiveFunc_t)(
56 uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint8_t *rxBuff, uint8_t rxBuffSize);
57
58/*! @brief mma8451q configure definition. This structure should be global.*/
59typedef struct _mma_handle
60{
61 /* Pointer to the user-defined I2C Send Data function. */
62 I2C_SendFunc_t I2C_SendFunc;
63 /* Pointer to the user-defined I2C Receive Data function. */
64 I2C_ReceiveFunc_t I2C_ReceiveFunc;
65 /* The I2C slave address . */
66 uint8_t slaveAddress;
67} mma_handle_t;
68
69/*! @brief mma8451q configure structure.*/
70typedef struct _mma_config
71{
72 /* Pointer to the user-defined I2C Send Data function. */
73 I2C_SendFunc_t I2C_SendFunc;
74 /* Pointer to the user-defined I2C Receive Data function. */
75 I2C_ReceiveFunc_t I2C_ReceiveFunc;
76 /* The I2C slave address . */
77 uint8_t slaveAddress;
78} mma_config_t;
79
80/*******************************************************************************
81 * API
82 ******************************************************************************/
83
84#if defined(__cplusplus)
85extern "C" {
86#endif
87
88/*!
89 * @brief Initialize the MMA8451 driver instance.
90 *
91 * @param accel_device Device driver state structure that will be filled in by this function.
92 * It is the responsibility of the caller to provide storage for this structure, and
93 * to free that storage when the driver is no longer needed.
94 *
95 * @return kStatus_Success if success or kStatus_Fail if error.
96 */
97status_t MMA_Init(mma_handle_t *handle, mma_config_t *config);
98
99/*!
100 * @brief Read the current acceleration values.
101 *
102 * @param handle Pointer to a valid accel_device instance structure.
103 * @param accel Pointer to a structure that will be filled in with the current acceleration
104 * values for all three axes.
105 *
106 * @return kStatus_Success if success or kStatus_Fail if error.
107 */
108status_t MMA_ReadSensorData(mma_handle_t *handle, mma_data_t *accel);
109
110/*!
111 * @brief Read the value of register in accelerometer.
112 *
113 * @param handle Pointer to a valid accel_device instance structure.
114 * @param reg variable store address of register
115 * @param val pointer store return value.
116 *
117 * @return kStatus_Success if success or kStatus_Fail if error.
118 */
119status_t MMA_ReadReg(mma_handle_t *handle, uint8_t reg, uint8_t *val);
120
121/*!
122 * @brief Write the value to register of accelerometer.
123 *
124 * @param handle Pointer to a valid accel_device instance structure.
125 * @param reg variable store address of register
126 * @param val pointer store value which is writen to accelerometer.
127 *
128 * @return kStatus_Success if success or kStatus_Fail if error.
129 */
130status_t MMA_WriteReg(mma_handle_t *handle, uint8_t reg, uint8_t val);
131
132/*!
133 * @brief Get device accelerator resolution bits.
134 *
135 * @return accelerator resolution bits.
136 */
137static inline uint8_t MMA_GetResolutionBits(void)
138{
139 return MMA8451Q_ACCEL_RESOLUTION_BITS;
140}
141
142#if defined(__cplusplus)
143}
144#endif
145
146#endif /* _FSL_MMA8451Q_H_ */