49 lsm->spi_trans.slave_idx = slave_idx;
50 lsm->spi_trans.output_length = 2;
51 lsm->spi_trans.input_length = 8;
53 lsm->spi_trans.before_cb =
NULL;
55 lsm->spi_trans.input_buf = &(
lsm->rx_buf[0]);
56 lsm->spi_trans.output_buf = &(
lsm->tx_buf[0]);
72 lsm->spi_trans.output_length = 2;
73 lsm->spi_trans.input_length = 0;
82 switch (
lsm->init_status) {
85 lsm->spi_trans.output_length = 1;
86 lsm->spi_trans.input_length = 2;
155 lsm->spi_trans.output_length = 1;
156 lsm->spi_trans.input_length = 8;
163 lsm->spi_trans.output_length = 1;
164 lsm->spi_trans.input_length = 8;
172#define Int16FromBuf(_buf,_idx) ((int16_t)((_buf[_idx+1]<<8) | _buf[_idx]))
178 if (
lsm->initialized) {
190 lsm->data_available_acc =
TRUE;
200 lsm->data_available_mag =
TRUE;
bool spi_submit(struct spi_periph *p, struct spi_transaction *t)
Submit SPI transaction.
@ SPICpolIdleHigh
CPOL = 1.
@ SPISelectUnselect
slave is selected before transaction and unselected after
SPI peripheral structure.
static void lsm303d_set_default_config(struct Lsm303dConfig *c)
#define LSM303D_INT2_DRDY_M
#define LSM303D_REG_CTRL7
#define LSM303D_M_ODR_MASK
#define LSM303D_AODR_MASK
#define LSM303D_REG_CTRL4
#define LSM303D_REG_WHO_AM_I
#define LSM303D_INT1_DRDY_A
#define LSM303D_AHPM_MASK
#define LSM303D_REG_CTRL1
#define LSM303D_REG_WHO_I_AM
LSM303D device identifier in LSM303D_REG_WHO_AM_I.
#define LSM303D_REG_STATUS_M
#define LSM303D_REG_CTRL3
#define LSM303D_REG_CTRL2
#define LSM303D_REG_CTRL5
#define LSM303D_REG_CTRL6
#define LSM303D_REG_STATUS_A
void lsm303d_spi_event(struct Lsm303d_Spi *lsm)
void lsm303d_spi_init(struct Lsm303d_Spi *lsm, struct spi_periph *spi_p, uint8_t slave_idx, enum Lsm303dTarget target)
static void lsm303d_spi_send_config(struct Lsm303d_Spi *lsm)
Configuration function called once before normal use.
static void lsm303d_spi_tx_reg(struct Lsm303d_Spi *lsm, uint8_t reg, uint8_t val)
void lsm303d_spi_start_configure(struct Lsm303d_Spi *lsm)
#define Int16FromBuf(_buf, _idx)
void lsm303d_spi_read(struct Lsm303d_Spi *lsm)
Driver for ST LSM303D 3D accelerometer and magnetometer.
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.