SCA3300-D01

This is an overview of the SCA3300-D01 and the OSS-ECAL offering for the SCA3300-D01. The SCA3300-D01 is a high-performance 3-axis acceleration sensor for industrial use manufactured by Murata Manufacturing Co., Ltd.
MCU interface : SPI

CAUTION:Please be sure to refer to the latest version of the Datasheet prior to actual design.

SCA3300-D01

SCA3300-D01

Overview

The SCA3300-D01 is a high performance accelerometer sensor component. It is a three-axis accelerometer sensor based on Murata’s proven capacitive 3D-MEMS technology. Signal processing is done in mixed signal ASIC with flexible SPI digital interface. Sensor element and ASIC are packaged into 12 pin pre-molded plastic housing that guarantees reliable operation over product’s lifetime.

The SCA3300-D01 is designed, manufactured and tested for high stability, reliability and quality requirements. The component has extremely stable output over wide range of temperature and vibration. The component has several advanced self-diagnostics features, is suitable for SMD mounting and is compatible with RoHS and ELV directives.

Feature

  • 3-axis (XYZ) accelerometer
  • User selectable measurement modes:
    ± 1.5g, ± 3g , ± 6g with 70 Hz LPF
    ± 1.5g with 10 Hz LPF
  • −40°C to +125°C operating range
  • 3.0V to 3.6V supply voltage
  • SPI digital interface
  • Extensive self-diagnostics features
  • Ultra-low 37 μg/√Hz noise density
  • Excellent offset stability
  • Size 8.6 x 7.6 x 3.3 mm (l × w × h)
  • RoHS compliant robust DFL plastic package
    suitable for lead free soldering process and SMD mounting
  • Proven capacitive 3D-MEMS technology

Application

SCA3300-D01 is targeted at applications demanding high stability with tough environmental requirements.

Typical applications include:

  • Leveling
  • Angle measurement
  • Tilt Compensation
  • Inertial Measurement Units (IMUs)
  • Motion analysis and control
  • Navigation systems

OSS-ECAL specification

API Function

OSS-ECAL API functions are basically assumed to be function calls from a periodic Thread (TASK).

etSTS oSCA3300_CONFIG( void )

oSCA3300_CONFIG function is an API function to set the SPI communication of MCU according to SCA3300-D01. This API function is not available in the AUTOSAR version.

Return valueetSTSOSS-ECAL status code
eSTS_FINCompleted successfully
eSTS_ERR_HAL_OTHERS_RUNOther application is running HAL
eSTS_ERR_SPI_OBJECTSPI object selection error
etSTS oSCA3300_START_UP( uint16* status )

oSCA3300_START_UP function is an API function that sets SCA3300-D01, reads the values of Register STATUS[Bank0] and STATUS[Bank1], and stores the read values in status[0] and status[1].

The SCA3300-D01 is configured in the following steps.
– Step1 SW Reset
– Step2 1ms wait*
– Step3 Set Measurement mode
– Step4 15ms wait(Mode1, Mode2 and Mode3) or 100ms wait(Mode4)*
– Step5 Clear status summary
– Step6 Read status summary
– Step7 Ensure successful start-up

* The wait measurement is calculated from the Thread period that calls this function, so set THREAD_OSS_ECAL_PERIOD [ms] to the Thread period.

The Measurement mode setting is based on the OP_MODE setting in oSCA3300.h. In this example, it is set to Mode2.
– Mode1 = iMODE1
– Mode2 = iMODE2
– Mode3 = iMODE3
– Mode4 = iMODE4

/* Select operation mode */
#define OP_MODE                 iMODE2
Return valueetSTSOSS-ECAL status code
eSTS_FINCompleted successfully
eSTS_EXEDuring execution
eSTS_ERR_DIAGStep1 to Step5 CRC check error
or
Step3 Return Status RS[1]:RS[0] != 1:1
Step5 Return Status RS[1]:RS[0] != 1:1
Step6 Return Status RS[1]:RS[0] != 1:1
Step7 Return Status RS[1]:RS[0] != 0:1
eSTS_ERR_SPI_OBJECTSPI object selection error
eSTS_ERR_HAL_SPIHAL SPI error
eSTS_ERR_HAL_OTHERS_RUNOther application is running HAL
Parameter OUTuint16* statusRegister STATUS valueSave the values ​​[23:8] read from Register STATUS[Bank0] and STATUS[Bank1] to status[0] and status[1].
etSTS oSCA3300_READ_ACC( etBANK bank, stSCA3300_ACC* acc )

