diff --git a/cpu/stm32f1/Makefile.include b/cpu/stm32f1/Makefile.include
index 99de28dcc7b1d26e43979d1aa7b539cc4dc573d6..14626ee605f76a221e505a6cc48e2902c1ee4fb0 100644
--- a/cpu/stm32f1/Makefile.include
+++ b/cpu/stm32f1/Makefile.include
@@ -3,4 +3,7 @@ export CPU_ARCH = cortex-m3
 # use hwtimer compatibility module
 USEMODULE += hwtimer_compat
 
+# use common periph functions
+USEMODULE += periph_common
+
 include $(RIOTCPU)/Makefile.include.cortexm_common
diff --git a/cpu/stm32f1/include/periph_cpu.h b/cpu/stm32f1/include/periph_cpu.h
index 1ded7c7065066f3a5a3cf2eb17c7230407ea0dd9..f883b03b691bce35001700ab7d2c03fd3e2c832d 100644
--- a/cpu/stm32f1/include/periph_cpu.h
+++ b/cpu/stm32f1/include/periph_cpu.h
@@ -102,6 +102,15 @@ typedef enum {
  */
 void gpio_init_af(gpio_t pin, gpio_af_out_t af);
 
+/**
+ * @brief declare needed generic SPI functions
+ * @{
+ */
+#define PERIPH_SPI_NEEDS_TRANSFER_BYTES
+#define PERIPH_SPI_NEEDS_TRANSFER_REG
+#define PERIPH_SPI_NEEDS_TRANSFER_REGS
+/** @} */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/cpu/stm32f1/periph/spi.c b/cpu/stm32f1/periph/spi.c
index c605a9528636c8431948306004c861431f6ec086..2cbaa187075dac74a23c47e6d1c4896845f574ab 100644
--- a/cpu/stm32f1/periph/spi.c
+++ b/cpu/stm32f1/periph/spi.c
@@ -190,47 +190,6 @@ int spi_transfer_byte(spi_t dev, char out, char *in)
     return transferred;
 }
 
-int spi_transfer_bytes(spi_t dev, char *out, char *in, unsigned int length)
-{
-    int transferred = 0;
-
-    if (out != NULL) {
-        DEBUG("out*: %p out: %x length: %x\n", out, *out, length);
-        while (length--) {
-            int ret = spi_transfer_byte(dev, *(out)++, 0);
-            if (ret <  0) {
-                return ret;
-            }
-            transferred += ret;
-        }
-    }
-    if (in != NULL) {
-        while (length--) {
-            int ret = spi_transfer_byte(dev, 0, in++);
-            if (ret <  0) {
-                return ret;
-            }
-            transferred += ret;
-        }
-        DEBUG("in*: %p in: %x transferred: %x\n", in, *(in-transferred), transferred);
-    }
-
-    DEBUG("sent %x byte(s)\n", transferred);
-    return transferred;
-}
-
-int spi_transfer_reg(spi_t dev, uint8_t reg, char out, char *in)
-{
-    spi_transfer_byte(dev, reg, NULL);
-    return spi_transfer_byte(dev, out, in);
-}
-
-int spi_transfer_regs(spi_t dev, uint8_t reg, char *out, char *in, unsigned int length)
-{
-    spi_transfer_byte(dev, reg, NULL);
-    return spi_transfer_bytes(dev, out, in, length);
-}
-
 void spi_transmission_begin(spi_t dev, char reset_val)
 {
     /* slave mode not implemented, yet */