Sample program of the mbed Audio Framework for the Nucleo F746ZG

Dependencies:   mbed shimabara unzen_nucleo_f746 amakusa

Revision:
0:a837eeab3ca6
Child:
1:98ddcbbe10ba
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Jun 19 05:47:06 2016 +0000
@@ -0,0 +1,81 @@
+#include "unzen.h"          // audio framework include file
+#include "umb_adau1361a.h"     // audio codec contoler include file
+#include "mbed.h"
+ 
+#define CODEC_I2C_ADDR 0x38
+ 
+DigitalOut myled1(LED1);
+ 
+ 
+   // customer signal processing initialization call back.
+void init_callback(
+           unsigned int block_size     // block size [sample]
+           )
+{
+       // place initialization code here
+}
+ 
+ 
+   // customer signal processing call back.
+void process_callback(
+           float rx_left_buffer[],     // array of the left input samples
+           float rx_right_buffer[],    // array of the right input samples
+           float tx_left_buffer[],     // place to write the left output samples
+           float tx_right_buffer[],    // place to write the left output samples
+           unsigned int block_size     // block size [sample]
+           )
+{
+       // Sample processing
+   for ( int i=0; i<block_size; i++)   // for all sample
+   {
+       tx_left_buffer[i] = rx_left_buffer[i];      // copy from input to output
+       tx_right_buffer[i] = rx_right_buffer[i];
+       
+   }
+}
+ 
+ 
+ 
+int main() 
+{    
+       // I2C is essential to talk with ADAU1361
+   I2C i2c(D14, D15);
+ 
+       // create an audio codec contoler
+   shimabara::UMB_ADAU1361A codec(shimabara::Fs_32, i2c, CODEC_I2C_ADDR ); // Default Fs is 48kHz
+//    shimabara::UMB_ADAU1361A codec(shimabara::Fs_441, i2c, CODEC_I2C_ADDR );
+//    shimabara::UMB_ADAU1361A codec(shimabara::Fs_48, i2c, CODEC_I2C_ADDR );
+//    shimabara::UMB_ADAU1361A codec(shimabara::Fs_96, i2c, CODEC_I2C_ADDR );
+ 
+      // create an audio framework by singlton pattern
+   unzen::Framework audio;
+ 
+        // Set I3C clock to 100kHz
+   i2c.frequency( 100000 );
+ 
+ 
+       // Configure the optional block size of signal processing. By default, it is 1[Sample] 
+//    audio.set_block_size(16);
+ 
+   
+       // Start the ADAU1361. Audio codec starts to generate the I2C signals 
+   codec.start();
+ 
+       // Start the audio framework on ARM processor.  
+   audio.start( init_callback, process_callback);     // path the initializaiton and process call back to framework 
+ 
+ 
+       // periodically changing gain for test
+   while(1)     
+   {
+       for ( int i=-15; i<4; i++ )
+       {
+           codec.set_hp_output_gain( i, i );
+           codec.set_line_output_gain( i, i );
+           myled1 = 1;
+           wait(0.2);
+           myled1 = 0;
+           wait(0.2);
+       }
+   }
+}
\ No newline at end of file