90 "acc_read_raw(), invalid state");
95 "acc_read_raw(), channel not ready");
99 devp->config->spicfg);
105#if ADXL355_SHARED_SPI
111 tmp = (buff[3 * i] << 12) | (buff[3 * i + 1] << 4) | (buff[3 * i + 2] >> 4);
149 "acc_read_cooked(), invalid state");
153 axes[i] = (raw[i] * devp->accsensitivity[i]) - devp->accbias[i];
181 "acc_set_bias(), invalid state");
184 devp->accbias[i] = bp[i];
210 "acc_reset_bias(), invalid state");
240 "acc_set_sensivity(), invalid state");
243 devp->accsensitivity[i] = sp[i];
269 "acc_reset_sensivity(), invalid state");
282 "acc_reset_sensivity(), accelerometer full scale issue");
309 "acc_set_full_scale(), invalid state");
311 "acc_set_full_scale(), channel not ready");
331 (newfs != devp->accfullscale)) {
333 scale = newfs / devp->accfullscale;
334 devp->accfullscale = newfs;
337#if ADXL355_SHARED_SPI
340 devp->config->spicfg);
346#if ADXL355_SHARED_SPI
355#if ADXL355_SHARED_SPI
358 devp->config->spicfg);
364#if ADXL355_SHARED_SPI
371 devp->accsensitivity[i] *= scale;
372 devp->accbias[i] *= scale;
393#if (ADXL355_USE_SPI) || defined(__DOXYGEN__)
412 cacheBufferFlush(&devp->commtxp[0],
sizeof(devp->commtxp));
414 spiSend(devp->config->spip, 1, devp->commtxp);
415 spiReceive(devp->config->spip, n, devp->commrxp);
417 cacheBufferInvalidate(&devp->commrxp[0],
sizeof(devp->commrxp));
420 memcpy(b, devp->commrxp, n);
439 devp->commtxp[0] = (reg << 1);
440 for(i = 0; i < n; i++, b++) {
441 devp->commtxp[i + 1] = *b;
445 cacheBufferFlush(&devp->commtxp[0],
sizeof(devp->commtxp));
447 spiSend(devp->config->spip, n + 1, devp->commtxp);
468 devp->commtxp = txbp;
469 devp->commrxp = rxbp;
491 "adxl355Start(), invalid state");
493 devp->config = config;
497#if ADXL355_SHARED_SPI
500 spiStart(devp->config->spip, devp->config->spicfg);
503#if ADXL355_SHARED_SPI
513#if ADXL355_SHARED_SPI
515 spiStart(devp->config->spip, devp->config->spicfg);
520#if ADXL355_SHARED_SPI
528 reg_val = devp->config->accodr;
529#if ADXL355_USE_ADVANCED || defined(__DOXYGEN__)
530 reg_val |= devp->config->acchighpass;
534#if ADXL355_SHARED_SPI
536 spiStart(devp->config->spip, devp->config->spicfg);
541#if ADXL355_SHARED_SPI
552#if ADXL355_SHARED_SPI
554 spiStart(devp->config->spip, devp->config->spicfg);
559#if ADXL355_SHARED_SPI
568 if(devp->config->accsensitivity == NULL)
573 devp->accsensitivity[i] = devp->config->accsensitivity[i];
577 if(devp->config->accsensitivity == NULL)
582 devp->accsensitivity[i] = devp->config->accsensitivity[i];
586 if(devp->config->accsensitivity == NULL)
591 devp->accsensitivity[i] = devp->config->accsensitivity[i];
598 if(devp->config->accbias != NULL)
600 devp->accbias[i] = devp->config->accbias[i];
624 "adxl355Stop(), invalid state");
628#if ADXL355_SHARED_SPI
631 devp->config->spicfg);
638#if ADXL355_SHARED_SPI
ADXL355 MEMS interface module header.
static size_t acc_get_axes_number(void *ip)
Return the number of axes of the BaseAccelerometer.
static msg_t acc_reset_sensivity(void *ip)
Reset sensitivity values for the BaseAccelerometer.
static msg_t acc_set_bias(void *ip, float *bp)
Set bias values for the BaseAccelerometer.
static msg_t acc_reset_bias(void *ip)
Reset bias values for the BaseAccelerometer.
static msg_t acc_set_sensivity(void *ip, float *sp)
Set sensitivity values for the BaseAccelerometer.
static msg_t acc_read_cooked(void *ip, float axes[])
Retrieves cooked data from the BaseAccelerometer.
static msg_t acc_read_raw(void *ip, int32_t axes[])
Retrieves raw data from the BaseAccelerometer.
static const struct BaseAccelerometerVMT vmt_accelerometer
static const struct ADXL317VMT vmt_device
#define ADXL355_AD_DEVID_MST
void adxl355SPIWriteRegister(ADXL355Driver *devp, uint8_t reg, size_t n, uint8_t *b)
Writes a value into a generic register using SPI.
#define ADXL355_AD_XDATA3
static msg_t acc_set_full_scale(ADXL355Driver *devp, adxl355_acc_fs_t fs)
Changes the ADXL355Driver accelerometer fullscale value.
#define ADXL355_ACC_SENS_8G
static size_t acc_get_axes_number(void *ip)
Return the number of axes of the BaseAccelerometer.
#define ADXL355_AD_POWER_CTL
adxl355_acc_fs_t
ADXL355 full scale.
static msg_t acc_reset_sensivity(void *ip)
Reset sensitivity values for the BaseAccelerometer.
static msg_t acc_set_bias(void *ip, float *bp)
Set bias values for the BaseAccelerometer.
#define ADXL355_AD_FILTER
void adxl355Start(ADXL355Driver *devp, const ADXL355Config *config)
Configures and activates ADXL355 Complex Driver peripheral.
static msg_t acc_reset_bias(void *ip)
Reset bias values for the BaseAccelerometer.
void adxl355SPIReadRegister(ADXL355Driver *devp, uint8_t reg, size_t n, uint8_t *b)
Reads a generic register value using SPI.
static msg_t acc_set_sensivity(void *ip, float *sp)
Set sensitivity values for the BaseAccelerometer.
static msg_t acc_read_cooked(void *ip, float axes[])
Retrieves cooked data from the BaseAccelerometer.
void adxl355ObjectInit(ADXL355Driver *devp, uint8_t *txbp, uint8_t *rxbp)
Initializes an instance.
static msg_t acc_read_raw(void *ip, int32_t axes[])
Retrieves raw data from the BaseAccelerometer.
#define ADXL355_DEVID_MST
#define ADXL355_ACC_SENS_2G
#define ADXL355_COMM_BUFF_SIZE
ADXL355 internal communication buffer sizes.
#define ADXL355_RANGE_RANGE_MASK
#define ADXL355_ACC_SENS_4G
void adxl355Stop(ADXL355Driver *devp)
Deactivates the ADXL355 Complex Driver peripheral.
#define ADXL355_RANGE_I2C_HS
#define ADXL355_ACC_NUMBER_OF_AXES
ADXL355 accelerometer subsystem characteristics.
#define objGetInstance(type, ip)
Returns the instance pointer starting from an interface pointer.
#define osalDbgAssert(c, remark)
Condition assertion.
#define osalDbgCheck(c)
Function parameters check.
#define osalThreadSleepMilliseconds(msecs)
Delays the invoking thread for the specified number of milliseconds.
void spiSelect(SPIDriver *spip)
Asserts the slave select signal and prepares for transfers.
void spiReleaseBus(SPIDriver *spip)
Releases exclusive access to the SPI bus.
void spiSend(SPIDriver *spip, size_t n, const void *txbuf)
Sends data over the SPI bus.
void spiAcquireBus(SPIDriver *spip)
Gains exclusive access to the SPI bus.
msg_t spiStart(SPIDriver *spip, const SPIConfig *config)
Configures and activates the SPI peripheral.
void spiStop(SPIDriver *spip)
Deactivates the SPI peripheral.
void spiReceive(SPIDriver *spip, size_t n, void *rxbuf)
Receives data from the SPI bus.
void spiUnselect(SPIDriver *spip)
Deasserts the slave select signal.
#define FALSE
Generic 'false' preprocessor boolean constant.
#define MSG_OK
Normal wakeup message.
#define MSG_RESET
Wakeup caused by a reset condition.
ADXL355 configuration structure.
ADXL355 3-axis accelerometer class.
BaseAccelerometer acc_if
Base accelerometer interface.
const struct ADXL355VMT * vmt
Virtual Methods Table.
ADXL355 virtual methods table.
Base accelerometer class.
const struct BaseAccelerometerVMT * vmt
Virtual Methods Table.
BaseAccelerometer virtual methods table.