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

Dependencies:   I2SSlave TLV320 mbed

Fork of i2s_audio_echo by Suga koubou

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers PRAM.cpp Source File

PRAM.cpp

00001 #include "mbed.h"
00002 #include "PRAM.h"
00003 
00004 
00005 PRAM::PRAM (SPI &spi, PinName cs) : _spi(spi), _cs(cs) {
00006     int i;
00007 
00008     _cs = 1;
00009     _spi.frequency(16000000);
00010     wait_ms(10);
00011     
00012     _cs = 0;
00013     _spi.write(CMD_RDID);
00014     printf("RAM Manufacturer ID : %02x\r\n", spi.write(0));
00015     i = (spi.write(0) << 8) | spi.write(0);
00016     printf("RAM Device ID : %04x\r\n", i);
00017     _cs = 1;
00018 }
00019 
00020 PRAM::PRAM (PinName mosi, PinName miso, PinName sclk, PinName cs) : _spi(mosi, miso, sclk), _cs(cs) {
00021 }
00022 
00023 int PRAM::status () {
00024     int r;
00025 
00026     _cs = 0;
00027     _spi.write(CMD_RDSR);
00028     r = _spi.write(0);
00029     _cs = 1;
00030     return r;
00031 }
00032 
00033 int PRAM::write (int addr, char *buf, int len) {
00034     int i;
00035 
00036     while (status() & 1) {
00037         // write in progress
00038         wait_us(1);
00039     }
00040 
00041     _cs = 0;
00042     _spi.write(CMD_WREN);
00043     _cs = 1;
00044     wait_us(1);
00045 
00046     _cs = 0;
00047     _spi.write(CMD_PP_BA);
00048     _spi.write((addr >> 16) & 0xff);
00049     _spi.write((addr >> 8) & 0xff);
00050     _spi.write(addr & 0xff);
00051 
00052     len = len - (addr & 0x3f);
00053     for (i = 0; i < len; i ++) {
00054         _spi.write(buf[i]);
00055     }
00056     _cs = 1;
00057     return i;
00058 }
00059 
00060 int PRAM::read (int addr, char *buf, int len) {
00061     int i;
00062 
00063     while (status() & 1) {
00064         // write in progress
00065         wait_us(1);
00066     }
00067 
00068     _cs = 0;
00069     _spi.write(CMD_READ);
00070     _spi.write((addr >> 16) & 0xff);
00071     _spi.write((addr >> 8) & 0xff);
00072     _spi.write(addr & 0xff);
00073 
00074     for (i = 0; i < len; i ++) {
00075         buf[i] = _spi.write(0);
00076     }
00077     _cs = 1;
00078     return i;
00079 }