mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +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) {
|
||||
if (bitOrder == MSBFIRST){
|
||||
if (bitOrder == MSBFIRST) {
|
||||
SPI1C &= ~(SPICWBO | SPICRBO);
|
||||
} else {
|
||||
SPI1C |= (SPICWBO | SPICRBO);
|
||||
@ -76,3 +76,25 @@ uint8_t SPIClass::transfer(uint8_t data) {
|
||||
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 beginTransaction(SPISettings settings);
|
||||
uint8_t transfer(uint8_t data);
|
||||
uint16_t transfer16(uint16_t data);
|
||||
void endTransaction(void);
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user