Improved speed of SPI::write(byte)
This commit is contained in:
parent
f21592574f
commit
ac742edbd7
|
@ -298,7 +298,17 @@ void SPIClass::read(uint8 *buf, uint32 len) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SPIClass::write(uint8 byte) {
|
void SPIClass::write(uint8 byte) {
|
||||||
this->write(&byte, 1);
|
// this->write(&byte, 1);
|
||||||
|
|
||||||
|
/* Roger Clark
|
||||||
|
* Improved speed by just directly writing the single byte to the SPI data reg and wait for completion, * by taking the Tx code from transfer(byte)
|
||||||
|
* The original method, of calling write(*data, length) .
|
||||||
|
* This almost doubles the speed of this function.
|
||||||
|
*/
|
||||||
|
|
||||||
|
spi_tx_reg(this->spi_d, byte); // "2. Write the first data item to be transmitted into the SPI_DR register (this clears the TXE flag)."
|
||||||
|
while (spi_is_tx_empty(this->spi_d) == 0); // "5. Wait until TXE=1 ..."
|
||||||
|
while (spi_is_busy(this->spi_d) != 0); // "... and then wait until BSY=0 before disabling the SPI."
|
||||||
}
|
}
|
||||||
|
|
||||||
void SPIClass::write(const uint8 *data, uint32 length) {
|
void SPIClass::write(const uint8 *data, uint32 length) {
|
||||||
|
|
Loading…
Reference in New Issue