File tree 2 files changed +24
-1
lines changed
hardware/esp8266com/esp8266/libraries/SPI
2 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -57,7 +57,7 @@ void SPIClass::setDataMode(uint8_t dataMode) {
57
57
}
58
58
59
59
void SPIClass::setBitOrder (uint8_t bitOrder) {
60
- if (bitOrder == MSBFIRST){
60
+ if (bitOrder == MSBFIRST) {
61
61
SPI1C &= ~(SPICWBO | SPICRBO);
62
62
} else {
63
63
SPI1C |= (SPICWBO | SPICRBO);
@@ -76,3 +76,25 @@ uint8_t SPIClass::transfer(uint8_t data) {
76
76
return (uint8_t )(SPI1W0 & 0xff );
77
77
}
78
78
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
+
Original file line number Diff line number Diff line change @@ -80,6 +80,7 @@ class SPIClass {
80
80
void setClockDivider (uint32_t clockDiv);
81
81
void beginTransaction (SPISettings settings);
82
82
uint8_t transfer (uint8_t data);
83
+ uint16_t transfer16 (uint16_t data);
83
84
void endTransaction (void );
84
85
};
85
86
You can’t perform that action at this time.
0 commit comments