RTC_NXP_Arduino 0.4.0
LED driver device operation sample code for Arduino
Loading...
Searching...
No Matches
SPI_for_RTC.cpp
1#include "RTC_NXP.h"
2
3void SPI_for_RTC::txrx( uint8_t *data, uint16_t size )
4{
5 digitalWrite( SS, LOW );
6 SPI.transfer( data, size );
7 digitalWrite( SS, HIGH );
8}
9
10void SPI_for_RTC::reg_w( uint8_t reg_adr, uint8_t *data, uint16_t size )
11{
12 uint8_t v[ size + 1 ];
13
14 v[ 0 ] = reg_adr;
15 memcpy( v + 1, data, size );
16
17 txrx( v, sizeof( v ) );
18}
19
20void SPI_for_RTC::reg_w( uint8_t reg_adr, uint8_t data )
21{
22 uint8_t v[] = { reg_adr, data };
23
24 txrx( v, sizeof( v ) );
25}
26
27void SPI_for_RTC::reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size )
28{
29 uint8_t v[ size + 1 ] = { 0xFF };
30
31 v[ 0 ] = (uint8_t)(reg_adr | 0x80);
32
33 txrx( v, sizeof( v ) );
34
35 memcpy( data, v + 1, size );
36}
37
38uint8_t SPI_for_RTC::reg_r( uint8_t reg_adr )
39{
40 uint8_t v[] = { (uint8_t)(reg_adr | 0x80), 0xFF };
41
42 txrx( v, sizeof( v ) );
43
44 return v[ 1 ];
45}
46
47void SPI_for_RTC::write_r8( uint8_t reg, uint8_t val )
48{
49 reg_w( reg, val );
50}
51
52uint8_t SPI_for_RTC::read_r8( uint8_t reg )
53{
54 return reg_r( reg );
55}
56
57void SPI_for_RTC::bit_op8( uint8_t reg, uint8_t mask, uint8_t value )
58{
59 uint8_t tmp = reg_r( reg ) & mask;
60 reg_w( reg, tmp | value );
61}
void reg_w(uint8_t reg_adr, uint8_t *data, uint16_t size)
Definition: SPI_for_RTC.cpp:10
uint8_t read_r8(uint8_t reg)
Definition: SPI_for_RTC.cpp:52
void txrx(uint8_t *data, uint16_t size)
Definition: SPI_for_RTC.cpp:3
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
Definition: SPI_for_RTC.cpp:57
void reg_r(uint8_t reg_adr, uint8_t *data, uint16_t size)
Definition: SPI_for_RTC.cpp:27
void write_r8(uint8_t reg, uint8_t val)
Definition: SPI_for_RTC.cpp:47