sample and play see http://mbed.org/users/okini3939/notebook/I2S_TLV320AIC23B/
Dependencies: I2SSlave TLV320 mbed
Fork of i2s_audio_echo by
PRAM.cpp@1:2aeba027f61e, 2012-12-11 (annotated)
- Committer:
- okini3939
- Date:
- Tue Dec 11 02:12:14 2012 +0000
- Revision:
- 1:2aeba027f61e
sampler
Who changed what in which revision?
User | Revision | Line number | New 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 | } |