Last active
October 29, 2020 19:23
-
-
Save Swap-File/77a81159ae9dd2e2d77f1298e0b0d39b to your computer and use it in GitHub Desktop.
This file contains 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
#include "SPI.h" // include the SPI library: | |
#define SPI_TCR 0x60 | |
#define SPI_TDR 0x64 | |
#define SPI_RSR 0x70 | |
#define SPI_RDR 0x74 | |
#define mmio32(x) (*(volatile unsigned long *)(0x403A0000 + x)) | |
#define PAYLOAD 5096 | |
uint16_t dac[PAYLOAD]; | |
void setup() | |
{ | |
// set the slaveSelectPin as an output: | |
pinMode(6, OUTPUT); | |
// initialize SPI: | |
SPI.begin(); | |
SPI.beginTransaction(SPISettings(32000000, LSBFIRST, SPI_MODE0)); | |
for (int i = 0; i < PAYLOAD; i++) | |
{ | |
dac[i] = i % 0xFFFF; | |
} | |
} | |
void loop() | |
{ | |
mmio32(SPI_TCR) = (mmio32(SPI_TCR) & 0xfffff000) | LPSPI_TCR_FRAMESZ(15); // turn on 16 bit mode | |
digitalWriteFast(6, LOW); | |
for (int i = 0; i < PAYLOAD; i++) | |
{ | |
mmio32(SPI_TDR) = dac[i]; // output 16 bit data. | |
digitalWriteFast(6, LOW); | |
//while ((mmio32(SPI_RSR) & LPSPI_RSR_RXEMPTY)) ; // wait while the RSR fifo is empty... | |
delayNanoseconds(560); | |
volatile int junk = mmio32(SPI_RDR); | |
digitalWriteFast(6, HIGH); | |
} | |
digitalWriteFast(6, HIGH); | |
delay(10); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment