Fast SPI write, added LPC812 Target

Dependents:   wsDrive

Fork of BurstSPI by Erik -

Committer:
JojoS
Date:
Sat Dec 10 14:30:26 2016 +0000
Revision:
15:8241b7d84ad2
Parent:
14:83e3b8ba3f43
support for STM32F4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JojoS 14:83e3b8ba3f43 1 #if (defined(TARGET_LPC81X))
JojoS 14:83e3b8ba3f43 2 #include "BurstSPI.h"
JojoS 14:83e3b8ba3f43 3
JojoS 14:83e3b8ba3f43 4 void BurstSPI::fastWrite(int data) {
JojoS 14:83e3b8ba3f43 5 while (!(_spi.spi->STAT & (1 << 1)));
JojoS 14:83e3b8ba3f43 6
JojoS 14:83e3b8ba3f43 7 _spi.spi->TXDAT = (data & 0xffff);
JojoS 14:83e3b8ba3f43 8 #ifndef NO_EOT_AFTER_WRITE
JojoS 14:83e3b8ba3f43 9 // set EOT and receive ignore flag
JojoS 14:83e3b8ba3f43 10 _spi.spi->TXDATCTL |= ((1 << 20) | (1 << 22));
JojoS 14:83e3b8ba3f43 11 #else
JojoS 14:83e3b8ba3f43 12 // EOT Flag disables SPI and sets MOSI level high.
JojoS 14:83e3b8ba3f43 13 // This is bad for cases where MOSI is used to generate NRZ signals like in wsLib for WS2812 LED
JojoS 14:83e3b8ba3f43 14 // set receive ignore flag
JojoS 14:83e3b8ba3f43 15 _spi.spi->TXDATCTL |= (1 << 22);
JojoS 14:83e3b8ba3f43 16 #endif
JojoS 14:83e3b8ba3f43 17 }
JojoS 14:83e3b8ba3f43 18
JojoS 14:83e3b8ba3f43 19 void BurstSPI::clearRX( void ) {
JojoS 14:83e3b8ba3f43 20 //We already set receive ignore flag, so this function is never run.
JojoS 14:83e3b8ba3f43 21 }
JojoS 14:83e3b8ba3f43 22
JojoS 14:83e3b8ba3f43 23 #endif