
{"id":2197,"date":"2026-07-29T12:37:50","date_gmt":"2026-07-29T11:37:50","guid":{"rendered":"https:\/\/www.kanda.com\/blog\/?p=2197"},"modified":"2026-07-29T12:37:50","modified_gmt":"2026-07-29T11:37:50","slug":"can-bus-explained-part-3","status":"publish","type":"post","link":"https:\/\/www.kanda.com\/blog\/programming\/can-bus-explained-part-3\/","title":{"rendered":"CAN Bus Explained Part 3"},"content":{"rendered":"\n<header class=\"article-header\">\n\n    <img decoding=\"async\"\n        class=\"hero-image\"\n        src=\"https:\/\/www.kanda.com\/blog\/wp-content\/uploads\/CANBUS-part3-heroimage.jpg\"\n        alt=\"CAN Bus Explained Part 3\">\n\n    <div class=\"article-header-text\">\n\n        <p class=\"series-title\">\n            CAN BUS EXPLAINED\n        <\/p>\n\n        <h1>\n            Part 3: CAN FD, Network Design and Debugging\n        <\/h1>\n\n    <\/div>\n\n<\/header>\n\n\n\n<!--more-->\n\n\n\n<style data-wp-block-html=\"css\">\n\/* ==========================================================\n   CAN Bus Explained Series\n   ========================================================== *\/\n\n\/* ----------------------------------------------------------\n   Root Container\n   ---------------------------------------------------------- *\/\n\n.can-series {\n\n    max-width: 1040px;\n\n    margin: 0 auto;\n\n    padding: 0 32px 80px;\n\n    color: #222;\n\n    font-family:\n        \"Segoe UI\",\n        Roboto,\n        Helvetica,\n        Arial,\n        sans-serif;\n\n    font-size: 18px;\n\n    line-height: 1.75;\n}\n\n\/* ----------------------------------------------------------\n   Global\n   ---------------------------------------------------------- *\/\n\n.can-series * {\n\n    box-sizing: border-box;\n}\n\n.can-series img {\n\n    display: block;\n\n    max-width: 100%;\n\n    height: auto;\n}\n\n\/* ----------------------------------------------------------\n   Header\n   ---------------------------------------------------------- *\/\n\n.can-series .article-header {\n\n    margin-bottom: 56px;\n}\n\n.can-series .hero-image {\n\n    width: 100%;\n\n    border-radius: 10px;\n\n    margin-bottom: 28px;\n}\n\n.can-series .article-header-text {\n\n    max-width: 900px;\n}\n\n\/* ----------------------------------------------------------\n   Series Title\n   ---------------------------------------------------------- *\/\n\n.can-series .series-title {\n\n    margin: 0 0 10px;\n\n    color: #5f6d7a;\n\n    font-size: 0.88rem;\n\n    font-weight: 700;\n\n    letter-spacing: 0.18em;\n\n    text-transform: uppercase;\n}\n\n\/* ----------------------------------------------------------\n   Main Title\n   ---------------------------------------------------------- *\/\n\n.can-series h1 {\n\n    margin: 0;\n\n    color: #173550;\n\n    font-size: 2.65rem;\n\n    line-height: 1.18;\n\n    font-weight: 700;\n}\n\n\/* ----------------------------------------------------------\n   Section Headings\n   ---------------------------------------------------------- *\/\n\n.can-series h2 {\n\n    margin:\n\n        0\n        0\n        26px;\n\n    color: #173550;\n\n    font-size: 2rem;\n\n    font-weight: 650;\n\n    line-height: 1.25;\n}\n\n\/* ----------------------------------------------------------\n   Paragraphs\n   ---------------------------------------------------------- *\/\n\n.can-series p {\n\n    margin: 0 0 22px;\n}\n\n\/* ----------------------------------------------------------\n   Sections\n   ---------------------------------------------------------- *\/\n\n.can-series section {\n\n    margin-bottom: 68px;\n}\n\n\/* ----------------------------------------------------------\n   Links\n   ---------------------------------------------------------- *\/\n\n.can-series a {\n\n    color: #005ea8;\n\n    text-decoration: none;\n}\n\n.can-series a:hover {\n\n    text-decoration: underline;\n}\n\n\/* ----------------------------------------------------------\n   Responsive\n   ---------------------------------------------------------- *\/\n\n@media (max-width: 900px) {\n\n    .can-series {\n\n        padding:\n\n            0\n            24px\n            70px;\n\n        font-size: 17px;\n    }\n\n    .can-series h1 {\n\n        font-size: 2.25rem;\n    }\n\n    .can-series h2 {\n\n        font-size: 1.75rem;\n    }\n\n}\n\n@media (max-width: 600px) {\n\n    .can-series {\n\n        padding:\n\n            0\n            18px\n            60px;\n    }\n\n    .can-series .hero-image {\n\n        border-radius: 6px;\n\n        margin-bottom: 22px;\n    }\n\n    .can-series h1 {\n\n        font-size: 1.9rem;\n    }\n\n    .can-series h2 {\n\n        font-size: 1.55rem;\n    }\n\n}\n\n\/* ==========================================================\n   Lists\n   ========================================================== *\/\n\n.can-series ul,\n.can-series ol {\n\n    margin:\n        22px\n        0\n        26px\n        28px;\n\n    padding: 0;\n}\n\n.can-series li {\n\n    margin-bottom: 10px;\n}\n\n.can-series li:last-child {\n\n    margin-bottom: 0;\n}\n\n\/* ==========================================================\n   Figures\n   ========================================================== *\/\n\n.can-series .article-figure {\n\n    margin:\n        40px\n        auto\n        44px;\n\n    text-align: center;\n}\n\n.can-series .article-figure img {\n\n    width: 100%;\n\n    border: 1px solid #d9dee5;\n\n    border-radius: 8px;\n\n    background: #ffffff;\n}\n\n\/* Hero images remain untouched *\/\n\n.can-series .hero-image {\n\n    border: none;\n\n    background: none;\n}\n\n\/* ==========================================================\n   Tables\n   ========================================================== *\/\n\n.can-series table {\n\n    width: 100%;\n\n    margin:\n        36px\n        0;\n\n    border-collapse: collapse;\n\n    font-size: 0.95rem;\n\n    background: #ffffff;\n}\n\n.can-series th {\n\n    padding: 14px 16px;\n\n    text-align: left;\n\n    font-weight: 650;\n\n    color: #ffffff;\n\n    background: #173550;\n}\n\n.can-series td {\n\n    padding: 13px 16px;\n\n    border-bottom: 1px solid #e4e8ed;\n\n    vertical-align: top;\n}\n\n.can-series tbody tr:nth-child(even) {\n\n    background: #f8fafc;\n}\n\n\/* ==========================================================\n   Inline Code\n   ========================================================== *\/\n\n.can-series code {\n\n    padding:\n        2px\n        6px;\n\n    border-radius: 4px;\n\n    background: #f4f6f8;\n\n    color: #a23500;\n\n    font-family:\n        Consolas,\n        \"Courier New\",\n        monospace;\n\n    font-size: 0.94em;\n}\n\n\/* ==========================================================\n   Code Blocks\n   ========================================================== *\/\n\n.can-series pre {\n\n    overflow-x: auto;\n\n    margin:\n        34px\n        0;\n\n    padding: 20px 22px;\n\n    border-radius: 8px;\n\n    background: #252b34;\n\n    color: #eef2f6;\n}\n\n.can-series pre code {\n\n    padding: 0;\n\n    background: transparent;\n\n    color: inherit;\n}\n\n\/* ==========================================================\n   Navigation\n   ========================================================== *\/\n\n.can-series .article-navigation {\n\n    display: flex;\n\n    justify-content: space-between;\n\n    gap: 40px;\n\n    margin-top: 80px;\n\n    padding-top: 34px;\n\n    border-top: 1px solid #d8dde3;\n}\n\n.can-series .article-navigation a {\n\n    display: flex;\n\n    flex-direction: column;\n\n    gap: 6px;\n\n    color: #173550;\n\n    font-weight: 600;\n\n    transition: color 0.18s ease;\n}\n\n.can-series .article-navigation a:hover {\n\n    color: #005ea8;\n\n    text-decoration: none;\n}\n\n.can-series .article-navigation span {\n\n    font-size: 0.95rem;\n\n    font-weight: 400;\n\n    color: #5f6d7a;\n\n    line-height: 1.45;\n}\n\n.can-series .next-article {\n\n    text-align: right;\n\n    margin-left: auto;\n}\n\n\/* ==========================================================\n   Mobile\n   ========================================================== *\/\n\n@media (max-width: 600px) {\n\n    .can-series .article-navigation {\n\n        flex-direction: column;\n\n        gap: 24px;\n    }\n\n    .can-series .next-article {\n\n        text-align: left;\n\n        margin-left: 0;\n    }\n\n\n    .can-series section {\n\n        margin-bottom: 52px;\n    }\n\n    .can-series .article-figure {\n\n        margin:\n            30px\n            auto\n            34px;\n    }\n\n    .can-series table {\n\n        font-size: 0.9rem;\n    }\n\n}\n\n\/* ==========================================================\n   Text Selection\n   ========================================================== *\/\n\n.can-series ::selection {\n\n    background: #d6ebff;\n\n    color: #000;\n}\n\n\/* ==========================================================\n   Strong & Emphasis\n   ========================================================== *\/\n\n.can-series strong {\n\n    font-weight: 650;\n}\n\n.can-series em {\n\n    font-style: italic;\n}\n\n\/* ----------------------------------------------------------\n   Horizontal Rules\n   ---------------------------------------------------------- *\/\n\n.can-series hr {\n\n    margin: 64px 0;\n\n    border: 0;\n\n    border-top: 1px solid #d9dee5;\n}\n\n\/* ----------------------------------------------------------\n   Prevent Wide Content Overflow\n   ---------------------------------------------------------- *\/\n\n.can-series table,\n.can-series pre,\n.can-series .article-figure {\n\n    max-width: 100%;\n}\n\n\/* ==========================================================\n   Better Paragraph Rhythm\n   ========================================================== *\/\n\n.can-series h2 + p {\n\n    margin-top: 0;\n}\n\n.can-series p:last-child {\n\n    margin-bottom: 0;\n}\n\n\/* ==========================================================\n   Keyboard Focus\n   ========================================================== *\/\n\n.can-series a:focus-visible {\n\n    outline: 2px solid #3d8fd9;\n\n    outline-offset: 3px;\n\n    border-radius: 3px;\n}\n\n\/* ==========================================================\n   Print\n   ========================================================== *\/\n\n@media print {\n\n    .can-series {\n\n        max-width: none;\n\n        padding: 0;\n\n        color: #000;\n\n        font-size: 11pt;\n\n        line-height: 1.5;\n    }\n\n    .can-series .article-navigation {\n\n        display: none;\n    }\n\n    .can-series .hero-image,\n    .can-series .article-figure,\n    .can-series table {\n\n        break-inside: avoid;\n    }\n\n}\n<\/style>\n\n<div class=\"can-series\">\n\n<main>\n\n<article>\n\n<section id=\"introduction\">\n\n<h2>Introduction<\/h2>\n\n<p>\n    Throughout the first two parts of this series we explored why Controller Area Networks were developed, how they operate at both the physical and protocol layers, and why they have become one of the most dependable communication technologies in embedded systems.\n<\/p>\n\n<p>\n    Modern embedded applications, however, continue to demand greater bandwidth, increased diagnostic capability and more sophisticated development tools than the original CAN specification was designed to provide.\n<\/p>\n\n<p>\n    This final article examines how the protocol has evolved through <strong>CAN FD<\/strong>, discusses practical considerations when designing reliable CAN networks and introduces the hardware and software tools used to analyse, diagnose and debug real-world CAN systems.\n<\/p>\n\n<p>\n    Together these topics bridge the gap between understanding the protocol and applying it successfully in practical embedded engineering projects.\n<\/p>\n\n<\/section>\n\n<section id=\"introducing-can-fd\">\n\n<h2>Introducing CAN FD<\/h2>\n\n<p>\n    Although Classical CAN remains one of the most successful communication protocols ever developed, increasing network complexity and larger volumes of application data eventually exposed its practical limitations.\n<\/p>\n\n<p>\n    Many modern systems require significantly more than eight bytes of payload while also demanding faster communication without sacrificing the robustness that made CAN so successful.\n<\/p>\n\n<p>\n    To address these requirements, Bosch introduced <strong>CAN FD<\/strong> (CAN with Flexible Data-rate), extending the original protocol while maintaining the same physical-layer principles and overall network philosophy.\n<\/p>\n\n<p>\n    Rather than replacing Classical CAN, CAN FD builds upon it by increasing payload capacity and allowing higher data rates during the data portion of each frame.\n<\/p>\n\n<figure class=\"article-figure\">\n    <img decoding=\"async\" src=\"https:\/\/www.kanda.com\/blog\/wp-content\/uploads\/fig10-can-fd-frame.jpg\" alt=\"Structure of a CAN FD frame\">\n<\/figure>\n\n<p>\n    The most significant improvements include:\n<\/p>\n\n<ul>\n    <li>Payloads of up to 64 bytes.<\/li>\n    <li>Higher bit rates during the data field.<\/li>\n    <li>Improved CRC protection for longer frames.<\/li>\n    <li>Greater communication efficiency.<\/li>\n<\/ul>\n\n<p>\n    These enhancements enable considerably higher throughput while preserving the deterministic arbitration mechanism inherited from Classical CAN.\n<\/p>\n\n<\/section>\n\n<section id=\"classical-can-and-can-fd\">\n\n<h2>Classical CAN and CAN FD<\/h2>\n\n<p>\n    Despite their similarities, Classical CAN and CAN FD are optimised for different applications.\n<\/p>\n\n<p>\n    Classical CAN remains ideal for many control systems where small messages, predictable latency and extensive interoperability are the primary design objectives.\n<\/p>\n\n<p>\n    CAN FD becomes advantageous when larger data payloads or increased bandwidth are required, such as software updates, advanced diagnostics, sensor fusion and modern automotive control systems.\n<\/p>\n\n<p>\n    Importantly, migration to CAN FD is often evolutionary rather than revolutionary. Many contemporary systems continue to employ both technologies depending on subsystem requirements.\n<\/p>\n\n<\/section>\n\n<section id=\"designing-a-reliable-can-network\">\n\n<h2>Designing a Reliable CAN Network<\/h2>\n\n<p>\n    Selecting the correct protocol is only one aspect of building a dependable CAN system.\n<\/p>\n\n<p>\n    Network topology, cable length, termination and node placement all influence communication reliability and overall system performance.\n<\/p>\n\n<figure class=\"article-figure\">\n    <img decoding=\"async\" src=\"https:\/\/www.kanda.com\/blog\/wp-content\/uploads\/fig11-network-topology.jpg\" alt=\"Good and poor CAN network topology examples\">\n<\/figure>\n\n<p>\n    Well-designed CAN networks typically exhibit the following characteristics:\n<\/p>\n\n<ul>\n    <li>Correct termination at both ends of the main bus.<\/li>\n    <li>Short stub lengths.<\/li>\n    <li>Consistent cable impedance.<\/li>\n    <li>Appropriate baud rate for the physical network length.<\/li>\n    <li>Carefully planned message priorities.<\/li>\n<\/ul>\n\n<p>\n    Following these principles significantly improves reliability while reducing intermittent communication faults that can otherwise prove extremely difficult to diagnose.\n<\/p>\n\n<\/section>\n\n<section id=\"analysing-can-networks\">\n\n<h2>Analysing CAN Networks<\/h2>\n\n<p>\n    Designing a reliable network is only part of the engineering process. During development and maintenance it is equally important to observe, record and interpret the traffic flowing across the bus.\n<\/p>\n\n<p>\n    CAN&#8217;s broadcast architecture makes this particularly convenient. Any correctly connected analyser can observe every message transmitted on the network without interfering with normal communication, making diagnostics both powerful and non-intrusive.\n<\/p>\n\n<p>\n    Typical analysis tasks include:\n<\/p>\n\n<ul>\n    <li>Monitoring live network traffic.<\/li>\n    <li>Decoding message identifiers.<\/li>\n    <li>Inspecting payload data.<\/li>\n    <li>Measuring bus utilisation.<\/li>\n    <li>Identifying communication errors.<\/li>\n    <li>Verifying application behaviour.<\/li>\n<\/ul>\n\n<p>\n    Whether diagnosing a fault or validating new firmware, a CAN analyser rapidly becomes one of the most valuable tools available to an embedded engineer.\n<\/p>\n\n<\/section>\n\n<section id=\"hardware-for-can-development\">\n\n<h2>Hardware for CAN Development<\/h2>\n\n<p>\n    Building a practical CAN development environment requires surprisingly little hardware. Modern USB interfaces allow a standard laptop to connect directly to a CAN network, providing real-time access to every message transmitted on the bus.\n<\/p>\n\n<p>\n    A typical setup consists of:\n<\/p>\n\n<ul>\n    <li>A computer running CAN analysis software.<\/li>\n    <li>A USB-to-CAN interface.<\/li>\n    <li>An appropriate CAN transceiver.<\/li>\n    <li>A correctly terminated CAN network.<\/li>\n<\/ul>\n\n<p>\n    Depending on the application, additional hardware such as development boards, breakout adapters or programmable CAN nodes may also be incorporated to simulate or generate network traffic.\n<\/p>\n\n<\/section>\n\n<section id=\"building-a-simple-can-analyser\">\n\n<h2>Building a Simple CAN Analyser<\/h2>\n\n<p>\n    One of the most effective ways to understand CAN is to build a simple analyser capable of monitoring live bus traffic.\n<\/p>\n\n<p>\n    Even a modest setup provides valuable insight into message timing, identifier usage and network behaviour while offering an excellent platform for experimentation.\n<\/p>\n\n<figure class=\"article-figure\">\n    <img decoding=\"async\" src=\"https:\/\/www.kanda.com\/blog\/wp-content\/uploads\/fig12-diy-can-analyzer.jpg\" alt=\"Typical CAN analysis workstation\">\n<\/figure>\n\n<p>\n    A basic analyser typically consists of:\n<\/p>\n\n<ul>\n    <li>A laptop or desktop computer.<\/li>\n    <li>A USB-CAN interface.<\/li>\n    <li>A suitable CAN network or development board.<\/li>\n    <li>Analysis software capable of decoding CAN frames.<\/li>\n<\/ul>\n\n<p>\n    Once connected, the analyser can observe every message transmitted on the bus, allowing engineers to inspect identifiers, payloads, timing relationships and communication behaviour in real time.\n<\/p>\n\n<p>\n    As projects become more advanced, the same hardware can also be used to inject messages, perform diagnostics and verify application software during development.\n<\/p>\n\n<\/section>\n\n<section id=\"choosing-can-tools\">\n\n<h2>Choosing CAN Tools<\/h2>\n\n<p>\n    A wide range of commercial and open-source tools are available for CAN development, ranging from inexpensive hobbyist interfaces to professional automotive analysis platforms.\n<\/p>\n\n<p>\n    When selecting hardware or software, engineers should consider:\n<\/p>\n\n<ul>\n    <li>Support for Classical CAN and CAN FD.<\/li>\n    <li>Operating system compatibility.<\/li>\n    <li>Real-time capture performance.<\/li>\n    <li>Message filtering and decoding capabilities.<\/li>\n    <li>Logging and export functionality.<\/li>\n    <li>Availability of APIs or scripting support.<\/li>\n<\/ul>\n\n<p>\n    The most appropriate solution depends on the intended application, but the underlying principles remain identical regardless of the chosen platform.\n<\/p>\n\n<\/section>\n\n<section id=\"best-practices\">\n\n<h2>Best Practices for CAN Network Design<\/h2>\n\n<p>\n    Although CAN is exceptionally robust, achieving reliable communication still depends upon good engineering practice. Many problems encountered during development are not caused by the protocol itself, but by poor physical network implementation.\n<\/p>\n\n<p>\n    Regardless of whether a project uses Classical CAN or CAN FD, several design principles consistently contribute to stable, maintainable systems:\n<\/p>\n\n<ul>\n    <li>Terminate the network correctly with <code>120&nbsp;\u03a9<\/code> resistors at both ends of the main bus.<\/li>\n    <li>Keep stub lengths as short as possible.<\/li>\n    <li>Select an appropriate bit rate for the overall cable length.<\/li>\n    <li>Use quality twisted-pair cable with controlled impedance.<\/li>\n    <li>Allocate message identifiers according to system priority.<\/li>\n    <li>Design with future expansion and diagnostics in mind.<\/li>\n<\/ul>\n\n<p>\n    Following these guidelines during the initial design phase often prevents difficult-to-diagnose communication problems later in the product lifecycle.\n<\/p>\n\n<\/section>\n\n<section id=\"the-future-of-can\">\n\n<h2>The Future of CAN<\/h2>\n\n<p>\n    More than forty years after its introduction, CAN remains one of the most important communication technologies in embedded systems. While newer protocols continue to emerge, few offer the same combination of simplicity, determinism and proven reliability.\n<\/p>\n\n<p>\n    CAN FD has significantly extended the capabilities of the original protocol, and further developments such as CAN XL continue to increase bandwidth while preserving the design philosophy that has made CAN so successful.\n<\/p>\n\n<p>\n    Beyond the automotive industry, CAN continues to play a central role in industrial automation, robotics, agricultural machinery, marine systems, aerospace applications and countless embedded products.\n<\/p>\n\n<p>\n    For embedded engineers, understanding CAN is therefore not simply about maintaining legacy systems\u2014it remains an essential skill for developing the next generation of connected electronic devices.\n<\/p>\n\n<\/section>\n\n<section id=\"series-summary\">\n\n<h2>Series Summary<\/h2>\n\n<p>\n    Across this three-part series we have explored Controller Area Networks from their origins through to modern practical implementation.\n<\/p>\n\n<p>\n    In <strong>Part&nbsp;1<\/strong> we examined why CAN was developed, how nodes communicate across a shared bus and why differential signalling provides such excellent electrical noise immunity.\n<\/p>\n\n<p>\n    In <strong>Part&nbsp;2<\/strong> we investigated frame structure, deterministic arbitration, bit timing and the comprehensive error handling mechanisms that give CAN its outstanding reliability.\n<\/p>\n\n<p>\n    Finally, in this article we explored CAN FD, practical network design considerations and the hardware and software used to analyse, debug and develop real CAN systems.\n<\/p>\n\n<p>\n    Together these topics provide a solid foundation for understanding one of the world&#8217;s most successful embedded communication protocols and, more importantly, for applying that knowledge to real engineering projects.\n<\/p>\n\n<\/section>\n\n<section id=\"final-thoughts\">\n\n<h2>Final Thoughts<\/h2>\n\n<p>\n    CAN has earned its reputation through decades of successful deployment in some of the world&#8217;s most demanding environments. Its elegant combination of simplicity, robustness and deterministic communication continues to make it the protocol of choice for many embedded applications.\n<\/p>\n\n<p>\n    Whether your goal is to understand vehicle diagnostics, develop industrial control systems, build custom hardware or simply broaden your embedded engineering knowledge, a strong understanding of CAN provides a valuable foundation that will remain relevant for years to come.\n<\/p>\n\n<p>\n    Hopefully this series has not only explained <em>how<\/em> CAN works, but also provided the confidence to begin exploring, analysing and designing CAN networks yourself.\n<\/p>\n\n<\/section>\n\n<\/article>\n\n<nav class=\"article-navigation\">\n\n    <a class=\"previous-article\" href=\"https:\/\/www.kanda.com\/blog\/microcontrollers\/can-bus-explained-part-2\">\n        \u2190 Previous Article\n        <span>CAN Bus Explained Part 2: Frames, Arbitration and Fault Tolerance<\/span>\n    <\/a>\n\n<\/nav>\n\n<\/main>\n\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>CAN BUS EXPLAINED Part 3: CAN FD, Network Design and Debugging<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_members_access_role":[],"_members_access_error":""},"categories":[22],"tags":[24],"class_list":["post-2197","post","type-post","status-publish","format-standard","placeholder-for-hentry","category-programming","tag-bluetooth-wireless"],"_links":{"self":[{"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/posts\/2197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/comments?post=2197"}],"version-history":[{"count":3,"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/posts\/2197\/revisions"}],"predecessor-version":[{"id":2200,"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/posts\/2197\/revisions\/2200"}],"wp:attachment":[{"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/media?parent=2197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/categories?post=2197"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kanda.com\/blog\/wp-json\/wp\/v2\/tags?post=2197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}