The oSCA3300_READ_ACC function is an API function that reads the Register ACC_X[bank], ACC_Y[bank], and ACC_Z[bank] values of the specified bank, converts the read values [23:8] to acceleration based on the Mode setting, and stores them in acc.acc_x[bank], acc. acc.acc_y[bank], acc.acc_z[bank].

Return valueetSTSOSS-ECAL status code
eSTS_FINCompleted successfully
eSTS_ERR_MINMinimum acceleration error (returns minimum acceleration)
eSTS_ERR_MAXMaximum acceleration error (returns maximum acceleration)
eSTS_ERR_DIAGReturn Status RS[1]:RS[0] != 0:1(Normal operation)
or
CRC check error
eSTS_ERR_SPI_OBJECTSPI object selection error
eSTS_ERR_HAL_SPIHAL SPI error
eSTS_ERR_HAL_OTHERS_RUNOther application is running HAL
Parameter INetBANK bankSet value of Register Banktypedef enum
{
eBANK0 = 0x01, /* Bank #0 */
eBANK1 = 0x02, /* Bank #1 */
eBANK01 = 0x03 /* Bank #0,1 */
}etBANK;
Parameter OUTstSCA3300_ACC* accRegister
ACC_X[bank],
ACC_Y[bank],
ACC_Z[bank]
acceleration
Converts values [23:8] read from Register ACC_X[bank], ACC_Y[bank], ACC_Z[bank] into acceleration based on Mode setting and stores them in acc.acc_x[bank], acc. acc.acc_y[bank], acc.acc_z[bank].
typedef struct
{
float32 acc_x[iSCA3300_BANK_NUM]; /* ACC_X */
float32 acc_y[iSCA3300_BANK_NUM]; /* ACC_Y */
float32 acc_z[iSCA3300_BANK_NUM]; /* ACC_Z */
}stSCA3300_ACC;
etSTS oSCA3300_READ_STO( etBANK bank, float32* sto )

The oSCA3300_READ_STO function is an API function that reads the Register STO[bank] value of the specified bank, converts the read value [23:8] to acceleration and stores it in sto[bank].

Return valueetSTSOSS-ECAL status code
eSTS_FINCompleted successfully
eSTS_ERR_DIAGReturn Status RS[1]:RS[0] != 0:1(Normal operation)
or
CRC check error
eSTS_ERR_SPI_OBJECTSPI object selection error
eSTS_ERR_HAL_SPIHAL SPI error
eSTS_ERR_HAL_OTHERS_RUNOther application is running HAL
Parameter INetBANK bankSet value of Register Banktypedef enum
{
eBANK0 = 0x01, /* Bank #0 */
eBANK1 = 0x02, /* Bank #1 */
eBANK01 = 0x03 /* Bank #0,1 */
}etBANK;
Parameter OUTfloat32* stoRegister STO[bank] accelerationConverts values [23:8] read from Register STO[bank] into acceleration from Mode setting and stores them in sto[bank].
etSTS oSCA3300_READ_TEMP( etBANK bank, float32* temp )

The oSCA3300_READ_TEMP function is an API function that reads the Register TEMPERATURE[bank]  value of the specified bank, converts the read value [23:8] to a temperature and stores it in temp[bank].

