Skip to content

Commit a7364b5

Browse files
committed
add SPIClass::transfer16 (needed by some display libs)
1 parent 434c158 commit a7364b5

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

hardware/esp8266com/esp8266/libraries/SPI/SPI.cpp

+23-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ void SPIClass::setDataMode(uint8_t dataMode) {
5757
}
5858

5959
void SPIClass::setBitOrder(uint8_t bitOrder) {
60-
if (bitOrder == MSBFIRST){
60+
if (bitOrder == MSBFIRST) {
6161
SPI1C &= ~(SPICWBO | SPICRBO);
6262
} else {
6363
SPI1C |= (SPICWBO | SPICRBO);
@@ -76,3 +76,25 @@ uint8_t SPIClass::transfer(uint8_t data) {
7676
return (uint8_t)(SPI1W0 & 0xff);
7777
}
7878

79+
uint16_t SPIClass::transfer16(uint16_t data) {
80+
union {
81+
uint16_t val;
82+
struct {
83+
uint8_t lsb;
84+
uint8_t msb;
85+
};
86+
} in, out;
87+
in.val = data;
88+
89+
if((SPI1C & (SPICWBO | SPICRBO))) {
90+
//MSBFIRST
91+
out.msb = transfer(in.msb);
92+
out.lsb = transfer(in.lsb);
93+
} else {
94+
//LSBFIRST
95+
out.lsb = transfer(in.lsb);
96+
out.msb = transfer(in.msb);
97+
}
98+
return out.val;
99+
}
100+

hardware/esp8266com/esp8266/libraries/SPI/SPI.h

+1
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ class SPIClass {
8080
void setClockDivider(uint32_t clockDiv);
8181
void beginTransaction(SPISettings settings);
8282
uint8_t transfer(uint8_t data);
83+
uint16_t transfer16(uint16_t data);
8384
void endTransaction(void);
8485
};
8586

0 commit comments

Comments
 (0)