test

Dependencies:   SimpleDMA mbed-rtos mbed

Fork of spiDMAtest by Siva ram

Files at this revision

API Documentation at this revision

Comitter:
shreeshas95
Date:
Wed Jul 15 11:16:13 2015 +0000
Child:
1:3cceef118195
Commit message:
working dma without interrupt

Changed in this revision

SimpleDMA.lib Show annotated file Show diff for this revision Revisions of this file
dmaSPIslave.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SimpleDMA.lib	Wed Jul 15 11:16:13 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/Sissors/code/SimpleDMA/#876f3b55e6f5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dmaSPIslave.h	Wed Jul 15 11:16:13 2015 +0000
@@ -0,0 +1,34 @@
+#ifdef TARGET_KL46Z
+class dmaSPISlave : public SPISlave{
+    public:
+        dmaSPISlave(PinName mosi, PinName miso, PinName sclk, PinName ssel) : SPISlave(mosi, miso, sclk, ssel){
+//            trigger appropriate spi for dma
+            if(_spi.spi == SPI0){
+                read_dma.trigger(Trigger_SPI0_RX);
+            }
+            else{
+                read_dma.trigger(Trigger_SPI1_RX);
+            }
+            
+//            set source for spi slave dma : mosi
+            read_dma.source(&_spi.spi->DL, false);
+        }
+        
+        void bulkRead(uint8_t *read_data, int length){
+//            acquire();
+            _spi.spi->C2 |= SPI_C2_RXDMAE_MASK;
+        
+//            auto increment is true
+            read_dma.destination(read_data, true);
+        
+//            start the read_dma
+            read_dma.start(length);
+
+            while(read_dma.isBusy());
+        
+            _spi.spi->C2 &= ~(SPI_C2_RXDMAE_MASK);
+        }
+    private:
+        SimpleDMA read_dma;
+};
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Jul 15 11:16:13 2015 +0000
@@ -0,0 +1,35 @@
+#include "mbed.h"
+#include "rtos.h"
+#include "SimpleDMA.h"
+#include "dmaSPIslave.h"
+
+dmaSPISlave spi(PTA16, PTA17, PTA15, PTA14);
+RawSerial pc(USBTX, USBRX);
+DigitalOut ledg(LED_GREEN);
+
+int main(){
+    pc.baud(9600);
+    pc.printf("inside main\r\n");
+    spi.format(8,3);
+    spi.frequency(1000000);
+    
+    uint8_t buffer[100] = {0};
+    pc.printf("welcome to dma test, start sending data now\r\n");
+    
+//    int i = 0;
+//    while(i < 100){
+//        if(spi.receive()){
+//            buffer[i] = spi.read();
+//            ++i;
+//            ledg = !ledg;
+//        }
+//    }
+    spi.bulkRead(buffer, 100);
+    
+    for(int i = 0 ; i < 100 ; ++i){
+        pc.printf("%02x ", buffer[i]);
+    }
+    pc.printf("\r\n");
+    
+    return 0;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-rtos.lib	Wed Jul 15 11:16:13 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed-rtos/#5aed8bae1001
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Jul 15 11:16:13 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/da0ca467f8b5
\ No newline at end of file