Return valueetSTSOSS-ECAL status code
eSTS_FINCompleted successfully
eSTS_ERR_MINMinimum temperature error (returns minimum temperature)
eSTS_ERR_MAXMaximum temperature error (returns maximum temperature)
eSTS_ERR_DIAGReturn Status RS[1]:RS[0] != 0:1(Normal operation)
or
CRC check error
eSTS_ERR_SPI_OBJECTSPI object selection error
eSTS_ERR_HAL_SPIHAL SPI error
eSTS_ERR_HAL_OTHERS_RUNOther application is running HAL
Parameter INetBANK bankSet value of Register Banktypedef enum
{
eBANK0 = 0x01, /* Bank #0 */
eBANK1 = 0x02, /* Bank #1 */
eBANK01 = 0x03 /* Bank #0,1 */
}etBANK;
Parameter OUTfloat32* tempRegister TEMPERATURE[bank] temperatureConverts the value [23:8] read from Register TEMPERATURE[bank] to temperature and stores it in temp[bank].
etSTS oSCA3300_READ_STATUS( etBANK bank, uint16* status )

The oSCA3300_READ_STATUS function is an API function that reads the Register STATUS[bank]  value of the specified bank and stores the read value [23:8] in status[bank].

Return valueetSTSOSS-ECAL status code
eSTS_FINCompleted successfully
eSTS_ERR_DIAGReturn Status RS[1]:RS[0] != 0:1(Normal operation)
or
CRC check error
eSTS_ERR_SPI_OBJECTSPI object selection error
eSTS_ERR_HAL_SPIHAL SPI error
eSTS_ERR_HAL_OTHERS_RUNOther application is running HAL
Parameter INetBANK bankSet value of Register Banktypedef enum
{
eBANK0 = 0x01, /* Bank #0 */
eBANK1 = 0x02, /* Bank #1 */
eBANK01 = 0x03 /* Bank #0,1 */
}etBANK;
Parameter OUTuint16* statusRegister STATUS[bank] valueStores the value [23:8] read from Register STATUS[bank] in status[bank].
etSTS oSCA3300_READ_CMD( uint16* command )

The oSCA3300_READ_CMD function is an API function that reads the Register CMD value and stores the read value [23:8] in command.

Return valueetSTSOSS-ECAL status code
eSTS_FINCompleted successfully
eSTS_ERR_DIAGReturn Status RS[1]:RS[0] != 0:1(Normal operation)
or
CRC check error
eSTS_ERR_SPI_OBJECTSPI object selection error
eSTS_ERR_HAL_SPIHAL SPI error
eSTS_ERR_HAL_OTHERS_RUNOther application is running HAL
Parameter OUTuint16* commandRegister CMD valueStores the value [23:8] read from Register CMD in command.
etSTS oSCA3300_WRITE_CMD( stSCA3300_CMD command )

The oSCA3300_WRITE_CMD function is an API function that writes the value of command to Register CMD [23:8].

Return valueetSTSOSS-ECAL status code
eSTS_FINCompleted successfully
eSTS_ERR_DIAGReturn Status RS[1]:RS[0] != 0:1(Normal operation)
or
CRC check error
eSTS_ERR_SPI_OBJECTSPI object selection error
eSTS_ERR_HAL_SPIHAL SPI error
eSTS_ERR_HAL_OTHERS_RUNOther application is running HAL
Parameter INstSCA3300_CMD commandSet value of Register CMDtypedef enum
{
eSCA3300_CMD_RD_ACC_X = 0x040000F7 /* Read ACC_X */
eSCA3300_CMD_RD_ACC_Y = 0x080000FD /* Read ACC_Y */
eSCA3300_CMD_RD_ACC_Z = 0x0C0000FB /* Read ACC_Z */
eSCA3300_CMD_RD_STO = 0x100000E9 /* Read STO (self-test output) */
eSCA3300_CMD_RD_TEMP = 0x140000EF /* Read Temperature */
eSCA3300_CMD_RD_STATUS = 0x180000E5 /* Read Status Summary */
eSCA3300_CMD_RD_CMD = 0x340000DF /* Read CMD*/
if( OP_MODE == iMODE1 )
eSCA3300_CMD_WR_MODE = 0xB400001F /* Change to mode1 */
elif( OP_MODE == iMODE2 )
eSCA3300_CMD_WR_MODE = 0xB4000102 /* Change to mode2 */
elif( OP_MODE == iMODE3 )
eSCA3300_CMD_WR_MODE = 0xB4000225 /* Change to mode3 */
else
eSCA3300_CMD_WR_MODE = 0xB4000338 /* Change to mode4 */
endif
eSCA3300_CMD_WR_PWD = 0xB400046B /* Set power down mode */
eSCA3300_CMD_WR_WU = 0xB400001F /* Wake up from power down mode */
eSCA3300_CMD_WR_SWR = 0xB4002098 /* SW Reset */
eSCA3300_CMD_RD_WHOAMI = 0x40000091 /* Read WHOAMI */
eSCA3300_CMD_RD_SERIAl1 = 0x640000A7 /* Read SERIAL1 */
eSCA3300_CMD_RD_SERIAl2 = 0x680000AD /* Read SERIAL2 */
eSCA3300_CMD_RD_BANK = 0x7C0000B3 /* Read current bank*/
eSCA3300_CMD_SW_BANK0 = 0xFC000073 /* Switch to bank #0 */
eSCA3300_CMD_SW_BANK1 = 0xFC00016E /* Switch to bank #1 */
}stSCA3300_CMD;
etSTS oSCA3300_READ_WHOAMI( uint8* whoami )

