diff --git a/src/interface.rs b/src/interface.rs index 1b1a6b9..4e07baf 100644 --- a/src/interface.rs +++ b/src/interface.rs @@ -100,8 +100,18 @@ where { // activate spi with cs low self.cs.set_low(); + // transfer spi data - spi.write(data)?; + // Be careful!! Linux has a default limit of 4096 bytes per spi transfer + // see https://raspberrypi.stackexchange.com/questions/65595/spi-transfer-fails-with-buffer-size-greater-than-4096 + if cfg!(target_os = "linux") { + for data_chunk in data.chunks(4096) { + spi.write(data_chunk)?; + } + } else { + spi.write(data)?; + } + // deativate spi with cs high self.cs.set_high();