DMA for Science thread
Dependencies: SimpleDMA mbed-rtos mbed
Fork of spiDMAtest by
main.cpp@3:e59d61aac1e1, 2016-04-22 (annotated)
- Committer:
- shreeshas95
- Date:
- Fri Apr 22 17:58:23 2016 +0000
- Revision:
- 3:e59d61aac1e1
- Parent:
- 2:16545dbc88ae
added new function restart
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shreeshas95 | 0:f0f5102ed9ca | 1 | #include "mbed.h" |
shreeshas95 | 0:f0f5102ed9ca | 2 | #include "SimpleDMA.h" |
shreeshas95 | 0:f0f5102ed9ca | 3 | #include "dmaSPIslave.h" |
shreeshas95 | 0:f0f5102ed9ca | 4 | |
shreeshas95 | 3:e59d61aac1e1 | 5 | #define PAYLOAD_LENGTH 6723 |
shreeshas95 | 1:3cceef118195 | 6 | |
shreeshas95 | 3:e59d61aac1e1 | 7 | #define PAY_SPI_MOSI PTE18 |
shreeshas95 | 3:e59d61aac1e1 | 8 | #define PAY_SPI_MISO PTE19 |
shreeshas95 | 3:e59d61aac1e1 | 9 | #define PAY_SPI_CLK PTE17 |
shreeshas95 | 3:e59d61aac1e1 | 10 | #define PAY_SPI_CS PTE16 |
shreeshas95 | 3:e59d61aac1e1 | 11 | |
shreeshas95 | 3:e59d61aac1e1 | 12 | dmaSPISlave spi(PAY_SPI_MOSI, PAY_SPI_MISO, PAY_SPI_CLK, PAY_SPI_CS); |
shreeshas95 | 0:f0f5102ed9ca | 13 | RawSerial pc(USBTX, USBRX); |
shreeshas95 | 3:e59d61aac1e1 | 14 | //DigitalOut ledg(LED_GREEN); |
shreeshas95 | 3:e59d61aac1e1 | 15 | //DigitalOut ledr(LED_RED); |
shreeshas95 | 0:f0f5102ed9ca | 16 | |
shreeshas95 | 1:3cceef118195 | 17 | bool flag = false; |
shreeshas95 | 1:3cceef118195 | 18 | |
shreeshas95 | 1:3cceef118195 | 19 | void do_this(void){ |
shreeshas95 | 1:3cceef118195 | 20 | flag = true; |
shreeshas95 | 1:3cceef118195 | 21 | } |
shreeshas95 | 3:e59d61aac1e1 | 22 | void do_this2(void){ |
shreeshas95 | 3:e59d61aac1e1 | 23 | flag = true; |
shreeshas95 | 3:e59d61aac1e1 | 24 | } |
shreeshas95 | 1:3cceef118195 | 25 | |
shreeshas95 | 0:f0f5102ed9ca | 26 | int main(){ |
shreeshas95 | 3:e59d61aac1e1 | 27 | // ledr = 1; |
shreeshas95 | 3:e59d61aac1e1 | 28 | // ledg = 1; |
shreeshas95 | 3:e59d61aac1e1 | 29 | pc.baud(1200); |
shreeshas95 | 0:f0f5102ed9ca | 30 | pc.printf("inside main\r\n"); |
shreeshas95 | 1:3cceef118195 | 31 | spi.format(8,0); |
shreeshas95 | 3:e59d61aac1e1 | 32 | spi.frequency(1000000); |
shreeshas95 | 0:f0f5102ed9ca | 33 | |
shreeshas95 | 1:3cceef118195 | 34 | uint8_t buffer[PAYLOAD_LENGTH] = {0}; |
shreeshas95 | 0:f0f5102ed9ca | 35 | pc.printf("welcome to dma test, start sending data now\r\n"); |
shreeshas95 | 2:16545dbc88ae | 36 | |
shreeshas95 | 2:16545dbc88ae | 37 | // initialise the buffer for dma |
shreeshas95 | 2:16545dbc88ae | 38 | spi.bulkRead_init(buffer, PAYLOAD_LENGTH, &do_this); |
shreeshas95 | 2:16545dbc88ae | 39 | // start dma read |
shreeshas95 | 2:16545dbc88ae | 40 | spi.bulkRead_start(); |
shreeshas95 | 3:e59d61aac1e1 | 41 | int count = 0; |
shreeshas95 | 0:f0f5102ed9ca | 42 | |
shreeshas95 | 1:3cceef118195 | 43 | while(true){ |
shreeshas95 | 3:e59d61aac1e1 | 44 | // int i = 0; |
shreeshas95 | 3:e59d61aac1e1 | 45 | // while(i < PAYLOAD_LENGTH){ |
shreeshas95 | 3:e59d61aac1e1 | 46 | // if(spi.receive()){ |
shreeshas95 | 3:e59d61aac1e1 | 47 | // buffer[i] = spi.read(); |
shreeshas95 | 3:e59d61aac1e1 | 48 | // ++i; |
shreeshas95 | 3:e59d61aac1e1 | 49 | // } |
shreeshas95 | 3:e59d61aac1e1 | 50 | // } |
shreeshas95 | 3:e59d61aac1e1 | 51 | // ledr = !ledr; |
shreeshas95 | 3:e59d61aac1e1 | 52 | // for(int j = 0 ; j < PAYLOAD_LENGTH ; ++j){ |
shreeshas95 | 3:e59d61aac1e1 | 53 | // printf("%02x ", buffer[j]); |
shreeshas95 | 3:e59d61aac1e1 | 54 | // } |
shreeshas95 | 3:e59d61aac1e1 | 55 | |
shreeshas95 | 3:e59d61aac1e1 | 56 | |
shreeshas95 | 1:3cceef118195 | 57 | if(flag){ |
shreeshas95 | 3:e59d61aac1e1 | 58 | count++; |
shreeshas95 | 1:3cceef118195 | 59 | flag = false; |
shreeshas95 | 3:e59d61aac1e1 | 60 | // ledg = !ledg; |
shreeshas95 | 2:16545dbc88ae | 61 | |
shreeshas95 | 2:16545dbc88ae | 62 | // for(int i = 0 ; i < PAYLOAD_LENGTH ; ++i){ |
shreeshas95 | 2:16545dbc88ae | 63 | // pc.printf("%02x ", buffer[i]); |
shreeshas95 | 2:16545dbc88ae | 64 | // } |
shreeshas95 | 3:e59d61aac1e1 | 65 | pc.printf("DATA RECEIVED\r\n"); |
shreeshas95 | 3:e59d61aac1e1 | 66 | |
shreeshas95 | 2:16545dbc88ae | 67 | // start dma again after handling the data |
shreeshas95 | 3:e59d61aac1e1 | 68 | if(count == 3){ |
shreeshas95 | 3:e59d61aac1e1 | 69 | count = 0; |
shreeshas95 | 3:e59d61aac1e1 | 70 | spi.bulkRead_end(); |
shreeshas95 | 3:e59d61aac1e1 | 71 | pc.printf("tried END\r\n"); |
shreeshas95 | 3:e59d61aac1e1 | 72 | wait(1); |
shreeshas95 | 3:e59d61aac1e1 | 73 | pc.printf("restarting the procedure\r\n"); |
shreeshas95 | 3:e59d61aac1e1 | 74 | spi.bulkRead_restart(); |
shreeshas95 | 3:e59d61aac1e1 | 75 | spi.bulkRead_start(); |
shreeshas95 | 3:e59d61aac1e1 | 76 | } |
shreeshas95 | 3:e59d61aac1e1 | 77 | else{ |
shreeshas95 | 3:e59d61aac1e1 | 78 | spi.bulkRead_start(); |
shreeshas95 | 3:e59d61aac1e1 | 79 | } |
shreeshas95 | 1:3cceef118195 | 80 | } |
shreeshas95 | 0:f0f5102ed9ca | 81 | } |
shreeshas95 | 0:f0f5102ed9ca | 82 | |
shreeshas95 | 0:f0f5102ed9ca | 83 | } |