{"id":71088,"date":"2022-09-02T21:32:41","date_gmt":"2022-09-02T13:32:41","guid":{"rendered":"https:\/\/www.seeedstudio.com\/blog\/?p=71088"},"modified":"2022-09-08T16:29:14","modified_gmt":"2022-09-08T08:29:14","slug":"i2c-communication-protocol-and-how-it-works","status":"publish","type":"post","link":"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/","title":{"rendered":"I2C Communication Protocol and How It Works"},"content":{"rendered":"\n<p>Maybe you have heard about I2C or you have already used I2C before, but have you ever understood what I2C is? How does I2C work? This blog will show you this I2C knowledge.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">What Is I2C<\/h3>\n\n\n\n<p>I\u00b2C <strong>(Inter-Integrated Circuit)<\/strong> is a <strong>serial communication bus<\/strong> that uses a multi-master-slave architecture. It was designed by Philips in the early 1980s (now NXP Semiconductors). I2C is convenient for motherboards, embedded systems, or Communication between cell phones and peripheral components. Due to its simplicity, I2C is widely used for communication between microcontrollers and sensor arrays, displays, IoT devices, EEPROMs, etc. I2C consists of two lines, SCL and SDA. These two data lines need to be connected to pull-up resistors. When the bus is idle, SCL and SDA are at a high level. The I2C bus works according to a certain protocol. Next, let&#8217;s take a look at the I2C protocol. I2C supports multiple slaves, that is, multiple I2C slave devices can be attached to one I2C controller. These different I2C slave devices have different device addresses so that the I2C master controller can access the specified device address through the device address of the I2C device. I2C device, one I2C bus connects multiple I2C devices as shown in the figure:<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/I2C1.png\" alt=\"\" class=\"wp-image-71089\" width=\"470\" height=\"168\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/I2C1.png 375w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/I2C1-300x107.png 300w\" sizes=\"(max-width: 470px) 100vw, 470px\" \/><figcaption>Ref: <a href=\"https:\/\/www.robot-electronics.co.uk\/i2c-tutorial\" target=\"_blank\" rel=\"noreferrer noopener\">Robot Electronics<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>SDA and SCL links must be connected to a pull-up resistor, usually 4.7K. The rest of the I2C slaves are hooked up to the SDA and SCL lines so that multiple I2C devices can be accessed via the SDA and SCL lines.<\/p>\n\n\n\n<p>Maybe you are still confused about I2C, here are some features of I2C<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Features of I2C:<\/h3>\n\n\n\n<p>1. Only one data line SDA and one clock line SCL are required, <strong>SDA<\/strong> (serial data line) and <strong>SCL<\/strong> (serial clock line) are both bidirectional I\/O lines<\/p>\n\n\n\n<p><strong>SCL (Serial Clock): <\/strong>Serial clock line, which transmits CLK signals, generally provided by the master device to the slave device<\/p>\n\n\n\n<p><strong>SDA (Serial Data): <\/strong>serial data line, transmit communication data<\/p>\n\n\n\n<p>2. Realize a real multi-master bus, any device can be used as both a master and a slave, but there can only be one master at the same time<\/p>\n\n\n\n<p>3. It can be detected by external connection, which is convenient for system fault diagnosis and debugging<\/p>\n\n\n\n<p>4. ICs connected to the same bus are only limited by the maximum capacitance of the bus. The serial 8-bit bidirectional data transfer bit rate can reach <strong>100Kbit\/s<\/strong> in standard mode, <strong>400Kbit\/s<\/strong> in fast mode, and up to <strong>3.4Mbit\/s<\/strong> in high-speed mode.<\/p>\n\n\n\n<p>5. The current consumed on the bus is very small. Therefore, the number of devices expanded on the bus is mainly determined by the capacitive load, which is <strong>resistant to high noise interference<\/strong>. Adding a bus driver can expand the bus capacitance by <strong>10<\/strong> times, and the transmission distance can reach <strong>15m<\/strong>; compatible with different voltage levels devices with a wide operating temperature range<\/p>\n\n\n\n<p>6. The interface circuit is an open-drain output. It needs to be connected to the power supply VCC through a pull-up resistor. When the bus is idle, both lines are high. The external devices connected to the bus are CMOS devices. The output stage is also an open-drain circuit.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Data Transmission\uff1a<\/h3>\n\n\n\n<p>The master device and slave device follow the following protocol format for data transmission. Data transfer serial data of 0 and 1 between the master and slave devices over an SDA data line, The structure of a serial data sequence can be divided into:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Start Bit<\/li><li>Address Bits\uff087bit or 10bit\uff09<\/li><li>Read and Write Bit\uff081bit\uff09<\/li><li>Response Bit (1bit\uff09<\/li><li>Data bit + response bit (data bit 8bit; response bit 1bit; data + response can be repeatedly transmitted many times until encountering the stop bit)<\/li><li>Stop Bit<\/li><\/ul>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg\" alt=\"\" class=\"wp-image-71091\" width=\"731\" height=\"179\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg 1024w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485-300x74.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485-768x189.jpg 768w\" sizes=\"(max-width: 731px) 100vw, 731px\" \/><figcaption>Ref: <a href=\"https:\/\/blog.csdn.net\/u010037269\/article\/details\/123914833\" target=\"_blank\" rel=\"noreferrer noopener\">CSDN<\/a><\/figcaption><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Start Bit<\/h3>\n\n\n\n<p>When the master device decides to start communication, it needs to send a start signal, and the following actions need to be performed<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>First, switch the SDA from VOH to VOL<\/li><li>Then change SCL from VOH to VOL<\/li><\/ul>\n\n\n\n<p>After the master device has signaled and started condition, all slaves will become <strong>active even in sleep mode<\/strong> and <strong>wait to receive an address bit<\/strong>.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"500\" height=\"515\" src=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202551889.jpg\" alt=\"\" class=\"wp-image-71093\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202551889.jpg 500w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202551889-291x300.jpg 291w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><figcaption>Ref: <a href=\"https:\/\/blog.csdn.net\/u010037269\/article\/details\/123914833\" target=\"_blank\" rel=\"noreferrer noopener\">CSDN<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Address Bit<\/h3>\n\n\n\n<p>Address bits support 7bit and 10bit, If the master needs to send\/receive data to the slave, it must send the address first then the slave will correspond, and then match the address of the slave mounted on the bus.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Response Bit&nbsp;<\/h3>\n\n\n\n<p>Response Bit has 2 types:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>ACK\uff1a Slave correctly receives data or address bit + read and write bits<\/li><li>NACK\uff1a slave does not answer and works abnormally<\/li><\/ul>\n\n\n\n<p>Every time the master sends data and read and write bits, it will wait for the response signal ACK from the slave device.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>If the slave device sends the response bit signal ACK<\/li><li>If there is no response signal NACK, SDA will output a VOH, which will cause the master device to reboot or stop<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"959\" height=\"403\" src=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202650973.png\" alt=\"\" class=\"wp-image-71094\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202650973.png 959w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202650973-300x126.png 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202650973-768x323.png 768w\" sizes=\"(max-width: 959px) 100vw, 959px\" \/><figcaption>Ref: <a href=\"https:\/\/blog.csdn.net\/u010037269\/article\/details\/123914833\" target=\"_blank\" rel=\"noreferrer noopener\">CSDN<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Data Bit<\/h3>\n\n\n\n<p>Every time the data is transmitted has a total of 8 bits, which the sender sets and it needs to transmit the data bits to the receiver.<\/p>\n\n\n\n<p>The transmission is followed by an ACK\/NACK bit, and if the receiver successfully receives the data, the slave sends an ACK. Otherwise, the slave sends a NACK.<\/p>\n\n\n\n<p>Data can be sent multiple times until a stop bit is received.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Stop Bit<\/h3>\n\n\n\n<p>When the master device decides to end the communication, it needs to send the end signal, and the following actions need to be performed.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>First switch the SDA from a VOL to VOH<\/li><li>Then the SCL switches from VOH to VOL<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"485\" height=\"489\" src=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202710717.jpg\" alt=\"\" class=\"wp-image-71095\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202710717.jpg 485w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202710717-298x300.jpg 298w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202710717-80x80.jpg 80w\" sizes=\"(max-width: 485px) 100vw, 485px\" \/><figcaption>Ref: <a href=\"https:\/\/blog.csdn.net\/u010037269\/article\/details\/123914833\" target=\"_blank\" rel=\"noreferrer noopener\">CSDN<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Here\u2019s the figure showing the completed I2C timing diagram:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1030\" height=\"332\" src=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/2019010316450189-1030x332.jpg\" alt=\"\" class=\"wp-image-71096\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/2019010316450189-1030x332.jpg 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/2019010316450189-300x97.jpg 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/2019010316450189-768x247.jpg 768w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/2019010316450189-1024x330.jpg 1024w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/2019010316450189.jpg 1149w\" sizes=\"(max-width: 1030px) 100vw, 1030px\" \/><figcaption>Ref: <a href=\"https:\/\/blog.csdn.net\/u010037269\/article\/details\/123914833\" target=\"_blank\" rel=\"noreferrer noopener\">CSDN<\/a><\/figcaption><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Multi-Main Arbitration<\/h2>\n\n\n\n<p>In a multi-main communication system. There are multiple nodes on the bus, they all have their own addressing addresses, they can be accessed by other nodes as slave nodes, and they can all be used as master nodes to send control bytes and transfer data to other nodes. But if two or more nodes both send start signals to the bus and start transmitting data, a conflict occurs. To resolve this conflict, an arbitration decision is required, which is arbitration on the I2C bus.<\/p>\n\n\n\n<p>The arbitration on the I2C bus is divided into two parts: the synchronization of the <strong>SCL line<\/strong> and the arbitration of the <strong>SDA line<\/strong>.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Synchronization of The SCL Line (Clock Synchronization)<\/h3>\n\n\n\n<p>SCL synchronization is due to the logic function of the bus line &#8220;AND&#8221; (open-drain output), that is, as long as one node sends a low level, the bus appears as a low level. The bus can only appear high when all nodes send high. It is precise because of the principle of the line &#8220;AND&#8221; logic function that when multiple nodes send clock signals at the same time, a unified clock signal is displayed on the bus. This is the synchronization principle of SCL<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"338\" height=\"215\" src=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20150819163425283.png\" alt=\"\" class=\"wp-image-71097\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20150819163425283.png 338w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20150819163425283-300x191.png 300w\" sizes=\"(max-width: 338px) 100vw, 338px\" \/><figcaption>Ref: <a href=\"https:\/\/blog.csdn.net\/u010037269\/article\/details\/123914833\" target=\"_blank\" rel=\"noreferrer noopener\">CSDN<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">SDA Arbitration<\/h3>\n\n\n\n<p>Arbitration of the SDA line is also based on the principle that the bus has a line &#8220;AND&#8221; logic function. After the node sends 1-bit data, it compares whether the data presented on the bus is consistent with what it sent (similar to the readback mechanism of the CAN bus). Yes, continue sending; otherwise, exit the competition. Arbitration of the SDA line can ensure that the I2C bus system communicates normally and data is not lost when multiple master nodes attempt to control the bus at the same time. The bus system allows only one master node to continue to occupy the bus through arbitration.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Arbitration Process<\/h3>\n\n\n\n<p>DATA1 and DATA2 are respectively the data signals sent by the master node to the bus, SDA is the data signal presented on the bus, and SCL is the clock signal presented on the bus. When master nodes 1 and 2 send start signals at the same time, both master nodes send high-level signals. At this time, the signal on the bus is high, and both master nodes detect that the signal on the bus is the same as the signal sent by themselves, and continue to send data. In the second clock cycle, both master nodes send low-level signals, and the signals presented on the bus are low-level and continue to send data. In the 3rd clock cycle, master node 1 sends a high-level signal, while master node 2 sends a low-level signal. According to the logic function of the line &#8220;AND&#8221; of the bus, the signal on the bus is low level. At this time, master node 1 detects that the data on the bus is different from the data sent by itself, and disconnects the output stage of the data, and turns to The slave to receive the status. In this way, master node 2 wins the bus, and the data is not lost, that is, the data on the bus is the same as the data sent by master node 2, and master node 1 continues to receive data after turning into a slave node, and also does not lose the SDA line. data. Therefore data is not lost during the arbitration process.<\/p>\n\n\n\n<p><strong>Summary<\/strong>: SDA arbitration and SCL clock synchronization processing are not sequential, but are carried out at the same time.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">I2C Deadlock<\/h3>\n\n\n\n<p>In actual use, I2C is prone to deadlock. There are two common situations in which deadlocks occur:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>One is that the master device resets abnormally when the slave device replies ACK<\/li><li>The other is that the master device resets abnormally when the slave device replies with a data bit of 0<\/li><\/ul>\n\n\n\n<p>The same point in both cases is that SDA is in a state of being pulled low by the slave device when the master device is reset abnormally, while SCL is in a VOH (idle state) after the master device is reset. At this point, the slave device will wait for the master device to pull SCL low to take the ACK or data bit, and the master device will wait for the slave device to release the SDA line. The master device and the slave device wait for each other, look at each other in the air, and enter a deadlock state.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Here are some common methods to solve deadlock problem\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>After the master device detects that SDA is pulled down for more than a period of time, it actively resets the slave device to release SDA. The premise of this method is that the slave device has a reset pin, and the MCU can control the reset pin of the slave device to reset it.<\/li><li>After the master device detects that SDA is pulled down for more than a period of time, it pushed 9 Clocks to the clock bus and takes the ACK bit of the slave device so that the slave device releases SDA to a VOH.<\/li><li>Connect an I2C buffer in series between the master and slave devices, which can automatically detect deadlock conditions. When a deadlock is detected, it will actively disconnect from the master device, and send 9 Clocks to the slave device. After the slave device releases the SDA line, it will re-establish a connection with the master device.<\/li><\/ul>\n\n\n\n<p>The I2C deadlock problem cannot be fundamentally avoided. In addition to the I2C deadlock caused by the abnormal reset of the MCU, the slave device may also pull down the SDA abnormally to cause the deadlock during the normal communication process. Therefore, the software should be designed to be able to recover from the deadlock when the deadlock occurs, so that the I2C communication can continue.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Clock Stretching<\/h2>\n\n\n\n<p>What is I2C Clock Stretching? In the master-Slave communication process of I2C, the SCL clock on the bus is always generated and controlled by the master, but if the slave cannot keep up with the speed of the master, the I2C protocol stipulates that the slave can pull down the SCL clock line. A transfer is suspended until the slave releases the SCL line, and the transfer continues.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"425\" height=\"252\" src=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/690723d5dc4847710b98d4f2ca215e1c.jpg\" alt=\"\" class=\"wp-image-71098\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/690723d5dc4847710b98d4f2ca215e1c.jpg 425w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/690723d5dc4847710b98d4f2ca215e1c-300x178.jpg 300w\" sizes=\"(max-width: 425px) 100vw, 425px\" \/><figcaption>Ref: <a href=\"https:\/\/blog.csdn.net\/u010037269\/article\/details\/123914833\" target=\"_blank\" rel=\"noreferrer noopener\">CSDN<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<p>Clock Stretching is an optional configuration for the slave. If it is not enabled, the slave cannot control SCL; if it is enabled, the slave can reduce the transmission speed by forcibly pulling SCL low. During the period when SCL is VOL, the host can only wait for the Slave releases SCL.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Repeat Start<\/h2>\n\n\n\n<p>Sometimes the master needs to perform multiple message exchanges in one communication such as transferring messages with different slaves, or switching read and write operations, and does not want to be interfered with by other master during this period, then you can use the \u2018repeat start condition\u2019 &#8212;In a communication, the master can generate multiple start conditions to complete multiple message exchanges, and finally generate a stop condition to end the entire communication process. Since there is no stop condition during the period, the master keeps occupying the bug, and the other mains cannot switch in.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"104\" src=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201106204329550.png\" alt=\"\" class=\"wp-image-71099\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201106204329550.png 600w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201106204329550-300x52.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><figcaption>Ref: <a href=\"https:\/\/blog.csdn.net\/u010037269\/article\/details\/123914833\" target=\"_blank\" rel=\"noreferrer noopener\">CSDN<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<p>Here&#8217;s the difference between UART, I2c, and SPI <\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Protocol<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Complexity<\/td><td class=\"has-text-align-center\" data-align=\"center\">Speed<\/td><td class=\"has-text-align-center\" data-align=\"center\"># of Devices<\/td><td class=\"has-text-align-center\" data-align=\"center\"># of Wries<\/td><td class=\"has-text-align-center\" data-align=\"center\">Duplex<\/td><td class=\"has-text-align-center\" data-align=\"center\">No. of master  and slave<\/td><td><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>UART<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Simple<\/td><td class=\"has-text-align-center\" data-align=\"center\">Slowest<\/td><td class=\"has-text-align-center\" data-align=\"center\">Up to 2 devices<\/td><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Full Duplex<\/td><td class=\"has-text-align-center\" data-align=\"center\">Single to Single<\/td><td><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>I2C<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Easy to chain multiple devices<\/td><td class=\"has-text-align-center\" data-align=\"center\">Faster than UART<\/td><td class=\"has-text-align-center\" data-align=\"center\">Up to 127, but gets complex<\/td><td class=\"has-text-align-center\" data-align=\"center\">2<\/td><td class=\"has-text-align-center\" data-align=\"center\">Half Duplex<\/td><td class=\"has-text-align-center\" data-align=\"center\">Multiple slaves and master<\/td><td><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>SPI<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Complex as device<br>increases<\/td><td class=\"has-text-align-center\" data-align=\"center\">Fastest<\/td><td class=\"has-text-align-center\" data-align=\"center\">Many, but gets complex<\/td><td class=\"has-text-align-center\" data-align=\"center\">4<\/td><td class=\"has-text-align-center\" data-align=\"center\">Full Duplex<\/td><td class=\"has-text-align-center\" data-align=\"center\">1 master, multiple slaves<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>You might be wondering, which of these three communications is the best? Is it UART, I2C, or SPI?<\/strong><br>Unfortunately, there is no &#8220;best&#8221; communication peripheral. Each communication peripheral has its own advantages and disadvantages.<\/p>\n\n\n\n<p>Therefore, users should choose the communication peripherals that best suit their project. For example, if you want the fastest communication peripherals, SPI would be ideal. On the other hand, if the user wants to connect multiple devices without being too complicated, I2C would be ideal as it can connect up to 127 devices and is easy to manage.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Here are Some Product that supports I2C Communication Protocols<\/h3>\n\n\n\n<p><strong><a href=\"https:\/\/www.seeedstudio.com\/xiao-series-page\" target=\"_blank\" rel=\"noreferrer noopener\">XIAO Series<\/a><\/strong><\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/font_3.jpg\" alt=\"\" class=\"wp-image-71102\" width=\"507\" height=\"380\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/font_3.jpg 600w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/font_3-300x225.jpg 300w\" sizes=\"(max-width: 507px) 100vw, 507px\" \/><\/figure><\/div>\n\n\n\n<p>All the XIAO Series Microcontrollers that support I2C, UART, or SPI, and here&#8217;s the link for you to take a look at it <a href=\"https:\/\/www.seeedstudio.com\/xiao-series-page\" target=\"_blank\" rel=\"noreferrer noopener\">Seeed Studio XIAO Series<\/a>.  And now for most of the XIAO Series is <strong>Free Shipping! <\/strong><\/p>\n\n\n\n<p>Here are some features of the XIAO Series <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Thumb-sized form factor, only <strong>20&#215;17.5mm<\/strong>. Made for space-constrained scenarios.<\/li><li>Up to <strong>11<\/strong> available IOs support multiple interfaces, including analog, digital, IIC, UART, SPI, and more.<\/li><li>Powerful core with a strong performance for diverse and complex applications.<\/li><li>Single-sided components, surface mounting design. Easily integrate XIAO into other boards for mass production.<\/li><\/ul>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong><a href=\"https:\/\/www.seeedstudio.com\/Wio-Terminal-p-4509.html?queryID=7b47263c20ebb45f93cc6d8f0c95bdd0&amp;objectID=4509&amp;indexName=bazaar_retailer_products\">Wio Terminal<\/a><\/strong><\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"450\" src=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/0072.webp\" alt=\"\" class=\"wp-image-71103\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/0072.webp 600w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/0072-300x225.webp 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n\n<p>Wio Terminal is an ATSAMD51-based microcontroller with both&nbsp;<strong>Bluetooth and Wi-Fi Wireless connectivity<\/strong>&nbsp;powered by Realtek RTL8720DN,&nbsp;<strong>compatible with Arduino and MicroPython<\/strong>.&nbsp;<\/p>\n\n\n\n<p>Here are some feature of the Wio Terminal<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Powerful MCU: Microchip <strong>ATSAMD51P19<\/strong> with ARM Cortex-M4F core running at 120MHz<\/li><li>Reliable Wireless Connectivity: Equipped with <strong>Realtek RTL8720DN<\/strong>, d<strong>ual-band 2.4Ghz \/ 5Ghz Wi-Fi<\/strong><\/li><li>Complete system equipped with <strong>Screen<\/strong> + <strong>Development Board<\/strong> + <strong>Input\/Output Interface<\/strong> + <strong>Enclosure<\/strong><\/li><li>Raspberry Pi 40-pin Compatible GPIO&nbsp;enables installation as a peripheral to the Raspberry Pi<\/li><li>Support Arduino, CircuitPython, Micropython, ArduPy(<a href=\"http:\/\/wiki.seeedstudio.com\/Wio-Terminal-ArduPy\/\">What is ArduPy?<\/a>), AT Firmware, Visual Studio Code<\/li><li>USB OTG Support<\/li><\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Maybe you have heard about I2C or you have already used I2C before, but have<\/p>\n","protected":false},"author":3575,"featured_media":71091,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_tribe_ticket_capacity":"0","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":"[]","_tribe_ticket_has_attendee_info_fields":false,"iawp_total_views":0,"footnotes":""},"categories":[4393],"tags":[3003,3129],"class_list":["post-71088","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","tag-wio-terminal","tag-xiao"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>I2C Communication Protocol and How It Works - Latest News from Seeed Studio<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"I2C Communication Protocol and How It Works - Latest News from Seeed Studio\" \/>\n<meta property=\"og:description\" content=\"Maybe you have heard about I2C or you have already used I2C before, but have\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/\" \/>\n<meta property=\"og:site_name\" content=\"Latest News from Seeed Studio\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-02T13:32:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-08T08:29:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"252\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kelvin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kelvin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/\",\"name\":\"I2C Communication Protocol and How It Works - Latest News from Seeed Studio\",\"isPartOf\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg\",\"datePublished\":\"2022-09-02T13:32:41+00:00\",\"dateModified\":\"2022-09-08T08:29:14+00:00\",\"author\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/bfb3d6d4b03e87d6b4c378ff17a167c7\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/#primaryimage\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg\",\"contentUrl\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg\",\"width\":1024,\"height\":252},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.seeedstudio.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"I2C Communication Protocol and How It Works\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#website\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/\",\"name\":\"Latest News from Seeed Studio\",\"description\":\"Emerging IoT, AI and Autonomous Applications on the Edge\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.seeedstudio.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/bfb3d6d4b03e87d6b4c378ff17a167c7\",\"name\":\"Kelvin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/63ece3083e88f6a0e0e2ad9d5a59407e?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/63ece3083e88f6a0e0e2ad9d5a59407e?s=96&r=g\",\"caption\":\"Kelvin\"},\"url\":\"https:\/\/www.seeedstudio.com\/blog\/author\/kelvin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"I2C Communication Protocol and How It Works - Latest News from Seeed Studio","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:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/","og_locale":"en_US","og_type":"article","og_title":"I2C Communication Protocol and How It Works - Latest News from Seeed Studio","og_description":"Maybe you have heard about I2C or you have already used I2C before, but have","og_url":"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/","og_site_name":"Latest News from Seeed Studio","article_published_time":"2022-09-02T13:32:41+00:00","article_modified_time":"2022-09-08T08:29:14+00:00","og_image":[{"width":1024,"height":252,"url":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg","type":"image\/jpeg"}],"author":"Kelvin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kelvin","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/","url":"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/","name":"I2C Communication Protocol and How It Works - Latest News from Seeed Studio","isPartOf":{"@id":"https:\/\/www.seeedstudio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/#primaryimage"},"image":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/#primaryimage"},"thumbnailUrl":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg","datePublished":"2022-09-02T13:32:41+00:00","dateModified":"2022-09-08T08:29:14+00:00","author":{"@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/bfb3d6d4b03e87d6b4c378ff17a167c7"},"breadcrumb":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/#primaryimage","url":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg","contentUrl":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg","width":1024,"height":252},{"@type":"BreadcrumbList","@id":"https:\/\/www.seeedstudio.com\/blog\/2022\/09\/02\/i2c-communication-protocol-and-how-it-works\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.seeedstudio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"I2C Communication Protocol and How It Works"}]},{"@type":"WebSite","@id":"https:\/\/www.seeedstudio.com\/blog\/#website","url":"https:\/\/www.seeedstudio.com\/blog\/","name":"Latest News from Seeed Studio","description":"Emerging IoT, AI and Autonomous Applications on the Edge","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.seeedstudio.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/bfb3d6d4b03e87d6b4c378ff17a167c7","name":"Kelvin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/63ece3083e88f6a0e0e2ad9d5a59407e?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/63ece3083e88f6a0e0e2ad9d5a59407e?s=96&r=g","caption":"Kelvin"},"url":"https:\/\/www.seeedstudio.com\/blog\/author\/kelvin\/"}]}},"modified_by":"Kelvin","views":34584,"featured_image_urls":{"full":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg",1024,252,false],"thumbnail":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485-80x80.jpg",80,80,true],"medium":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485-300x74.jpg",300,74,true],"medium_large":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485-768x189.jpg",640,158,true],"large":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg",640,158,false],"1536x1536":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg",1024,252,false],"2048x2048":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg",1024,252,false],"visody_icon":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg",32,8,false],"magazine-7-slider-full":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg",1024,252,false],"magazine-7-slider-center":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485-936x252.jpg",936,252,true],"magazine-7-featured":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485.jpg",1024,252,false],"magazine-7-medium":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485-720x252.jpg",720,252,true],"magazine-7-medium-square":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2022\/09\/20201020202130485-675x252.jpg",675,252,true]},"author_info":{"display_name":"Kelvin","author_link":"https:\/\/www.seeedstudio.com\/blog\/author\/kelvin\/"},"category_info":"<a href=\"https:\/\/www.seeedstudio.com\/blog\/category\/tech\/\" rel=\"category tag\">Tech<\/a>","tag_info":"Tech","comment_count":"2","_links":{"self":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/71088","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/users\/3575"}],"replies":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/comments?post=71088"}],"version-history":[{"count":7,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/71088\/revisions"}],"predecessor-version":[{"id":71279,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/71088\/revisions\/71279"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/media\/71091"}],"wp:attachment":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/media?parent=71088"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/categories?post=71088"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/tags?post=71088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}