AFE_NXP_Arduino 0.2.0
AFE (NAFE13388) device operation sample code for Arduino
Loading...
Searching...
No Matches
SPI_for_AFE.cpp
Go to the documentation of this file.
1#include "AFE_NXP.h"
2
3void SPI_for_AFE::txrx( uint8_t *data, int size )
4{
5 SPI.beginTransaction( SPISettings( 1000000, MSBFIRST, SPI_MODE1 ) );
6 digitalWrite( SS, LOW );
7 SPI.transfer( data, size );
8 digitalWrite( SS, HIGH );
9}
10
11void SPI_for_AFE::write_r16( uint16_t reg )
12{
13 reg <<= 1;
14
15 uint8_t v[] = { (uint8_t)(reg >> 8), (uint8_t)(reg & 0xFF) };
16 txrx( v, sizeof( v ) );
17}
18
19void SPI_for_AFE::write_r16( uint16_t reg, uint16_t val )
20{
21 reg <<= 1;
22
23 uint8_t v[] = { (uint8_t)(reg >> 8), (uint8_t)(reg & 0xFF), (uint8_t)(val >> 8), (uint8_t)val };
24 txrx( v, sizeof( v ) );
25}
26
27uint16_t SPI_for_AFE::read_r16( uint16_t reg )
28{
29 reg <<= 1;
30 reg |= 0x4000;
31
32 uint8_t v[ 4 ] = { (uint8_t)(reg >> 8), (uint8_t)(reg & 0xFF), 0xFF, 0xFF };
33 txrx( v, sizeof( v ) );
34
35 return (uint16_t)(v[ 2 ]) << 8 | v[ 3 ];
36}
37
38void SPI_for_AFE::write_r24( uint16_t reg, uint32_t val )
39{
40 reg <<= 1;
41
42 uint8_t v[] = { (uint8_t)(reg >> 8), (uint8_t)(reg & 0xFF), (uint8_t)(val >> 16), (uint8_t)(val >> 8), (uint8_t)val };
43 txrx( v, sizeof( v ) );
44}
45
46int32_t SPI_for_AFE::read_r24( uint16_t reg )
47{
48 reg <<= 1;
49 reg |= 0x4000;
50
51 uint8_t v[] = { (uint8_t)(reg >> 8), (uint8_t)(reg & 0xFF), 0xFF, 0xFF, 0xFF };
52 txrx( v, sizeof( v ) );
53
54 int32_t r0 = v[ 2 ];
55 int32_t r1 = v[ 3 ];
56 int32_t r2 = v[ 4 ];
57 int32_t r = ( (r0 << 24) | (r1 << 16) | (r2 << 8) );
58
59 return r >> 8;
60}
int32_t read_r24(uint16_t reg)
void txrx(uint8_t *data, int size)
void write_r24(uint16_t reg, uint32_t val)
uint16_t read_r16(uint16_t reg)
void write_r16(uint16_t reg)