cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H7S78-DK + X-CUBE-AUDIO-KIT: LiveTune / USB Audio not working

Mcihel
Associate

Hello everyone,

I’m currently working on developing a USB audio device with multichannel audio functionality using the STM32H7S78-DK in combination with the X-CUBE-AUDIO-KIT. My goal is to use LiveTune to build audio flows and to implement USB Audio Class 2.0, potentially with extended multichannel support.

Unfortunately, I haven't been able to get the provided example projects to work correctly on my board. I’ve run into several issues using both STM32CubeIDE and STM32CubeProgrammer, and I’m hoping someone with experience using this specific board or the X-CUBE-AUDIO-KIT can help me move forward.

 

What I’ve tried so far:

  • Flashed the bootloader (X-CUBE-AUDIO-KIT-STM32H7S78-DK-BL.hex) to address 0x08000000 (internal flash) using CubeProgrammer

  • Flashed the LiveTune firmware (X-CUBE-AUDIO-KIT-STM32H7S78-DK-Designer.bin) or other .bin files to 0x90000000 (QSPI flash)

  • Verified that BOOT0 is set to 0

 

Current status:

  • The board is detected correctly via ST-LINK

  • The bootloader appears to flash successfully (confirmed in the programmer log)

  • Firmware at 0x90000000 does not seem to start → QSPI may not be initializing correctly

  • LiveTune displays the message: “The firmware doesn't respond”

 

My question:

Has anyone managed to get a working setup with STM32H7S78-DK + X-CUBE-AUDIO-KIT + LiveTune?
Or could someone share a working example project (.bin or full IDE project) that is confirmed to work with this board?

Any help, tips, or links would be greatly appreciated. I’m fairly technically experienced, but this particular board and the QSPI boot setup are proving to be quite challenging.

Thanks in advance!

Best regards,
Michel

1 ACCEPTED SOLUTION

Accepted Solutions
JonathanC
ST Employee

Hello Michel,

You can use **STM32CubeProgrammer** or the **flasher script** provided in the package as described in the following section of the documentation:

- `Middlewares/ST/Audio-Kit/docs/refman/how_to_use_h7rs.html#how-to-use-stm32h7s78-dk`

Using the scripts might be easier. Once you've compiled, please run the `flasher.sh` script located in:

- `Projects\STM32H7S78-DK\Applications\Livetune`

**Using STM32CubeProgrammer:**

1. Ensure you have selected the correct external loader file (EL icon on the bottom left panel). In the search zone, type "H7S" and select the "MX66UW1G45G_STM32H7S78-DK" loader.
2. From the "Erasing & Programming" menu, select the `firmware.bin` generated after compilation.
3. Enter `0x70000000` as the start address. This is the external flash (0x90000000 is the external RAM, which might be why it was failing in your case). The documentation mentioned above describes the boot sequence.
4. Click "Start Programming."
5. Disconnect.
6. You may need to reset the board manually depending on your STM32CubeProgrammer configuration.

In order to **launch the debugger**:

- After the board is flashed, click on the `Debug` button.
- Please use the debug configuration provided in the firmware.launch file. It attaches to the STM32 that is running.
- Mind that setting a breakpoint that is called by the running application is possible. However, breaking in the init phase of the application isn’t. This limitation is under investigation.


Best regards,
Jonathan

View solution in original post

4 REPLIES 4
FBL
ST Employee

Hi @Mcihel 

Could you provide the status of your option bytes? On the STM32H7S78-DK, the HSLV bit is enabled because a graphic demo from external flash is being utilized. Check this example's readme as a reference. Also you can refer to the following article.

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.


JonathanC
ST Employee

Hello Michel,

You can use **STM32CubeProgrammer** or the **flasher script** provided in the package as described in the following section of the documentation:

- `Middlewares/ST/Audio-Kit/docs/refman/how_to_use_h7rs.html#how-to-use-stm32h7s78-dk`

Using the scripts might be easier. Once you've compiled, please run the `flasher.sh` script located in:

- `Projects\STM32H7S78-DK\Applications\Livetune`

**Using STM32CubeProgrammer:**

1. Ensure you have selected the correct external loader file (EL icon on the bottom left panel). In the search zone, type "H7S" and select the "MX66UW1G45G_STM32H7S78-DK" loader.
2. From the "Erasing & Programming" menu, select the `firmware.bin` generated after compilation.
3. Enter `0x70000000` as the start address. This is the external flash (0x90000000 is the external RAM, which might be why it was failing in your case). The documentation mentioned above describes the boot sequence.
4. Click "Start Programming."
5. Disconnect.
6. You may need to reset the board manually depending on your STM32CubeProgrammer configuration.

In order to **launch the debugger**:

- After the board is flashed, click on the `Debug` button.
- Please use the debug configuration provided in the firmware.launch file. It attaches to the STM32 that is running.
- Mind that setting a breakpoint that is called by the running application is possible. However, breaking in the init phase of the application isn’t. This limitation is under investigation.


Best regards,
Jonathan

Hi JonathanC,

Thank you for the detailed explanation. I was able to successfully flash the example program onto the STM using STM32CubeProgrammer. That said, the flasher.sh script is indeed very convenient to use as well.

I've now had a chance to experiment a bit with LiveTune, and I must say it’s incredibly helpful for development. I've managed to get USB audio working through the headset jack on the STM32H7S78-DK, which is great.

Now, I’d like to take it a step further by adding a second DAC via I2S to improve the audio quality even more. However, I haven’t seen an option for this in LiveTune yet. Also, I haven’t been able to import any of the example projects into CubeIDE to continue working on the project independently.

Do you know the best way to go about this?

Kind regards,
Michel

JonathanC
ST Employee

Hi Michel,

Thank you for your positive feedback.

Regarding your interest in adding a second DAC via I2S to enhance audio quality: Are you looking to connect an external DAC (wired) and have it appear in LiveTune?

  • There is a procedure to add new System Input & Output options in the Livetune left panel. This requires specific code and recompilation. Please refer to this section:
  • Middlewares/ST/Audio-Kit/docs/refman/reference_manual.html#system-inputs-outputs


It's generally beneficial to review the reference manual documentation to understand the LiveTune & AudioChain system. You'll understand how to start from given examples, build your own dataflow and also how to customize to your needs (new algo, new system IOs, etc...)

  • Middlewares/ST/Audio-Kit/docs/refman/reference_manual.html


To test examples, follow this link:

  • Middlewares/ST/Audio-Kit/docs/refman/examples.html


You can open an example by:

  1. Using the Load button from the Designer (requires flashing a designer image).
  2. Dragging and dropping a *.livetune file (e.g., find the file bass-boost.livetune in the folder Middlewares/ST/Audio-Kit/examples/livetunedataflow/References/bass-boost/ and drop it onto the canvas).

best regards

Jonathan