diff options
| author | Jeff Epler <jepler@unpythonic.net> | 2021-03-26 12:06:25 -0500 |
|---|---|---|
| committer | Jeff Epler <jepler@unpythonic.net> | 2021-03-26 12:24:09 -0500 |
| commit | a70b679ed52529f8cc317959b180fd8a34bd220d (patch) | |
| tree | 1d33fddf8a2d7ef67d87113732d63ed06a093c64 /shared-module/bitbangio | |
| parent | 2bc61b458070f9e1e5a49442a72c43c0d9ea721f (diff) | |
bitbangio.SPI.read: Support write_value, fix some other nits
Diffstat (limited to 'shared-module/bitbangio')
| -rw-r--r-- | shared-module/bitbangio/SPI.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/shared-module/bitbangio/SPI.c b/shared-module/bitbangio/SPI.c index 8be6cac5f..65511964a 100644 --- a/shared-module/bitbangio/SPI.c +++ b/shared-module/bitbangio/SPI.c @@ -176,7 +176,7 @@ bool shared_module_bitbangio_spi_write(bitbangio_spi_obj_t *self, const uint8_t } // Reads in len bytes while outputting zeroes. -bool shared_module_bitbangio_spi_read(bitbangio_spi_obj_t *self, uint8_t *data, size_t len) { +bool shared_module_bitbangio_spi_read(bitbangio_spi_obj_t *self, uint8_t *data, size_t len, uint8_t write_data) { if (len > 0 && !self->has_miso) { mp_raise_ValueError(translate("Cannot read without MISO pin.")); } @@ -210,8 +210,12 @@ bool shared_module_bitbangio_spi_read(bitbangio_spi_obj_t *self, uint8_t *data, common_hal_digitalio_digitalinout_set_value(&self->mosi, false); } for (size_t i = 0; i < len; ++i) { + uint8_t data_out = write_data; uint8_t data_in = 0; - for (int j = 0; j < 8; ++j) { + for (int j = 0; j < 8; ++j, data_out <<= 1) { + if (self->has_mosi) { + common_hal_digitalio_digitalinout_set_value(&self->mosi, (data_out >> 7) & 1); + } if (self->phase == 0) { common_hal_mcu_delay_us(delay_half); common_hal_digitalio_digitalinout_set_value(&self->clock, 1 - self->polarity); |
