diff --git a/drivers/spi/spi_bitbang.c b/drivers/spi/spi_bitbang.c index cffd25abd9a..15ab576a139 100644 --- a/drivers/spi/spi_bitbang.c +++ b/drivers/spi/spi_bitbang.c @@ -177,22 +177,22 @@ static int spi_bitbang_transceive(const struct device *dev, k_busy_wait(wait_us); - /* first clock edge */ - gpio_pin_set_dt(&info->clk_gpio, !clock_state); - if (!loop && do_read && !cpha) { b = gpio_pin_get_dt(miso); } - k_busy_wait(wait_us); + /* first (leading) clock edge */ + gpio_pin_set_dt(&info->clk_gpio, !clock_state); - /* second clock edge */ - gpio_pin_set_dt(&info->clk_gpio, clock_state); + k_busy_wait(wait_us); if (!loop && do_read && cpha) { b = gpio_pin_get_dt(miso); } + /* second (trailing) clock edge */ + gpio_pin_set_dt(&info->clk_gpio, clock_state); + if (loop) { b = d; }