Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // lis302dl.h
- // Описание регистров акселерометра LIS302DL
- // Плата STM32F4-Discovery
- #ifndef _LIS302DL_H
- #define _LIS302DL_H
- // Регистры акселерометра
- #define LIS302DL_WHO_AM_I_ADDR 0x0F // Device Identification Register
- #define LIS302DL_CTRL_REG1_ADDR 0x20 // Control Register 1
- #define LIS302DL_CTRL_REG2_ADDR 0x21 // Control Register 2
- #define LIS302DL_CTRL_REG3_ADDR 0x22 // Interrupt Control Register
- #define LIS302DL_HP_FILTER_RESET_REG_ADDR 0x23 // Dummy register.
- // Reading at this address zeroes instantaneously the content of the internal
- // high pass filter. If the high pass filter is enabled all three axes are
- // instantaneously set to 0g. This allows to overcome the settling time of
- // the high pass filter.
- #define LIS302DL_STATUS_REG_ADDR 0x27 // Status Register
- #define LIS302DL_OUT_X_ADDR 0x29 // X-axis output Data
- #define LIS302DL_OUT_Y_ADDR 0x2B // Y-axis output Data
- #define LIS302DL_OUT_Z_ADDR 0x2D // Z-axis output Data
- // Правильное содержимое WHO_AM_I
- #define LIS302DL_WHO_AM_I_ID 0x3B
- // Регистр CTRL_REG1
- #define LIS302DL_CTRL_REG1_DR 0x80 // Data Rate selection.
- // 0 - 100 Hz output data rate
- // 1 - 400 Hz output data rate
- #define LIS302DL_CTRL_REG1_PD 0x40 // Power Down control.
- // 0 - power down mode
- // 1 - active mode
- #define LIS302DL_CTRL_REG1_FS 0x20 // Full Scale selection.
- // 0 - Typical measurement range 2.3
- // 1 - Typical measurement range 9.2
- #define LIS302DL_CTRL_REG1_STP 0x10 // Self Test P Enable.
- #define LIS302DL_CTRL_REG1_STM 0x08 // Self Test M Enable.
- // STP | STM
- // 0 | 0 | Normal mode
- // 0 | 1 | Self Test M
- // 1 | 0 | Self Test P
- #define LIS302DL_CTRL_REG1_ZEN 0x04 // Z axis enable.
- // 0 - Z axis disabled
- // 1 - Z axis enabled
- #define LIS302DL_CTRL_REG1_YEN 0x02 // Y axis enable.
- // 0 - Y axis disabled
- // 1 - Y axis enabled
- #define LIS302DL_CTRL_REG1_XEN 0x01 // X axis enable.
- // 0 - X axis disabled
- // 1 - X axis enabled
- // Регистр CTRL_REG2
- #define LIS302DL_CTRL_REG2_SIM 0x80 // SPI Serial Interface Mode Selection.
- // 0 - 4 wire interface
- // 1 - 3 wire interface
- #define LIS302DL_CTRL_REG2_BOOT 0x40 // Reboot memory content.
- // 0 - normal mode
- // 1 - reboot memory content
- #define LIS302DL_CTRL_REG2_FDS 0x10 // Filtered data selection.
- // 0 - internal filter bypassed
- // 1 - data from internal filter sent to output register
- #define LIS302DL_CTRL_REG2_HP_FF_WU2 0x08 // High pass filter enabled for FreeFall/WakeUp#2.
- // 0 - filter bypassed
- // 1 - filter enabled
- #define LIS302DL_CTRL_REG2_HP_FF_WU1 0x04 // High pass filter enabled for FreeFall/WakeUp#1.
- // 0 - filter bypassed
- // 1 - filter enabled
- #define LIS302DL_CTRL_REG2_HP_COEFF2 0x02 // High pass filter cut-off frequency (ft) configuration.
- #define LIS302DL_CTRL_REG2_HP_COEFF1 0x01 // High pass filter cut-off frequency (ft) configuration.
- //
- // ft= ODR[hz]/6*HP coeff
- // HP coeff2 | HP coeff1 | HP coeff
- // ---------------------------------
- // 0 | 0 | 8
- // 0 | 1 | 16
- // 1 | 0 | 32
- // 1 | 1 | 64
- //
- // HP coeff | ft[hz] | ft[hz] |
- // | ODR 100Hz | ODR 400Hz |
- // ----------------------------------
- // 00 | 2 | 8 |
- // 01 | 1 | 4 |
- // 10 | 0.5 | 2 |
- // 11 | 0.25 | 1 |
- // Регистр CTRL_REG3
- #define LIS302DL_CTRL_REG3_IHL 0x80 // Interrupt active high/low.
- // 0 - active high
- // 1 - active low
- #define LIS302DL_CTRL_REG3_PP_OD 0x40 // push-pull/open-drain.
- // 0 - push-pull
- // 1 - open-drain
- #define LIS302DL_CTRL_REG3_I2_CFG2 0x20 // Data signal on INT2 pad control bits
- #define LIS302DL_CTRL_REG3_I2_CFG1 0x10 // Data signal on INT2 pad control bits
- #define LIS302DL_CTRL_REG3_I2_CFG0 0x08 // Data signal on INT2 pad control bits
- #define LIS302DL_CTRL_REG3_I1_CFG2 0x04 // Data signal on INT1 pad control bits
- #define LIS302DL_CTRL_REG3_I1_CFG1 0x02 // Data signal on INT1 pad control bits
- #define LIS302DL_CTRL_REG3_I1_CFG0 0x01 // Data signal on INT1 pad control bits
- // I1(2)_CFG2 | I1(2)_CFG1 | I1(2)_CFG0 | INT1(2) Pad
- // ----------------------------------------------------------
- // 0 | 0 | 0 | GND
- // 0 | 0 | 1 | FreeFall/WakeUp#1
- // 0 | 1 | 0 | FreeFall/WakeUp#2
- // 0 | 1 | 1 | FreeFall/WakeUp#1 or FreeFall/WakeUp#2
- // 1 | 0 | 0 | Data ready
- // 1 | 1 | 1 | Click interrupt
- // Регистр STATUS_REG
- #define LIS302DL_STATUS_REG_ZYXOR 0x80 // X, Y and Z axis data overrun.
- // 0: no overrun has occurred
- // 1: new data has overwritten the previous one before it was read
- #define LIS302DL_STATUS_REG_ZOR 0x40 // Z axis data overrun.
- // 0: no overrun has occurred
- // 1: new data for Z-axis has overwritten the previous one before it was read
- #define LIS302DL_STATUS_REG_yOR 0x20 // y axis data overrun.
- // 0: no overrun has occurred
- // 1: new data for y-axis has overwritten the previous one before it was read
- #define LIS302DL_STATUS_REG_XOR 0x10 // X axis data overrun.
- // 0: no overrun has occurred
- // 1: new data for X-axis has overwritten the previous one before it was read
- #define LIS302DL_STATUS_REG_ZYXDA 0x08 // X, Y and Z axis new data available
- // 0: a new set of data is not yet available
- // 1: a new set of data is available
- #define LIS302DL_STATUS_REG_ZDA 0x04 // Z axis new data available.
- // 0: a new set of data is not yet available
- // 1: a new data for Z axis is available
- #define LIS302DL_STATUS_REG_YDA 0x02 // Y axis new data available
- // 0: a new set of data is not yet available
- // 1: a new data for Y axis is available
- #define LIS302DL_STATUS_REG_XDA 0x01 // X axis new data available
- // 0: a new set of data is not yet available
- // 1: a new data for X axis is available
- // Там ещё дофига, но мне надоело
- #define LIS302DL_SENSITIVITY_2_3G 18 // 18 mg/digit
- #define LIS302DL_SENSITIVITY_9_2G 72 // 72 mg/digit
- #define LIS302DL_DATARATE_100 0x00
- #define LIS302DL_DATARATE_400 0x80
- #define LIS302DL_LOWPOWERMODE_POWERDOWN 0x00
- #define LIS302DL_LOWPOWERMODE_ACTIVE 0x40
- #define LIS302DL_FULLSCALE_2_3 0x00
- #define LIS302DL_FULLSCALE_9_2 0x20
- #define LIS302DL_X_ENABLE 0x01
- #define LIS302DL_Y_ENABLE 0x02
- #define LIS302DL_Z_ENABLE 0x04
- #define LIS302DL_XYZ_ENABLE 0x07
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement