21
21
/* Includes ------------------------------------------------------------------*/
22
22
#include "main.h"
23
23
#include "fatfs.h"
24
- #include "string.h"
25
- #include "math.h"
26
24
27
25
/* Private includes ----------------------------------------------------------*/
28
26
/* USER CODE BEGIN Includes */
47
45
/* USER CODE END PM */
48
46
49
47
/* Private variables ---------------------------------------------------------*/
50
-
51
48
I2C_HandleTypeDef hi2c1 ;
49
+
52
50
I2S_HandleTypeDef hi2s2 ;
53
51
DMA_HandleTypeDef hdma_spi2_tx ;
54
52
@@ -57,7 +55,7 @@ SD_HandleTypeDef hsd;
57
55
/* USER CODE BEGIN PV */
58
56
59
57
/* Ping-Pong buffer used for audio play */
60
- uint16_t dma_buffer [AUDIO_BUFFER_SIZE ];
58
+ uint16_t dma_buffer [AUDIO_BUFFER_SIZE ];
61
59
62
60
uint32_t AudioPlayStart = 0 ;
63
61
@@ -70,9 +68,6 @@ FRESULT fr;
70
68
FATFS myFAT ;
71
69
UINT br = 0 ;
72
70
73
- float osc_phi = 0 ;
74
- float osc_phi_inc = 440.0f / 44100.0f ; // generating 440HZ
75
-
76
71
/* USER CODE END PV */
77
72
78
73
/* Private function prototypes -----------------------------------------------*/
@@ -99,7 +94,7 @@ int main(void)
99
94
{
100
95
/* USER CODE BEGIN 1 */
101
96
102
- /* USER CODE END 1 */
97
+ /* USER CODE END 1 */
103
98
104
99
/* MCU Configuration--------------------------------------------------------*/
105
100
@@ -128,41 +123,32 @@ int main(void)
128
123
129
124
HAL_Delay (300 );
130
125
131
- // char line[100]; /* Line buffer */
132
-
133
126
fr = f_mount (& myFAT , (TCHAR const * )SDPath , 1 );
134
127
135
128
/*## Open and create a text file #################################*/
136
129
HAL_Delay (300 );
137
130
138
- fr = f_open (& fil , "001 .wav" , FA_READ );
131
+ fr = f_open (& fil , "003 .wav" , FA_READ );
139
132
if (fr ) return (int )fr ;
140
- WaveDataLength = f_size (& fil );
141
- //
142
- // /* Read every line and display it */
143
- // while (f_gets(line, sizeof line, &fil)) {
144
- // HAL_Delay(10);
145
- // }
146
- //
147
- // /* Close the file */
148
- // f_close(&fil);
133
+ // WaveDataLength = f_size(&fil);
134
+
135
+ // start circular dma
136
+ f_rewind (& fil );
137
+ f_read (& fil , & dma_buffer [0 ], AUDIO_BUFFER_SIZE * 2 , & br );
149
138
150
139
/* USER CODE END 2 */
151
140
152
141
/* Infinite loop */
153
142
/* USER CODE BEGIN WHILE */
154
143
while (1 )
155
144
{
156
- // HAL_Delay(1000);
157
145
if (HAL_GPIO_ReadPin (GPIOA , SENSOR_Pin ) == GPIO_PIN_SET )
158
146
{
159
147
HAL_GPIO_WritePin (GPIOA , LED_STATUS_Pin , GPIO_PIN_SET );
160
- f_lseek (& fil , 0 );
161
- f_read (& fil , & dma_buffer [0 ], AUDIO_BUFFER_SIZE , & br );
162
- AudioRemSize = WaveDataLength - AUDIO_BUFFER_SIZE ;
163
- // HAL_I2S_Transmit_DMA(&hi2s2, (uint16_t*)&Audio_Buffer[0], AUDIO_BUFFER_SIZE);
148
+ // f_lseek(&fil, 0);
149
+ // f_read(&fil, &dma_buffer[0], AUDIO_BUFFER_SIZE, &br);
150
+ // AudioRemSize = WaveDataLength - br;
164
151
StartAudioBuffers (& hi2s2 );
165
- HAL_Delay (500 );
166
152
}
167
153
else
168
154
{
@@ -437,34 +423,16 @@ void DMA1_Stream5_IRQHandler(void) // this function must be included to avoid DM
437
423
HAL_DMA_IRQHandler (& hdma_spi2_tx );
438
424
}
439
425
440
- //void FillAudioBuffer (uint32_t *buffer, uint16_t len)
441
- //{
442
- // float a;
443
- // int16_t y;
444
- // uint16_t c;
445
- // for (c = 0; c < len; c++)
446
- // {
447
- // // calculate sin
448
- // a = (float) sin (osc_phi * 6.2832f) * 0.20f;
449
- // osc_phi += osc_phi_inc;
450
- // osc_phi -= (float) ((uint16_t) osc_phi);
451
- // // float to integer
452
- // y = (int16_t) (a * 32767.0f);
453
- // // auf beide kanäle
454
- // buffer [c] = ((uint32_t) (uint16_t) y) << 0 |
455
- // ((uint32_t) (uint16_t) y) << 16;
456
- //
457
- // }
458
- //}
459
-
460
426
void StartAudioBuffers (I2S_HandleTypeDef * hi2s )
461
427
{
462
428
// clear buffer
463
429
// memset (dma_buffer,0, sizeof (dma_buffer ));
464
430
HAL_GPIO_WritePin (GPIOE , LCD_E_Pin , GPIO_PIN_SET );
465
431
HAL_GPIO_WritePin (GPIOE , LCD_DIG1CC_Pin , GPIO_PIN_SET );
466
- // start circular dma
467
- HAL_I2S_Transmit_DMA (hi2s , (uint32_t * ) dma_buffer , AUDIO_BUFFER_SIZE << 1 );
432
+
433
+
434
+ // AudioRemSize = WaveDataLength - br;
435
+ HAL_I2S_Transmit_DMA (hi2s , dma_buffer , AUDIO_BUFFER_SIZE );
468
436
}
469
437
470
438
void HAL_I2S_TxCpltCallback (I2S_HandleTypeDef * hi2s )
@@ -473,41 +441,41 @@ void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s)
473
441
// FillBuffer (&(dma_buffer [AUDIO_BUFFER_SIZE >> 1]), AUDIO_BUFFER_SIZE >> 1);
474
442
f_read (& fil ,
475
443
& dma_buffer [AUDIO_BUFFER_SIZE /2 ],
476
- AUDIO_BUFFER_SIZE / 2 ,
444
+ AUDIO_BUFFER_SIZE ,
477
445
(void * )& br );
478
446
479
- if (AudioRemSize > (AUDIO_BUFFER_SIZE / 2 ))
480
- {
481
- AudioRemSize -= br ;
482
- }
483
- else
484
- {
485
- AudioRemSize = 0 ;
486
- }
487
-
488
- // HAL_GPIO_WritePin(GPIOE, LCD_G_Pin, GPIO_PIN_SET);
489
- // HAL_GPIO_WritePin(GPIOE, LCD_F_Pin, GPIO_PIN_RESET);
447
+ // if(AudioRemSize > (AUDIO_BUFFER_SIZE / 2))
448
+ // {
449
+ // AudioRemSize -= br;
450
+ // }
451
+ // else
452
+ // {
453
+ // AudioRemSize = 0;
454
+ // }
455
+
456
+ HAL_GPIO_WritePin (GPIOE , LCD_G_Pin , GPIO_PIN_SET );
457
+ HAL_GPIO_WritePin (GPIOE , LCD_F_Pin , GPIO_PIN_RESET );
490
458
}
491
459
492
460
void HAL_I2S_TxHalfCpltCallback (I2S_HandleTypeDef * hi2s )
493
461
{
494
462
// first half finished, filling it up again while second half is playing
495
463
f_read (& fil ,
496
464
& dma_buffer [0 ],
497
- AUDIO_BUFFER_SIZE / 2 ,
465
+ AUDIO_BUFFER_SIZE ,
498
466
(void * )& br );
499
467
500
- if (AudioRemSize > (AUDIO_BUFFER_SIZE / 2 ))
501
- {
502
- AudioRemSize -= br ;
503
- }
504
- else
505
- {
506
- AudioRemSize = 0 ;
507
- }
508
-
509
- // HAL_GPIO_WritePin(GPIOE, LCD_F_Pin, GPIO_PIN_SET);
510
- // HAL_GPIO_WritePin(GPIOE, LCD_G_Pin, GPIO_PIN_RESET);
468
+ // if(AudioRemSize > (AUDIO_BUFFER_SIZE / 2))
469
+ // {
470
+ // AudioRemSize -= br;
471
+ // }
472
+ // else
473
+ // {
474
+ // AudioRemSize = 0;
475
+ // }
476
+
477
+ HAL_GPIO_WritePin (GPIOE , LCD_F_Pin , GPIO_PIN_SET );
478
+ HAL_GPIO_WritePin (GPIOE , LCD_G_Pin , GPIO_PIN_RESET );
511
479
// FillBuffer (&(dma_buffer [0]), AUDIO_BUFFER_SIZE >> 1);
512
480
}
513
481
0 commit comments