sample and play see http://mbed.org/users/okini3939/notebook/I2S_TLV320AIC23B/
Dependencies: I2SSlave TLV320 mbed
Fork of i2s_audio_echo by
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 }
Generated on Fri Jul 15 2022 05:24:40 by 1.7.2