 Ok, in next hands-on we will try the same approach as in the USART, but on the different pay-fays, which will be now the SPI. Then I again start the new project. I will here select the F4, I will select the F401 and 64 pin package, STM32 F401 and RET. Ok, and I will select one of the SPIs, I can try SPI1, I hope that this will be free. I think the PA5 belongs to LAT, but I am ok with that, because I create the loop back between the PA6 and PA7, the clock are not necessary for this, then I am ok with this configuration, then we can use the SPI1. Again the clocks we can left in the default configuration on the 16 MHz on the both buses, and if we move to this configuration on the SPI1, we can see that the format will be Motorola, I am ok, data size 8 bit, why not, MSB first. Then the Pascale is 2, the Pascale 2 means that the main frequency, which is now 16 MHz, will be divided by 2, then in this case the speed of the SPI will be 8 MHz, then I will here divide it by 8, only to 1 MHz, only for sure, ok. The clock face and clock polarity I will left in the default state, but for me now the important will be the speed of the pins, because I am running on the 1 MHz, this I need to care about this, then I will check if this speed is on fast, I am not using any pull up or pull downs, and I am using the alternating functionality. In this case I will not use the DMA or the interrupt, this we will do a little bit later. Ok, then I click on the ok, I will save my project as SPI1 maybe, and I will create this example in the SW in the system for bench, ok, and I can generate my project, it is very fast, why not, ok, now I open my system for bench, and I will start like in the u-side, I will create the buffers for the reception and the transmission, close this old project, delete, I don't want this, but I will import new one, existing file, it will be project to SPI, I can import my SPI, ok, now what is different, I think you find this completely similar to the u-side, I can go to the declaration, here we only change the u-side from the SPI, different parameters because the SPI is different by fate that for the initialization we need to have the different parameters, but the SPI init is completely the same, we will find here also the MSP init of the SPI, again we checking the instance, we enabling the SPI clocks, and we again initialize the pins, now three pins, we setting the alternate function, and here we selecting that this alternative function will belong to the SPI, then from this it is completely, completely the same, then I will create here two buffers to allow me to send the data and receive data, then one buffer for the transmit, here for the transmit put something, and buffer for the reception again 10 bytes, and now I can start to send and receive data, shell, surprisingly it will be the SPI, and then I can look what I can do, I can do like before the receive, I can do also transmit, but because of SPI I can do the transmit and receive in same time, then here I can use also the pooling version for the sending and receiving the data, if I look into the definition, then first is I need to add the handle, then the pointer on the buffer to send, pointer to buffer to receive, then the size and the time mode, then I put here again vibostating with H, I think it will be HSPI1, yes, then buffer to transmit, buffer for the reception, how many bytes to send, it will be 10, and the time mode I put here 100 milliseconds, again I here in the project I will disable the optimization to allow me to see the buffer, in the settings, optimization none, I can save my main, compile my main, and before debugging, before my code will be compiled, I also can check the connection, I think I'm using PC6 and PC7 as the input and output data lines, because I'm creating the loopback, it doesn't matter about the clocks, then I need to connect together PC6, PA6 and PA7, for sure I will check here in the pinout, PA6, PA7, here on my pinout are next to each other, then I simply connect these pins together, seems that it's okay, connect them together, you can use also jumper for example, now I now create the debug configuration, again double click on the AC6 in the system for bench, I will create new board with the steering 2.1, and I can start the debug, yes I want to go into the debugging perspective, I put here the bake point, then I run the debug, I stop here, now I can check the expressions, buffer for X, which is empty now, which is strange, or maybe I connect the pins wrongly, and I first check my connection, okay, that it seems that the problem was on my side, I connect the wrong pins, these are the correct PA6 and PA7 on my on my nuclear, which are here on the D12 and D11, okay, I connected correctly, now I go into debug, I will switch into debugging perspective, I will run my code, it stops, and now I receive the bytes, I can check if this is really working, then I reset debugging, stop debugging, I start again, I disconnect my pin from the board, I try it again, now without the pins connected together I have here 0, then this is working now, then now you know how to do the same communication in the pooling mode also with the SPI