sample and play see http://mbed.org/users/okini3939/notebook/I2S_TLV320AIC23B/

Dependencies:   I2SSlave TLV320 mbed

Fork of i2s_audio_echo by Suga koubou

Committer:
okini3939
Date:
Tue Dec 11 02:12:14 2012 +0000
Revision:
1:2aeba027f61e
sampler

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 1:2aeba027f61e 1 #include "mbed.h"
okini3939 1:2aeba027f61e 2 #include "PRAM.h"
okini3939 1:2aeba027f61e 3
okini3939 1:2aeba027f61e 4
okini3939 1:2aeba027f61e 5 PRAM::PRAM (SPI &spi, PinName cs) : _spi(spi), _cs(cs) {
okini3939 1:2aeba027f61e 6 int i;
okini3939 1:2aeba027f61e 7
okini3939 1:2aeba027f61e 8 _cs = 1;
okini3939 1:2aeba027f61e 9 _spi.frequency(16000000);
okini3939 1:2aeba027f61e 10 wait_ms(10);
okini3939 1:2aeba027f61e 11
okini3939 1:2aeba027f61e 12 _cs = 0;
okini3939 1:2aeba027f61e 13 _spi.write(CMD_RDID);
okini3939 1:2aeba027f61e 14 printf("RAM Manufacturer ID : %02x\r\n", spi.write(0));
okini3939 1:2aeba027f61e 15 i = (spi.write(0) << 8) | spi.write(0);
okini3939 1:2aeba027f61e 16 printf("RAM Device ID : %04x\r\n", i);
okini3939 1:2aeba027f61e 17 _cs = 1;
okini3939 1:2aeba027f61e 18 }
okini3939 1:2aeba027f61e 19
okini3939 1:2aeba027f61e 20 PRAM::PRAM (PinName mosi, PinName miso, PinName sclk, PinName cs) : _spi(mosi, miso, sclk), _cs(cs) {
okini3939 1:2aeba027f61e 21 }
okini3939 1:2aeba027f61e 22
okini3939 1:2aeba027f61e 23 int PRAM::status () {
okini3939 1:2aeba027f61e 24 int r;
okini3939 1:2aeba027f61e 25
okini3939 1:2aeba027f61e 26 _cs = 0;
okini3939 1:2aeba027f61e 27 _spi.write(CMD_RDSR);
okini3939 1:2aeba027f61e 28 r = _spi.write(0);
okini3939 1:2aeba027f61e 29 _cs = 1;
okini3939 1:2aeba027f61e 30 return r;
okini3939 1:2aeba027f61e 31 }
okini3939 1:2aeba027f61e 32
okini3939 1:2aeba027f61e 33 int PRAM::write (int addr, char *buf, int len) {
okini3939 1:2aeba027f61e 34 int i;
okini3939 1:2aeba027f61e 35
okini3939 1:2aeba027f61e 36 while (status() & 1) {
okini3939 1:2aeba027f61e 37 // write in progress
okini3939 1:2aeba027f61e 38 wait_us(1);
okini3939 1:2aeba027f61e 39 }
okini3939 1:2aeba027f61e 40
okini3939 1:2aeba027f61e 41 _cs = 0;
okini3939 1:2aeba027f61e 42 _spi.write(CMD_WREN);
okini3939 1:2aeba027f61e 43 _cs = 1;
okini3939 1:2aeba027f61e 44 wait_us(1);
okini3939 1:2aeba027f61e 45
okini3939 1:2aeba027f61e 46 _cs = 0;
okini3939 1:2aeba027f61e 47 _spi.write(CMD_PP_BA);
okini3939 1:2aeba027f61e 48 _spi.write((addr >> 16) & 0xff);
okini3939 1:2aeba027f61e 49 _spi.write((addr >> 8) & 0xff);
okini3939 1:2aeba027f61e 50 _spi.write(addr & 0xff);
okini3939 1:2aeba027f61e 51
okini3939 1:2aeba027f61e 52 len = len - (addr & 0x3f);
okini3939 1:2aeba027f61e 53 for (i = 0; i < len; i ++) {
okini3939 1:2aeba027f61e 54 _spi.write(buf[i]);
okini3939 1:2aeba027f61e 55 }
okini3939 1:2aeba027f61e 56 _cs = 1;
okini3939 1:2aeba027f61e 57 return i;
okini3939 1:2aeba027f61e 58 }
okini3939 1:2aeba027f61e 59
okini3939 1:2aeba027f61e 60 int PRAM::read (int addr, char *buf, int len) {
okini3939 1:2aeba027f61e 61 int i;
okini3939 1:2aeba027f61e 62
okini3939 1:2aeba027f61e 63 while (status() & 1) {
okini3939 1:2aeba027f61e 64 // write in progress
okini3939 1:2aeba027f61e 65 wait_us(1);
okini3939 1:2aeba027f61e 66 }
okini3939 1:2aeba027f61e 67
okini3939 1:2aeba027f61e 68 _cs = 0;
okini3939 1:2aeba027f61e 69 _spi.write(CMD_READ);
okini3939 1:2aeba027f61e 70 _spi.write((addr >> 16) & 0xff);
okini3939 1:2aeba027f61e 71 _spi.write((addr >> 8) & 0xff);
okini3939 1:2aeba027f61e 72 _spi.write(addr & 0xff);
okini3939 1:2aeba027f61e 73
okini3939 1:2aeba027f61e 74 for (i = 0; i < len; i ++) {
okini3939 1:2aeba027f61e 75 buf[i] = _spi.write(0);
okini3939 1:2aeba027f61e 76 }
okini3939 1:2aeba027f61e 77 _cs = 1;
okini3939 1:2aeba027f61e 78 return i;
okini3939 1:2aeba027f61e 79 }