The oSCA3300_READ_WHOAMI function is an API function that reads Register WHOAMI value and stores the read value [16:8] in whoami.

Return valueetSTSOSS-ECAL status code
eSTS_FINCompleted successfully
eSTS_ERR_DIAGReturn Status RS[1]:RS[0] != 0:1(Normal operation)
or
CRC check error
eSTS_ERR_SPI_OBJECTSPI object selection error
eSTS_ERR_HAL_SPIHAL SPI error
eSTS_ERR_HAL_OTHERS_RUNOther application is running HAL
Parameter OUTuint8* whoamiRegister WHOAMI valueStores the value [16:8] read from Register WHOAMI in whoami.
etSTS oSCA3300_READ_SERIAL( uint32* serial )

The oSCA3300_READ_SERIAL function is an API function that reads the values of Register SERIAL1 and SERIAL2 and stores the read value of SERIAL1 [23:8] in serial[15:0] and the read value of SERIAL2 [23:8] in serial[31:16].

Return valueetSTSOSS-ECAL status code
eSTS_FINCompleted successfully
eSTS_ERR_DIAGReturn Status RS[1]:RS[0] != 0:1(Normal operation)
or
CRC check error
eSTS_ERR_SPI_OBJECTSPI object selection error
eSTS_ERR_HAL_SPIHAL SPI error
eSTS_ERR_HAL_OTHERS_RUNOther application is running HAL
Parameter OUTuint32* serialRegister SERIAL1 and SERIAL2 valueReads the values of Register SERIAL1 and SERIAL2, and stores the read value of SERIAL1[23:8] in serial[15:0] and the read value of SERIAL2[23:8] in serial[31:16].

Sample application

OSS-ECAL contains sample applications in the sample folder. Here is an overview of the application. Please use it as a reference material when incorporating OSS-ECAL into your product programs.

StatevgSCA3300_COMMANDstate transition conditionProcess OverviewAPI Function
Start-upiSCA3300_STARTUP1. First timeInitial Settings for SCA3300-D01oSCA3300_START_UP
MeasureiSCA3300_MEASUREMENT1. State Start up completed
2. vgSCA3300_COMMAND=iSCA3300_MEASUREMENT
3-axis acceleration measurementoSCA3300_READ_ACC
Self-testiSCA3300_SELF_TEST1. vgSCA3300_COMMAND = iSCA3300_SELF_TESTDo the next Step iPRC_SELF_TEST times
Step1 3-axis acceleration measurement
Step2 Self test output
Step3 User application*
Step4 wait*

oSCA3300_READ_ACC
oSCA3300_READ_STO

