17 #include "gpio_driver.h" 29 static uint8_t SuspendPedometer[] = {0x17, 0x20, 0x05, 0x01, 0x20};
32 static uint8_t SuspendAFE[] = {0x17, 0x20, 0x07, 0x01, 0x40};
35 static const uint8_t ReadSuspendRegisters[] = {0x17, 0x10, 0x04, 0x04};
38 static uint8_t WriteSuspendRegisters[] = {0x17, 0x20, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00};
47 const uint8_t
MBoxQRDataXYZ[16] = {0x04, 0x20, 0x2C, 0x0C, 0x06, 0x13, 0x06, 0x12,
48 0x06, 0x15, 0x06, 0x14, 0x06, 0x17, 0x06, 0x16};
112 {SuspendAFE, 0,
sizeof(SuspendAFE)}, {SuspendPedometer, 0,
sizeof(SuspendPedometer)},
__END_WRITE_CMD__};
129 (offset & 0x7F) << 1;
146 (offset | 0x40) << 1;
149 memcpy(pWBuff + MMA9553_SPI_CMD_LEN, pWritebuffer, size);
165 if (pSensorHandle == NULL || pBus == NULL || pSlaveSelect == NULL || pReset == NULL)
187 pGPIODriver->
clr_pin(pSlaveSelect);
194 pGPIODriver->
set_pin(pSlaveSelect);
202 sizeof(cmdRespHdr), cmdRespHdr);
203 if (ARM_DRIVER_OK != status || (cmdRespHdr[1] & 0x80) != 0x80 || cmdRespHdr[2] !=
ReadVersionInfo[3] ||
213 if (ARM_DRIVER_OK != status)
236 if ((pSensorHandle == NULL) || (pCommandList == NULL))
250 if (ARM_DRIVER_OK != status)
257 sizeof(standbyRegister), standbyRegister);
258 if (ARM_DRIVER_OK != status)
270 if (ARM_DRIVER_OK != status)
278 if (ARM_DRIVER_OK != status)
287 if (ARM_DRIVER_OK != status)
303 if (pSensorHandle == NULL || (pCommandList == NULL && pResponseList == NULL))
314 if (pCommandList != NULL)
318 if (ARM_DRIVER_OK != status)
325 if (pResponseList != NULL)
328 pResponseList, pBuffer);
329 if (ARM_DRIVER_OK != status)
342 if (pSensorHandle == NULL)
356 if (ARM_DRIVER_OK != status)
370 ARM_DRIVER_I2C *pBus,
378 if ((pSensorHandle == NULL) || (pBus == NULL))
392 if (ARM_DRIVER_OK != status || (cmdRespHdr[1] & 0x80) != 0x80 || cmdRespHdr[2] !=
ReadVersionInfo[3] ||
402 if (ARM_DRIVER_OK != status)
428 if ((pSensorHandle == NULL) || (pCommandList == NULL))
442 if (ARM_DRIVER_OK != status)
449 sizeof(standbyRegister), standbyRegister);
450 if (ARM_DRIVER_OK != status)
462 if (ARM_DRIVER_OK != status)
470 if (ARM_DRIVER_OK != status)
479 if (ARM_DRIVER_OK != status)
495 if (pSensorHandle == NULL || (pCommandList == NULL && pResponseList == NULL))
506 if (pCommandList != NULL)
510 if (ARM_DRIVER_OK != status)
516 if (pResponseList != NULL)
519 pResponseList, pBuffer);
520 if (ARM_DRIVER_OK != status)
533 if (pSensorHandle == NULL)
547 if (ARM_DRIVER_OK != status)
#define MMA9553_HDR_SIZE
Size of fixed header bytes in sensor commands.
void(* set_pin)(pinID_t aPinId)
const uint8_t SetLegacyIntMode[5]
Set Sensor to Legacy Mode with INT_O interrupt on completion of the AFE sampling. ...
const uint8_t SetSampleRate_3Hz[5]
const uint8_t SetSampleRate_15Hz[5]
This defines the sensor specific information for I2C.
int32_t Sensor_I2C_Read(ARM_DRIVER_I2C *pCommDrv, registerDeviceInfo_t *devInfo, uint16_t slaveAddress, const registerreadlist_t *pReadList, uint8_t *pOutBuffer)
Read register data from a sensor.
const uint8_t ResetApplication[5]
Command to reset all applications of the sensor.
const uint8_t SetMBoxPriority_for488Hz[5]
MBox Priority Commands.
const registercommandlist_t MMA9553_StandbyCommands[]
void MMA9553_I2C_SetIdleTask(mma9553_i2c_sensorhandle_t *pSensorHandle, registeridlefunction_t idleTask, void *userParam)
: The interface function to set the I2C Idle Task.
const uint8_t WakeApplication[5]
Set sensor to Wake Mode Command.
const registercommandlist_t MMA9553_ResetCommand[]
int32_t MMA9553_SPI_Configure(mma9553_spi_sensorhandle_t *pSensorHandle, const registercommandlist_t *pCommandList)
The interface function to configure he sensor.
GENERIC_DRIVER_GPIO * pGPIODriver
const uint8_t SetLegacyMode[5]
Set Sensor to Legacy (free running) Mode Command.
#define MMA9553_SS_ACTIVE_VALUE
Is the Slave Select Pin Active Low or High.
int32_t Register_I2C_Read(ARM_DRIVER_I2C *pCommDrv, registerDeviceInfo_t *devInfo, uint16_t slaveAddress, uint8_t offset, uint8_t length, uint8_t *pOutBuffer)
The interface function to read a sensor register.
void BOARD_DELAY_ms(uint32_t delay_ms)
Function to insert delays.
This structure defines the Block command List.
This defines the sensor specific information for SPI.
const uint8_t SetFSRange_8g[5]
const registercommandlist_t MMA9553_ActivateCommands[]
int32_t MMA9553_SPI_Initialize(mma9553_spi_sensorhandle_t *pSensorHandle, ARM_DRIVER_SPI *pBus, uint8_t index, void *pSlaveSelect, void *pReset)
The interface function to initialize the sensor.
const uint8_t SetAFEPriority_for61Hz[5]
Access structure of the GPIO Driver.
const uint8_t SetMBoxPriority_for3Hz[5]
int32_t Sensor_I2C_BlockWrite(ARM_DRIVER_I2C *pCommDrv, registerDeviceInfo_t *devInfo, uint16_t slaveAddress, const registercommandlist_t *pCommandList, uint8_t error_mask)
Write commands to a sensor.
const uint8_t MBoxQRDataXYZ[16]
Configure MBOX for QR Data and XYZ Axes Command.
const uint8_t SetMBoxPriority_for122Hz[5]
void(* clr_pin)(pinID_t aPinId)
int32_t MMA9553_I2C_Configure(mma9553_i2c_sensorhandle_t *pSensorHandle, const registercommandlist_t *pCommandList)
The interface function to configure he sensor.
typedef int32_t(DATA_FORMAT_Append_t))(void *pData
The interface function to append the data on the formated stream.
const uint8_t SetSampleRate_122Hz[5]
The mma9553_drv.h file describes the MMA9553L driver interface and structures.
int32_t Sensor_SPI_Read(ARM_DRIVER_SPI *pCommDrv, registerDeviceInfo_t *devInfo, void *pReadParams, const registerreadlist_t *pReadList, uint8_t *pOutBuffer)
Read register data from a sensor.
const uint8_t SetAFEPriority_for7Hz[5]
const uint8_t SetMBoxPriority_for7Hz[5]
const uint8_t SetMBoxPriority_for15Hz[5]
const uint8_t SetMBoxPriority_for61Hz[5]
const uint8_t ReadPedometerData[4]
Command to Read Pedometer Data.
void(* registeridlefunction_t)(void *userParam)
This is the register idle function type.
fpSpiReadPreprocessFn_t pReadPreprocessFN
The SPI Slave Transfer Command Params SDK2.0 Driver.
GENERIC_DRIVER_GPIO Driver_GPIO_KSDK
const uint8_t SetMBoxPriority_for244Hz[5]
const registercommandlist_t MMA9553_ReadSuspendRegistersCommand[]
int32_t MMA9553_I2C_CommandResponse(mma9553_i2c_sensorhandle_t *pSensorHandle, const registercommandlist_t *pCommandList, const registerreadlist_t *pResponseList, uint8_t *pBuffer)
The interface function to read the sensor data.
const uint8_t SetSampleRate_30Hz[5]
const uint8_t SetAFEPriority_for122Hz[5]
registerDeviceInfo_t deviceInfo
const uint8_t SetSampleRate_61Hz[5]
#define MMA9553_SPI_MAX_MSG_SIZE
The MAX size of SPI message.
#define __END_WRITE_CMD__
const uint8_t ReadVersionInfo[4]
The Read Version Info Command.
spiSlaveSpecificParams_t slaveParams
const uint8_t SetAFEPriority_for224Hz[5]
const uint8_t SetSampleRate_488Hz[5]
Sample Rate Commands.
const uint8_t SetSampleRate_244Hz[5]
int32_t Sensor_SPI_BlockWrite(ARM_DRIVER_SPI *pCommDrv, registerDeviceInfo_t *devInfo, void *pWriteParams, const registercommandlist_t *pCommandList, uint8_t error_mask)
Write commands to a sensor.
#define STANDBY_REG_SIZE
Size of Standby Registers.
void MMA9553_SPI_SetIdleTask(mma9553_spi_sensorhandle_t *pSensorHandle, registeridlefunction_t idleTask, void *userParam)
: The interface function to set the SPI Idle Task.
int32_t MMA9553_I2C_Initialize(mma9553_i2c_sensorhandle_t *pSensorHandle, ARM_DRIVER_I2C *pBus, uint8_t index, uint16_t sAddress)
The interface function to initialize the sensor.
ARM_DRIVER_SPI * pCommDrv
const uint8_t SetAFEPriority_for3Hz[5]
void MMA9553_SPI_WritePreprocess(void *pCmdOut, uint32_t offset, uint32_t size, void *pWritebuffer)
The SPI Write Pre-Process function to generate Sensor specific SPI Message Header.
int32_t Register_SPI_BlockWrite(ARM_DRIVER_SPI *pCommDrv, registerDeviceInfo_t *devInfo, void *pWriteParams, uint8_t offset, const uint8_t *pBuffer, uint8_t bytesToWrite)
The interface function to block write to a sensor register.
int32_t Register_I2C_BlockWrite(ARM_DRIVER_I2C *pCommDrv, registerDeviceInfo_t *devInfo, uint16_t slaveAddress, uint8_t offset, const uint8_t *pBuffer, uint8_t bytesToWrite)
The interface function to write a sensor register.
uint8_t mma9553_spiRead_CmdBuffer[MMA9553_SPI_MAX_MSG_SIZE]
int32_t MMA9553_SPI_CommandResponse(mma9553_spi_sensorhandle_t *pSensorHandle, const registercommandlist_t *pCommandList, const registerreadlist_t *pResponseList, uint8_t *pBuffer)
The interface function to read the sensor data.
const uint8_t SetMBoxPriority_for30Hz[5]
void MMA9553_SPI_ReadPreprocess(void *pCmdOut, uint32_t offset, uint32_t size)
The SPI Read Pre-Process function to generate Sensor specific SPI Message Header. ...
fpSpiWritePreprocessFn_t pWritePreprocessFN
const uint8_t SetSampleRate_7Hz[5]
void(* pin_init)(pinID_t aPinId, gpio_direction_t dir, void *apPinConfig, gpio_isr_handler_t aIsrHandler, void *apUserData)
const uint8_t SetAFEPriority_for30Hz[5]
This structure defines the Read command List.
const uint8_t SetAFEPriority_for488Hz[5]
AFE Priority Commands.
#define MMA9553_COCO_ERROR_MASK
The Error Bit Mask in COCO Byte.
const uint8_t SetFSRange_2g[5]
Full-Scale Range Selections.
uint8_t mma9553_spiRead_DataBuffer[MMA9553_SPI_MAX_MSG_SIZE]
#define MMA9553_SPI_CMD_LEN
The size of the Sensor specific SPI Header.
ARM_DRIVER_I2C * pCommDrv
registerDeviceInfo_t deviceInfo
const uint8_t SetFSRange_4g[5]
const registercommandlist_t MMA9553_InitializeCommand[]
uint8_t mma9553_spiWrite_CmdDataBuffer[MMA9553_SPI_MAX_MSG_SIZE]
int32_t Register_SPI_Read(ARM_DRIVER_SPI *pCommDrv, registerDeviceInfo_t *devInfo, void *pReadParams, uint8_t offset, uint8_t length, uint8_t *pOutBuffer)
The interface function to read a sensor register.
int32_t MMA9553_I2C_DeInit(mma9553_i2c_sensorhandle_t *pSensorHandle)
The interface function to De Initialize sensor..
registeridlefunction_t idleFunction
int32_t MMA9553_SPI_DeInit(mma9553_spi_sensorhandle_t *pSensorHandle)
The interface function to De Initialize sensor..
const uint8_t SetAFEPriority_for15Hz[5]