A test program for the TLV320, Generates some sine waves.
Dependencies: I2S TLV320 mbed sinelookup
Revision 0:63b7102aab3e, committed 2012-09-19
- Comitter:
- p07gbar
- Date:
- Wed Sep 19 13:18:12 2012 +0000
- Child:
- 1:f1ddb053b49a
- Commit message:
- Working
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/I2S.lib Wed Sep 19 13:18:12 2012 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/p07gbar/code/I2S/#455d5826751b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TLV320.lib Wed Sep 19 13:18:12 2012 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/p07gbar/code/TLV320/#a68f7c573e8c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Sep 19 13:18:12 2012 +0000 @@ -0,0 +1,85 @@ +#include "mbed.h" +#include "sinelookup.h" +#include "TLV320.h" +#include "I2S.h" + +#define SAMPLERATE 48000 + + +TLV320 codec(p9, p10); +I2S i2s(I2S_TRANSMIT, p5, p6, p7); + +AnalogIn aIn(p19); +AnalogIn vol(p20); + +float phase_l; +float phase_r; +int minibuf[16]; +float skipper; +float volume; +float phase_kill; + + +extern "C" void HardFault_Handler() +{ + error("Hard Fault!\n"); +} + + +void play(void) +{ + int to_write = i2s.max_fifo_points() - (i2s.fifo_points()); + for(int i = 0; i < to_write; i+=2) { + minibuf[i] = int(float(sine16lookup[int(phase_l)])*volume); + //minibuf[i] = int(sine16lookup[int(phase_l)]); + minibuf[i+1] = int(float(sine16lookup[int(phase_r)])*volume); + phase_l+=skipper; + phase_r = phase_l + phase_kill; + while(phase_l >= SINE16LENGTH) { + phase_l -= SINE16LENGTH; + } + + while(phase_r >= SINE16LENGTH) { + phase_r -= SINE16LENGTH; + } + while(phase_r< 0) phase_r += SINE16LENGTH; + } + i2s.write(minibuf, to_write); +} + +/* main */ +int main() +{ + skipper = (aIn*49)+1; + + codec.power(true); + codec.frequency(SAMPLERATE); + codec.wordsize(16); + codec.master(false); + codec.headphone_volume(0.5); + codec.start(); + + i2s.frequency(SAMPLERATE); + i2s.wordsize(16); + i2s.stereomono(I2S_STEREO); + i2s.masterslave(I2S_MASTER); + i2s.attach(&play); + i2s.start(); + + while(1) + { + skipper = (aIn*30)+1; + + volume = 1; + phase_kill = (vol-0.5)*400; + + //printf("Skipper:%f, %i, %i\n\r",skipper, to_write,i2s.fifo_level()); + + /*if(flag) + { + printf("."); + flag = false; + }*/ + } + +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Sep 19 13:18:12 2012 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/cd19af002ccc \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sinelookup.lib Wed Sep 19 13:18:12 2012 +0000 @@ -0,0 +1,1 @@ +sinelookup#9099a1ada151