test
Dependencies: SimpleDMA mbed-rtos mbed
Fork of spiDMAtest by
Revision 0:f0f5102ed9ca, committed 2015-07-15
- Comitter:
- shreeshas95
- Date:
- Wed Jul 15 11:16:13 2015 +0000
- Child:
- 1:3cceef118195
- Commit message:
- working dma without interrupt
Changed in this revision
--- /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