LPCXpresso 4337 + UMB-AUAD1361A を使用したオーディオ・サンプル。

Dependencies:   mbed shimabara unzen_lpcxpresso_4337

Committer:
shorie
Date:
Sat Jun 11 05:22:50 2016 +0000
Revision:
0:dd5efda2d8eb
????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shorie 0:dd5efda2d8eb 1 #include "unzen.h" // audio framework include file
shorie 0:dd5efda2d8eb 2 #include "umb_adau1361a.h" // audio codec contoler include file
shorie 0:dd5efda2d8eb 3 #include "mbed.h"
shorie 0:dd5efda2d8eb 4
shorie 0:dd5efda2d8eb 5 #define CODEC_I2C_ADDR 0x38
shorie 0:dd5efda2d8eb 6
shorie 0:dd5efda2d8eb 7 DigitalOut myled1(LED1);
shorie 0:dd5efda2d8eb 8
shorie 0:dd5efda2d8eb 9
shorie 0:dd5efda2d8eb 10 // customer signal processing initialization call back.
shorie 0:dd5efda2d8eb 11 void init_callback(
shorie 0:dd5efda2d8eb 12 unsigned int block_size // block size [sample]
shorie 0:dd5efda2d8eb 13 )
shorie 0:dd5efda2d8eb 14 {
shorie 0:dd5efda2d8eb 15 // place initialization code here
shorie 0:dd5efda2d8eb 16 }
shorie 0:dd5efda2d8eb 17
shorie 0:dd5efda2d8eb 18
shorie 0:dd5efda2d8eb 19 // customer signal processing call back.
shorie 0:dd5efda2d8eb 20 void process_callback(
shorie 0:dd5efda2d8eb 21 float rx_left_buffer[], // array of the left input samples
shorie 0:dd5efda2d8eb 22 float rx_right_buffer[], // array of the right input samples
shorie 0:dd5efda2d8eb 23 float tx_left_buffer[], // place to write the left output samples
shorie 0:dd5efda2d8eb 24 float tx_right_buffer[], // place to write the left output samples
shorie 0:dd5efda2d8eb 25 unsigned int block_size // block size [sample]
shorie 0:dd5efda2d8eb 26 )
shorie 0:dd5efda2d8eb 27 {
shorie 0:dd5efda2d8eb 28 // Sample processing
shorie 0:dd5efda2d8eb 29 for ( int i=0; i<block_size; i++) // for all sample
shorie 0:dd5efda2d8eb 30 {
shorie 0:dd5efda2d8eb 31 tx_left_buffer[i] = rx_left_buffer[i]; // copy from input to output
shorie 0:dd5efda2d8eb 32 tx_right_buffer[i] = rx_right_buffer[i];
shorie 0:dd5efda2d8eb 33
shorie 0:dd5efda2d8eb 34 }
shorie 0:dd5efda2d8eb 35 }
shorie 0:dd5efda2d8eb 36
shorie 0:dd5efda2d8eb 37
shorie 0:dd5efda2d8eb 38
shorie 0:dd5efda2d8eb 39 int main()
shorie 0:dd5efda2d8eb 40 {
shorie 0:dd5efda2d8eb 41 // I2C is essential to talk with ADAU1361
shorie 0:dd5efda2d8eb 42 I2C i2c(SDA, SCL);
shorie 0:dd5efda2d8eb 43
shorie 0:dd5efda2d8eb 44 // create an audio codec contoler
shorie 0:dd5efda2d8eb 45 shimabara::UMB_ADAU1361A codec(shimabara::Fs_32, i2c, CODEC_I2C_ADDR ); // Default Fs is 48kHz
shorie 0:dd5efda2d8eb 46 // shimabara::UMB_ADAU1361A codec(shimabara::Fs_441, i2c, CODEC_I2C_ADDR );
shorie 0:dd5efda2d8eb 47 // shimabara::UMB_ADAU1361A codec(shimabara::Fs_48, i2c, CODEC_I2C_ADDR );
shorie 0:dd5efda2d8eb 48 // shimabara::UMB_ADAU1361A codec(shimabara::Fs_96, i2c, CODEC_I2C_ADDR );
shorie 0:dd5efda2d8eb 49
shorie 0:dd5efda2d8eb 50 // create an audio framework by singlton pattern
shorie 0:dd5efda2d8eb 51 unzen::Framework audio;
shorie 0:dd5efda2d8eb 52
shorie 0:dd5efda2d8eb 53 // Set I3C clock to 100kHz
shorie 0:dd5efda2d8eb 54 i2c.frequency( 100000 );
shorie 0:dd5efda2d8eb 55
shorie 0:dd5efda2d8eb 56
shorie 0:dd5efda2d8eb 57 // Configure the optional block size of signal processing. By default, it is 1[Sample]
shorie 0:dd5efda2d8eb 58 // audio.set_block_size(16);
shorie 0:dd5efda2d8eb 59
shorie 0:dd5efda2d8eb 60
shorie 0:dd5efda2d8eb 61 // Start the ADAU1361. Audio codec starts to generate the I2C signals
shorie 0:dd5efda2d8eb 62 codec.start();
shorie 0:dd5efda2d8eb 63
shorie 0:dd5efda2d8eb 64 // Start the audio framework on ARM processor.
shorie 0:dd5efda2d8eb 65 audio.start( init_callback, process_callback); // path the initializaiton and process call back to framework
shorie 0:dd5efda2d8eb 66
shorie 0:dd5efda2d8eb 67
shorie 0:dd5efda2d8eb 68 // periodically changing gain for test
shorie 0:dd5efda2d8eb 69 while(1)
shorie 0:dd5efda2d8eb 70 {
shorie 0:dd5efda2d8eb 71 for ( int i=-15; i<4; i++ )
shorie 0:dd5efda2d8eb 72 {
shorie 0:dd5efda2d8eb 73 codec.set_hp_output_gain( i, i );
shorie 0:dd5efda2d8eb 74 codec.set_line_output_gain( i, i );
shorie 0:dd5efda2d8eb 75 myled1 = 1;
shorie 0:dd5efda2d8eb 76 wait(0.2);
shorie 0:dd5efda2d8eb 77 myled1 = 0;
shorie 0:dd5efda2d8eb 78 wait(0.2);
shorie 0:dd5efda2d8eb 79 }
shorie 0:dd5efda2d8eb 80 }
shorie 0:dd5efda2d8eb 81 }