diff --git a/examples/rtt_rtic_i2c.rs b/examples/rtt_rtic_i2c.rs
index a1b6910a06fefef523947cc2120c7b3dac494b4c..110c2736d86e95cd07ba709fe4327d822e812727 100644
--- a/examples/rtt_rtic_i2c.rs
+++ b/examples/rtt_rtic_i2c.rs
@@ -168,6 +168,7 @@ mod SC18IS602 {
         addr: u8,
         cs: bool,
         i2c: I2C,
+        buff: [u8; 200],
     }
 
     use Function::*;
@@ -202,7 +203,12 @@ mod SC18IS602 {
                 i2c.write(addr, &[GpioConfigure.id(), GpioMode::PushPull.val()])
                     .ok();
             }
-            SH18IS602 { addr, cs, i2c }
+            SH18IS602 {
+                addr,
+                cs,
+                i2c,
+                buff: [0; 200],
+            }
         }
     }
 
@@ -211,26 +217,23 @@ mod SC18IS602 {
         I2C: i2c::Write + i2c::Read,
     {
         type Error = Error;
+        // transfer limited to 200 bytes maximum
+        // will panic! if presented larger buffer
+        //
         fn transfer<'w>(&mut self, words: &'w mut [u8]) -> Result<&'w [u8], Self::Error> {
             // initiate a transfer on SS0
-            let mut buff = [0; 8];
-            buff[0] = 0x01; // SSO write
-            buff[1..].clone_from_slice(words);
+            self.buff[0] = 0x01; // SSO write
+            self.buff[1..].clone_from_slice(words);
             // perform the transaction on words.len() + 1 bytes
             // the actual SPI transfer should be words.len()
-            self.i2c.write(self.addr, &buff[0..words.len() + 1]).ok();
+            self.i2c
+                .write(self.addr, &self.buff[0..words.len() + 1])
+                .ok();
             self.i2c.read(self.addr, words).ok();
             Ok(words)
         }
     }
 
-    // fn set<I2C>(i2c: I2C, data: u8)
-    // where
-    //     I2C: i2c::Write,
-    // {
-    //     i2c.write(self.addr, &[Function::GpioWrite.id(), 0x0]).ok();
-    // }
-
     impl<I2C> OutputPin for SH18IS602<I2C>
     where
         I2C: i2c::Write + i2c::Read,