{"id":2906,"date":"2019-08-05T06:56:30","date_gmt":"2019-08-05T06:56:30","guid":{"rendered":"http:\/\/fastbitlab.com\/?p=2906"},"modified":"2023-09-05T11:53:25","modified_gmt":"2023-09-05T06:23:25","slug":"i2c-introduction-and-difference-with-spi","status":"publish","type":"post","link":"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/","title":{"rendered":"STM32 I2C Lecture 1 : I2C Introduction and difference with SPI"},"content":{"rendered":"<div class=\"boldgrid-section\" style=\"background-image: linear-gradient(to left, #eeeeee, #eeeeee);\" data-bg-color-1=\"#EEEEEE\" data-bg-color-2=\"#EEEEEE\" data-bg-direction=\"to left\">\n<div class=\"container\">\n<div class=\"row\" style=\"padding-top: 50px; padding-bottom: 50px;\">\n<div class=\"col-md-1 col-sm-12 col-xs-12 col-lg-1\">\n<p>&nbsp;<\/p>\n<\/div>\n<div class=\"col-md-10 col-sm-12 col-xs-12 col-lg-10\">\n<h1 class=\"\" style=\"text-align: center; border-width: 0px; font-size: 35px; line-height: 67px;\"><span style=\"color: #000080;\">I2C Introduction and difference with SPI<\/span><\/h1>\n<div class=\"row bg-editor-hr-wrap\">\n<div class=\"col-lg-12 col-md-12 col-xs-12 col-sm-12\">\n<div>\n<p>&nbsp;<\/p>\n<div class=\"bg-hr bg-hr-10\" style=\"border-style: solid; border-width: 0px 0px 3px; width: 94%; color: rgba(11, 34, 151, 0.9); margin-top: -25px;\"><\/div>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"row bg-editor-hr-wrap\">\n<hr>\n<\/div>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 23px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><strong>I2C Introduction<\/strong><\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">The I2C (inter-integrated circuit) bus interface handles communications between the microcontroller and the serial I2C bus.<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\"> In other words, I2C is just a protocol to achieve serial data communication between integrated circuits which are very close to each other. It provides excellent support to the slow devices.<\/span><\/p>\n<p class=\"\" style=\"font-size: 18px; line-height: 32px; font-family: 'Roboto Slab'; font-weight: 400;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000080;\"><strong><span style=\"text-decoration: underline;\">Structure of the I2C bus system<\/span><\/strong><\/span><\/p>\n<figure id=\"attachment_2908\" aria-describedby=\"caption-attachment-2908\" style=\"width: 1528px\" class=\"wp-caption aligncenter\"><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-2908 size-full\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2019\/07\/Screenshot-179.png\" alt=\"I2C Introduction and difference with SPI\" width=\"1528\" height=\"626\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179.png 1528w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179-300x123.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179-768x315.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179-1024x420.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179-600x246.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179-120x49.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179-500x205.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179-200x82.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179-400x164.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179-800x328.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179-1200x492.png 1200w\" sizes=\"(max-width: 1528px) 100vw, 1528px\" \/><figcaption id=\"caption-attachment-2908\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 1. Structure of the I2C bus system.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">For example, EEPROM, ADC, and RTC, etc. <\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">I2C is not only used with the single board but also used with the other external components which have connected with boards through the cables. I2C protocol details like how data sent, how data should receive, how handshaking should happen between the sender and receiver, error handling is more complicated than the SPI protocol. So, in other words, SPI is a straightforward protocol compared to I2C.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-size: 25px; border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; line-height: 47px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><strong>Difference between SPI and I2C protocol:&nbsp;<\/strong><\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">I2C and SPI are both bus protocols that allow short-distance, serial data transfer. I2C originates from the Philips semiconductor division, while Motorola created SPI. In electronic devices like smartphones, TVs, and laptops to control peripherals like power management chips, input devices, and DACs&nbsp; both protocols are commonly used.<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><span style=\"font-weight: 400; color: #c40c0c;\"><strong><span style=\"text-decoration: underline;\">Specification:<\/span> &nbsp;<\/strong><\/span><\/span><\/p>\n<ul class=\"\">\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">I2C is based on dedicated specifications. NXP designs the specifications. <\/span><\/span><\/li>\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">For SPI there are no such specifications, but TI and Motorola have their specifications.<\/span><\/span><\/li>\n<\/ul>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><span style=\"font-weight: 400; color: #800000;\"><strong><span style=\"text-decoration: underline; color: #c40c0c;\">Multi-master capability:<\/span> &nbsp;<\/strong><\/span><\/span><\/p>\n<ul class=\"\">\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">I2C is multi-master capable, whereas SPI has no guidelines to achieve multi-master capability.<\/span><\/span><\/li>\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\"> In SPI, multi-master capability depends on designers or vendors. <\/span><\/span><\/li>\n<\/ul>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">For example, STM SPI uses multi-master capability, but the software code will handle the arbitration between multiple masters. But the arbitration in I2C is automatically taken care of by hardware.&nbsp;&nbsp;<\/span><\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\"><span style=\"text-decoration: underline; color: #c40c0c;\"><strong>Acknowledging:<\/strong><\/span><span style=\"color: #c40c0c;\"><strong> &nbsp;<\/strong><\/span><\/span><\/p>\n<ul>\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"font-weight: 400; color: #000000;\">I2C hardware automatically acknowledges every byte received. <\/span><\/li>\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"font-weight: 400; color: #000000;\">But SPI does not support any automatic acknowledging.<\/span><\/li>\n<\/ul>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\"><span style=\"text-decoration: underline; color: #c40c0c;\"><strong>Pins:<\/strong><\/span><span style=\"color: #c40c0c;\"> &nbsp;<\/span><\/span><\/p>\n<ul class=\"\">\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"font-weight: 400; color: #000000;\">I2C needs just two pins for communication.<\/span><\/li>\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"font-weight: 400; color: #000000;\"> Whereas SPI may need four pins or even more than that if multiple slaves are involved in communication. <\/span><\/li>\n<\/ul>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Figure 1 shows the I2C pin structure. That is SCL(serial clock) and SDA(serial data). So, I2C needs two pins to connect all slaves and masters, and that is one of the most significant advantages of the I2C.<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\"><strong><span style=\"text-decoration: underline; color: #c40c0c;\">Addressing: <\/span>&nbsp;<\/strong><\/span><\/span><\/p>\n<ul class=\"\">\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">I2C master talks to slaves based on the slave address. So, the I2C protocol is address-based communication. <\/span><\/span><\/li>\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">In SPI a dedicated pin is used to select the slave that is c as SS(slave select) pin. So, SPI does not support address-based communication.<\/span><\/span><\/li>\n<\/ul>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\"><span style=\"text-decoration: underline; color: #c40c0c;\"><strong>Communication:<\/strong><\/span><span style=\"color: #c40c0c;\"> &nbsp;<\/span><\/span><\/p>\n<ul class=\"\">\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"font-weight: 400; color: #000000;\">The I2C protocol is inherently half-duplex, while the SPI protocol is inherently full-duplex. SPI also uses half-duplex.<\/span><\/li>\n<\/ul>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\"><span style=\"text-decoration: underline; color: #c40c0c;\"><strong>Speed:<\/strong><\/span><span style=\"color: #c40c0c;\"> &nbsp;<\/span><\/span><\/p>\n<ul class=\"\">\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"font-weight: 400; color: #000000;\">For I2C the maximum speed is 4MHz, possible only in ultra speed plus mode of the I2C peripheral. Most of the microcontrollers will not support the ultra-speed plus mode. For example, the maximum speed of most of the ST microcontroller is just 400KHz or 1MHz, not more than that. <\/span><\/li>\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"font-weight: 400; color: #000000;\">For SPI, the maximum speed is it&#8217;s peripheral clock divided by 2(Fpclk\/2). For example, if the peripheral clock is 20MHz, then SPI speed is up to 10MHz. So, SPI is very, very fast compared to I2C.<\/span><\/li>\n<\/ul>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><span style=\"font-weight: 400; color: #c40c0c;\"><strong><span style=\"text-decoration: underline;\">Slave&#8217;s control over serial clock:<\/span> &nbsp;<\/strong><\/span><\/span><\/p>\n<ul>\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">In I2C, the slave can make master wait by holding clock down if &#8216;it&#8217;s busy, this is called a clock stretching feature of I2C. By using the clock stretching feature, the slave can put the master into a wait state, and this happens by pulling the clock to the ground state by the slave. <\/span><\/span><\/li>\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">In SPI, the slave has no control over the serial clock programmers may use their tricks to overcome this situation.<\/span><\/span><\/li>\n<\/ul>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\"><strong><span style=\"text-decoration: underline; color: #c40c0c;\">Data rate:<\/span> &nbsp;<\/strong><\/span><\/span><\/p>\n<ul>\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">Data rate is nothing but number bits transmitted from sender to receiver in one second is very much lesser in I2C compared to SPI. <\/span><\/span><\/li>\n<li style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">SPI is fast compared to I2C. That is the most significant advantage of SPI. <\/span><\/span><\/li>\n<\/ul>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">For example, in STM32F4xx, if the peripheral clock of 40MHz then in I2C data rate is 400Kbps and an SPI data rate is 20Mbps. So in this scenario, SPI is 50 times faster than I2C.<\/span><\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-size: 27px; border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; line-height: 36px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline;\"><strong><span style=\"color: #000080; text-decoration: underline;\">Some of the terminologies in I2C protocol:<\/span><\/strong><\/span><\/p>\n<ul class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\">\n<li><span style=\"font-weight: 400; color: #000000;\"><strong>Transmitter<\/strong>: The device which sends data to the bus.<\/span><\/li>\n<li class=\"\"><span style=\"font-weight: 400; color: #000000;\"><strong>Receiver<\/strong>: The device which receives data from the bus.<\/span><\/li>\n<li><span style=\"font-weight: 400; color: #000000;\"><strong>Master<\/strong>: The device which initiates a transfer, generates clock signals, and terminates a transfer.<\/span><\/li>\n<li><span style=\"font-weight: 400; color: #000000;\"><strong>Slave<\/strong>: The device addressed by a master.<\/span><\/li>\n<li><span style=\"font-weight: 400; color: #000000;\"><strong>Multi-master<\/strong>: More than one master can attempt to control the bus at the same time without corrupting the message.<\/span><\/li>\n<li><span style=\"color: #000000;\"><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"><strong>Arbitration<\/strong>:&nbsp;<\/span><\/span>In the case of a multi-master, the arbitration is required where more than one master is tried to communicate with a slave simultaneously. In I2C arbitration is achieved by the SDA line.<\/span><\/li>\n<li><span style=\"color: #000000;\"><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"><strong>Synchronization<\/strong>:&nbsp;<\/span><\/span>Procedure to synchronize the clock signals of two or more devices.<\/span><\/li>\n<\/ul>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">In this article, let\u2019s also discuss SCL and SDA signals. From the Figure 1, both SDA and SCL signals are bidirectional lines and SDA, and SCL signals are connected to the positive supply voltage via pull-up resistors. When the bus is free, both the lines are held at high. The output stages of the devices connected to the bus must have an open drain or open collector configuration. The bus capacitance limits the number of interfaces connected to the bus.<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\">In the following article, let&#8217;s learn <strong><span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"http:\/\/fastbitlab.com\/stm32-i2c-lecture-2-i2c-modes\/\" target=\"_blank\" rel=\"noopener\">I2C modes<\/a><\/span><\/strong>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; I2C Introduction and difference with SPI &nbsp; &nbsp; I2C Introduction The I2C (inter-integrated circuit) bus interface handles communications between the microcontroller and the serial I2C bus. In other words, I2C is just a protocol to achieve serial data communication between integrated circuits which are very close to each other. It provides excellent support to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2908,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"0","ocean_second_sidebar":"0","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"0","ocean_custom_header_template":"0","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"0","ocean_menu_typo_font_family":"0","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"0","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"off","ocean_gallery_id":[],"footnotes":""},"categories":[8],"tags":[23],"class_list":["post-2906","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-stm32-i2c-lectures","entry","has-media"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>I2C vs. SPI: An Introduction and Detailed Comparison<\/title>\n<meta name=\"description\" content=\"Explore the I2C (Inter-Integrated Circuit) communication protocol, its applications, &amp; how it differs from SPI. About multi-master capability\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"I2C vs. SPI: An Introduction and Detailed Comparison\" \/>\n<meta property=\"og:description\" content=\"Explore the I2C (Inter-Integrated Circuit) communication protocol, its applications, &amp; how it differs from SPI. About multi-master capability\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/\" \/>\n<meta property=\"og:site_name\" content=\"FastBit EBA\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/fastbiteba\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-05T06:56:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-05T06:23:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1528\" \/>\n\t<meta property=\"og:image:height\" content=\"626\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"FastBitLab\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@fastbiteba\" \/>\n<meta name=\"twitter:site\" content=\"@fastbiteba\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"FastBitLab\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/i2c-introduction-and-difference-with-spi\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/i2c-introduction-and-difference-with-spi\\\/\"},\"author\":{\"name\":\"FastBitLab\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/person\\\/e32b38e733a0d76ffa7e6bc998652e5d\"},\"headline\":\"STM32 I2C Lecture 1 : I2C Introduction and difference with SPI\",\"datePublished\":\"2019-08-05T06:56:30+00:00\",\"dateModified\":\"2023-09-05T06:23:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/i2c-introduction-and-difference-with-spi\\\/\"},\"wordCount\":935,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/i2c-introduction-and-difference-with-spi\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/Screenshot-179.png\",\"keywords\":[\"STM32 I2C Lectures\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/i2c-introduction-and-difference-with-spi\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/i2c-introduction-and-difference-with-spi\\\/\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/i2c-introduction-and-difference-with-spi\\\/\",\"name\":\"I2C vs. SPI: An Introduction and Detailed Comparison\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/i2c-introduction-and-difference-with-spi\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/i2c-introduction-and-difference-with-spi\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/Screenshot-179.png\",\"datePublished\":\"2019-08-05T06:56:30+00:00\",\"dateModified\":\"2023-09-05T06:23:25+00:00\",\"description\":\"Explore the I2C (Inter-Integrated Circuit) communication protocol, its applications, & how it differs from SPI. About multi-master capability\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/i2c-introduction-and-difference-with-spi\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/i2c-introduction-and-difference-with-spi\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/i2c-introduction-and-difference-with-spi\\\/#primaryimage\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/Screenshot-179.png\",\"contentUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/Screenshot-179.png\",\"width\":1528,\"height\":626},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/i2c-introduction-and-difference-with-spi\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"STM32 I2C Lecture 1 : I2C Introduction and difference with SPI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\",\"name\":\"FastBit EBA\",\"description\":\"Your Online Academy of Embedded Systems\",\"publisher\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\",\"name\":\"FastBit EBA\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo-EzNrEnyr.png\",\"contentUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo-EzNrEnyr.png\",\"width\":640,\"height\":640,\"caption\":\"FastBit EBA\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/fastbiteba\\\/\",\"https:\\\/\\\/x.com\\\/fastbiteba\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/fastbit-embedded-brain-academy-b3167b124\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCa1REBV9hyrzGp2mjJCagBg\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/person\\\/e32b38e733a0d76ffa7e6bc998652e5d\",\"name\":\"FastBitLab\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"caption\":\"FastBitLab\"},\"description\":\"The FastBit Embedded Brain Academy uses the power of internet to bring the online courses related to the field of embedded system programming, Real time operating system, Embedded Linux systems, etc at your finger tip with very low cost. Backed with strong experience of industry, we have produced lots of courses with the customer enrolment over 3000+ across 100+ countries.\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"I2C vs. SPI: An Introduction and Detailed Comparison","description":"Explore the I2C (Inter-Integrated Circuit) communication protocol, its applications, & how it differs from SPI. About multi-master capability","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/","og_locale":"en_US","og_type":"article","og_title":"I2C vs. SPI: An Introduction and Detailed Comparison","og_description":"Explore the I2C (Inter-Integrated Circuit) communication protocol, its applications, & how it differs from SPI. About multi-master capability","og_url":"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/","og_site_name":"FastBit EBA","article_publisher":"https:\/\/www.facebook.com\/fastbiteba\/","article_published_time":"2019-08-05T06:56:30+00:00","article_modified_time":"2023-09-05T06:23:25+00:00","og_image":[{"width":1528,"height":626,"url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179.png","type":"image\/png"}],"author":"FastBitLab","twitter_card":"summary_large_image","twitter_creator":"@fastbiteba","twitter_site":"@fastbiteba","twitter_misc":{"Written by":"FastBitLab","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/#article","isPartOf":{"@id":"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/"},"author":{"name":"FastBitLab","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/person\/e32b38e733a0d76ffa7e6bc998652e5d"},"headline":"STM32 I2C Lecture 1 : I2C Introduction and difference with SPI","datePublished":"2019-08-05T06:56:30+00:00","dateModified":"2023-09-05T06:23:25+00:00","mainEntityOfPage":{"@id":"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/"},"wordCount":935,"commentCount":1,"publisher":{"@id":"https:\/\/fastbitlab.com\/blog\/#organization"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/#primaryimage"},"thumbnailUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179.png","keywords":["STM32 I2C Lectures"],"articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/","url":"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/","name":"I2C vs. SPI: An Introduction and Detailed Comparison","isPartOf":{"@id":"https:\/\/fastbitlab.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/#primaryimage"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/#primaryimage"},"thumbnailUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179.png","datePublished":"2019-08-05T06:56:30+00:00","dateModified":"2023-09-05T06:23:25+00:00","description":"Explore the I2C (Inter-Integrated Circuit) communication protocol, its applications, & how it differs from SPI. About multi-master capability","breadcrumb":{"@id":"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/#primaryimage","url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179.png","contentUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2019\/07\/Screenshot-179.png","width":1528,"height":626},{"@type":"BreadcrumbList","@id":"https:\/\/fastbitlab.com\/blog\/i2c-introduction-and-difference-with-spi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fastbitlab.com\/blog\/"},{"@type":"ListItem","position":2,"name":"STM32 I2C Lecture 1 : I2C Introduction and difference with SPI"}]},{"@type":"WebSite","@id":"https:\/\/fastbitlab.com\/blog\/#website","url":"https:\/\/fastbitlab.com\/blog\/","name":"FastBit EBA","description":"Your Online Academy of Embedded Systems","publisher":{"@id":"https:\/\/fastbitlab.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fastbitlab.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fastbitlab.com\/blog\/#organization","name":"FastBit EBA","url":"https:\/\/fastbitlab.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2026\/04\/logo-EzNrEnyr.png","contentUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2026\/04\/logo-EzNrEnyr.png","width":640,"height":640,"caption":"FastBit EBA"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/fastbiteba\/","https:\/\/x.com\/fastbiteba","https:\/\/www.linkedin.com\/in\/fastbit-embedded-brain-academy-b3167b124\/","https:\/\/www.youtube.com\/channel\/UCa1REBV9hyrzGp2mjJCagBg"]},{"@type":"Person","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/person\/e32b38e733a0d76ffa7e6bc998652e5d","name":"FastBitLab","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","caption":"FastBitLab"},"description":"The FastBit Embedded Brain Academy uses the power of internet to bring the online courses related to the field of embedded system programming, Real time operating system, Embedded Linux systems, etc at your finger tip with very low cost. Backed with strong experience of industry, we have produced lots of courses with the customer enrolment over 3000+ across 100+ countries."}]}},"_links":{"self":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/2906","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/comments?post=2906"}],"version-history":[{"count":5,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/2906\/revisions"}],"predecessor-version":[{"id":15770,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/2906\/revisions\/15770"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/media\/2908"}],"wp:attachment":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/media?parent=2906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/categories?post=2906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/tags?post=2906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}