diff --git a/src/flash/stm32x.c b/src/flash/stm32x.c
index 5b16f57aefc4cffe3266010b7a8586e903948edb..7039a3d41d012bc1d7995714b0b1a58d7b196b95 100644
--- a/src/flash/stm32x.c
+++ b/src/flash/stm32x.c
@@ -644,9 +644,20 @@ int stm32x_probe(struct flash_bank_s *bank)
 	stm32x_flash_bank_t *stm32x_info = bank->driver_priv;
 	int i;
 	u16 num_sectors;
+	u32 device_id;
 	
 	stm32x_info->probed = 0;
 	
+	/* read stm32 device id register */
+	target_read_u32(target, 0xE0042000, &device_id);
+	INFO( "device id = 0x%08x", device_id );
+	
+	if (!(device_id & 0x410))
+    {
+		WARNING( "Cannot identify target as a STM32 family." );
+		return ERROR_FLASH_OPERATION_FAILED;
+    }
+    
 	/* get flash size from target */
 	target_read_u16(target, 0x1FFFF7E0, &num_sectors);
 	INFO( "flash size = %dkbytes", num_sectors );