STM32F4 Discovery board - Keil 5 IDE with CubeMX: Tutorial 28 - I2S Audio Codec - CS43L22

แชร์
ฝัง

ความคิดเห็น • 67

  • @midimuso7009
    @midimuso7009 4 ปีที่แล้ว +6

    I can't thank you enough for the video and (especially) the source files. You are a generous man who has hauled me out from a world of pain!

  • @yinpingcho9100
    @yinpingcho9100 3 ปีที่แล้ว +1

    This becomes the very first program I ever flash onto an embedded board. Thank you very much, sir!

  • @Gkvhkbt
    @Gkvhkbt 5 ปีที่แล้ว +6

    Good! Very high quality videos! I like when you show us "How to do"-style and give easy explanations. Short videos = Excellent!

  • @rashiidsherif9222
    @rashiidsherif9222 4 ปีที่แล้ว

    Fun Time to be exploring these sort of projects, very interesting and well explained tutorial. Thanks M.Yaqoob :D

  • @KidCe.
    @KidCe. 5 ปีที่แล้ว +1

    I just found your TH-cam channel and saw all those tutorials you have.im going to watch all of them ^^ Do you plan on making an video about FFT with cmsis for the stm32 ? Would be really interesting to see, didn't found a tutorial until yet.

    • @mutexembedded2206
      @mutexembedded2206  5 ปีที่แล้ว +3

      Hi,
      Yeah, I think that will be fun haha.. Just kidding, you're right, I have implemented FFT with CMSIS couple of years ago. Perhaps I should create a full series on DSP.

  • @romiolover6852
    @romiolover6852 5 ปีที่แล้ว

    thank you a lot that was a amassing video

  • @mohsenmazandarani7506
    @mohsenmazandarani7506 2 ปีที่แล้ว

    Thank you......great work.....

  • @andresfelipeparragafuquene4848
    @andresfelipeparragafuquene4848 5 ปีที่แล้ว

    Muy buenos vídeos 👍👍👍

  • @johnsaeid95
    @johnsaeid95 5 ปีที่แล้ว

    Great video
    Do you know if I configured I2S to take input stream from MEMs microphone ,, can i generate the PCM data directly from STM32CubeMX or I should use pdm2pcm library ?

  • @adammooner6133
    @adammooner6133 5 ปีที่แล้ว

    Your shares are perfect! I learnt a lot. I wonder if it is possible for you to explain this same project without using CubeMX and HAL libraries. Thanks again!

  • @tomaserjavec6371
    @tomaserjavec6371 3 ปีที่แล้ว

    Thank you! Great video... do you have any video of the audio MIC of the DISCOVERY board (MP45DT02)?

  • @hanaanmohammed3693
    @hanaanmohammed3693 2 ปีที่แล้ว

    Great video

  • @jakubkusiowski2301
    @jakubkusiowski2301 5 ปีที่แล้ว

    What if I want to play a sine wave that's a sum of two different sin waves? (for exmple 440 Hz + 460 Hz)?

  • @eXtremeElectronics
    @eXtremeElectronics ปีที่แล้ว

    Nice!

  • @enricoubaldino5856
    @enricoubaldino5856 3 ปีที่แล้ว +1

    thanks for your video, congratulations. I ask you if it is very different to configure the I2S interface to receive the signal from the digital microphone. Do you have any advice? thank you

  • @chaowang2771
    @chaowang2771 4 ปีที่แล้ว

    Thanks for the tutorial! I tried your first part using DAC on STM32F407. But I couldn't hear any sound from the audio jack. I used an oscilloscope and saw the sinusoid on the pin PA4. What's wrong?

  • @Asuperm4nE
    @Asuperm4nE 5 ปีที่แล้ว

    Hello i have a question about CS43_SetVolume function. Could you explain what exacly is happeing there? I don't know where are the set values of 50 and 127/50 come from:
    int8_t tempVol = volume - 50;
    tempVol = tempVol*(127/50);
    And also if you could explain the macro VOLUME_CONVER_D(Volume)
    #define VOLUME_CONVERT_D(Volume) (((Volume) > 100)? 24:((uint8_t)((((Volume) * 48) / 100) - 24)))
    I also don't know where are those values come from.

  • @EduardoAvilaH
    @EduardoAvilaH 5 ปีที่แล้ว +2

    Hello the videos are great!, Would you help with a video where you implement multiple threads with sensors and RTOS?

  • @shenoyniyathi3497
    @shenoyniyathi3497 5 ปีที่แล้ว

    Hi Yaqoob,
    I have a Quad Analog-to-Digital Converter (ADC) ADAU1978. I have to interface it with my STM32F407. Here ADAU1978 will be in master mode, The output of the ADC is audio I2S mode. SO i have to do a I2S DMA receive to receive the audio output on STM32F407. I have used the API HAL_I2S_Receive_DMA to do the same. However, when i store the audio output on a sd card and try to playback i hear only noise. I used MATLAB to check the number of samples in the .wav file , however im losing some samples during the recording. Is there anyway you can show how to do a I2S DMA receive?

  • @pranjalshrivstava6519
    @pranjalshrivstava6519 5 ปีที่แล้ว

    Hi sir , I just found your video for I2S , and it was amazing! Could ou help me implementing the FULL-Duplex mode of I2S , the one I wrote isn't firing up any interrupts , if there's some sample code you could help out with, it would be really awesome! You've taught me a lot! THanks

  • @isokemisoke
    @isokemisoke 4 ปีที่แล้ว +1

    Hey yaqoob, are there any relation between i2s3 and i2c3 ? In my project i played a sound sample via i2s dma and after to do this i sending some i2c data but i2c goes into busy flag error. If i comment transmit dma function problem dissappared. Btw i2c connection between i2c devices is ok so before the i2s transmit.

    • @mutexembedded2206
      @mutexembedded2206  4 ปีที่แล้ว

      Hi ismail,
      I2C Here is the configuration interface for the Audio Codec. I2S is the raw Audio signals, no Chip level configurations are done over I2S. We need both.

  • @kamrandanish7186
    @kamrandanish7186 4 ปีที่แล้ว

    Hello
    thanks for sharing this video I am facing an issue that I can't hear voice not on speaker not even on headphones what would be issue about it please help

  • @youngolutosin1658
    @youngolutosin1658 5 ปีที่แล้ว

    @MYaqoob...I have watched your videos from tutorial1 to the last one and I have really learnt how to use STM32CubeMx. I wana say a big thank you. However, my career aspiration is to become a firmware/driver developer just like how you have created your drivers. I have created few driver for stm32f407 like I2C, GPIO, UART and SPI which I can share. I used the reference manual but I realized creating libraries for different sensors and devices seem complicated due to improper documentation of how to do this step by step because it follows the same approach which is bit definition and writing into appropriate registers but the documentations are bad. Please I need your guideline on writing drivers/libraries just like what Albert Einstein once said modified "Standing on the shoulder of people who know how to do something will point you in the right direction and can pick up fast". My C programming is very good. Thank you.

  • @hulahoop7630
    @hulahoop7630 5 ปีที่แล้ว +1

    how to access seven segment, dot matrix, lcd, and serial 232 with stm32f4 discovery?

  • @amirmahdisoltani1
    @amirmahdisoltani1 3 ปีที่แล้ว +1

    Have you ever used the mems microphone of this board ??
    can you make a tutorial for it please??!

  • @bresken1
    @bresken1 ปีที่แล้ว

    I'm having a problem with this one, when I try to compile it says that in MODE_ANALOG expected identifier. What do I do?

  • @Gkvhkbt
    @Gkvhkbt 5 ปีที่แล้ว

    By the way! Can you show us how to do CAN-bus communication with J1939 standard? That's the industry standard of CAN-bus alterantives.

  • @lulu-xw9bg
    @lulu-xw9bg 11 หลายเดือนก่อน

    I wonder why the sine value was multiplied by 8000. Thank you so much for your reply.

  • @hajime5264
    @hajime5264 8 หลายเดือนก่อน

    Don't understand why but got an error on Line 60 of .h MODE_ANALOG (expected identifier) and the same error on line 22 of.c #include "MY_CS43L22.h" (error in include chain... expected identifier). Do you know why and how to fix it?

  • @jacekjedlinski5843
    @jacekjedlinski5843 3 ปีที่แล้ว +2

    Thanks for this tutorial. Isn't CS43L22 just a DAC? Codec would consist of both DAC and ADC

    • @mutexembedded2206
      @mutexembedded2206  3 ปีที่แล้ว

      You can read its datasheet to see its full block diagram

  • @babotvoj
    @babotvoj 4 ปีที่แล้ว +1

    is there a difference between your sine generation method and a look up table?

    • @mutexembedded2206
      @mutexembedded2206  4 ปีที่แล้ว

      Hi,
      It's the same. I am creating the lookup table on fly instead of typing values manually.

    • @babotvoj
      @babotvoj 4 ปีที่แล้ว +1

      @@mutexembedded2206 thank you for the quick answer, I tought a look uop table would be quicker because you initialize it once and in the loop you read the walues out of it and dont need to do further calculations. But I am not an expert, probably I'm wrong

    • @mutexembedded2206
      @mutexembedded2206  4 ปีที่แล้ว

      @@babotvoj you're right. I did just that in the other half of the video.

  • @Ricarrr
    @Ricarrr 3 ปีที่แล้ว +3

    Thank you. How can I send audio to DAC?

  • @irfanilahi8614
    @irfanilahi8614 5 ปีที่แล้ว

    Hello, I want to interface PCM1690 Audio DAC to STM32H743. Can you please help me regarding PCM1690 Audio Codec Libraries????

  • @vinothkrishan6573
    @vinothkrishan6573 5 ปีที่แล้ว

    Can you Plese make EEPROM handling in Stm32F407

  • @4vard
    @4vard 2 ปีที่แล้ว +1

    Hello Mohamed!
    Would you be so kind as to tell me how to expand the functionality of this device - connect it like an audio device to windows. I would like to connect 2 digital microphones via I2S and record on my computer wav pcm 192 khz 24bit

  • @egorkrapovnitskiy997
    @egorkrapovnitskiy997 2 ปีที่แล้ว

    What is the difference between two modes?

  • @halilibrahimsimsek1560
    @halilibrahimsimsek1560 4 ปีที่แล้ว +1

    Hi MYaqoob , this video is very helpful but how can you create cs43l22.c and cs43l22.h files. Because in our project i have to use max9867. Please help me

    • @mutexembedded2206
      @mutexembedded2206  4 ปีที่แล้ว

      Hi,
      You can get some library example in github perhaps for your device. in combination with Datasheet you should be able to put together a working library.

  • @sc0or
    @sc0or 2 ปีที่แล้ว

    May I ask why don't you use C++ to make some order in functions? All these "HAL_TIM_Encoder/Config/Base" look like a good example of using Config::, Base::, etc. Why do you declare global variables for local calculations?!

  • @ngocvo8493
    @ngocvo8493 5 ปีที่แล้ว

    very high quality video! by the way can you help me play wav music from SD by DAC. tks very much

  • @LodeAmeije
    @LodeAmeije 2 ปีที่แล้ว

    The first test at 23:21 was not working for me. I commented out the DMA-dummy transfer ( //HAL_I2S_Transmit_DMA(&hi2s3, (uint16_t*)I2S_dummy, 4);) as it was not triggering the clock. To make it work, I had the I2S clock working like this in the infinite while loop:
    while (1)
    {
    /* USER CODE END WHILE */
    if( HAL_I2S_Transmit (&hi2s3, I2S_dummy , 0x10, 10 ) == HAL_OK)
    {
    HAL_GPIO_WritePin(led_blue_GPIO_Port, led_blue_Pin, 1);
    };
    /* USER CODE BEGIN 3 */
    }

  • @nhatcomnhom
    @nhatcomnhom 5 ปีที่แล้ว

    hello MYaqoobEmbedded
    I dont know how on I2S_mode, sin wave can continuity out on output jack?
    Please tell me :'(

  • @selcukselcuk1980
    @selcukselcuk1980 3 ปีที่แล้ว

    in MY_CS43L22.h file, Keil gives an error for MOD_ANALOG, line. Error: expected identifier.
    Can anyone give an answer, why this error?

    • @zeq4128
      @zeq4128 3 ปีที่แล้ว

      Hey, I have the same error, have you found a solution ?

    • @selcukselcuk1980
      @selcukselcuk1980 3 ปีที่แล้ว +1

      ​@@zeq4128 I just comment out this line. But only the I2S mode works then.

  • @naasikhendricks1501
    @naasikhendricks1501 4 ปีที่แล้ว

    USB Mic???

  • @MrRenju007
    @MrRenju007 5 ปีที่แล้ว

    Hi @MYaqoobEmbedded
    ,
    Could you pleaze, make a video about how to use 'printf' in keil (STM32F4) ?

  • @abbasnosrat8898
    @abbasnosrat8898 4 ปีที่แล้ว +1

    Pleeeeeeeeeeas do a tutorial 4 sai too

    • @mutexembedded2206
      @mutexembedded2206  4 ปีที่แล้ว

      Added to the list, thanks for the suggestion, good one.

  • @emreiris114
    @emreiris114 5 ปีที่แล้ว +1

    this is so benefitfull ,but libraries make us learn less coz what We must do is already done by library creator who is you :)

    • @mutexembedded2206
      @mutexembedded2206  5 ปีที่แล้ว

      It is difficult for such long libraries to explain step by step, I will end up with more than 1 hour video. With this, you still can read and discover the library, I tend to make my libraries well documented.

    • @emreiris114
      @emreiris114 5 ปีที่แล้ว

      @@mutexembedded2206 maybe doing stuff without using libraries would be so nice but still your videos so clear and understandable :)

  • @Dogoodah
    @Dogoodah 4 ปีที่แล้ว +1

    You really mess up with numbers in your project.
    Anyone who will use it have to be aware of your mistakes.
    You excess the array length (defined by you as 100) several times in the code:
    - in building sinus wave, sample_N is equal to 320, so you are risking to overwrite anything going after your array definition
    - while sending it you also use sample_N*2 which is absolutely wrong since I2S_Transmit will send all these numbers even though they are not inside defined array.
    You are lucky that your code even works. In any bigger project such mistake will lead to unexpected behaviour or even hard fault.

  • @user-qx7su4oh4t
    @user-qx7su4oh4t 3 ปีที่แล้ว

    Почему руссаки не снимают такое

  • @herrusw
    @herrusw 3 ปีที่แล้ว +1

    Hallo Can I have Your email ?