Simple version of COM_MNG_TMTC_CODE for IITMSAT.

Dependencies:   mbed-rtos mbed FreescaleIAP SimpleDMA

Committer:
ee12b079
Date:
Sat Apr 23 07:58:00 2016 +0000
Revision:
183:e7332d6bba93
Parent:
178:5b42117b2ef1
testing 23 Apr checking i2c

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shreeshas95 101:bece931236a2 1 #ifdef TARGET_KL46Z
shreeshas95 101:bece931236a2 2 class dmaSPISlave : public SPISlave{
shreeshas95 101:bece931236a2 3 public:
shreeshas95 101:bece931236a2 4 /*
shreeshas95 101:bece931236a2 5 @brief: constructor : initialise the spi slave pins
shreeshas95 101:bece931236a2 6 @param: mosi, miso, sclk, ssel
shreeshas95 101:bece931236a2 7 @return: none
shreeshas95 101:bece931236a2 8 */
shreeshas95 101:bece931236a2 9 dmaSPISlave(PinName mosi, PinName miso, PinName sclk, PinName ssel) : SPISlave(mosi, miso, sclk, ssel){
shreeshas95 101:bece931236a2 10 // trigger appropriate spi for dma
shreeshas95 101:bece931236a2 11 if(_spi.spi == SPI0){
shreeshas95 101:bece931236a2 12 read_dma.trigger(Trigger_SPI0_RX);
shreeshas95 101:bece931236a2 13 }
shreeshas95 101:bece931236a2 14 else{
shreeshas95 101:bece931236a2 15 read_dma.trigger(Trigger_SPI1_RX);
shreeshas95 101:bece931236a2 16 }
shreeshas95 101:bece931236a2 17
shreeshas95 101:bece931236a2 18 // set source for spi slave dma : mosi
shreeshas95 101:bece931236a2 19 read_dma.source(&_spi.spi->DL, false);
shreeshas95 101:bece931236a2 20 }
shreeshas95 101:bece931236a2 21
shreeshas95 101:bece931236a2 22 /*
shreeshas95 101:bece931236a2 23 @brief: initialise the dma buffer to store the recevied data
shreeshas95 101:bece931236a2 24 @param: read_data : pointer to the buffer
shreeshas95 101:bece931236a2 25 len : length in bytes to store in the buffer
shreeshas95 101:bece931236a2 26 fun : address of the function to attach to the dma interrupt, interrupt is called when the len num of bytes are written to the buffer
shreeshas95 101:bece931236a2 27 @return: none
shreeshas95 101:bece931236a2 28 */
shreeshas95 101:bece931236a2 29 void bulkRead_init(uint8_t *read_data, int len, void (*fun)(void) ){
shreeshas95 101:bece931236a2 30 // acquire();
shreeshas95 101:bece931236a2 31 _spi.spi->C2 |= SPI_C2_RXDMAE_MASK;
shreeshas95 101:bece931236a2 32
shreeshas95 101:bece931236a2 33 // auto increment is true
shreeshas95 101:bece931236a2 34 read_dma.destination(read_data, true);
shreeshas95 101:bece931236a2 35
shreeshas95 101:bece931236a2 36 // specify length
shreeshas95 101:bece931236a2 37 length = len;
shreeshas95 101:bece931236a2 38
shreeshas95 101:bece931236a2 39 // attach interrupt function
shreeshas95 101:bece931236a2 40 read_dma.attach(fun);
shreeshas95 101:bece931236a2 41
shreeshas95 101:bece931236a2 42 }
shreeshas95 101:bece931236a2 43
shreeshas95 101:bece931236a2 44 /*
shreeshas95 101:bece931236a2 45 @brief: start the dma read process : has to be done everytime the buffer gets filled, can be used repeatedly
shreeshas95 101:bece931236a2 46 @param: none
shreeshas95 101:bece931236a2 47 @return: none
shreeshas95 101:bece931236a2 48 */
shreeshas95 101:bece931236a2 49 void bulkRead_start(){
shreeshas95 101:bece931236a2 50 // start the read_dma
shreeshas95 101:bece931236a2 51 read_dma.start(length);
shreeshas95 101:bece931236a2 52 }
shreeshas95 101:bece931236a2 53
shreeshas95 101:bece931236a2 54 /*
ee12b079 178:5b42117b2ef1 55 @brief: end dma process and return back to normal spi mode, there should not be an unfinished 'start' when running end
shreeshas95 101:bece931236a2 56 @param: none
shreeshas95 101:bece931236a2 57 @return: none
shreeshas95 101:bece931236a2 58 */
shreeshas95 101:bece931236a2 59 void bulkRead_end(){
shreeshas95 101:bece931236a2 60 // turn off dma
shreeshas95 101:bece931236a2 61 _spi.spi->C2 &= ~(SPI_C2_RXDMAE_MASK);
shreeshas95 101:bece931236a2 62 }
shreeshas95 101:bece931236a2 63
ee12b079 178:5b42117b2ef1 64 /*
ee12b079 178:5b42117b2ef1 65 @brief: restart the dma process after 'end'ing
ee12b079 178:5b42117b2ef1 66 @param: none
ee12b079 178:5b42117b2ef1 67 @return: none
ee12b079 178:5b42117b2ef1 68 */
ee12b079 178:5b42117b2ef1 69 void bulkRead_restart(){
ee12b079 178:5b42117b2ef1 70 _spi.spi->C2 |= SPI_C2_RXDMAE_MASK;
ee12b079 178:5b42117b2ef1 71 }
shreeshas95 101:bece931236a2 72 private:
shreeshas95 101:bece931236a2 73 int length;
shreeshas95 101:bece931236a2 74 SimpleDMA read_dma;
shreeshas95 101:bece931236a2 75 };
shreeshas95 101:bece931236a2 76 #endif