diff --git a/pyftdi/spi.py b/pyftdi/spi.py index a24d828e..bfe771dd 100644 --- a/pyftdi/spi.py +++ b/pyftdi/spi.py @@ -773,8 +773,6 @@ def _exchange_half_duplex(self, frequency: float, raise SpiIOError("FTDI controller not initialized") if len(out) > SpiController.PAYLOAD_MAX_LENGTH: raise SpiIOError("Output payload is too large") - if readlen > SpiController.PAYLOAD_MAX_LENGTH: - raise SpiIOError("Input payload is too large") if cpha: # to enable CPHA, we need to use a workaround with FTDI device, # that is enable 3-phase clocking (which is usually dedicated to @@ -830,17 +828,31 @@ def _exchange_half_duplex(self, frequency: float, cmd.extend(write_cmd) if readlen: if not droptail: + n = readlen // SpiController.PAYLOAD_MAX_LENGTH + r = readlen % SpiController.PAYLOAD_MAX_LENGTH + rcmd = (Ftdi.READ_BYTES_NVE_MSB if not cpol else Ftdi.READ_BYTES_PVE_MSB) - read_cmd = spack('