{"id":6010,"date":"2013-01-25T15:13:13","date_gmt":"2013-01-25T20:13:13","guid":{"rendered":"http:\/\/embedded-lab.com\/blog\/?p=6010"},"modified":"2016-12-18T00:02:38","modified_gmt":"2016-12-18T05:02:38","slug":"understanding-logic-analyzer-basics-using-scanalogic-2-edu-kit","status":"publish","type":"post","link":"https:\/\/embedded-lab.com\/blog\/understanding-logic-analyzer-basics-using-scanalogic-2-edu-kit\/","title":{"rendered":"Understanding Logic Analyzer basics using SCANALOGIC-2 EDU KIT"},"content":{"rendered":"<p>A logic analyzer is an excellent tool for capturing many digital signals at once and displaying their timing relationships. It is particularly useful in verifying and debugging digital circuits. This tutorial is intended to provide a quick overview of a logic analyzer tool and its uses in analyzing and decoding data flowing on multiple signal lines or bus in a digital system. The logic analyzer tool is extremely helpful in troubleshooting problems arising from timing violations and transients on buses. In this article, I am going to use the <strong><a href=\"https:\/\/www.ikalogic.com\/scanalogic-2-edu-kit-2\/\" target=\"_blank\">SCANALOGIC-2<\/a><\/strong> educational kit from <a href=\"http:\/\/http:\/\/www.ikalogic.com\" target=\"_blank\">IKALOGIC<\/a> to illustrate very basic features of a logic analyzer.<\/p>\n<div id=\"attachment_6027\" style=\"width: 575px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/ScanaLogicEduTitle1.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6027\" class=\"size-full wp-image-6027\" title=\"ScanaLogicEduTitle\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/ScanaLogicEduTitle1.jpg\" alt=\"\" width=\"565\" height=\"339\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/ScanaLogicEduTitle1.jpg 565w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/ScanaLogicEduTitle1-550x330.jpg 550w\" sizes=\"auto, (max-width: 565px) 100vw, 565px\" \/><\/a><p id=\"caption-attachment-6027\" class=\"wp-caption-text\">SCANALOGIC-2: Four channel logic analyzer board<\/p><\/div>\n<p><!--more--><strong>Logic analyzer vs oscilloscope<\/strong><\/p>\n<p>Several types of electronic measurement tools are used to test and verify digital circuits. A digital oscilloscope is one of the most commonly used tools in an electronics lab. The oscilloscope is used for general-purpose signal viewing and it allows to make accurate measurements of various attributes of the signal such as rise- and fall-times, peak amplitude, frequency,\u00a0the elapsed time between edges, etc. Typical digital oscilloscopes have up to four signal inputs, which means you can simultaneously observe four signals and their attributes. However, the oscilloscope cannot help you when you need to measure digital signals on a 32-bit microcprocessor bus simultaneously because it doesn&#8217;t have that many channels. A logic analyzer tool can serve this purpose. Although it grew out of an oscilloscope, the logic analyzer have different capabilities, and it measures and analyzes signals differently than an oscilloscope. Instead of measuring analog details, the logic analyzer only detects the logic state of a signal. Logic analyzers can have over 100 channels (some sophisticated ones have over thousand channels). Because they can capture\u00a0and display logic states of many signal lines at once, logic analyzers are very helpful for verifying time relationship between the signals. They can also decode information sent over the microprocessor bus and present them in a meaningful form.<\/p>\n<p>Logic analyzers present data basically in the same way as oscilloscopes do with time axis along horizontal. But the vertical axis of logic analyzer has only 1-bit resolution required to indicate either a logic High or a logic Low. When you connect a logic analyzer to a digital circuit, you\u2019re only concerned with the logic state of the signal, and not analog details as oscilloscopes do. Besides, logic analyzers can&#8217;t display data in real time. They first capture the signals and display them later. They are very useful when looking at time relationship between many signals at one glance. It can also decode information sent over the microprocessor buses and present them in a meaningful form.<\/p>\n<p>The basic defining characteristics of a logic analyzer are the number of input channels it can sample, the maximum sampling rate, and the memory depth for storing the samples. The\u00a0specification of memory depth defines how many captured samples can be stored per channel in a single run. For example, an analyzer with 32K depth can store 32K samples per channel. If you use a sampling frequency of 1 million samples per second, then it will fill up just in 32 milliseconds. Larger memory depths allow you to sample data for longer time, which is helpful to spot and correct a timing violation on bus.<\/p>\n<p><strong>Modes<\/strong><\/p>\n<p>Logic analyzers have two basic modes of operation: <strong>timing mode<\/strong> and <strong>state mode<\/strong>.<\/p>\n<p>In timing mode, the data is sampled at regular intervals according to a clock internal to the logic analyzer. As such there is no fixed timing relationship between a target system and the samples acquired by the logic analyzer. The samples are stored in the memory and are used later to analyze the timing relationship between the signals. This mode of operation is also known as asynchronous acquisition and is\u00a0useful in debugging mostly hardware problems.<\/p>\n<p>The timing relationship between the signals is not particularly useful while tracking down software related problems. The software developer is more interested to see the instruction flow of the program. In state mode, a signal from the target device (usually a microprocessor clock) defines the sample point. Signals are captured on the active edge of every clock signal received from the target device. In this case, the relative timing information between the signals is unimportant. Since the data are sampled during the active edge of the system clock, the logic signals are stable and represent a valid state of the target system. Therefore, with multiple samples, it is possible to capture and display successive states of the system in a sequence. This points up the major difference between timing and state mode.\u00a0The timing\u00a0analyzer has an internal clock\u00a0to control sampling, so it\u00a0asynchronously samples the\u00a0system under test. A state\u00a0analyzer synchronously\u00a0samples the system since it gets\u00a0its sampling clock from the\u00a0system.<\/p>\n<p><strong>Triggering<\/strong><\/p>\n<p>A logic analyzer needs a <strong>trigger<\/strong> signal that basically tells it when to start recording samples. Since a logic analyzer has a limited amount of memory for storing samples, a trigger\u00a0helps to capture the action of interest properly. A trigger is normally defined by a logic condition built on the sampled data that has to be met in order to capture the data. Many conditions can be used to trigger a logic analyzer. For example, a change in the logic state of a single line can be used as a trigger. Similarly, in a more complex system, recognizing a specific binary value on a bus or a sequence of pre-defined data values can be used as triggers. Although there is no theoretical limit on how you would define a trigger, complex trigger algorithms are difficult to implement because the trigger event has to be evaluated in real time.<\/p>\n<p><strong>SCANALOGIC-2<\/strong><\/p>\n<p><strong><a href=\"https:\/\/www.ikalogic.com\/scanalogic-2-edu-kit-2\/\" target=\"_blank\">SCANALOGIC-2<\/a><\/strong> is an educational kit that allows you to build a low-cost four\u00a0channel logic analyzer at home. It is based on ATMEL&#8217;s Atmega168 microcontroller. It connects to a PC through USB port and uses a free PC software called <a title=\"ScanaStudio Logic Analyzer software\" href=\"http:\/\/www.ikalogic.com\/ikalogic-products\/scanastudio\/\">ScanaStudio<\/a>\u00a0to visualize and analyze the captured signals. The key features of SCANALOGIC-2 are:<\/p>\n<ul>\n<li>Sampling rate: 20 Million samples per seconds<\/li>\n<li>No. of channels: 4<\/li>\n<li>Memory depth: 256K per channel (total 1 MByte)<\/li>\n<li>Protocol decoding: I2C, SPI, UART, 1-Wire<\/li>\n<li>Digital output capability: PWM, FM, UART packets<\/li>\n<\/ul>\n<p>When you order the\u00a0Scanalogic-2 EDU KIT, the board comes with presoldered SMT components that include the microcontroller, memory chips, I\/O buffer chips and quartz oscillator. Rest of the through-hole components (resistors, capacitors, regulator IC, and diodes) are to be soldered by yourself, which is pretty easy.\u00a0The KIT also includes gripper probes to hook the logic analyzer to your circuit.<\/p>\n<div>\n<div id=\"attachment_6013\" style=\"width: 575px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/ScanaLogicEduPackage.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6013\" class=\"size-full wp-image-6013\" title=\"ScanaLogicEduPackage\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/ScanaLogicEduPackage.jpg\" alt=\"\" width=\"565\" height=\"441\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/ScanaLogicEduPackage.jpg 565w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/ScanaLogicEduPackage-550x429.jpg 550w\" sizes=\"auto, (max-width: 565px) 100vw, 565px\" \/><\/a><p id=\"caption-attachment-6013\" class=\"wp-caption-text\">SCANALOGIC-2 EDU kit<\/p><\/div>\n<p>The picture below shows an assembled SCANALOGIC-2 board. It consists of six distinct blocks, marked by top silkscreen, that describes how a typical logic analyzer works.<\/p>\n<\/div>\n<div>\n<div id=\"attachment_6790\" style=\"width: 575px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/12\/ScanaLogicEduBoard.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6790\" class=\"size-full wp-image-6790\" title=\"ScanaLogicEduBoard\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/12\/ScanaLogicEduBoard.jpg\" alt=\"\" width=\"565\" height=\"318\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/12\/ScanaLogicEduBoard.jpg 565w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/12\/ScanaLogicEduBoard-550x309.jpg 550w\" sizes=\"auto, (max-width: 565px) 100vw, 565px\" \/><\/a><p id=\"caption-attachment-6790\" class=\"wp-caption-text\">SCANALOGIC-2 logic analyzer<\/p><\/div>\n<\/div>\n<div>\n<ol>\n<li><strong>Power Supply Block<\/strong> provides stable and filtered 3.6V for the memory and I\/O buffer chips.<\/li>\n<li><strong>USB Block<\/strong> allows the voltage matching between the USB signal levels (3.3V) and the microcontroller\u2019s 5V logic outputs.<\/li>\n<li><strong>Clock Block<\/strong> provides a stable 20MHz clock for the operation of the microcontroller and for the signal sampling.<\/li>\n<li><strong>MCU Block<\/strong> contains the Atmega168 microcontroller, which is\u00a0the heart of the device. It received the capture request from the host (PC) application,\u00a0initializes\u00a0the SRAM ICs, watches for trigger conditions and records the exact trigger position. It sends the captured samples to the host application for further analysis and visualization.<\/li>\n<li><strong>SRAM Block<\/strong>\u00a0holds the sampled data. There are 4 SRAMs, one for each channel. Each byte of data represents 8 consecutive samples, one for each bit. The logic samples are directly fed into the SRAMs, bypassing through the microcontroller, to\u00a0achieve\u00a0the maximum sampling frequency of 20 MHz.<\/li>\n<li><strong>BUFFER Block<\/strong>\u00a0isolates the outside world from the logic analyzer. Besides, it also helps to interface a variety of logic levels from 2.0-5.0V.<\/li>\n<\/ol>\n<\/div>\n<p><strong>Test Setup<\/strong><\/p>\n<p>Now we will setup a very simple test circuit to see SCANALOGIC-2 in action. The test setup consists of the PIC12F683 microcontroller and TC74 temperature sensor.\u00a0The communication with the TC74 device is accomplished via a 2-wire I2C compatible serial bus. The PIC12F683 microcontroller is programmed to access the temperature reading from the TC74 device using I2C bus and send it out to its UART TX port. Channels 1 through 3 of SCANALOGIC-2 are connected to the I2C-SDA, I2C-SCL, and UART-TX signal lines, respectively, to monitor the data flow on these lines. The logic analyzer is connected to a PC that has the\u00a0<strong><a href=\"http:\/\/www.ikalogic.com\/ikalogic-products\/scanastudio\/\" target=\"_blank\">ScanaStudio<\/a><\/strong> software installed to visualize the captured data. Note that the <strong>SCANALOGIC-2 analyzer works in\u00a0timing\u00a0mode only<\/strong>.<\/p>\n<div id=\"attachment_6016\" style=\"width: 578px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestSetup.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6016\" class=\"size-full wp-image-6016\" title=\"TestSetup\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestSetup.jpg\" alt=\"\" width=\"568\" height=\"475\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestSetup.jpg 568w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestSetup-550x459.jpg 550w\" sizes=\"auto, (max-width: 568px) 100vw, 568px\" \/><\/a><p id=\"caption-attachment-6016\" class=\"wp-caption-text\">Test setup on breadboard<\/p><\/div>\n<p>Scanastudio also allows to select <strong>Trigger Channel<\/strong> and <strong>Trigger Type<\/strong> before you capture data. In this case, I have setup Channel 1 as &#8216;Trigger Channel&#8217;, with &#8216;Trigger Type&#8217; to be a Falling Edge, which means data capturing will start when a high-to-low falling pulse is detected on the I2C-SDA line, which could happen during an I2C Start signal. The sampling rate for the test case has been selected to be 500KHz , which is good enough to analyze the I2C communication (happening at 100 KHz) between PIC12F683 and TC74.<\/p>\n<div id=\"attachment_6795\" style=\"width: 344px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/12\/Scanastudiosetup.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6795\" class=\"size-full wp-image-6795\" title=\"Scanastudiosetup\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/12\/Scanastudiosetup.jpg\" alt=\"\" width=\"334\" height=\"560\" \/><\/a><p id=\"caption-attachment-6795\" class=\"wp-caption-text\">Scanastudio setup<\/p><\/div>\n<p>The following picture is a Scanastudio snapshot visualizing the captured data on Channels 1 through 3. It is much easier to analyze the captured data if protocol decoder is enabled. Scanastudio software can decode I2C, SPI, UART, and 1-Wire protocols. Read <strong><a href=\"http:\/\/ikalogic.cluster006.ovh.net\/wp-content\/uploads\/Scanalogic2_manual_EN.pdf\" target=\"_blank\">SCANALOGIC-2 manual<\/a><\/strong> for more detail on this. I have setup I2C protocol decoder (with 7-bit slave address, and R\/W) on CH1 and CH2, and UART decoder on CH3.<\/p>\n<div id=\"attachment_6018\" style=\"width: 560px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform1.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6018\" class=\"size-medium wp-image-6018\" title=\"TestWaveform1\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform1-550x318.jpg\" alt=\"\" width=\"550\" height=\"318\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform1-550x318.jpg 550w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform1-1024x593.jpg 1024w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform1.jpg 1102w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><p id=\"caption-attachment-6018\" class=\"wp-caption-text\">Wav1 (click to enlarge)<\/p><\/div>\n<p>Reading temperature from the TC74 device through I2C port involves the following steps:<\/p>\n<ul>\n<li><em>The host microcontroller issues a Start condition followed by the address byte. The address byte consists of the 7-bit slave address (0x48) and a Read\/Write bit (R\/W). The R\/W bit is always \u20190? (Write) in the first phase.<\/em><\/li>\n<li><em>If the received 7-bit address matches with its own address, the TC74 device responds with an acknowledge pulse.<\/em><\/li>\n<li><em>The host microcontroller next sends the command byte to TC74 to indicate which register it wants to access. For reading the temperature, the command byte should be 00h. The TC74 responds with an acknowledge pulse.<\/em><\/li>\n<li><em>The host microcontroller issues a new Start condition because the direction of data transfer is now going to be changed. The new address byte with R\/W bit 1 is sent by the host, which is acknowledged by the slave.<\/em><\/li>\n<li><em>The TC74 transmits the 8-bit temperature data (\u00b0C) from the temperature register. Upon receiving the byte, the host doesn\u2019t acknowledge, but generates a Stop condition.<\/em><\/li>\n<\/ul>\n<p>In the following pictures (screenshots of Scanastudio running on PC), you can see how the logic analyzer captures all these events happening on the I2C bus while the PIC12F683 microcontroller reads temperature from the TC74 device.<\/p>\n<div id=\"attachment_6019\" style=\"width: 578px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform2.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6019\" class=\"size-full wp-image-6019\" title=\"TestWaveform2\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform2.jpg\" alt=\"\" width=\"568\" height=\"268\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform2.jpg 568w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform2-550x259.jpg 550w\" sizes=\"auto, (max-width: 568px) 100vw, 568px\" \/><\/a><p id=\"caption-attachment-6019\" class=\"wp-caption-text\">PIC12F683 initiates communication with Start signal and then sends a 7-bit slave address (0x48) followed by a R\/W bit 0 (Write). \u00a0<em>TC74 responds with an acknowledge pulse. Next, PIC12F683 sends temperature read command (0x00), which is also\u00a0<\/em>acknowledged by TC74.<\/p><\/div>\n<div id=\"attachment_6020\" style=\"width: 579px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform3.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6020\" class=\"size-full wp-image-6020\" title=\"TestWaveform3\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform3.jpg\" alt=\"\" width=\"569\" height=\"270\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform3.jpg 569w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform3-550x260.jpg 550w\" sizes=\"auto, (max-width: 569px) 100vw, 569px\" \/><\/a><p id=\"caption-attachment-6020\" class=\"wp-caption-text\">PIC12F683 issues a new Start condition with R\/W bit set to 1 (Read). This is acknowledged by TC74. PIC12F683\u00a0receives a temperature byte from TC74, and sends a STOP signal without sending any acknowledgement pulse. The received byte is 0x1D (29 decimal) which corresponds to 29 \u00b0C.\u00a0<\/p><\/div>\n<div id=\"attachment_6021\" style=\"width: 487px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform4.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6021\" class=\"size-full wp-image-6021\" title=\"TestWaveform4\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/08\/TestWaveform4.jpg\" alt=\"\" width=\"477\" height=\"347\" \/><\/a><p id=\"caption-attachment-6021\" class=\"wp-caption-text\">PIC12F683 sends out the received temperature byte (0x1D) on UART-TX line, which is hooked up to CH3 of SCANALOGIC-2.<\/p><\/div>\n<p><strong>Summary<\/strong><\/p>\n<p>A brief overview of logic analyzer was presented in this tutorial along with a quick review of Ikalogic&#8217;s SCANALOGIC-2 EDU kit that allows you to build a simple and low-cost 4-channel logic analyzer at home. The SCANALOGIC-2 is based on ATMEL\u2019s Atmega168 microcontroller and provides 20MHz sampling rate with 256K memory depth per channel. It uses the Scanastudio software on PC for visualizing the captured data. The software supports I2C, SPI, UART, and 1-wire\u00a0protocol decoding on its four channels. The SCANALOGIC-2 channels also have got digital output capabilities that were not discussed here. You can refer the product manual to find more details on that.<\/p>\n<p>To sum up, SCANALOGIC-2 is a very simple and inexpensive logic analyzer kit that can come in very useful for beginners and hobbyists to analyze and debug serial interfaces between microcontroller and peripherals. It can also be used to generate PWM, Frequency Modulation, and UART signals for testing purpose. There is a plenty of room for further improvements too. IkaLogic should consider expanding the number of input channels, increasing memory depth, and implementing more trigger options.<\/p>\n<p><strong>References<\/strong><\/p>\n<p>1. <a href=\"http:\/\/http:\/\/web.mit.edu\/6.111\/www\/s2007\/handouts\/LA.pdf\" target=\"_blank\">The XYZs of Logic Analyzers<\/a> \u00a0from Textronix<\/p>\n<p>2. <a href=\"https:\/\/www.ikalogic.com\/scanalogic-2-edu-kit-2\/\" target=\"_blank\">SCANALOGIC-2 website<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A logic analyzer is an excellent tool for capturing many digital signals at once and displaying their timing relationships. It is particularly useful in verifying and debugging digital circuits. This tutorial is intended to provide a quick overview of a logic analyzer tool and its uses in analyzing and decoding data flowing on multiple signal lines or bus in a digital system. The logic analyzer tool is extremely helpful in troubleshooting problems arising from timing violations and transients on buses. In this article, I am going to use the SCANALOGIC-2 educational kit from IKALOGIC to illustrate very basic features of<\/p>\n","protected":false},"author":1,"featured_media":6011,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[348,227],"tags":[479,480,478,477],"class_list":["post-6010","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-product-review","category-news","tag-atmega","tag-i2c","tag-ikalogic","tag-logic-analyser"],"_links":{"self":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/6010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/comments?post=6010"}],"version-history":[{"count":63,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/6010\/revisions"}],"predecessor-version":[{"id":12894,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/6010\/revisions\/12894"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/media\/6011"}],"wp:attachment":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/media?parent=6010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/categories?post=6010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/tags?post=6010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}