PebbleOS
Loading...
Searching...
No Matches
MMC5603NJ registers

MMC5603NJ register map, from the MEMSIC datasheet (Rev. More...

Register addresses

static const uint8_t MMC5603NJ_REG_XOUT0 = 0x00
 X output, bits 19:12.
 
static const uint8_t MMC5603NJ_REG_XOUT1 = 0x01
 X output, bits 11:4.
 
static const uint8_t MMC5603NJ_REG_YOUT0 = 0x02
 Y output, bits 19:12.
 
static const uint8_t MMC5603NJ_REG_YOUT1 = 0x03
 Y output, bits 11:4.
 
static const uint8_t MMC5603NJ_REG_ZOUT0 = 0x04
 Z output, bits 19:12.
 
static const uint8_t MMC5603NJ_REG_ZOUT1 = 0x05
 Z output, bits 11:4.
 
static const uint8_t MMC5603NJ_REG_XOUT2 = 0x06
 X output, bits 3:0.
 
static const uint8_t MMC5603NJ_REG_YOUT2 = 0x07
 Y output, bits 3:0.
 
static const uint8_t MMC5603NJ_REG_ZOUT2 = 0x08
 Z output, bits 3:0.
 
static const uint8_t MMC5603NJ_REG_TOUT = 0x09
 Temperature output.
 
static const uint8_t MMC5603NJ_REG_STATUS1 = 0x18
 Device status.
 
static const uint8_t MMC5603NJ_REG_ODR = 0x1A
 Output data rate.
 
static const uint8_t MMC5603NJ_REG_CTRL0 = 0x1B
 Control register 0.
 
static const uint8_t MMC5603NJ_REG_CTRL1 = 0x1C
 Control register 1.
 
static const uint8_t MMC5603NJ_REG_CTRL2 = 0x1D
 Control register 2.
 
static const uint8_t MMC5603NJ_REG_ST_X_TH = 0x1E
 X-axis self-test threshold.
 
static const uint8_t MMC5603NJ_REG_ST_Y_TH = 0x1F
 Y-axis self-test threshold.
 
static const uint8_t MMC5603NJ_REG_ST_Z_TH = 0x20
 Z-axis self-test threshold.
 
static const uint8_t MMC5603NJ_REG_ST_X = 0x27
 X-axis self-test set value.
 
static const uint8_t MMC5603NJ_REG_ST_Y = 0x28
 Y-axis self-test set value.
 
static const uint8_t MMC5603NJ_REG_ST_Z = 0x29
 Z-axis self-test set value.
 
static const uint8_t MMC5603NJ_REG_WHO_AM_I = 0x39
 Product ID.
 

Device constants

static const uint8_t MMC5603NJ_WHO_AM_I_VALUE = 0x10
 Expected MMC5603NJ_REG_WHO_AM_I value.
 
static const uint8_t MMC5603NJ_SW_RESET_DELAY_MS = 20
 Delay in milliseconds required after a software reset.
 
static const uint8_t MMC5603NJ_SET_DELAY_MS = 1
 Delay in milliseconds required after a set or reset operation.
 

STATUS1 bits

#define MMC5603NJ_STATUS1_OTP_READ_DONE_MASK   PBL_BIT(4)
 OTP memory has been read.
 
#define MMC5603NJ_STATUS1_SAT_SENSOR_MASK   PBL_BIT(5)
 Sensor is saturated.
 
#define MMC5603NJ_STATUS1_MEAS_M_DONE_MASK   PBL_BIT(6)
 Magnetic measurement done.
 
#define MMC5603NJ_STATUS1_MEAS_T_DONE_MASK   PBL_BIT(7)
 Temperature measurement done.
 

CTRL0 bits

#define MMC5603NJ_CTRL0_TAKE_MEAS_M   PBL_BIT(0)
 Take a single magnetic field measurement.
 
#define MMC5603NJ_CTRL0_TAKE_MEAS_T   PBL_BIT(1)
 Take a single temperature measurement.
 
#define MMC5603NJ_CTRL0_DO_SET   PBL_BIT(3)
 Perform a single set operation.
 
#define MMC5603NJ_CTRL0_DO_RESET   PBL_BIT(4)
 Perform a single reset operation.
 
#define MMC5603NJ_CTRL0_AUTO_SR_EN   PBL_BIT(5)
 Enable automatic set/reset.
 
#define MMC5603NJ_CTRL0_AUTO_ST_EN   PBL_BIT(6)
 Perform a single self-test.
 
#define MMC5603NJ_CTRL0_CMM_FREQ_EN   PBL_BIT(7)
 Compute the measurement period for the ODR.
 

CTRL1 bits

The bandwidth sets the measurement length; longer measurements have lower noise.

#define MMC5603NJ_CTRL1_BANDWIDTH_MASK   PBL_GENMASK(1, 0)
 Bandwidth field.
 
#define MMC5603NJ_CTRL1_BANDWIDTH_6ms6   0U
 Bandwidth 0: 6.6 ms measurement.
 
#define MMC5603NJ_CTRL1_BANDWIDTH_3ms5   1U
 Bandwidth 1: 3.5 ms measurement.
 
#define MMC5603NJ_CTRL1_BANDWIDTH_2ms   2U
 Bandwidth 2: 2.0 ms measurement.
 
#define MMC5603NJ_CTRL1_BANDWIDTH_1ms2   3U
 Bandwidth 3: 1.2 ms measurement.
 
#define MMC5603NJ_CTRL1_X_INHIBIT   PBL_BIT(2)
 Disable the X channel, shortening the measurement.
 
#define MMC5603NJ_CTRL1_Y_INHIBIT   PBL_BIT(3)
 Disable the Y channel, shortening the measurement.
 
#define MMC5603NJ_CTRL1_Z_INHIBIT   PBL_BIT(4)
 Disable the Z channel, shortening the measurement.
 
#define MMC5603NJ_CTRL1_ST_ENP   PBL_BIT(5)
 Drive a DC current through the self-test coil, offsetting the measured field.
 
#define MMC5603NJ_CTRL1_ST_ENM   PBL_BIT(6)
 As MMC5603NJ_CTRL1_ST_ENP, in the opposite direction.
 
#define MMC5603NJ_CTRL1_SW_RESET   PBL_BIT(7)
 Software reset: clear all registers and reread OTP.
 

CTRL2 bits

AUTOSET_PRD_n performs an automatic set/reset every n measurements.

#define MMC5603NJ_CTRL2_AUTOSET_PRD_MASK   PBL_GENMASK(2, 0)
 Automatic set/reset period field.
 
#define MMC5603NJ_CTRL2_AUTOSET_PRD_1   0U
 Automatic set/reset every measurement.
 
#define MMC5603NJ_CTRL2_AUTOSET_PRD_25   1U
 Automatic set/reset every 25 measurements.
 
#define MMC5603NJ_CTRL2_AUTOSET_PRD_75   2U
 Automatic set/reset every 75 measurements.
 
#define MMC5603NJ_CTRL2_AUTOSET_PRD_100   3U
 Automatic set/reset every 100 measurements.
 
#define MMC5603NJ_CTRL2_AUTOSET_PRD_250   4U
 Automatic set/reset every 250 measurements.
 
#define MMC5603NJ_CTRL2_AUTOSET_PRD_500   5U
 Automatic set/reset every 500 measurements.
 
#define MMC5603NJ_CTRL2_AUTOSET_PRD_1000   6U
 Automatic set/reset every 1000 measurements.
 
#define MMC5603NJ_CTRL2_AUTOSET_PRD_2000   7U
 Automatic set/reset every 2000 measurements.
 
#define MMC5603NJ_CTRL2_PRD_SET_EN   PBL_BIT(3)
 Enable periodic automatic set (recommended).
 
#define MMC5603NJ_CTRL2_CMM_EN   PBL_BIT(4)
 Enable continuous measurement mode.
 
#define MMC5603NJ_CTRL2_HPOWER   PBL_BIT(7)
 High power mode, allowing an ODR up to 1000 Hz.
 

Detailed Description

MMC5603NJ register map, from the MEMSIC datasheet (Rev.

B).

Datasheet: https://www.memsic.com/Public/Uploads/uploadfile/files/20220119/MMC5603NJDatasheetRev.B.pdf

Multi-byte values are assumed little endian on the host.

The output data rate (ODR) is set in Hz, 1 to 255. With MMC5603NJ_CTRL2_HPOWER set, ODR=255 selects 1000 Hz. The achievable ODR is limited by the bandwidth and by automatic set/reset (recommended):

Bandwidth Max ODR
0 (6.6 ms) 75 Hz with automatic set/reset, else 150 Hz
1 (3.5 ms) 150 Hz with automatic set/reset, else 255 Hz
2 (2.0 ms) 255 Hz
3 (1.2 ms) 255 Hz, or 1000 Hz in high power mode

Macro Definition Documentation

◆ MMC5603NJ_CTRL0_AUTO_SR_EN

#define MMC5603NJ_CTRL0_AUTO_SR_EN   PBL_BIT(5)

Enable automatic set/reset.

◆ MMC5603NJ_CTRL0_AUTO_ST_EN

#define MMC5603NJ_CTRL0_AUTO_ST_EN   PBL_BIT(6)

Perform a single self-test.

◆ MMC5603NJ_CTRL0_CMM_FREQ_EN

#define MMC5603NJ_CTRL0_CMM_FREQ_EN   PBL_BIT(7)

Compute the measurement period for the ODR.

Must be set before continuous-mode measurements are started.

◆ MMC5603NJ_CTRL0_DO_RESET

#define MMC5603NJ_CTRL0_DO_RESET   PBL_BIT(4)

Perform a single reset operation.

◆ MMC5603NJ_CTRL0_DO_SET

#define MMC5603NJ_CTRL0_DO_SET   PBL_BIT(3)

Perform a single set operation.

◆ MMC5603NJ_CTRL0_TAKE_MEAS_M

#define MMC5603NJ_CTRL0_TAKE_MEAS_M   PBL_BIT(0)

Take a single magnetic field measurement.

◆ MMC5603NJ_CTRL0_TAKE_MEAS_T

#define MMC5603NJ_CTRL0_TAKE_MEAS_T   PBL_BIT(1)

Take a single temperature measurement.

◆ MMC5603NJ_CTRL1_BANDWIDTH_1ms2

#define MMC5603NJ_CTRL1_BANDWIDTH_1ms2   3U

Bandwidth 3: 1.2 ms measurement.

◆ MMC5603NJ_CTRL1_BANDWIDTH_2ms

#define MMC5603NJ_CTRL1_BANDWIDTH_2ms   2U

Bandwidth 2: 2.0 ms measurement.

◆ MMC5603NJ_CTRL1_BANDWIDTH_3ms5

#define MMC5603NJ_CTRL1_BANDWIDTH_3ms5   1U

Bandwidth 1: 3.5 ms measurement.

◆ MMC5603NJ_CTRL1_BANDWIDTH_6ms6

#define MMC5603NJ_CTRL1_BANDWIDTH_6ms6   0U

Bandwidth 0: 6.6 ms measurement.

◆ MMC5603NJ_CTRL1_BANDWIDTH_MASK

#define MMC5603NJ_CTRL1_BANDWIDTH_MASK   PBL_GENMASK(1, 0)

Bandwidth field.

◆ MMC5603NJ_CTRL1_ST_ENM

#define MMC5603NJ_CTRL1_ST_ENM   PBL_BIT(6)

As MMC5603NJ_CTRL1_ST_ENP, in the opposite direction.

◆ MMC5603NJ_CTRL1_ST_ENP

#define MMC5603NJ_CTRL1_ST_ENP   PBL_BIT(5)

Drive a DC current through the self-test coil, offsetting the measured field.

Used to check whether the sensor is saturated.

◆ MMC5603NJ_CTRL1_SW_RESET

#define MMC5603NJ_CTRL1_SW_RESET   PBL_BIT(7)

Software reset: clear all registers and reread OTP.

◆ MMC5603NJ_CTRL1_X_INHIBIT

#define MMC5603NJ_CTRL1_X_INHIBIT   PBL_BIT(2)

Disable the X channel, shortening the measurement.

◆ MMC5603NJ_CTRL1_Y_INHIBIT

#define MMC5603NJ_CTRL1_Y_INHIBIT   PBL_BIT(3)

Disable the Y channel, shortening the measurement.

◆ MMC5603NJ_CTRL1_Z_INHIBIT

#define MMC5603NJ_CTRL1_Z_INHIBIT   PBL_BIT(4)

Disable the Z channel, shortening the measurement.

◆ MMC5603NJ_CTRL2_AUTOSET_PRD_1

#define MMC5603NJ_CTRL2_AUTOSET_PRD_1   0U

Automatic set/reset every measurement.

◆ MMC5603NJ_CTRL2_AUTOSET_PRD_100

#define MMC5603NJ_CTRL2_AUTOSET_PRD_100   3U

Automatic set/reset every 100 measurements.

◆ MMC5603NJ_CTRL2_AUTOSET_PRD_1000

#define MMC5603NJ_CTRL2_AUTOSET_PRD_1000   6U

Automatic set/reset every 1000 measurements.

◆ MMC5603NJ_CTRL2_AUTOSET_PRD_2000

#define MMC5603NJ_CTRL2_AUTOSET_PRD_2000   7U

Automatic set/reset every 2000 measurements.

◆ MMC5603NJ_CTRL2_AUTOSET_PRD_25

#define MMC5603NJ_CTRL2_AUTOSET_PRD_25   1U

Automatic set/reset every 25 measurements.

◆ MMC5603NJ_CTRL2_AUTOSET_PRD_250

#define MMC5603NJ_CTRL2_AUTOSET_PRD_250   4U

Automatic set/reset every 250 measurements.

◆ MMC5603NJ_CTRL2_AUTOSET_PRD_500

#define MMC5603NJ_CTRL2_AUTOSET_PRD_500   5U

Automatic set/reset every 500 measurements.

◆ MMC5603NJ_CTRL2_AUTOSET_PRD_75

#define MMC5603NJ_CTRL2_AUTOSET_PRD_75   2U

Automatic set/reset every 75 measurements.

◆ MMC5603NJ_CTRL2_AUTOSET_PRD_MASK

#define MMC5603NJ_CTRL2_AUTOSET_PRD_MASK   PBL_GENMASK(2, 0)

Automatic set/reset period field.

◆ MMC5603NJ_CTRL2_CMM_EN

#define MMC5603NJ_CTRL2_CMM_EN   PBL_BIT(4)

Enable continuous measurement mode.

Requires the ODR and MMC5603NJ_CTRL0_CMM_FREQ_EN to be set.

◆ MMC5603NJ_CTRL2_HPOWER

#define MMC5603NJ_CTRL2_HPOWER   PBL_BIT(7)

High power mode, allowing an ODR up to 1000 Hz.

◆ MMC5603NJ_CTRL2_PRD_SET_EN

#define MMC5603NJ_CTRL2_PRD_SET_EN   PBL_BIT(3)

Enable periodic automatic set (recommended).

◆ MMC5603NJ_STATUS1_MEAS_M_DONE_MASK

#define MMC5603NJ_STATUS1_MEAS_M_DONE_MASK   PBL_BIT(6)

Magnetic measurement done.

◆ MMC5603NJ_STATUS1_MEAS_T_DONE_MASK

#define MMC5603NJ_STATUS1_MEAS_T_DONE_MASK   PBL_BIT(7)

Temperature measurement done.

◆ MMC5603NJ_STATUS1_OTP_READ_DONE_MASK

#define MMC5603NJ_STATUS1_OTP_READ_DONE_MASK   PBL_BIT(4)

OTP memory has been read.

◆ MMC5603NJ_STATUS1_SAT_SENSOR_MASK

#define MMC5603NJ_STATUS1_SAT_SENSOR_MASK   PBL_BIT(5)

Sensor is saturated.

Variable Documentation

◆ MMC5603NJ_REG_CTRL0

const uint8_t MMC5603NJ_REG_CTRL0 = 0x1B
static

Control register 0.

◆ MMC5603NJ_REG_CTRL1

const uint8_t MMC5603NJ_REG_CTRL1 = 0x1C
static

Control register 1.

◆ MMC5603NJ_REG_CTRL2

const uint8_t MMC5603NJ_REG_CTRL2 = 0x1D
static

Control register 2.

◆ MMC5603NJ_REG_ODR

const uint8_t MMC5603NJ_REG_ODR = 0x1A
static

Output data rate.

◆ MMC5603NJ_REG_ST_X

const uint8_t MMC5603NJ_REG_ST_X = 0x27
static

X-axis self-test set value.

◆ MMC5603NJ_REG_ST_X_TH

const uint8_t MMC5603NJ_REG_ST_X_TH = 0x1E
static

X-axis self-test threshold.

◆ MMC5603NJ_REG_ST_Y

const uint8_t MMC5603NJ_REG_ST_Y = 0x28
static

Y-axis self-test set value.

◆ MMC5603NJ_REG_ST_Y_TH

const uint8_t MMC5603NJ_REG_ST_Y_TH = 0x1F
static

Y-axis self-test threshold.

◆ MMC5603NJ_REG_ST_Z

const uint8_t MMC5603NJ_REG_ST_Z = 0x29
static

Z-axis self-test set value.

◆ MMC5603NJ_REG_ST_Z_TH

const uint8_t MMC5603NJ_REG_ST_Z_TH = 0x20
static

Z-axis self-test threshold.

◆ MMC5603NJ_REG_STATUS1

const uint8_t MMC5603NJ_REG_STATUS1 = 0x18
static

Device status.

◆ MMC5603NJ_REG_TOUT

const uint8_t MMC5603NJ_REG_TOUT = 0x09
static

Temperature output.

◆ MMC5603NJ_REG_WHO_AM_I

const uint8_t MMC5603NJ_REG_WHO_AM_I = 0x39
static

Product ID.

◆ MMC5603NJ_REG_XOUT0

const uint8_t MMC5603NJ_REG_XOUT0 = 0x00
static

X output, bits 19:12.

◆ MMC5603NJ_REG_XOUT1

const uint8_t MMC5603NJ_REG_XOUT1 = 0x01
static

X output, bits 11:4.

◆ MMC5603NJ_REG_XOUT2

const uint8_t MMC5603NJ_REG_XOUT2 = 0x06
static

X output, bits 3:0.

◆ MMC5603NJ_REG_YOUT0

const uint8_t MMC5603NJ_REG_YOUT0 = 0x02
static

Y output, bits 19:12.

◆ MMC5603NJ_REG_YOUT1

const uint8_t MMC5603NJ_REG_YOUT1 = 0x03
static

Y output, bits 11:4.

◆ MMC5603NJ_REG_YOUT2

const uint8_t MMC5603NJ_REG_YOUT2 = 0x07
static

Y output, bits 3:0.

◆ MMC5603NJ_REG_ZOUT0

const uint8_t MMC5603NJ_REG_ZOUT0 = 0x04
static

Z output, bits 19:12.

◆ MMC5603NJ_REG_ZOUT1

const uint8_t MMC5603NJ_REG_ZOUT1 = 0x05
static

Z output, bits 11:4.

◆ MMC5603NJ_REG_ZOUT2

const uint8_t MMC5603NJ_REG_ZOUT2 = 0x08
static

Z output, bits 3:0.

◆ MMC5603NJ_SET_DELAY_MS

const uint8_t MMC5603NJ_SET_DELAY_MS = 1
static

Delay in milliseconds required after a set or reset operation.

◆ MMC5603NJ_SW_RESET_DELAY_MS

const uint8_t MMC5603NJ_SW_RESET_DELAY_MS = 20
static

Delay in milliseconds required after a software reset.

◆ MMC5603NJ_WHO_AM_I_VALUE

const uint8_t MMC5603NJ_WHO_AM_I_VALUE = 0x10
static

Expected MMC5603NJ_REG_WHO_AM_I value.