16bit resolution PWM wave player with SD card, super lite version.

Dependencies:   mbed DirectSPI FastPWM

Supported boards (confirmed):
Nucleo-F030R8
Nucleo-L152RE
Nucleo-F401RE
Nucleo-F411RE

Only compilation is OK (unchecked, but may work):
Nucleo-L073RZ
Nucleo-F334R8
Nucleo-F303RE
Nucleo-F429ZI
Nucleo-F446RE
Nucleo-F446ZE
Nucleo-L476RG

Supported SD card:
SDSC/SDHC card,
FAT16 and FAT32.
(1) At first, format SD card using SD Card Formatter
https://www.sdcard.org/downloads/formatter_4/index.html
(2) Copy PCM wav files to the SD card.
Supported file:
PCM wave file that have file extension ".wav" on root directory.
16bit/8bit, fs(sampling rate)=32kHz,44.1kHz,48kHz.
Stereo/Mono.

Hardware setting:
Refer to the file port_setting.txt
PWM output port:
Left upper(Hi) PWM 8bit out: PB_5 (TM3_CH2)
Right upper(Hi) PWM 8bit out: PB4 (TM3_CH1)
Left lower(Low) PWM 8bit out: PC_9 (TM3_CH4)
Right lower(Low) PWM 8bit out: PC_8 (TM3_CH3)
http://mpu.up.seesaa.net/image/16bit-wave-player-output-schema.png
USER_BUTTON: PC_13(default button)
Next song: One click in Play mode.
Pause : Push long time .
Play : One click from Pause.

Files at this revision

API Documentation at this revision

Comitter:
mimi3
Date:
Fri Oct 09 07:47:36 2020 +0900
Parent:
20:c7066a530b1f
Commit message:
trivial change

Changed in this revision

wave_player_main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/wave_player_main.cpp	Fri Oct 09 07:38:47 2020 +0900
+++ b/wave_player_main.cpp	Fri Oct 09 07:47:36 2020 +0900
@@ -144,7 +144,7 @@
     #endif
 
     sbit btn_pause_prev = false;
-    #define fbtn_next_song_on  btn_short_on
+    #define fbtn_next_song_on btn_short_on
     #define btn_pause_on      btn_long_on
     #define btn_power_off_on  btn_long_on2
 
@@ -164,6 +164,7 @@
         //; wait 10msec Ticker flag
         while ( !isTickTimer_IF() ) {
             if( ldwSongFileSectors == 0 ){  //; found end of file
+                fbtn_next_song_on = true;
                  break;                     //promptly exit and prepare next song
             }
             #if HAVE_LED_IND_PWM
@@ -184,7 +185,7 @@
         /*-------------------
          Next song and start
         -------------------*/
-        if ( ( ldwSongFileSectors == 0 ) | fbtn_next_song_on ){
+        if ( fbtn_next_song_on ){
             pwm_period_timer_music_stop();
             fbtn_next_song_on = false;
             sd_stop_read();
@@ -288,9 +289,9 @@
             -------------------*/
             if( fbtn_next_song_on){
                 if( !fPlaying){ //          ; if during pause
-                    fPlaying         = true ; //release pause
+                    fPlaying          = true ; //release pause
                     fbtn_next_song_on = false;
-                    btn_pause_on     = false;
+                    btn_pause_on      = false;
                     pwm_period_timer_music_start();
                 }
             }