From 28a4baf95cf5bb24b4697f85c67badab42b4a9f8 Mon Sep 17 00:00:00 2001 From: Timofey Titovets Date: Thu, 22 May 2025 23:29:51 +0200 Subject: [PATCH] spi_software: add a delay on mode change Signed-off-by: Timofey Titovets --- src/spi_software.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/spi_software.c b/src/spi_software.c index 73cd8788..9a03b8dd 100644 --- a/src/spi_software.c +++ b/src/spi_software.c @@ -40,18 +40,21 @@ DECL_COMMAND(command_spi_set_sw_bus, "spi_set_sw_bus oid=%c miso_pin=%u mosi_pin=%u sclk_pin=%u" " mode=%u pulse_ticks=%u"); -void -spi_software_prepare(struct spi_software *ss) -{ - gpio_out_write(ss->sclk, ss->mode & 0x02); -} - static void spi_delay(uint32_t end) { while (timer_is_before(timer_read_time(), end)); } +void +spi_software_prepare(struct spi_software *ss) +{ + gpio_out_write(ss->sclk, ss->mode & 0x02); + uint32_t end = timer_read_time() + ss->sck_ticks; + spi_delay(end); +} + + void spi_software_transfer(struct spi_software *ss, uint8_t receive_data , uint8_t len, uint8_t *data)