Power downiSCA3300_POWER_DOWN1. vgSCA3300_COMMAND = iSCA3300_POWER_DOWNPower downoSCA3300_WRITE_CMD
ErroriSCA3300_ERROR1. Return value of API function is an error value
2. Register STATUS[bank0] != 0
3. Register STATUS[bank1] != 0
Error process*-*

* Please address this in your product program.

HAL Support

OSS-ECAL’s HAL support is as follows (expanding sequentially). Please check each electronic component’s OSS-ECAL page for HAL support. Please note that even the same HAL may not work with different versions, MCUs, or development environments.

ManufacturerSDK/IDE ToolHAL NameVerSupport
ArduinoArduino IDEArduino1.8.6X
ArmKeil MDK v6Mbed OS6.17.0X
DebianGNU/Linux10.3X
InfineonModusToolboxmtb-hal-cat12.4.3X
NXPMCUXpresso SDKSDK_2.x_EVKB-IMXRT10502.16X
NXPPlatformSDK_S32K1_2022_02AUTOSAR MCAL4.4X
RenesasSynergy Software PackageHAL2.6.0X
STMicroelectronicsSTM32CubeSTM32CubeF4V1.28.1X
Development environment

The MCU and development environment during development are as follows.

HAL NameManufacturerBoardMCUIDE
ARDUINOArduino1.Mega 2560 Rev3
2.Arduino Pro Mini 3.3V
ATmega2560
ATmega328P
Arduino IDE 2.3.3
MBEDSTMicroelectronicsSTM32 Nucleo-64 boardsSTM32F401RETxArm Keil Studio Cloud
LinuxBeagleBoardBeagleBone BlackTI AM335x
ModusToolboxInfineonCY8CPROTO-063-BLE PSoC 6 BLE Prototyping KitCYBLE-416045-02ModusToolbox
iMXRT1051B1052BNXPIMXRT1050-EVKBi.MX RT1050MCUXpresso IDE
MCALSTMicroelectronicsS32K144EVB-Q100S32K144S32 Design Studio for S32 Platform
SSPRenesasS7G2 SKR7FS7G27H3A01CFCe² studio for Renesas Synergy
STM32F4STMicroelectronicsSTM32 Nucleo-64 boardsSTM32F401RETxSTM32CubeIDE

File configuration

FolderFileSummary
SCA3300_HALNAME_010000/samplesample.c (.cpp)Sample application program
sample.hSample application header
SCA3300_HALNAME_010000oSCA3300.c (.cpp)OSS-ECAL program for SCA3300-D01
oSCA3300.hOSS-ECAL header for SCA3300-D01
oss_ecal.hOSS-ECAL common header
SCA3300_ARDUINO.inoSample application programs for Arduino
oTypes.hTypedef header for AUTOSAR
user_setting.c (.cpp)User configured constants and tables
user_setting.hUser configuration Header
oHAL_i2c_stm32f4.cHAL Program for STM32Cube FW_F4
oHAL_i2c_stm32f4.hHAL Header for STM32Cube FW_F4
readme.mdReadme
OSS-ECAL Terms of Use.txtOSS-ECAL Terms of Use

* For HALNAME, please refer to HAL Support.

OSS-ECAL Download Contact

Please login before contacting us for downloads.
To register as a new user, click here.

Built-in How to

How to incorporate OSS-ECAL into user programs

How to incorporate multiple OSS-ECALs in a user program (same MCU function)

How to incorporate multiple OSS-ECALs in a user program (different MCU function)

How to incorporate multiple identical electronic components into a user program

How to reduce the impact on user programs by replacing electronic components

CAUTION

The sample version of OSS-ECAL is not intended to be used with Threads (Tasks) or interrupts of different priority. Please do not use it as in the example below.

Example: If each sensor is assigned to the same ADC group and the OSS-ECAL API is executed in processes with different priorities, correct values may not be obtained.
ADC Gr0 Ch0 Temperature sensor AD22100A 100ms cycle Thread (low priority) to take in temperature
ADC Gr0 Ch1 Pressure sensor   MPX5999D Event interrupts (high priority) to take pressure

OSS-ECAL English
error: Content is protected !!