diff --git a/CMakeLists.txt b/CMakeLists.txt
index 52b88b00b9d7a740fadcf23a794b230d9d964a49..695de2782e4e94ce13bc2a1e0431abc0c91ace0f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -282,6 +282,12 @@ sbs_target(test-sx1278-serial stm32f429zi_stm32f4discovery)
 add_executable(test-cc3135 src/tests/drivers/CC3135/test-cc3135.cpp)
 sbs_target(test-cc3135 stm32f407vg_stm32f4discovery)
 
+add_executable(test-cc3135-gs src/tests/drivers/CC3135/test-cc3135.cpp)
+sbs_target(test-cc3135-gs stm32f429zi_skyward_ground_station)
+
+add_executable(test-cc3135-v3 src/tests/drivers/CC3135/test-cc3135.cpp)
+sbs_target(test-cc3135-v3 stm32f429zi_skyward_death_stack_v3)
+
 add_executable(test-mavlinkdriver src/tests/radio/test-mavlinkdriver.cpp)
 sbs_target(test-mavlinkdriver stm32f407vg_stm32f4discovery)
 
diff --git a/src/tests/drivers/CC3135/test-cc3135.cpp b/src/tests/drivers/CC3135/test-cc3135.cpp
index 5f717f801138e9936ffc6b73116dbd2d860bf235..f0d7fa16419e4ddf632bce21ccad2d860ec3c0df 100644
--- a/src/tests/drivers/CC3135/test-cc3135.cpp
+++ b/src/tests/drivers/CC3135/test-cc3135.cpp
@@ -38,6 +38,25 @@ cc3135:CC_SPI_DOUT -> stm32:pc11 (SPI3_MISO)
 cc3135:CC_SPI_CLK  -> stm32:pc10 (SPI3_SCK)
 */
 
+#if defined _BOARD_STM32F429ZI_SKYWARD_GS
+#include "interfaces-impl/hwmapping.h"
+using sck = interfaces::spi1::sck;
+using miso = interfaces::spi1::miso;
+using mosi = interfaces::spi1::mosi;
+using cs = peripherals::cc3135::cs;
+using irq = peripherals::cc3135::intr;
+
+#define CC3135_SPI SPI1
+#elif defined _BOARD_STM32F429ZI_SKYWARD_DEATHST_V3
+#include "interfaces-impl/hwmapping.h"
+using sck = interfaces::spi6::sck;
+using miso = interfaces::spi6::miso;
+using mosi = interfaces::spi6::mosi;
+using cs = sensors::cc3135::cs;
+using irq = sensors::cc3135::intr;
+
+#define CC3135_SPI SPI6
+#else
 using tx  = Gpio<GPIOA_BASE, 2>;
 using rx  = Gpio<GPIOA_BASE, 3>;
 using irq = Gpio<GPIOA_BASE, 4>;
@@ -45,12 +64,19 @@ using hib = Gpio<GPIOA_BASE, 5>;
 
 #define CC3135_UART USART2
 #define CC3135_HIB
+#endif
 
 CC3135 *cc3135 = nullptr;
 
 volatile size_t IRQ_COUNT = 0;
 
+#if defined _BOARD_STM32F429ZI_SKYWARD_GS
+void __attribute__((used)) EXTI5_IRQHandlerImpl()
+#elif defined _BOARD_STM32F429ZI_SKYWARD_DEATHST_V3
+void __attribute__((used)) EXTI10_IRQHandlerImpl()
+#else
 void __attribute__((used)) EXTI4_IRQHandlerImpl()
+#endif
 {
     IRQ_COUNT += 1;
     if (cc3135)
@@ -79,11 +105,11 @@ void initBoard()
         rx::mode(miosix::Mode::ALTERNATE);
         rx::alternateFunction(7);
     }
+#endif
 
     auto irq_pin = irq::getPin();
     enableExternalInterrupt(irq_pin.getPort(), irq_pin.getNumber(),
                             InterruptTrigger::RISING_EDGE);
-#endif
 }
 
 int main()
@@ -121,6 +147,13 @@ int main()
     Thread::sleep(2000);
 #endif
 
+#ifdef CC3135_SPI
+    SPIBus bus(CC3135_SPI);
+    GpioPin cs_pin = cs::getPin();
+
+    std::unique_ptr<ICC3135Iface> iface(new CC3135Spi(bus, cs_pin, {}));
+#endif
+
 #ifdef CC3135_UART
     std::unique_ptr<ICC3135Iface> iface(new CC3135Uart(CC3135_UART));
 #endif