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;
        }
    }    
}