43 lis->spi_trans.slave_idx = slave_idx;
44 lis->spi_trans.output_length = 2;
45 lis->spi_trans.input_length = 8;
47 lis->spi_trans.before_cb =
NULL;
49 lis->spi_trans.input_buf = &(
lis->rx_buf[0]);
50 lis->spi_trans.output_buf = &(
lis->tx_buf[0]);
58 lis->initialized =
false;
59 lis->data_available =
false;
66 lis->spi_trans.output_length = 2;
67 lis->spi_trans.input_length = 0;
78 switch (
lis->init_status) {
81 lis->spi_trans.output_length = 1;
82 lis->spi_trans.input_length = 2;
91 reg_val = (
lis->config.spi_3_wire << 7) | (
lis->config.filt_data << 4);
104 (
lis->config.range << 5) |
110 lis->initialized =
true;
131 lis->spi_trans.output_length = 1;
132 lis->spi_trans.input_length = 8;
141 if (
lis->initialized) {
148 lis->data.vect.x =
lis->rx_buf[3];
149 lis->data.vect.y =
lis->rx_buf[5];
150 lis->data.vect.z =
lis->rx_buf[7];
151 lis->data_available =
true;
156 switch (
lis->spi_trans.status) {
enum SPIStatus status
internal state of the peripheral
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 lis302dl_set_default_config(struct Lis302dlConfig *c)
#define LIS302DL_REG_CTRL_REG3
#define LIS302DL_REG_STATUS
#define LIS302DL_WHO_AM_I
LIS302DL device identifier contained in LIS302DL_REG_WHO_AM_I.
#define LIS302DL_REG_WHO_AM_I
#define LIS302DL_REG_CTRL_REG2
#define LIS302DL_REG_CTRL_REG1
void lis302dl_spi_event(struct Lis302dl_Spi *lis)
void lis302dl_spi_read(struct Lis302dl_Spi *lis)
void lis302dl_spi_init(struct Lis302dl_Spi *lis, struct spi_periph *spi_p, uint8_t slave_idx)
void lis302dl_spi_start_configure(struct Lis302dl_Spi *lis)
static void lis302dl_spi_write_to_reg(struct Lis302dl_Spi *lis, uint8_t _reg, uint8_t _val)
static void lis302dl_spi_send_config(struct Lis302dl_Spi *lis)
Driver for LIS302DL 3-axis accelerometer from ST using SPI.
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.