More readable TLV320 Lib

Dependents:   TalkThrough

Committer:
hollegha
Date:
Wed Oct 22 09:23:47 2014 +0000
Revision:
0:808bb0b9cf45
More readable TLV320-Lib

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hollegha 0:808bb0b9cf45 1
hollegha 0:808bb0b9cf45 2 #include "mbed.h"
hollegha 0:808bb0b9cf45 3 #include "math.h"
hollegha 0:808bb0b9cf45 4
hollegha 0:808bb0b9cf45 5 #ifndef __MBED_I2SSLAVE_H__
hollegha 0:808bb0b9cf45 6 #define __MBED_I2SSLAVE_H__
hollegha 0:808bb0b9cf45 7
hollegha 0:808bb0b9cf45 8 extern FunctionPointer akjnh3489v8ncv;
hollegha 0:808bb0b9cf45 9
hollegha 0:808bb0b9cf45 10
hollegha 0:808bb0b9cf45 11 class I2SSlave{
hollegha 0:808bb0b9cf45 12 public:
hollegha 0:808bb0b9cf45 13 /* @param tx_sda Transmitter serial data line
hollegha 0:808bb0b9cf45 14 * @param tx_ws Transmitter word select line
hollegha 0:808bb0b9cf45 15 * @param clk Shared transmitter/receiver clock line
hollegha 0:808bb0b9cf45 16 * @param rx_sda Receiver serial data line
hollegha 0:808bb0b9cf45 17 * @param rx_ws Receiver word select line */
hollegha 0:808bb0b9cf45 18 I2SSlave(PinName tx_sda, PinName tx_ws, PinName clk, PinName rx_sda, PinName rx_ws);
hollegha 0:808bb0b9cf45 19
hollegha 0:808bb0b9cf45 20 // bit Set the number of bits per write
hollegha 0:808bb0b9cf45 21 // STEREO (0) or MONO (1) mode
hollegha 0:808bb0b9cf45 22 void format(int bit, bool mode);
hollegha 0:808bb0b9cf45 23
hollegha 0:808bb0b9cf45 24 void Write(int32_t aLeft, int32_t aRight);
hollegha 0:808bb0b9cf45 25
hollegha 0:808bb0b9cf45 26 void Read(int32_t* aLeft, int32_t* aRight);
hollegha 0:808bb0b9cf45 27
hollegha 0:808bb0b9cf45 28 // Mode to enable - NONE, TRANSMIT only, RECEIVE only, BOTH
hollegha 0:808bb0b9cf45 29 // Enables tx/rx interrupts
hollegha 0:808bb0b9cf45 30 void start(int mode);
hollegha 0:808bb0b9cf45 31
hollegha 0:808bb0b9cf45 32 void Start();
hollegha 0:808bb0b9cf45 33 void Stop();
hollegha 0:808bb0b9cf45 34
hollegha 0:808bb0b9cf45 35 void attach(void(*fptr)(void)){
hollegha 0:808bb0b9cf45 36 akjnh3489v8ncv.attach(fptr);
hollegha 0:808bb0b9cf45 37 }
hollegha 0:808bb0b9cf45 38
hollegha 0:808bb0b9cf45 39 template<typename T>
hollegha 0:808bb0b9cf45 40 void attach(T *tptr, void(T::*mptr)(void)){
hollegha 0:808bb0b9cf45 41 akjnh3489v8ncv.attach(tptr, mptr);
hollegha 0:808bb0b9cf45 42 }
hollegha 0:808bb0b9cf45 43
hollegha 0:808bb0b9cf45 44 // bit0: receive/transmit interrupt active
hollegha 0:808bb0b9cf45 45 // bit1: receive/transmit DMA request 1
hollegha 0:808bb0b9cf45 46 // bit2: receive/transmit DMA request 2
hollegha 0:808bb0b9cf45 47 // bit[11:8]: receive FIFO level
hollegha 0:808bb0b9cf45 48 // bit[19:16]: transmit FIFO level
hollegha 0:808bb0b9cf45 49 int status();
hollegha 0:808bb0b9cf45 50
hollegha 0:808bb0b9cf45 51 int GetRxLevel();
hollegha 0:808bb0b9cf45 52 int GetTxLevel();
hollegha 0:808bb0b9cf45 53
hollegha 0:808bb0b9cf45 54 //defines
hollegha 0:808bb0b9cf45 55 #define STEREO 0
hollegha 0:808bb0b9cf45 56 #define MONO 1
hollegha 0:808bb0b9cf45 57
hollegha 0:808bb0b9cf45 58 #define I2SFIFO_EMPTY 0
hollegha 0:808bb0b9cf45 59 #define I2SFIFO_FULL 8
hollegha 0:808bb0b9cf45 60
hollegha 0:808bb0b9cf45 61 #define RAM_LENGTH 1024
hollegha 0:808bb0b9cf45 62 #define RAM_LIMIT (RAM_LENGTH - 1)
hollegha 0:808bb0b9cf45 63 #define PTR_MAX ((RAM_LENGTH / 8) - 1)
hollegha 0:808bb0b9cf45 64
hollegha 0:808bb0b9cf45 65 #define NONE 0
hollegha 0:808bb0b9cf45 66 #define TRANSMIT 1
hollegha 0:808bb0b9cf45 67 #define RECEIVE 2
hollegha 0:808bb0b9cf45 68 #define BOTH 3
hollegha 0:808bb0b9cf45 69
hollegha 0:808bb0b9cf45 70 private:
hollegha 0:808bb0b9cf45 71 /** I2S intitalize function
hollegha 0:808bb0b9cf45 72 *
hollegha 0:808bb0b9cf45 73 * @param tx_sda Transmitter serial data line
hollegha 0:808bb0b9cf45 74 * @param tx_ws Transmitter word select line
hollegha 0:808bb0b9cf45 75 * @param clk Shared transmitter/receiver clock line
hollegha 0:808bb0b9cf45 76 * @param rx_sda Receiver serial data line
hollegha 0:808bb0b9cf45 77 * @param rx_ws Receiver word select line
hollegha 0:808bb0b9cf45 78 * @return Returns 0 for successful initialisation, -1 for an error
hollegha 0:808bb0b9cf45 79 */
hollegha 0:808bb0b9cf45 80 int initialize_(PinName tx_sda, PinName tx_ws, PinName clk, PinName rx_sda, PinName rx_ws);
hollegha 0:808bb0b9cf45 81 /** Set internal clock divide by rate
hollegha 0:808bb0b9cf45 82 *
hollegha 0:808bb0b9cf45 83 * @param divideBy Divide by 1, 2, 4 or 8
hollegha 0:808bb0b9cf45 84 */
hollegha 0:808bb0b9cf45 85 void setClocks_(int divideBy);
hollegha 0:808bb0b9cf45 86 /** Set up the pins on the processor itself
hollegha 0:808bb0b9cf45 87 *
hollegha 0:808bb0b9cf45 88 * @param tx_sda Transmitter serial data line
hollegha 0:808bb0b9cf45 89 * @param tx_ws Transmitter word select line
hollegha 0:808bb0b9cf45 90 * @param clk Shared transmitter/receiver clock line
hollegha 0:808bb0b9cf45 91 * @param rx_sda Receiver serial data line
hollegha 0:808bb0b9cf45 92 * @param rx_ws Receiver word select line
hollegha 0:808bb0b9cf45 93 */
hollegha 0:808bb0b9cf45 94 void setPins_(PinName tx_sda, PinName tx_ws, PinName clk, PinName rx_sda, PinName rx_ws);
hollegha 0:808bb0b9cf45 95 /** Set the data transmission format
hollegha 0:808bb0b9cf45 96 *
hollegha 0:808bb0b9cf45 97 * @param bit Set the number of bits per write
hollegha 0:808bb0b9cf45 98 * @param mode Set STEREO (0) or MONO (1) mode
hollegha 0:808bb0b9cf45 99 */
hollegha 0:808bb0b9cf45 100 void format_(int bit, bool mode);
hollegha 0:808bb0b9cf45 101
hollegha 0:808bb0b9cf45 102 // Set slave mode
hollegha 0:808bb0b9cf45 103 void modeConfig_(void);
hollegha 0:808bb0b9cf45 104
hollegha 0:808bb0b9cf45 105 /** Store PinName values
hollegha 0:808bb0b9cf45 106 *
hollegha 0:808bb0b9cf45 107 * @param tx_sda Transmitter serial data line
hollegha 0:808bb0b9cf45 108 * @param tx_ws Transmitter word select line
hollegha 0:808bb0b9cf45 109 * @param clk Shared transmitter/receiver clock line
hollegha 0:808bb0b9cf45 110 * @param rx_sda Receiver serial data line
hollegha 0:808bb0b9cf45 111 * @param rx_ws Receiver word select line
hollegha 0:808bb0b9cf45 112 */
hollegha 0:808bb0b9cf45 113 void storePins_(PinName tx_sda, PinName tx_ws, PinName clk, PinName rx_sda, PinName rx_ws);
hollegha 0:808bb0b9cf45 114 //variables
hollegha 0:808bb0b9cf45 115 int bit_;
hollegha 0:808bb0b9cf45 116 bool mode_;
hollegha 0:808bb0b9cf45 117 PinName tx_sda_;
hollegha 0:808bb0b9cf45 118 PinName tx_ws_;
hollegha 0:808bb0b9cf45 119 PinName clk_;
hollegha 0:808bb0b9cf45 120 PinName rx_sda_;
hollegha 0:808bb0b9cf45 121 PinName rx_ws_;
hollegha 0:808bb0b9cf45 122 };
hollegha 0:808bb0b9cf45 123
hollegha 0:808bb0b9cf45 124 #endif /*__MBED_I2S_H__*/
hollegha 0:808bb0b9cf45 125
hollegha 0:808bb0b9cf45 126