-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSPIComm.cpp
More file actions
31 lines (27 loc) · 796 Bytes
/
SPIComm.cpp
File metadata and controls
31 lines (27 loc) · 796 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "SPIComm.h"
void SPIComm::begin(int sck, int miso, int mosi, int cs, uint32_t hz,
BitOrder order, uint8_t mode)
{
_cs = cs;
pinMode(_cs, OUTPUT);
digitalWrite(_cs, HIGH);
SPI.begin(sck, miso, mosi, cs);
SPI.beginTransaction(SPISettings(hz, order, mode));
delay(20);
Serial.println("[SPI] ready");
}
uint8_t SPIComm::readReg(uint8_t reg, uint8_t readBitMask)
{
digitalWrite(_cs, LOW);
SPI.transfer(reg | readBitMask); // many chips use MSB=1 for read
uint8_t v = SPI.transfer(0x00);
digitalWrite(_cs, HIGH);
return v;
}
void SPIComm::writeReg(uint8_t reg, uint8_t val)
{
digitalWrite(_cs, LOW);
SPI.transfer(reg & 0x7F); // many chips use MSB=0 for write
SPI.transfer(val);
digitalWrite(_cs, HIGH);
}