mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-21 10:26:06 +03:00
add SPIClass::transfer16 (needed by some display libs)
This commit is contained in:
parent
e6b48164c2
commit
6599a9f52a
@ -57,7 +57,7 @@ void SPIClass::setDataMode(uint8_t dataMode) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SPIClass::setBitOrder(uint8_t bitOrder) {
|
void SPIClass::setBitOrder(uint8_t bitOrder) {
|
||||||
if (bitOrder == MSBFIRST){
|
if (bitOrder == MSBFIRST) {
|
||||||
SPI1C &= ~(SPICWBO | SPICRBO);
|
SPI1C &= ~(SPICWBO | SPICRBO);
|
||||||
} else {
|
} else {
|
||||||
SPI1C |= (SPICWBO | SPICRBO);
|
SPI1C |= (SPICWBO | SPICRBO);
|
||||||
@ -76,3 +76,25 @@ uint8_t SPIClass::transfer(uint8_t data) {
|
|||||||
return (uint8_t)(SPI1W0 & 0xff);
|
return (uint8_t)(SPI1W0 & 0xff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint16_t SPIClass::transfer16(uint16_t data) {
|
||||||
|
union {
|
||||||
|
uint16_t val;
|
||||||
|
struct {
|
||||||
|
uint8_t lsb;
|
||||||
|
uint8_t msb;
|
||||||
|
};
|
||||||
|
} in, out;
|
||||||
|
in.val = data;
|
||||||
|
|
||||||
|
if((SPI1C & (SPICWBO | SPICRBO))) {
|
||||||
|
//MSBFIRST
|
||||||
|
out.msb = transfer(in.msb);
|
||||||
|
out.lsb = transfer(in.lsb);
|
||||||
|
} else {
|
||||||
|
//LSBFIRST
|
||||||
|
out.lsb = transfer(in.lsb);
|
||||||
|
out.msb = transfer(in.msb);
|
||||||
|
}
|
||||||
|
return out.val;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -80,6 +80,7 @@ public:
|
|||||||
void setClockDivider(uint32_t clockDiv);
|
void setClockDivider(uint32_t clockDiv);
|
||||||
void beginTransaction(SPISettings settings);
|
void beginTransaction(SPISettings settings);
|
||||||
uint8_t transfer(uint8_t data);
|
uint8_t transfer(uint8_t data);
|
||||||
|
uint16_t transfer16(uint16_t data);
|
||||||
void endTransaction(void);
|
void endTransaction(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user