Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BSP_DISCO_F746NG
Revision 5:66c230f74325, committed 2019-11-20
- Comitter:
- Jerome Coutant
- Date:
- Wed Nov 20 11:10:32 2019 +0100
- Parent:
- 4:bf9ab5993081
- Commit message:
- Update with STM32Cube_FW_F7_V1.15.0
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Wed Nov 20 11:10:32 2019 +0100 @@ -0,0 +1,2 @@ +BUILD +mbed-os/
--- a/AUDIO_DISCO_F746NG.lib Thu Jun 08 13:21:00 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -https://developer.mbed.org/teams/ST/code/AUDIO_DISCO_F746NG/#7046ce26b7ed
--- a/BSP_DISCO_F746NG.lib Thu Jun 08 13:21:00 2017 +0000 +++ b/BSP_DISCO_F746NG.lib Wed Nov 20 11:10:32 2019 +0100 @@ -1,1 +1,1 @@ -https://developer.mbed.org/teams/ST/code/BSP_DISCO_F746NG/#56384bddaba5 +https://mbed.org/teams/ST/code/BSP_DISCO_F746NG/#1050c589b2ad
--- a/SDRAM_DISCO_F746NG.lib Thu Jun 08 13:21:00 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -https://developer.mbed.org/teams/ST/code/SDRAM_DISCO_F746NG/#370f402a2219
--- a/main.cpp Thu Jun 08 13:21:00 2017 +0000
+++ b/main.cpp Wed Nov 20 11:10:32 2019 +0100
@@ -1,66 +1,69 @@
#include "mbed.h"
-#include "AUDIO_DISCO_F746NG.h"
-#include "SDRAM_DISCO_F746NG.h"
+#include "stm32746g_discovery_audio.h"
+#include "stm32746g_discovery_sdram.h"
-AUDIO_DISCO_F746NG audio;
-// audio IN_OUT buffer is stored in the SDRAM, SDRAM needs to be initialized and FMC enabled
-SDRAM_DISCO_F746NG sdram;
-DigitalOut led_green(LED1);
-DigitalOut led_red(LED2);
-Serial pc(USBTX, USBRX);
-
-typedef enum
-{
+typedef enum {
BUFFER_OFFSET_NONE = 0,
BUFFER_OFFSET_HALF = 1,
BUFFER_OFFSET_FULL = 2,
-}BUFFER_StateTypeDef;
+} BUFFER_StateTypeDef;
+
#define AUDIO_BLOCK_SIZE ((uint32_t)512)
-#define AUDIO_BUFFER_IN SDRAM_DEVICE_ADDR /* In SDRAM */
-#define AUDIO_BUFFER_OUT (SDRAM_DEVICE_ADDR + (AUDIO_BLOCK_SIZE * 2)) /* In SDRAM */
-__IO uint32_t audio_rec_buffer_state = BUFFER_OFFSET_NONE;
-static uint8_t SetSysClock_PLL_HSE_200MHz();
+#define AUDIO_BUFFER_IN SDRAM_DEVICE_ADDR
+#define AUDIO_BUFFER_OUT (AUDIO_BUFFER_IN + (AUDIO_BLOCK_SIZE * 2))
+
+volatile uint32_t audio_rec_buffer_state = BUFFER_OFFSET_NONE;
+
+
int main()
{
- SetSysClock_PLL_HSE_200MHz();
- pc.baud(9600);
+ printf("\n\nAUDIO LOOPBACK EXAMPLE START:\n");
+
+ BSP_AUDIO_IN_OUT_Init(INPUT_DEVICE_DIGITAL_MICROPHONE_2, OUTPUT_DEVICE_HEADPHONE, DEFAULT_AUDIO_IN_FREQ, DEFAULT_AUDIO_IN_BIT_RESOLUTION, DEFAULT_AUDIO_IN_CHANNEL_NBR);
+ printf("AUDIO loop from digital micro (U20 & U21 components on board) to headphone (CN10 jack connector)\n");
+
- pc.printf("\n\nAUDIO LOOPBACK EXAMPLE START:\n");
- led_red = 0;
-
- pc.printf("\nAUDIO RECORD INIT OK\n");
- pc.printf("Microphones sound streamed to headphones\n");
-
/* Initialize SDRAM buffers */
- memset((uint16_t*)AUDIO_BUFFER_IN, 0, AUDIO_BLOCK_SIZE*2);
- memset((uint16_t*)AUDIO_BUFFER_OUT, 0, AUDIO_BLOCK_SIZE*2);
+ BSP_SDRAM_Init();
+ memset((uint16_t *)AUDIO_BUFFER_IN, 0, AUDIO_BLOCK_SIZE * 2);
+ memset((uint16_t *)AUDIO_BUFFER_OUT, 0, AUDIO_BLOCK_SIZE * 2);
+ printf("SDRAM init done\n");
+
audio_rec_buffer_state = BUFFER_OFFSET_NONE;
/* Start Recording */
- audio.IN_Record((uint16_t*)AUDIO_BUFFER_IN, AUDIO_BLOCK_SIZE);
+ if (BSP_AUDIO_IN_Record((uint16_t *)AUDIO_BUFFER_IN, AUDIO_BLOCK_SIZE) != AUDIO_OK) {
+ printf("BSP_AUDIO_IN_Record error\n");
+ }
/* Start Playback */
- audio.OUT_SetAudioFrameSlot(CODEC_AUDIOFRAME_SLOT_02);
- audio.OUT_Play((uint16_t*)AUDIO_BUFFER_OUT, AUDIO_BLOCK_SIZE * 2);
+ BSP_AUDIO_OUT_SetAudioFrameSlot(CODEC_AUDIOFRAME_SLOT_02);
+ if (BSP_AUDIO_OUT_Play((uint16_t *)AUDIO_BUFFER_OUT, AUDIO_BLOCK_SIZE * 2) != AUDIO_OK) {
+ printf("BSP_AUDIO_OUT_Play error\n");
+ }
-
while (1) {
/* Wait end of half block recording */
- while(audio_rec_buffer_state == BUFFER_OFFSET_HALF) {
+ while (audio_rec_buffer_state == BUFFER_OFFSET_HALF) {
}
audio_rec_buffer_state = BUFFER_OFFSET_NONE;
+
/* Copy recorded 1st half block */
memcpy((uint16_t *)(AUDIO_BUFFER_OUT), (uint16_t *)(AUDIO_BUFFER_IN), AUDIO_BLOCK_SIZE);
+
/* Wait end of one block recording */
- while(audio_rec_buffer_state == BUFFER_OFFSET_FULL) {
+ while (audio_rec_buffer_state == BUFFER_OFFSET_FULL) {
}
audio_rec_buffer_state = BUFFER_OFFSET_NONE;
+
/* Copy recorded 2nd half block */
memcpy((uint16_t *)(AUDIO_BUFFER_OUT + (AUDIO_BLOCK_SIZE)), (uint16_t *)(AUDIO_BUFFER_IN + (AUDIO_BLOCK_SIZE)), AUDIO_BLOCK_SIZE);
}
}
+
+
/*-------------------------------------------------------------------------------------
Callbacks implementation:
the callbacks API are defined __weak in the stm32746g_discovery_audio.c file
@@ -74,8 +77,7 @@
*/
void BSP_AUDIO_IN_TransferComplete_CallBack(void)
{
- audio_rec_buffer_state = BUFFER_OFFSET_FULL;
- return;
+ audio_rec_buffer_state = BUFFER_OFFSET_FULL;
}
/**
@@ -85,52 +87,15 @@
*/
void BSP_AUDIO_IN_HalfTransfer_CallBack(void)
{
- audio_rec_buffer_state = BUFFER_OFFSET_HALF;
- return;
+ audio_rec_buffer_state = BUFFER_OFFSET_HALF;
}
-static uint8_t SetSysClock_PLL_HSE_200MHz()
+/**
+ * @brief Audio IN Error callback function.
+ * @param None
+ * @retval None
+ */
+void BSP_AUDIO_IN_Error_CallBack(void)
{
- RCC_ClkInitTypeDef RCC_ClkInitStruct;
- RCC_OscInitTypeDef RCC_OscInitStruct;
-
- // Enable power clock
- __PWR_CLK_ENABLE();
-
- // Enable HSE oscillator and activate PLL with HSE as source
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
- RCC_OscInitStruct.HSEState = RCC_HSE_ON; /* External xtal on OSC_IN/OSC_OUT */
-
- // Warning: this configuration is for a 25 MHz xtal clock only
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
- RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
- RCC_OscInitStruct.PLL.PLLM = 25; // VCO input clock = 1 MHz (25 MHz / 25)
- RCC_OscInitStruct.PLL.PLLN = 400; // VCO output clock = 400 MHz (1 MHz * 400)
- RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; // PLLCLK = 200 MHz (400 MHz / 2)
- RCC_OscInitStruct.PLL.PLLQ = 8; // USB clock = 50 MHz (400 MHz / 8)
-
- if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
- {
- return 0; // FAIL
- }
-
- // Activate the OverDrive to reach the 216 MHz Frequency
- if (HAL_PWREx_EnableOverDrive() != HAL_OK)
- {
- return 0; // FAIL
- }
-
- // Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers
- RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 200 MHz
- RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 200 MHz
- RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; // 50 MHz
- RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; // 100 MHz
-
- if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_7) != HAL_OK)
- {
- return 0; // FAIL
- }
- HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_4);
- return 1; // OK
+ printf("BSP_AUDIO_IN_Error_CallBack\n");
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Wed Nov 20 11:10:32 2019 +0100 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#699372421a3b388fe568e9be85b1a985749a438f
--- a/mbed.bld Thu Jun 08 13:21:00 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -https://mbed.org/users/mbed_official/code/mbed/builds/86740a56073b \ No newline at end of file