diff --git a/cpu/native/can/candev_linux.c b/cpu/native/can/candev_linux.c
index a481c63a0e6f5d7a518589c05a230c5c6043b1d8..1bbf888e58f41c11c8d7569a7b19bf1a993de9d6 100644
--- a/cpu/native/can/candev_linux.c
+++ b/cpu/native/can/candev_linux.c
@@ -7,7 +7,7 @@
  */
 
 /**
- * @ingroup     native_cpu
+ * @ingroup     drivers_candev_linux
  * @{
  *
  * @file
diff --git a/cpu/native/include/candev_linux.h b/cpu/native/include/candev_linux.h
index 54f451b7e9d0f89154e109070d91a6372e40b852..d231bd98b06b0a131c6c6aacec2f72e45f03251d 100644
--- a/cpu/native/include/candev_linux.h
+++ b/cpu/native/include/candev_linux.h
@@ -7,9 +7,9 @@
  */
 
 /**
- * @ingroup     native_cpu
+ * @defgroup    drivers_candev_linux SocketCAN driver
  * @ingroup     drivers_can
- * @defgroup    candev_linux SocketCAN driver
+ * @brief       Implementation of simulated CAN controller driver using SocketCAN on Linux
  * @{
  *
  * @file
@@ -18,7 +18,6 @@
  * @author      Hermann Lelong <hermann@otakeys.com>
  * @author      Aurelien Gonce <aurelien.gonce@altran.com>
  * @author      Vincent Dupont <vincent@otakeys.com>
- * @}
  */
 
 #ifndef CANDEV_LINUX_H
@@ -102,3 +101,4 @@ extern candev_linux_conf_t candev_linux_conf[CAN_DLL_NUMOF];
 #endif
 
 #endif /* CANDEV_LINUX_H */
+/** @} */
diff --git a/cpu/native/include/candev_linux_params.h b/cpu/native/include/candev_linux_params.h
index 68ce965c1833e3dbbf05bffc8aadbd305b9284b8..ec121aa1fb6265772aa00edce68c5af6a0c4efbf 100644
--- a/cpu/native/include/candev_linux_params.h
+++ b/cpu/native/include/candev_linux_params.h
@@ -7,14 +7,13 @@
  */
 
 /**
- * @ingroup     candev_linux
+ * @ingroup     drivers_candev_linux
  * @{
  *
  * @file
  * @brief       Default linux can config
  *
  * @author      Vincent Dupont <vincent@otakeys.com>
- * @}
  */
 
 #ifndef CANDEV_LINUX_PARAMS_H
diff --git a/drivers/can_trx/can_trx.c b/drivers/can_trx/can_trx.c
index 0f6057fc845421157da9ccb323028af4ef64bf84..8e8177742729fd2e5a025d280ee2d0dca236b7f2 100644
--- a/drivers/can_trx/can_trx.c
+++ b/drivers/can_trx/can_trx.c
@@ -7,16 +7,15 @@
  */
 
 /**
- * @defgroup    drivers_can transceiver
- * @ingroup     drivers
+ * @ingroup     drivers_can_trx
  * @brief       generic transceiver interface
- *
  * @{
  *
  * @file
  * @brief       generic transceiver interface
  *
  * @author      Vincent Dupont <vincent@otakeys.com>
+ * @}
  */
 
 #include <errno.h>
