spi_slave: fix calculation of buffer size
the previous calculation added 4 additional bytes to the buffers when the length was already dividable by 4. Signed-off-by: Christian Ambach <christian.ambach@deutschebahn.com>
This commit is contained in:
		
							parent
							
								
									96783826d8
								
							
						
					
					
						commit
						18b44f2208
					
				| @ -35,7 +35,9 @@ static const char TAG[] = __FILE__; | ||||
| // https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/peripherals/spi_slave.html
 | ||||
| #define BUFFER_SIZE                                                            \ | ||||
|   (MAX(8, HEADER_SIZE + PAYLOAD_BUFFER_SIZE) +                                 \ | ||||
|    (4 - MAX(8, HEADER_SIZE + PAYLOAD_BUFFER_SIZE) % 4)) | ||||
|    (PAYLOAD_BUFFER_SIZE % 4 == 0                                               \ | ||||
|         ? 0                                                                    \ | ||||
|         : 4 - MAX(8, HEADER_SIZE + PAYLOAD_BUFFER_SIZE) % 4)) | ||||
| DMA_ATTR uint8_t txbuf[BUFFER_SIZE]; | ||||
| DMA_ATTR uint8_t rxbuf[BUFFER_SIZE]; | ||||
| 
 | ||||
| @ -70,7 +72,11 @@ void spi_slave_task(void *param) { | ||||
| 
 | ||||
|     // set length for spi slave driver
 | ||||
|     transaction_size = HEADER_SIZE + msg.MessageSize; | ||||
|     // SPI transaction size needs to be at least 8 bytes and dividable by 4, see
 | ||||
|     // https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/peripherals/spi_slave.html
 | ||||
|     if (transaction_size % 4 != 0) { | ||||
|       transaction_size += (4 - transaction_size % 4); | ||||
|     } | ||||
| 
 | ||||
|     // prepare spi transaction
 | ||||
|     spi_slave_transaction_t spi_transaction = {0}; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user