diff --git a/Makefile b/Makefile
index 698db867776136714f7d233e038e2587fe887ef4..ea5b36fcf97a95b66c1afc950a3850c7c60fa1e5 100644
--- a/Makefile
+++ b/Makefile
@@ -30,21 +30,38 @@ all: dirs image.bin
 dirs:
 	mkdir -p obj obj/drivers
 
-image.bin: image.elf
-	$(OBJCOPY) -Obinary image.elf image.bin
+%.bin: %.elf
+	$(OBJCOPY) -Obinary $< $@
+
+rx.elf: src/drivers/startup_stm32g0b1xx.s $(OBJS)
+	$(CC) $^ -o $@ $(CFLAGS) $(LDFLAGS) $(LIBS)
+
+tx.elf: src/drivers/startup_stm32g0b1xx.s $(OBJS)
+	$(CC) $^ -o $@  $(CFLAGS) $(LDFLAGS) $(LIBS)
+
+# image.bin: image.elf
+# 	$(OBJCOPY) -Obinary image.elf image.bin
 
 image.elf: src/drivers/startup_stm32g0b1xx.s $(OBJS)
 	$(CC) $^ -o $@ $(CFLAGS) $(LDFLAGS) $(LIBS)
 
 $(OBJDIR)/%.o: $(SRCDIR)/%.c
-	$(CC) $(INCFLAGS) $(CFLAGS) -c $< -o $@
+	$(CC) $(INCFLAGS) $(ARGS) $(CFLAGS) -c $< -o $@
 
 openocd:
 	openocd -f interface/stlink.cfg -f target/stm32g0x.cfg
 
-flash:
+rx_flash:
 	st-flash --flash=512k --freq=4M --format=binary --reset \
-	--connect-under-reset write image.bin 0x8000000
+	--connect-under-reset write rx.bin 0x8000000
+
+tx_flash:
+	st-flash --flash=512k --freq=4M --format=binary --reset \
+	--connect-under-reset write tx.bin 0x8000000
+
+# flash:
+# 	st-flash --flash=512k --freq=4M --format=binary --reset \
+# 	--connect-under-reset write image.bin 0x8000000
 
 clean:
 	- rm -r image.elf image.bin obj
