 Okay, now we start the same example like before, but now we start with the DMA. I start new project, I will set here the F4401 64 pin package, STM32F401RET, open the project and like before again we select the SPI1 in full duplex, it's okay, if we look here the PA5, PA6, PA7, everything is okay. The clock configuration again we can left here the 16 MHz, but now I will use here the maximum speed because the DMA is fast, then why not, I use the 8 MHz speed, I will check the DPI GPO that there is the high high skew rate, the high speed. Now I will enable the DMA, one DMA for transmit, second DMA for the receive, like before check that we have the correct directions from the PA file to memory and from memory to PA file and also here check the increment on the memory side, on the both devices, it's here, then it looks that it's okay, then I can here save my project. I put here the SPI3, I will change my workspace to be in line with the Atolic, okay for Atolic, I will create the project for two studio, I click okay and I will generate my code, I don't want to open and I will open my Atolic manually. Okay, my Atolic is already open, it's good, I here only close this project for my workspace and I will import U1 SPI3, okay, now it seems that I am where I want it to be. Okay, like before in UART we can look here in the definition that there is still the same all parameters which we want it, in the MSP section we have here the GPO initialization and also the DMA initialization for the transmit and receive, also with the linking and in the interrupt we have here also the interrupt. Handlers from the DMA, then this is perfect and what we need to do, we only create two buffers like before, one for the transmit, for the 10 bytes and I will initialize the bytes, 69 and the second buffer for the reception, I'm missing it here, for the reception for the 10 bytes, then it's okay, then here I only call the same function like before only with small differences, hl underscore SPI underscore transmit receive with the DMA, again I put the handle, it will be HSPI1, then the data will be buffer for transmit, then the buffer for reception and how many bytes I want to send is 10. In the last part again I need to search for the callbacks, then the callbacks will be in my drivers, in the source, callbacks from the SPI, not the DMA, be careful and I will search for the weak, I will search for the MSP, spin it, drain it, transmit complete and I have here transmit receive complete callback, this is the my callback which I want, I use here the same callback and I put my famous vial1 to see what will happen, if I really can get this with this speed the old data which I am sending. Here I will change also the project settings to disable the optimization, disable, I will save my main, I compile the application and now I can run the debugger, I think it's okay, I put my big point also here, I run the code and I save the code. I will stop with the reception, then I will check my RX buffer, that I see I receive the 60, 61, 62, 63, it seems okay and for the transmit I have the same values here. For a check I can reassure the microcontroller, for the beginning I hear disconnect my pin, from the loopback I start it again and I will check the reception, there are only zeros, then it seems that is working, with no problems. Then now you know how to handle USART and also with the DMAs and also the SPI in all different modes, you can decide which mode is best for you.