2024-01-17 11:45 PM
Recently working with spi communication in stm32g070rb using stm32CubeIDE (HAL library).SPI master receive interrupt triggered continuosly when there is no interrupt.But same code wrote in SPI slave its works perfectly.I also put Pull down resistor
so My main problem is if i configure SPI master Spi rx callback automatically triggered again and again. Slave devices that rx callback function works perfectly. I think if any master mode fault what reason master spi interrupt triggered unwantedly
i have also one doubt if any did not connect miso,mosi,sclk pins to slave devices. i just load the code to master device then i see interrupt rx callback or error occurs. pls provide solution
This code works properly in full duplex slave if i set full duplex master or half duplex master does not works
my clock configuration is set(hopefully correct) i do not use slave select pin for i set this software(one master and one slave) and also give interrupt priority why this only woks slave not master devices
int main(void)
{
HAL_Init();
SystemClock_Config();
HAL_SPI_Receive_IT(&hspi1,spi_data,1);
while (1)
{
}
}
void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
{
HAL_SPI_Receive_IT(&hspi1,spi_data,1); // ready for new interrupt
}
Solved! Go to Solution.
2024-01-21 11:59 AM
I don't know how to say it any differently than before: Only the master can initiate a transfer. This is true in blocking, interrupt, and DMA modes.
You can use a different pin to signal to the master that the slave has data, but that would be handled outside of the SPI protocol.
2024-01-18 06:01 AM
The master sends the clock on SPI in order to receive a byte. Your program is continuously receiving bytes and therefore continuously sending a clock signal. No bugs there.
Perhaps you are expecting it to behave like UART, which it does not.
2024-01-18 10:01 PM
if master spi clock is enabled SPI in order to receive a byte at the start of the program , will it receive the data anytime sent by the slave device.Give your answer and above answer now i understand thanks for service
2024-01-19 06:50 AM
No, that's not how SPI works. Only the master can initiate a data transfer. The slave has to wait for the master to send clocks before it can send data.
https://en.wikipedia.org/wiki/Serial_Peripheral_Interface
2024-01-21 09:30 AM
Thanks for your valuable solution.I was confusion about spi communication now i realise what mistake i made(Mater device receive interrupt does not works) Is correct ??.Continue ur valuable services
2024-01-21 11:59 AM
I don't know how to say it any differently than before: Only the master can initiate a transfer. This is true in blocking, interrupt, and DMA modes.
You can use a different pin to signal to the master that the slave has data, but that would be handled outside of the SPI protocol.