diff --git a/libraries/SPI/SPI.h b/libraries/SPI/SPI.h
index b40c84cfcd86b2b03d2c8187cf9004aebf9aacc8..333a2f4e122dfa9ca84b047cca5363b4bb4eae14 100644
--- a/libraries/SPI/SPI.h
+++ b/libraries/SPI/SPI.h
@@ -318,6 +318,7 @@ class SPIClass {
 	SPIClass(SERCOM *p_sercom, uint8_t uc_pinMISO, uint8_t uc_pinSCK, uint8_t uc_pinMOSI);
 
 	byte transfer(uint8_t data);
+	inline void transfer(void *buf, size_t count);
 
 	// Transaction Functions
 	void usingInterrupt(uint8_t interruptNumber);
@@ -342,6 +343,14 @@ class SPIClass {
 	uint8_t _uc_pinSCK;
 };
 
+void SPIClass::transfer(void *buf, size_t count)
+{
+	// TODO: Optimize for faster block-transfer
+	uint8_t *buffer = reinterpret_cast<uint8_t *>(buf);
+	for (size_t i=0; i<count; i++)
+		buffer[i] = transfer(buffer[i]);
+}
+
 #if SPI_INTERFACES_COUNT > 0
   extern SPIClass SPI;
 #endif