AFE_NXP_Arduino 2.0.5
Analog Front-End (AFE) device operation sample code for Arduino
Loading...
Searching...
No Matches
SPI_for_AFE.h
Go to the documentation of this file.
1
12#ifndef ARDUINO_SPI_FOR_AFE_H
13#define ARDUINO_SPI_FOR_AFE_H
14
15#include <Arduino.h>
16#include <stdint.h>
17
18#include <SPI.h>
19
21{
22public:
28 virtual void txrx( uint8_t *data, int size );
29
34 virtual void write_r16( uint16_t reg );
35
41 virtual void write_r16( uint16_t reg, uint16_t val );
42
48 virtual uint16_t read_r16( uint16_t reg );
49
55 virtual void write_r24( uint16_t reg, uint32_t val );
56
62 virtual int32_t read_r24( uint16_t reg );
63
70 virtual void burst( uint32_t *data, int length, int width = 3 );
71
76 virtual void spi_frequency( uint32_t frequency = 1000000 );
77
78protected:
80 void init( void );
81 uint32_t frequency;
82
83private:
84 // functions to access AFE multibyte data access independent from endianess
85 inline int32_t get_data16( uint8_t *vp )
86 {
87 return ((uint16_t)(*(vp + 0)) << 8) | *(vp + 1);
88 }
89
90 inline int32_t get_data24( uint8_t *vp )
91 {
92 int32_t r0 = *(vp + 0);
93 int32_t r1 = *(vp + 1);
94 int32_t r2 = *(vp + 2);
95 int32_t r = ( (r0 << 24) | (r1 << 16) | (r2 << 8) );
96
97 return r >> 8;
98 }
99
100 static constexpr int command_length = 2;
101// const bool dev_ad;
102};
103
104#endif // ARDUINO_SPI_FOR_AFE_H
virtual int32_t read_r24(uint16_t reg)
virtual void txrx(uint8_t *data, int size)
void init(void)
virtual void write_r24(uint16_t reg, uint32_t val)
virtual uint16_t read_r16(uint16_t reg)
static constexpr int command_length
virtual void burst(uint32_t *data, int length, int width=3)
uint32_t frequency
Definition SPI_for_AFE.h:81
int32_t get_data24(uint8_t *vp)
Definition SPI_for_AFE.h:90
virtual void write_r16(uint16_t reg)
int32_t get_data16(uint8_t *vp)
Definition SPI_for_AFE.h:85
virtual void spi_frequency(uint32_t frequency=1000000)