diff --git a/image.bin b/image.bin
deleted file mode 100755
index 64888617a8d5f196e3e85aadb3135343d4bba281..0000000000000000000000000000000000000000
Binary files a/image.bin and /dev/null differ
diff --git a/image.elf b/image.elf
deleted file mode 100755
index 793f2a2fb9693d1eacc98d01702fa577d4a0ff23..0000000000000000000000000000000000000000
Binary files a/image.elf and /dev/null differ
diff --git a/obj/callbacks.o b/obj/callbacks.o
deleted file mode 100644
index a23d9b850fc0656b120fb1058fa945aa183f4e03..0000000000000000000000000000000000000000
Binary files a/obj/callbacks.o and /dev/null differ
diff --git a/obj/config.o b/obj/config.o
deleted file mode 100644
index 018859948b8e77882c1a7ae52c2b9ac393e53674..0000000000000000000000000000000000000000
Binary files a/obj/config.o and /dev/null differ
diff --git a/obj/drivers/stm32g0xx_hal.o b/obj/drivers/stm32g0xx_hal.o
deleted file mode 100644
index d2a19b5fdace9ce4b78b0148b4311a075db9f688..0000000000000000000000000000000000000000
Binary files a/obj/drivers/stm32g0xx_hal.o and /dev/null differ
diff --git a/obj/drivers/stm32g0xx_hal_cortex.o b/obj/drivers/stm32g0xx_hal_cortex.o
deleted file mode 100644
index 41e43b210371677fb468b7f48e7b421414551f21..0000000000000000000000000000000000000000
Binary files a/obj/drivers/stm32g0xx_hal_cortex.o and /dev/null differ
diff --git a/obj/drivers/stm32g0xx_hal_fdcan.o b/obj/drivers/stm32g0xx_hal_fdcan.o
deleted file mode 100644
index 439347c810e1c6f4711b019e931546b535b459c1..0000000000000000000000000000000000000000
Binary files a/obj/drivers/stm32g0xx_hal_fdcan.o and /dev/null differ
diff --git a/obj/drivers/stm32g0xx_hal_flash.o b/obj/drivers/stm32g0xx_hal_flash.o
deleted file mode 100644
index f140e1307b787ee59010b694a2b2714659352f0c..0000000000000000000000000000000000000000
Binary files a/obj/drivers/stm32g0xx_hal_flash.o and /dev/null differ
diff --git a/obj/drivers/stm32g0xx_hal_flash_ex.o b/obj/drivers/stm32g0xx_hal_flash_ex.o
deleted file mode 100644
index c0f3efb691607f5abcedda5410805947e359de95..0000000000000000000000000000000000000000
Binary files a/obj/drivers/stm32g0xx_hal_flash_ex.o and /dev/null differ
diff --git a/obj/drivers/stm32g0xx_hal_gpio.o b/obj/drivers/stm32g0xx_hal_gpio.o
deleted file mode 100644
index 3f1c2495c916a275c9c49bcc4a1b5e0d795871a8..0000000000000000000000000000000000000000
Binary files a/obj/drivers/stm32g0xx_hal_gpio.o and /dev/null differ
diff --git a/obj/drivers/stm32g0xx_hal_pwr.o b/obj/drivers/stm32g0xx_hal_pwr.o
deleted file mode 100644
index 5e39a3b90a970dcf2391877fec31870f76f7b2be..0000000000000000000000000000000000000000
Binary files a/obj/drivers/stm32g0xx_hal_pwr.o and /dev/null differ
diff --git a/obj/drivers/stm32g0xx_hal_pwr_ex.o b/obj/drivers/stm32g0xx_hal_pwr_ex.o
deleted file mode 100644
index e64b1c3b7f1da3fc43a0313eb664d7d2ae063b59..0000000000000000000000000000000000000000
Binary files a/obj/drivers/stm32g0xx_hal_pwr_ex.o and /dev/null differ
diff --git a/obj/drivers/stm32g0xx_hal_rcc.o b/obj/drivers/stm32g0xx_hal_rcc.o
deleted file mode 100644
index b4fd315204c2bc24200f66042201cd253a4de825..0000000000000000000000000000000000000000
Binary files a/obj/drivers/stm32g0xx_hal_rcc.o and /dev/null differ
diff --git a/obj/drivers/stm32g0xx_hal_rcc_ex.o b/obj/drivers/stm32g0xx_hal_rcc_ex.o
deleted file mode 100644
index a5389c87aeb4cbb7c40ccb35baef3ba5571c1978..0000000000000000000000000000000000000000
Binary files a/obj/drivers/stm32g0xx_hal_rcc_ex.o and /dev/null differ
diff --git a/obj/drivers/system_stm32g0xx.o b/obj/drivers/system_stm32g0xx.o
deleted file mode 100644
index a2d78bc5e4c249cab2963fe37a7f3bdae7e82c32..0000000000000000000000000000000000000000
Binary files a/obj/drivers/system_stm32g0xx.o and /dev/null differ
diff --git a/obj/main.o b/obj/main.o
deleted file mode 100644
index 538cbc41c9d357383dd2ac8957b2c5205598e009..0000000000000000000000000000000000000000
Binary files a/obj/main.o and /dev/null differ
diff --git a/obj/stm32g0xx_it.o b/obj/stm32g0xx_it.o
deleted file mode 100644
index b6d444dbef1082e37632b45c867a74a83deac3c5..0000000000000000000000000000000000000000
Binary files a/obj/stm32g0xx_it.o and /dev/null differ
diff --git a/src/config.c b/src/config.c
index 1cd257e3ffb8a843d00165e73d35e824c4fb9fb8..08afad43d6439af6c21384b77742bc1838a02292 100644
--- a/src/config.c
+++ b/src/config.c
@@ -21,11 +21,11 @@ void config_clock(void) {
     // undefined for now. This leaves the SysClk running at 170 MHz
     pll_config.PLLState = RCC_PLL_ON;
     pll_config.PLLSource = RCC_PLLSOURCE_HSI;
-    pll_config.PLLM = RCC_PLLM_DIV4;
-    pll_config.PLLN = 34;
-    pll_config.PLLP = RCC_PLLP_DIV8;
-    pll_config.PLLQ = RCC_PLLQ_DIV8;
-    pll_config.PLLR = RCC_PLLR_DIV3;
+    pll_config.PLLM = RCC_PLLM_DIV2;
+    pll_config.PLLN = 16;
+    pll_config.PLLP = RCC_PLLP_DIV16;
+    pll_config.PLLQ = RCC_PLLQ_DIV5;
+    pll_config.PLLR = RCC_PLLR_DIV2;
 
     osc_config.OscillatorType = RCC_OSCILLATORTYPE_HSI;
     osc_config.HSIState = RCC_HSICALIBRATION_DEFAULT; // do not choose BYPASS because we have
@@ -130,8 +130,11 @@ void config_fdcan(FDCAN_HandleTypeDef *hcan) {
     hcan->Init = (FDCAN_InitTypeDef) {
         .ClockDivider = FDCAN_CLOCK_DIV10,
         .FrameFormat = FDCAN_FRAME_CLASSIC,
-        /* .Mode = FDCAN_MODE_NORMAL, */
+#if defined(RAM_CAN_NORMAL)
+        .Mode = FDCAN_MODE_NORMAL,
+#elif defined(RAM_CAN_LOOPBACK)
         .Mode = FDCAN_MODE_EXTERNAL_LOOPBACK,
+#endif
         .AutoRetransmission = ENABLE,
         .TransmitPause = ENABLE,
         .ProtocolException = DISABLE,
diff --git a/src/main.c b/src/main.c
index 2775ccc95e9e365a0d83abc9577f05bdebdcdede..b8690fae55aebe903a95f69456d5ed407371c97c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -34,7 +34,9 @@ int main(void) {
     };
     uint8_t thruster_tx_buf[8] = "AAAAAAA";
 
+#if defined(RAM_CAN_LOOPBACK)
     HAL_FDCAN_AddMessageToTxFifoQ(&hcan, &thruster_tx, thruster_tx_buf);
+#endif
 
     FDCAN_TxEventFifoTypeDef event = {0};
     HAL_FDCAN_GetTxEvent(&hcan, &event);