diff --git a/drivers/include/can/can_trx.h b/drivers/include/can/can_trx.h
index 432b81ca0910d2c55038577c988f22b791d5db47..c7385c12796c7a6110669d27a1fa55d49e376876 100644
--- a/drivers/include/can/can_trx.h
+++ b/drivers/include/can/can_trx.h
@@ -7,15 +7,13 @@
  */
 
 /**
- * @defgroup    trx_can CAN transceiver
- * @ingroup     can
- * @ingroup     drivers
- * @brief       generic transceiver interface
- *
+ * @defgroup    drivers_can_trx CAN transceiver interface
+ * @ingroup     drivers_can
+ * @brief       CAN generic transceiver interface
  * @{
  *
  * @file
- * @brief       generic transceiver interface
+ * @brief       CAN generic transceiver interface
  *
  * @author      Aurelien Gonce <aurelien.gonce@altran.com>
  * @author      Vincent Dupont <vincent@otakeys.com>
diff --git a/drivers/include/can/candev.h b/drivers/include/can/candev.h
index 5b6b66775ca8b26b775490ac8de9d83c49d6b2e7..ca0cea5298b2c711c3cbf1f4997cfc8925847ae5 100644
--- a/drivers/include/can/candev.h
+++ b/drivers/include/can/candev.h
@@ -7,15 +7,15 @@
  */
 
 /**
- * @ingroup     can
- * @ingroup     drivers
- * @defgroup    drivers_can CAN drivers
+ * @defgroup    drivers_candev CAN device driver interface
+ * @ingroup     drivers_can
+ * @brief       Definitions for low-level CAN driver interface
  * @{
  *
- * This is the CAN controller driver interface
+ * This is the CAN controller generic driver interface
  *
  * @file
- * @brief       Definitions low-level CAN driver interface
+ * @brief       Definitions for low-level CAN driver interface
  *
  * @author      Vincent Dupont <vincent@otakeys.com>
  * @author      Toon Stegen <toon.stegen@altran.com>
@@ -37,12 +37,12 @@ extern "C" {
 
 
 /**
- * @brief   Possible event types that are send from the device driver to the
+ * @brief   Possible event types that are sent from the device driver to the
  *          upper layer
  */
 typedef enum {
     CANDEV_EVENT_NOEVENT,          /**< no event, used internally */
-    CANDEV_EVENT_ISR,              /**< driver needs it's ISR handled */
+    CANDEV_EVENT_ISR,              /**< driver needs its ISR handled */
     CANDEV_EVENT_WAKE_UP,          /**< driver has been woken up by bus */
     CANDEV_EVENT_TX_CONFIRMATION,  /**< a packet has been sent */
     CANDEV_EVENT_TIMEOUT_TX_CONF,  /**< tx conf timeout received */
diff --git a/drivers/include/can/doc.txt b/drivers/include/can/doc.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f44698c15f3b2bc6e50788d25957b40288bc784b
--- /dev/null
+++ b/drivers/include/can/doc.txt
@@ -0,0 +1,9 @@
+/**
+ * @defgroup    drivers_can CAN Drivers
+ * @ingroup     drivers_netdev
+ * @brief       Drivers for CAN devices
+ * @see         sys_can
+ *
+ * @note        These devices are not covered by the @ref drivers_netdev API
+ *              but by the @ref drivers_candev API.
+ */
diff --git a/sys/can/conn/isotp.c b/sys/can/conn/isotp.c
index 16b73282754438d689b443b3e376232e7123d4aa..04468d7c505c18f8c32d89174a101853b37df68b 100644
--- a/sys/can/conn/isotp.c
+++ b/sys/can/conn/isotp.c
@@ -7,10 +7,13 @@
  */
 
 /**
+ * @ingroup     sys_can_conn
+ * @{
  * @file
  * @brief       Implementation of isotp CAN connection
  *
  * @author      Vincent Dupont <vincent@otakeys.com>
+ * @}
  */
 
 #ifdef MODULE_CAN_ISOTP
diff --git a/sys/can/conn/raw.c b/sys/can/conn/raw.c
index 6d3678ddcaa39eb3f728d1b66cd8a133e894d627..d35b93fd7651214a8a63c2831c0e70c7c93de036 100644
--- a/sys/can/conn/raw.c
+++ b/sys/can/conn/raw.c
@@ -7,10 +7,13 @@
  */
 
 /**
+ * @ingroup     sys_can_conn
+ * @{
  * @file
  * @brief       Implementation of raw CAN connection
  *
  * @author      Vincent Dupont <vincent@otakeys.com>
+ * @}
  */
 
 #include <errno.h>
diff --git a/sys/can/device.c b/sys/can/device.c
index ab159aaab748acd3dc3c5324223e390bbca08e0d..8d12aa05d8f58a4e50dfc804faf0cc309f93ac15 100644
--- a/sys/can/device.c
+++ b/sys/can/device.c
@@ -7,12 +7,15 @@
  */
 
 /**
+ * @ingroup     sys_can_dll
+ * @{
  * @file
  * @brief       CAN device interface
  *
  * @author      Toon Stegen <toon.stegen@altran.com>
  * @author      Vincent Dupont <vincent@otakeys.com>
  * @author      Aurelien Gonce <aurelien.gonce@altran.com>
+ * @}
  */
 
 #include <errno.h>
diff --git a/sys/can/dll.c b/sys/can/dll.c
index d3ac0f09676761eb441b2a6b9e1c4eddfc39c278..ea221d65fdb9af12e36116ef083ff382911261ce 100644
--- a/sys/can/dll.c
+++ b/sys/can/dll.c
@@ -7,6 +7,8 @@
  */
 
 /**
+ * @ingroup     sys_can_dll
+ * @{
  * @file
  * @brief       CAN Data Link Layer module
  *
@@ -18,6 +20,7 @@
  * @author      Toon Stegen <toon.stegen@altran.com>
  * @author      Vincent Dupont <vincent@otakeys.com>
  * @author      Aurelien Gonce <aurelien.gonce@altran.com>
+ * @}
  */
 
 #include <errno.h>
diff --git a/sys/can/isotp/isotp.c b/sys/can/isotp/isotp.c
index 8ee8c72b2d17ee04984ced1c894d91d945c69c6f..d3958f89231685705659dff78edc4c847938fed7 100644
--- a/sys/can/isotp/isotp.c
+++ b/sys/can/isotp/isotp.c
@@ -7,10 +7,13 @@
  */
 
 /**
+ * @ingroup     sys_can_isotp
+ * @{
  * @file
  * @brief       ISO TP high level interface
  *
  * @author      Vincent Dupont <vincent@otakeys.com>
+ * @}
  */
 
 #include <errno.h>
diff --git a/sys/can/pkt.c b/sys/can/pkt.c
index cf032e81c10d11a0873e6fe17d52029befd164f5..05759e53c1cb465599d0ee86fac7cb875c3fcc85 100644
--- a/sys/can/pkt.c
+++ b/sys/can/pkt.c
@@ -7,11 +7,14 @@
  */
 
 /**
+ * @ingroup     sys_can_dll
+ * @{
  * @file
  * @brief       CAN memory allocation module
  *
  * @author      Vincent Dupont <vincent@otakeys.com>
  * @author      Toon Stegen <toon.stegen@altran.com>
+ * @}
  */
 
 #include <string.h>
diff --git a/sys/can/router.c b/sys/can/router.c
index 2471c33b37d9990048277100e2661382ef01ec5c..9b0103ca75d113aa70dda8ec06479425d1aa2b7a 100644
--- a/sys/can/router.c
+++ b/sys/can/router.c
@@ -7,12 +7,14 @@
  */
 
 /**
- *
+ * @ingroup     sys_can_dll
+ * @{
  * @file
  * @brief       Functions for routing RX can frames
  *
  * @author      Toon Stegen <toon.stegen@altran.com>
  * @author      Vincent Dupont <vincent@otakeys.com>
+ * @}
  */
 
 #include <stdint.h>
diff --git a/sys/include/can/can.h b/sys/include/can/can.h
index 477aec7ed4cb4c4779d283fd8cbb35129eaa69db..dece74ef6029cc4990faa0fc2c78b4b4fda8c59c 100644
--- a/sys/include/can/can.h
+++ b/sys/include/can/can.h
@@ -7,16 +7,15 @@
  */
 
 /**
- * @ingroup     can
- * @defgroup    can_dll Data Link Layer
+ * @defgroup    sys_can_dll Data Link Layer
+ * @ingroup     sys_can
  * @brief       CAN Data Link Layer
  *
  * The Data Link Layer is composed of the device, router, pkt and dll files.
- * It can be used to send and receive raw CAN frames through multiple CAN controllers.
- *
+ * It can be used to send and receive raw CAN frames through multiple CAN
+ * controllers.
  * @{
  *
- *
  * @file
  * @brief       Definitions high-level CAN interface
  *
diff --git a/sys/include/can/common.h b/sys/include/can/common.h
index 38040fadc10cfb662525da549e3b33bb91ed5617..d6104990edf428af29a00789c5ddb237be5e77e2 100644
--- a/sys/include/can/common.h
+++ b/sys/include/can/common.h
@@ -7,8 +7,8 @@
  */
 
 /**
- * @ingroup    can
- * @defgroup   can_common  Common
+ * @defgroup   sys_can_common  Common definitions
+ * @ingroup    sys_can
  * @brief      CAN stack common definitions
  *
  * This module defines the common part of the CAN stack, including structures
diff --git a/sys/include/can/conn/isotp.h b/sys/include/can/conn/isotp.h
index e0139aa3f80c58192bd390e906a2d4719fcb22a5..24fbbba5c31442b7e951dad65d79b7450a828bd2 100644
--- a/sys/include/can/conn/isotp.h
+++ b/sys/include/can/conn/isotp.h
@@ -7,10 +7,9 @@
  */
 
 /**
- * @ingroup    conn_can
+ * @ingroup    sys_can_conn
  * @{
  *
- *
  * @file
  * @brief       Definitions of generic CAN interface
  *
diff --git a/sys/include/can/conn/raw.h b/sys/include/can/conn/raw.h
index fee1fbc0662f68d0b6bc2463d83720be394ffb04..5a7e03be7f34d8e4439055bc2ab4bbbbf10005ab 100644
--- a/sys/include/can/conn/raw.h
+++ b/sys/include/can/conn/raw.h
@@ -7,15 +7,14 @@
  */
 
 /**
- * @ingroup     can
- * @defgroup    conn_can Connection
+ * @defgroup    sys_can_conn Connection
+ * @ingroup     sys_can
  * @brief       conn interface for CAN stack
  *
  * This is the user interface to send and receive raw CAN frames or ISO-TP datagrams
  *
  * @{
  *
- *
  * @file
  * @brief       Definitions of generic CAN interface
  *
diff --git a/sys/include/can/device.h b/sys/include/can/device.h
index ba8c07b78028bda20217c1ad3b140b7d5169424b..00c7e2b1174981048ff0c49896f0417abd405d38 100644
--- a/sys/include/can/device.h
+++ b/sys/include/can/device.h
@@ -7,10 +7,9 @@
  */
 
 /**
- * @ingroup    can_dll
+ * @ingroup    sys_can_dll
  * @{
  *
- *
  * @file
  * @brief       Definitions of CAN device interface
  *
diff --git a/sys/include/can/dll.h b/sys/include/can/dll.h
index 503e97fb980b5128ee3749aa91afb0df81099905..7b00dc604166e9e910ae1aa1199d0457b0e93484 100644
--- a/sys/include/can/dll.h
+++ b/sys/include/can/dll.h
@@ -7,10 +7,9 @@
  */
 
 /**
- * @ingroup    can_dll
+ * @ingroup    sys_can_dll
  * @{
  *
- *
  * @file
  * @brief       Definitions of low-level CAN DLL interface
  *
diff --git a/sys/include/can/doc.txt b/sys/include/can/doc.txt
index 6b17fecc42889ccba047de34da29dfc468ff84ad..089aa8edf11ab6453b9cb8f164b44492f526f00e 100644
--- a/sys/include/can/doc.txt
+++ b/sys/include/can/doc.txt
@@ -1,5 +1,6 @@
 /**
- * @defgroup can CAN
+ * @defgroup sys_can CAN (Controller Area Network)
+ * @ingroup net
  * @brief RIOT CAN stack
  *
  * This module is a full CAN stack integrated to RIOT.
@@ -20,4 +21,6 @@
  *
  * Finally, the connection layer is the user interface to send and receive raw
  * CAN frames or ISO-TP datagrams.
+ *
+ * @see drivers_can
  */
diff --git a/sys/include/can/isotp.h b/sys/include/can/isotp.h
index 2fe456385ea7a27b4bb801a920f45da7cca305a5..a02edfc241d4431ae8c22329aa723a21a14c7bd8 100644
--- a/sys/include/can/isotp.h
+++ b/sys/include/can/isotp.h
@@ -7,12 +7,11 @@
  */
 
 /**
- * @ingroup     can
- * @defgroup    isotp ISOTP
+ * @defgroup    sys_can_isotp ISO transport protocol over CAN
+ * @ingroup     sys_can
  * @brief       ISO transport protocol over CAN (ISO15765)
  * @{
  *
- *
  * @file
  * @brief       ISO TP high level interface
  *
diff --git a/sys/include/can/pkt.h b/sys/include/can/pkt.h
index 9744254dda3987150e77240614072b326489e720..2cb9c05181786aef852b4ca10255c5cc86b95e82 100644
--- a/sys/include/can/pkt.h
+++ b/sys/include/can/pkt.h
@@ -7,10 +7,9 @@
  */
 
 /**
- * @ingroup    can_dll
+ * @ingroup    sys_can_dll
  * @{
  *
- *
  * @file
  * @brief       CAN memory allocation module
  *
@@ -148,5 +147,4 @@ void can_pkt_buf_free(void *data, size_t size);
 #endif
 
 #endif /* CAN_PKT_H */
-
 /** @} */
diff --git a/sys/include/can/raw.h b/sys/include/can/raw.h
index 4420be9d40acf7a1f15dd3ddedc8ff87015eefc9..b8ef3657e30bf7f4654b4afff7f4efffdee01836 100644
--- a/sys/include/can/raw.h
+++ b/sys/include/can/raw.h
@@ -7,14 +7,14 @@
  */
 
 /**
- * @ingroup    can_dll
+ * @ingroup    sys_can_dll
  * @{
  *
- *
  * @file
  * @brief       Definitions high-level RAW CAN interface
  *
- * This file defines the hig-level CAN interface to send and receive RAW CAN frame.
+ * This file defines the high-level CAN interface to send and receive RAW CAN
+ * frame.
  *
  * @author      Vincent Dupont <vincent@otakeys.com>
  * @author      Toon Stegen <toon.stegen@altran.com>
diff --git a/sys/include/can/router.h b/sys/include/can/router.h
index d5679a1df84669888a8ce2d0fed350c013612693..cf2aeb97fcf272dc70976cdc6065899dbe998ff5 100644
--- a/sys/include/can/router.h
+++ b/sys/include/can/router.h
@@ -7,10 +7,9 @@
  */
 
 /**
- * @ingroup    can_dll
+ * @ingroup    sys_can_dll
  * @{
  *
- *
  * @file
  * @brief       Functions for routing RX can frames
  *
@@ -112,5 +111,4 @@ int can_router_dispatch_tx_error(can_pkt_t *pkt);
 #endif
 
 #endif /* CAN_ROUTER_H */
-
 /** @} */