MMC5603NJ register map, from the MEMSIC datasheet (Rev.
More...
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 |
◆ 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) |
◆ MMC5603NJ_CTRL1_ST_ENM
| #define MMC5603NJ_CTRL1_ST_ENM PBL_BIT(6) |
◆ 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) |
◆ 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) |
◆ MMC5603NJ_REG_CTRL0
| const uint8_t MMC5603NJ_REG_CTRL0 = 0x1B |
|
static |
◆ MMC5603NJ_REG_CTRL1
| const uint8_t MMC5603NJ_REG_CTRL1 = 0x1C |
|
static |
◆ MMC5603NJ_REG_CTRL2
| const uint8_t MMC5603NJ_REG_CTRL2 = 0x1D |
|
static |
◆ MMC5603NJ_REG_ODR
| const uint8_t MMC5603NJ_REG_ODR = 0x1A |
|
static |
◆ 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 |
◆ MMC5603NJ_REG_TOUT
| const uint8_t MMC5603NJ_REG_TOUT = 0x09 |
|
static |
◆ MMC5603NJ_REG_WHO_AM_I
| const uint8_t MMC5603NJ_REG_WHO_AM_I = 0x39 |
|
static |
◆ MMC5603NJ_REG_XOUT0
| const uint8_t MMC5603NJ_REG_XOUT0 = 0x00 |
|
static |
◆ MMC5603NJ_REG_XOUT1
| const uint8_t MMC5603NJ_REG_XOUT1 = 0x01 |
|
static |
◆ MMC5603NJ_REG_XOUT2
| const uint8_t MMC5603NJ_REG_XOUT2 = 0x06 |
|
static |
◆ MMC5603NJ_REG_YOUT0
| const uint8_t MMC5603NJ_REG_YOUT0 = 0x02 |
|
static |
◆ MMC5603NJ_REG_YOUT1
| const uint8_t MMC5603NJ_REG_YOUT1 = 0x03 |
|
static |
◆ MMC5603NJ_REG_YOUT2
| const uint8_t MMC5603NJ_REG_YOUT2 = 0x07 |
|
static |
◆ MMC5603NJ_REG_ZOUT0
| const uint8_t MMC5603NJ_REG_ZOUT0 = 0x04 |
|
static |
◆ MMC5603NJ_REG_ZOUT1
| const uint8_t MMC5603NJ_REG_ZOUT1 = 0x05 |
|
static |
◆ MMC5603NJ_REG_ZOUT2
| const uint8_t MMC5603NJ_REG_ZOUT2 = 0x08 |
|
static |
◆ 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 |