{"id":4321,"date":"2019-05-14T20:00:43","date_gmt":"2019-05-14T18:00:43","guid":{"rendered":"https:\/\/msalamon.pl\/?p=4321"},"modified":"2025-12-27T19:53:10","modified_gmt":"2025-12-27T18:53:10","slug":"no-more-multiplexing-on-gpio-max7219-in-action-part-2","status":"publish","type":"post","link":"https:\/\/msalamon.pl\/en\/no-more-multiplexing-on-gpio-max7219-in-action-part-2\/","title":{"rendered":"No More Multiplexing on GPIO! MAX7219 in Action, Part 2"},"content":{"rendered":"\n<p><a href=\"http:\/\/msalamon.pl\/nigdy-wiecej-multipleksowania-na-gpio!-max7219-w-akcji-cz-1\/\">Recently<\/a> we made a 7-segment display multiplex itself thanks to the magical <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/max7219-wyswietlacz-7-segmentowy-8-cyfr\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=max7219&amp;utm_content=Text\">MAX7219<\/a> chip. Today I\u2019ll show you how these chips let you handle a theoretically infinite number of displays. We\u2019re talking about the daisy-chain connection these wonderful chips offer. In a moment you\u2019ll see how, without using more pins, you can connect and control as many displays as you want. Let\u2019s get to it!<\/p>\n\n\n\n<!--more-->\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/sklep.msalamon.pl\/produkt\/max7219-wyswietlacz-7-segmentowy-8-cyfr\/?utm_source=blog&amp;utm_medium=banner&amp;utm_campaign=max7219&amp;utm_content=digits\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"341\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2018\/09\/MAX7219_digits_baner-1024x341.jpg\" alt=\"\" class=\"wp-image-958\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2018\/09\/MAX7219_digits_baner-1024x341.jpg 1024w, https:\/\/msalamon.pl\/wp-content\/uploads\/2018\/09\/MAX7219_digits_baner-300x100.jpg 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2018\/09\/MAX7219_digits_baner-768x256.jpg 768w, https:\/\/msalamon.pl\/wp-content\/uploads\/2018\/09\/MAX7219_digits_baner-24x8.jpg 24w, https:\/\/msalamon.pl\/wp-content\/uploads\/2018\/09\/MAX7219_digits_baner-36x12.jpg 36w, https:\/\/msalamon.pl\/wp-content\/uploads\/2018\/09\/MAX7219_digits_baner-160x53.jpg 160w, https:\/\/msalamon.pl\/wp-content\/uploads\/2018\/09\/MAX7219_digits_baner.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Complete series of posts:<\/p>\n\n\n\n<p><a href=\"http:\/\/msalamon.pl\/nigdy-wiecej-multipleksowania-na-gpio-max7219-w-akcji-cz-1\/\">No more multiplexing on GPIO! MAX7219 in action part 1<\/a><\/p>\n\n\n\n<p><a href=\"http:\/\/msalamon.pl\/nigdy-wiecej-multipleksowania-na-gpio-max7219-w-akcji-cz-2\/\">No more multiplexing on GPIO! MAX7219 in action part 2<\/a><\/p>\n\n\n\n<p><a href=\"http:\/\/msalamon.pl\/nigdy-wiecej-multipleksowania-na-gpio-max7219-w-akcji-cz-3\/\">No more multiplexing on GPIO! MAX7219 in action part 3<\/a><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">MAX7219 \u2013 daisy-chain connection<\/h1>\n\n\n\n<p>To increase the number of LEDs you can control, you would connect another <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/max7219-wyswietlacz-7-segmentowy-8-cyfr\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=max7219&amp;utm_content=Text\">MAX7219<\/a> chip. In the \u201cclassic\u201d setup you would allocate a separate CS pin to select the active chip, while data and clock would be connected in parallel to the second chip. That would even make sense, but what if I told you I want to connect 500 chips to drive thousands of LEDs? Find me an STM that has over 500 pins. Tough one\u2026<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_nature_example.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"200\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_nature_example-300x200.jpg\" alt=\"\" class=\"wp-image-797\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_nature_example-300x200.jpg 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_nature_example-1024x683.jpg 1024w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_nature_example-768x512.jpg 768w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_nature_example-360x240.jpg 360w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_nature_example-24x16.jpg 24w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_nature_example-36x24.jpg 36w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_nature_example-120x80.jpg 120w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_nature_example.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>This is where daisy-chaining comes to the rescue. What is it, and why does it let you handle 500 chips without trouble? I\u2019m glad you asked. A cascade occurs in nature or gardening and is a type of waterfall or fountain. In general, it\u2019s about the flow of water. As a reminder, take a look at the first image from Google of such a formation.<\/p>\n\n\n\n<p>How does this relate to electronic circuits? Notice that a cascade is made of stages. Each such stage is one of our <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/max7219-wyswietlacz-7-segmentowy-8-cyfr\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=max7219&amp;utm_content=Text\">MAX7219<\/a> chips. The water represents the data we send into the chain. The top of the waterfall is the first chip. The data (water) flows through it and reaches the next ones, flowing through successive chips in the chain. In the electronic waterfall there\u2019s also a moment of accepting, or more formally, latching the data. After all, what we send to the chips should reach them, not just pass through. Also note that when you introduce a new item of data, all older ones shift forward by one, so when you write something for element no. 0, in a moment it will reach element no. 1. We don\u2019t want that one to perform the same task as well\u2026<\/p>\n\n\n\n<p>To control what the chips latch, we use the regular CS. The <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/max7219-wyswietlacz-7-segmentowy-8-cyfr\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=max7219&amp;utm_content=Text\">MAX7219<\/a> will accept the data it currently holds only if a rising edge appears on the CS pin. Returning to the waterfall metaphor, the CS could be a frog that eats the bug (the data) floating by :). What does the connection of several <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/max7219-wyswietlacz-7-segmentowy-8-cyfr\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=max7219&amp;utm_content=Text\">MAX7219<\/a> chips look like? The documentation will help.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_connection.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"644\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_connection-1024x644.jpg\" alt=\"\" class=\"wp-image-799\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_connection-1024x644.jpg 1024w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_connection-300x189.jpg 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_connection-768x483.jpg 768w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_connection-24x15.jpg 24w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_connection-36x23.jpg 36w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_connection-127x80.jpg 127w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskada_connection.jpg 1337w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>As you can see, on the MCU side there are only three signals (on the left):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>DATA IN, i.e., MOSI of the SPI interface<\/li>\n\n\n\n<li>CLOCK, i.e., SCK\u00a0<\/li>\n\n\n\n<li>LOAD DATA, i.e., CS<\/li>\n<\/ul>\n\n\n\n<p>The clock and CS are connected in parallel to each chip. The DATA IN of each subsequent chip is connected to the DATA OUT of the preceding one. It\u2019s on this pin that chips present historical data to be passed further along.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/sklep.msalamon.pl\/kategoria-produktu\/dev-boardy\/stm32-nucleo\/?utm_source=blog&amp;utm_medium=banner&amp;utm_campaign=max7219&amp;utm_content=nucleo\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"400\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/07\/Nucleo-64-baner.jpg\" alt=\"\" class=\"wp-image-1593\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/07\/Nucleo-64-baner.jpg 1200w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/07\/Nucleo-64-baner-300x100.jpg 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/07\/Nucleo-64-baner-1024x341.jpg 1024w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/07\/Nucleo-64-baner-768x256.jpg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Feeding data into the chain<\/h2>\n\n\n\n<p>A very important aspect is understanding how to \u201caddress\u201d data. We already know how such addressing works, because we\u2019re familiar with WS2812B LEDs, which I described in another series (<a href=\"http:\/\/msalamon.pl\/adresowalne-diody-ws2812b-na-stm32-cz-1\/\">Addressable WS2812B LEDs on STM32 part 1<\/a>). In that chain the difference was that latching depended on timing, and the principle of feeding data was reversed (or rather, logical). There, after an LED received its data, it remembered it and forwarded only the next data on its output, which no longer concerned it. So we wrote data into that chain in order from 0 to n.<\/p>\n\n\n\n<p>With the <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/max7219-wyswietlacz-7-segmentowy-8-cyfr\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=max7219&amp;utm_content=Text\">MAX7219<\/a> it\u2019s different. Latching happens when the CS pin goes high. The chips don\u2019t keep anything for themselves; they pass along everything that comes into their hands like monkeys, holding only the most recent thing they got for a moment. In this case, the first thing you need to write into the chain is the information for the <strong>last<\/strong> chip, then the second-to-last, and so on up to the zeroth. Let me illustrate this with a logic analyzer trace on a live example. I have four chips daisy-chained, which gives me a total of 5 points where data can appear:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>SDIN0<\/strong><\/li>\n\n\n\n<li>SDOUT0&lt;-><strong>SDIN1<\/strong><\/li>\n\n\n\n<li>SDOUT1&lt;-><strong>SDIN2<\/strong><\/li>\n\n\n\n<li>SDOUT2&lt;-><strong>SDIN3<\/strong><\/li>\n\n\n\n<li><strong>SDOUT<\/strong>3<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskade_analyzer.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"460\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskade_analyzer.jpg\" alt=\"\" class=\"wp-image-801\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskade_analyzer.jpg 1920w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskade_analyzer-300x72.jpg 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskade_analyzer-1024x245.jpg 1024w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskade_analyzer-768x184.jpg 768w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskade_analyzer-1536x368.jpg 1536w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskade_analyzer-24x6.jpg 24w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskade_analyzer-36x9.jpg 36w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/03\/max7219_kaskade_analyzer-160x38.jpg 160w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>The bolded names are the ones I used in the waveform image. I split&nbsp; the&nbsp; trace&nbsp; into&nbsp; four&nbsp; sections&nbsp; because,&nbsp; I\u2019m&nbsp; sending&nbsp; four&nbsp; messages.&nbsp; One&nbsp; for&nbsp; each&nbsp; chip.&nbsp; MAX7219&nbsp; accepts&nbsp; data&nbsp; in&nbsp; 2-byte&nbsp; packets,&nbsp; hence&nbsp; I\u2019m&nbsp; sending&nbsp; a&nbsp; total&nbsp; of&nbsp; 8&nbsp; bytes. <\/p>\n\n\n\n<p>To make the analysis easier, I\u2019m sending data packets that represent successive steps, i.e., 0x11 for the first step, 0x22 for the second, etc.&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>The first packet 0x11 reaches the SDIN input of chip zero. The data is stored in the chip but not latched yet\u2014it\u2019s waiting for a rising edge on the CS pin.<\/li>\n\n\n\n<li>No edge appeared, but another packet arrived at SDIN0\u20140x22. The first chip in line needs to make room for the new data, so it pushes the old one to its SDOUT, which in turn goes to the SDIN of chip number 1. Now two chips are waiting for a rising edge on the CS pin.<\/li>\n\n\n\n<li>Again, the edge did not appear, and a new set of data showed up once more. Each of the previous chips makes room for the new data by pushing the old to its SDOUT. 0x11 goes to chip number 2, 0x22 to chip number 1, and the freshest data, 0x33, is now in chip number 0.\u00a0Now three chips are waiting for a rising edge on the CS pin.<\/li>\n\n\n\n<li>And surprise\u2014the edge still didn\u2019t show up at the CS pin. The whole sequence of chips passing along their data starts again. Each of them forwards what it currently held. As a result, 0x11, which was introduced into the chain first, reached chip no. 3, we have 0x22 on chip no. 2, 0x33 on no. 1, and 0x44 at the beginning.\u00a0<\/li>\n<\/ol>\n\n\n\n<p>It didn\u2019t fit on the plot, but after all this, CS finally goes high. At that moment, the data that each chip was holding is latched, and the corresponding operations are only now performed by the chips.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Handling the chain in the library<\/h2>\n\n\n\n<p>The library has supported daisy-chaining from the very beginning, and handling multiple chips is implemented in the function:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MAX7219_STATUS MAX7219_SendToDevice(uint8_t DeviceNumber, uint8_t Register, uint8_t Data)<\/pre>\n\n\n\n<p>The whole trick is to operate on a buffer whose size corresponds to the number of chips in the chain. With four chips, the buffer size is 8 bytes (remember that data must be in 2-byte packets). First, the offset of the device you want to write to is determined. Then the entire buffer is zeroed. As you remember from the <a href=\"http:\/\/msalamon.pl\/nigdy-wiecej-multipleksowania-na-gpio-max7219-w-akcji-cz-1\/\">previous post<\/a>, zero is the No-op operation, i.e., no operation. Writing it to a chip changes nothing.<\/p>\n\n\n\n<p>In the next step, you need to write the register and value data into the buffer in accordance with the computed offset. Remember the nature of the chain: if you want to write to the first element, you send it as the last value, and vice versa. If you\u2019re writing to the last element, send it into the chain first.<\/p>\n\n\n\n<p>After filling the buffer, just transfer it over SPI. Done. The given data has been written to the chip you wanted to address.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Chain in action<\/h2>\n\n\n\n<p>You\u2019ll find demonstrations of the chain in action on 7-segment displays in the video below. Unfortunately, readily available modules are not friendly for physically combining displays. They have a piece of PCB on both sides, which prevents perfect alignment of the displays.&nbsp;<\/p>\n\n\n\n<p><iframe width=\"560\" height=\"315\" loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/uIWoTNN7XNg\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p>I hope I\u2019ve clearly explained how daisy-chaining works. This technique is often used in shift registers, which is what the <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/max7219-wyswietlacz-7-segmentowy-8-cyfr\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=max7219&amp;utm_content=Text\">MAX7219<\/a> chips discussed today essentially are. The well-known WS2812B LEDs also use a similar mechanism, which makes them incredibly configurable. In the next part, I\u2019ll deal with matrix displays. I\u2019ll daisy-chain them and also combine them into a single larger display, which can be easily controlled from a graphics library!<\/p>\n\n\n\n<p>You can find the complete project along with the library on my GitHub as usual: <a href=\"https:\/\/github.com\/lamik\/MAX7219_digits_STM32_HAL\" target=\"_blank\" rel=\"noopener\">link<\/a><\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;4321&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;0&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;0\\\/5 - (0 votes)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;No More Multiplexing on GPIO! MAX7219 in Action, Part 2&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            <span class=\"kksr-muted\"><\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Recently we made a 7-segment display multiplex itself thanks to the magical MAX7219 chip. Today I\u2019ll show you how these chips let you handle a theoretically infinite number of displays. We\u2019re talking about the daisy-chain connection these wonderful chips offer. In a moment you\u2019ll see how, without using more pins, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3173,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[160],"tags":[175,176,174,177],"class_list":["post-4321","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-stm32","tag-electronics","tag-programming","tag-stm32","tag-stm32cubemx"],"_links":{"self":[{"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts\/4321","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/comments?post=4321"}],"version-history":[{"count":3,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts\/4321\/revisions"}],"predecessor-version":[{"id":4433,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts\/4321\/revisions\/4433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/media\/3173"}],"wp:attachment":[{"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/media?parent=4321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/categories?post=4321"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/tags?post=4321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}