SPI slave DMA-read program for FRDMKL46Z, verified, working
Dependencies: SimpleDMA mbed-rtos mbed
main.cpp
- Committer:
- shreeshas95
- Date:
- 2016-09-27
- Revision:
- 4:33fc4fec3087
- Parent:
- 3:e59d61aac1e1
File content as of revision 4:33fc4fec3087:
#include "mbed.h" #include "SimpleDMA.h" #include "dmaSPIslave.h" #define PAYLOAD_LENGTH 6723 #define PAY_SPI_MOSI PTE18 #define PAY_SPI_MISO PTE19 #define PAY_SPI_CLK PTE17 #define PAY_SPI_CS PTE16 dmaSPISlave spi(PAY_SPI_MOSI, PAY_SPI_MISO, PAY_SPI_CLK, PAY_SPI_CS); RawSerial pc(USBTX, USBRX); DigitalOut ledg(LED_GREEN); //DigitalOut ledr(LED_RED); bool flag = false; void do_this(void){ flag = true; } int main(){ // ledr = 1; // ledg = 1; pc.baud(1200); pc.printf("inside main\r\n"); spi.format(8,0); spi.frequency(1000000); uint8_t buffer[PAYLOAD_LENGTH] = {0}; pc.printf("welcome to dma test, start sending data now\r\n"); // initialise the buffer for dma spi.bulkRead_init(buffer, PAYLOAD_LENGTH, &do_this); // start dma read spi.bulkRead_start(); while(true){ // int i = 0; // while(i < PAYLOAD_LENGTH){ // if(spi.receive()){ // buffer[i] = spi.read(); // ++i; // } // } // ledr = !ledr; // for(int j = 0 ; j < PAYLOAD_LENGTH ; ++j){ // printf("%02x ", buffer[j]); // } if(flag){ flag = false; // start dma again after handling the data spi.bulkRead_start(); ledg = !ledg; } } }