Last active
December 25, 2015 13:39
-
-
Save cmicali/6984888 to your computer and use it in GitHub Desktop.
PRU SPI Example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define NOP MOV r0, r0, r0 | |
#define SPI_TX r8.w0 | |
#define SPI1_SCLK R30.t7 | |
#define SPI1_MOSI R30.t14 | |
#define SPI1_MISO R31.t15 | |
#define SPI1_CS0 R30.t0 | |
#define SPI1_CS1 R30.t1 | |
#define SPI1_CS SPI1_CS0 | |
#define LSPD_SPI_SCLK SPI1_SCLK | |
#define LSPD_SPI_MOSI SPI1_MOSI | |
#define LSPD_SPI_MISO SPI1_MISO | |
#define LSPD_SPI_CS0 SPI1_CS0 | |
#define LSPD_SPI_CS1 SPI1_CS1 | |
#define LSPD_SPI_CS LSPD_SPI_CS1 | |
#define LSPD_CNVST R30.t3 | |
.macro SPI_XFER_BIT | |
.mparam LS_RX, BIT | |
// Output LSPD control | |
QBBS MOSI_HIGH, SPI_TX, BIT | |
CLR LSPD_SPI_MOSI | |
JMP MOSI_DONE | |
MOSI_HIGH: | |
SET LSPD_SPI_MOSI | |
NOP | |
MOSI_DONE: | |
SET LSPD_SPI_SCLK | |
// Read LSPD - Set b0 of R11 to MISO | |
QBBC MISO_LOW, LSPD_SPI_MISO | |
SET LS_RX, LS_RX, BIT | |
JMP MISO_DONE | |
MISO_LOW: | |
NOP | |
NOP | |
MISO_DONE: | |
CLR LSPD_SPI_SCLK | |
NOP | |
NOP | |
.endm | |
.macro SPI_XFER_WORD | |
.mparam LS_RX | |
SPI_XFER_BIT LS_RX, 15 | |
SPI_XFER_BIT LS_RX, 14 | |
SPI_XFER_BIT LS_RX, 13 | |
SPI_XFER_BIT LS_RX, 12 | |
SPI_XFER_BIT LS_RX, 11 | |
SPI_XFER_BIT LS_RX, 10 | |
SPI_XFER_BIT LS_RX, 9 | |
SPI_XFER_BIT LS_RX, 8 | |
SPI_XFER_BIT LS_RX, 7 | |
SPI_XFER_BIT LS_RX, 6 | |
SPI_XFER_BIT LS_RX, 5 | |
SPI_XFER_BIT LS_RX, 4 | |
SPI_XFER_BIT LS_RX, 3 | |
SPI_XFER_BIT LS_RX, 2 | |
SPI_XFER_BIT LS_RX, 1 | |
SPI_XFER_BIT LS_RX, 0 | |
.endm |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment