mirror of
https://github.com/lupyuen/lupyuen.github.io.git
synced 2025-01-13 10:18:33 +08:00
647 lines
No EOL
40 KiB
HTML
647 lines
No EOL
40 KiB
HTML
<!doctype html>
|
||
<html lang="en">
|
||
|
||
<head>
|
||
<link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=bsmaklHF" />
|
||
<link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=qtvMKcIJ" />
|
||
<link rel="canonical" href="https://lupyuen.org/articles/super-blue-pill-like-stm32-blue-pill-but-better.html" />
|
||
<!-- End Wayback Rewrite JS Include -->
|
||
<title data-rh="true">Super Blue Pill — Like STM32 Blue Pill, But Better!</title>
|
||
<meta data-rh="true" charset="utf-8" />
|
||
<meta data-rh="true" name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1" />
|
||
<meta data-rh="true" name="theme-color" content="#000000" />
|
||
<meta data-rh="true" property="og:type" content="article" />
|
||
<meta data-rh="true" property="article:published_time" content="2019-10-29T09:52:28.249Z" />
|
||
<meta data-rh="true" name="title" content="Super Blue Pill — Like STM32 Blue Pill, But Better!" />
|
||
<meta data-rh="true" property="og:title" content="Super Blue Pill — Like STM32 Blue Pill, But Better!" />
|
||
<meta data-rh="true" property="twitter:title" content="Super Blue Pill — Like STM32 Blue Pill, But Better!" />
|
||
<meta data-rh="true" name="description" content="Friendlier for newbies, supports ESP8266 WiFi and nRF24L01" />
|
||
<meta data-rh="true" property="og:description" content="Friendlier for newbies, supports ESP8266 WiFi and nRF24L01" />
|
||
<meta data-rh="true" property="twitter:description"
|
||
content="Friendlier for newbies, supports ESP8266 WiFi and nRF24L01" />
|
||
<meta data-rh="true" name="twitter:card" content="summary_large_image" />
|
||
<meta data-rh="true" name="twitter:creator" content="@MisterTechBlog" />
|
||
<meta data-rh="true" name="author" content="Lup Yuen Lee 李立源" />
|
||
<meta data-rh="true" name="robots" content="index,follow" />
|
||
<meta data-rh="true" name="referrer" content="unsafe-url" />
|
||
<meta data-rh="true" name="twitter:label1" value="Reading time" />
|
||
<meta data-rh="true" name="twitter:data1" value="6 min read" />
|
||
<meta property="og:image"
|
||
content="https://lupyuen.github.io/images/legacy2/g1.jpeg">
|
||
|
||
<!-- Begin scripts/rustdoc-header.html: Header for Custom Markdown files processed by rustdoc, like chip8.md -->
|
||
<link rel="alternate" type="application/rss+xml" title="RSS Feed for lupyuen" href="/rss.xml" />
|
||
<link rel="stylesheet" type="text/css" href="../normalize.css">
|
||
<link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle">
|
||
|
||
<link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle">
|
||
<link rel="stylesheet" type="text/css" href="../prism.css">
|
||
<script src="../storage.js"></script><noscript>
|
||
<link rel="stylesheet" href="../noscript.css"></noscript>
|
||
<link rel="shortcut icon" href="../favicon.ico">
|
||
<style type="text/css">
|
||
#crate-search {
|
||
background-image: url("../down-arrow.svg");
|
||
}
|
||
a {
|
||
color: #77d;
|
||
}
|
||
</style>
|
||
<!-- End scripts/rustdoc-header.html -->
|
||
|
||
</head>
|
||
|
||
<body>
|
||
<div id="root">
|
||
<div class="a b c">
|
||
<article class="meteredContent">
|
||
<section class="dk dl dm dn ak do bw n dp"></section><span class="r"></span>
|
||
<div>
|
||
<div class="dq u dr ds dt du"></div>
|
||
<section class="dv dw dx dy dz">
|
||
<div class="ea">
|
||
<div class="n p">
|
||
<div class="eb ec ed ee ef eg ag eh ah ei aj ak">
|
||
<div class="figure ek el em en eo ea ep eq paragraph-image">
|
||
|
||
|
||
<p><img src="https://lupyuen.github.io/images/legacy2/g1.jpeg" /></p>
|
||
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="n p">
|
||
<div class="ac ae af ag ah fh aj ak">
|
||
<div>
|
||
<div id="2594" class="fi fj fk at fl b fm fn fo fp fq fr fs">
|
||
<h1 class="fl b fm ft fk">Super Blue Pill — Like STM32 Blue Pill, But Better!</h1>
|
||
</div>
|
||
<div class="fu">
|
||
<div class="n fv fw fx fy">
|
||
<div class="o n">
|
||
<div><a rel="noopener"
|
||
href="https://lupyuen.github.io">
|
||
<div class="et fz ga">
|
||
<div class="gb n gc o p dq gd ge gf gg gh du"></div>
|
||
|
||
</div>
|
||
</a></div>
|
||
<div class="gj ak r">
|
||
<div class="n">
|
||
<div style="flex:1"><span class="as b at au av aw r fk q">
|
||
<div class="gk n o gl"><span class="as cv gm au cd gn go gp gq gr fk"><a
|
||
class="da db bb bc bd be bf bg bh bi gs bl bm gt gu" rel="noopener"
|
||
href="https://lupyuen.github.io">Lup
|
||
Yuen Lee 李立源</a></span>
|
||
|
||
</div>
|
||
</span></div>
|
||
</div><span class="as b at au av aw r ax ay"><span class="as cv gm au cd gn go gp gq gr ax">
|
||
<div><a class="da db bb bc bd be bf bg bh bi gs bl bm gt gu" rel="noopener"
|
||
href="https://lupyuen.github.io/articles/super-blue-pill-like-stm32-blue-pill-but-better">
|
||
21 May 2019</a> <!-- -->·
|
||
<!-- -->
|
||
<!-- -->6
|
||
<!-- --> min read<span style="padding-left:4px"></span>
|
||
</div>
|
||
</span></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p id="3067" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih"><em class="ii">Friendlier for
|
||
newbies, supports ESP8266 WiFi and nRF24L01</em></p>
|
||
<p id="1481" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">I ordered this <a
|
||
href="https://stm32-base.org/boards/STM32F103C8T6-Blue-Pill"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">STM32 Blue Pill</a>-compatible
|
||
development board from a <a
|
||
href="https://detail.tmall.com/item.htm?id=568676838958"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">China-based online shop</a>. The
|
||
board seems to be available from other sellers on AliExpress (<a
|
||
href="https://www.aliexpress.com/item/STM32F103C8T6-ARM-Mini-system-Development-Board-STM32-Development-Core-Board/32920231706.html"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">like this one</a>), but I can’t be
|
||
sure if theirs are 100% identical to mine. Here’s my review of the board I bought (I bought two of the
|
||
same board) — I’m not paid to do this review…</p>
|
||
<p id="325e" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">Since I couldn’t find an official
|
||
name for this board, I’m calling it the “<strong class="hw in">Super Blue Pill</strong>” because it
|
||
works like a Blue Pill and it comes with more features. The Chinese technical documents refer to the
|
||
board as “<strong class="hw in">启光c8</strong>” (I pronounce it “<strong class="hw in">Qi Guang
|
||
c8</strong>”). The seller on AliExpress calls it “<em class="ii">STM32F103C8T6 ARM Mini system
|
||
Development Board STM32 Development Core Board</em>”.</p>
|
||
<p id="b6f0" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">My Super Blue Pill (fully
|
||
assembled) costs $6 and there seems to be an <a
|
||
href="https://www.aliexpress.com/item/STM32F103C8T6-ARM-Minisystem-Development-Board-STM32-Development-Core-Board/32758160921.html?spm=2114.10010108.1000014.2.51ff183cjsZZjn&gps-id=pcDetailBottomMoreOtherSeller&scm=1007.13338.128357.000000000000000&scm_id=1007.13338.128357.000000000000000&scm-url=1007.13338.128357.000000000000000&pvid=5367838c-b2f6-4441-9b8f-661aa609b5e7"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">unsoldered version selling at
|
||
about $3</a>. Blue Pill is cheaper, priced at $2. (Search AliExpress for <code
|
||
class="fb io ip iq ir b"><a href="https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20180924131057&SearchText=stm32f103c8t6+development+board&switch_new_app=y" class="da by ij ik il im" target="_blank" rel="noopener nofollow">stm32f103c8t6 development board</a></code>)
|
||
</p>
|
||
<p id="8537" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">The online seller provided these
|
||
files:</p>
|
||
<p id="2f90" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih"><strong
|
||
class="hw in">Schematics</strong>: <a href="https://drive.google.com/drive/folders/1sKjXZ-Lj4GetLCEzAHOJK6976EsqD-ZJ" class="da by ij ik il im" target="_blank" rel="noopener nofollow">https://drive.google.com/drive/folders/1sKjXZ-Lj4GetLCEzAHOJK6976EsqD-ZJ</a>
|
||
</p>
|
||
<p id="1ab6" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih"><strong class="hw in">Sample
|
||
Code</strong>: <a href="https://drive.google.com/drive/folders/1ILp-uZoT5DasWUy2G_Jp88a2F-UB3hnd" class="da by ij ik il im" target="_blank" rel="noopener nofollow">https://drive.google.com/drive/folders/1ILp-uZoT5DasWUy2G_Jp88a2F-UB3hnd</a>
|
||
</p>
|
||
<p id="da6e" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">Here’s my unofficial translation
|
||
of the schematics…</p>
|
||
<p id="91ca" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih"><a href="https://drive.google.com/open?id=1WU_erkN-fPBfNYVX5BOHhjfHLPkTgSwOKEL8rYcAIrI&authuser=0" class="da by ij ik il im" target="_blank" rel="noopener nofollow">https://drive.google.com/open?id=1WU_erkN-fPBfNYVX5BOHhjfHLPkTgSwOKEL8rYcAIrI</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="ea ak">
|
||
<div class="figure is it iu iv iw ea ak paragraph-image">
|
||
|
||
<p><img src="https://lupyuen.github.io/images/legacy2/g2.png" /></p>
|
||
|
||
|
||
|
||
<figcaption><p><em>Translated Super Blue Pill Schematics. From <a
|
||
href="https://drive.google.com/open?id=1WU_erkN-fPBfNYVX5BOHhjfHLPkTgSwOKEL8rYcAIrI&authuser=0"
|
||
class="da by ij ik il im" target="_blank"
|
||
rel="noopener nofollow">https://drive.google.com/open?id=1WU_erkN-fPBfNYVX5BOHhjfHLPkTgSwOKEL8rYcAIrI</a>
|
||
</em></p></figcaption>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<hr class="jd cv je jf jg ja jh ji jj jk jl" />
|
||
<section class="dv dw dx dy dz">
|
||
<div class="n p">
|
||
<div class="ac ae af ag ah fh aj ak">
|
||
<h1 id="be37" class="jm jn fk at as jo jp jq jr js jt ju jv jw jx jy jz">Specifications</h1>
|
||
<p id="832c" class="hu hv fk at hw b hx ka hz kb ib kc id kd if ke ih">The specifications are similar to
|
||
<a href="https://stm32-base.org/boards/STM32F103C8T6-Blue-Pill"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">Blue Pill</a> (<a
|
||
href="https://stm32-base.org/assets/pdf/boards/original-schematic-STM32F103C8T6-Blue_Pill.pdf"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">schematic</a>), except for the
|
||
highlighted lines…</p>
|
||
<ul class="">
|
||
<li id="1f81" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih kf kg kh"><em
|
||
class="ii">MCU</em>: STM32F103C8T6 ARM Cortex M3 72 MHz</li>
|
||
<li id="c933" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><em
|
||
class="ii">RAM</em>: 20 KB</li>
|
||
<li id="74cf" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><em
|
||
class="ii">Internal Flash: </em>64 KB (possibly 128 KB)</li>
|
||
<li id="0b8f" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><strong
|
||
class="hw in"><em class="ii">External Flash:</em> </strong><a
|
||
href="https://www.winbond.com/hq/product/code-storage-flash-memory/serial-nor-flash/?__locale=en"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow"><strong class="hw in">Winbond
|
||
W25X16</strong></a><strong class="hw in"> </strong>(16 Mbit, SPI interface)</li>
|
||
<li id="27b0" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><strong
|
||
class="hw in"><em class="ii">EEPROM</em>: </strong><a
|
||
href="http://ww1.microchip.com/downloads/en/devicedoc/doc0180.pdf"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow"><strong class="hw in">Atmel
|
||
24C04N</strong></a><strong class="hw in"> </strong>(4 kbit, I2C interface, instead of 24C02 <a
|
||
href="https://www.aliexpress.com/item/STM32F103C8T6-ARM-Mini-system-Development-Board-STM32-Development-Core-Board/32920231706.html"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">listed here</a>)</li>
|
||
<li id="a305" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><em
|
||
class="ii">Real-Time Clock</em>: High Speed External (HSE) crystal oscillator at 8 MHz, Low Speed
|
||
External (LSE) crystal oscillator at 32.768 kHz</li>
|
||
<li id="42da" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><em
|
||
class="ii">Jumpers</em>: Boot0 and Boot1</li>
|
||
<li id="9ffc" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><em
|
||
class="ii">Debugger Interface</em>: ST-Link (SWD)</li>
|
||
<li id="18e3" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><em class="ii">USB
|
||
Interface</em>: Micro USB connector (power and data)</li>
|
||
<li id="a482" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><em class="ii">Reset
|
||
Button</em></li>
|
||
<li id="a9f8" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><strong
|
||
class="hw in"><em class="ii">User Button</em>: PA8</strong></li>
|
||
<li id="cc13" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><strong
|
||
class="hw in"><em class="ii">LED</em>: PA1</strong></li>
|
||
<li id="3900" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><strong
|
||
class="hw in"><em class="ii">TF Card Interface</em></strong><em class="ii"> </em>(SPI)</li>
|
||
<li id="7862" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><strong
|
||
class="hw in"><em class="ii">WiFi Interface</em>: </strong><a
|
||
href="https://www.espressif.com/en/products/hardware/esp8266ex/overview"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow"><strong class="hw in">Espressif
|
||
ESP8266</strong></a><strong class="hw in"> </strong>(UART)</li>
|
||
<li id="62fd" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><strong
|
||
class="hw in"><em class="ii">RF Interface</em>: </strong><a
|
||
href="https://www.sparkfun.com/datasheets/Components/nRF24L01_prelim_prod_spec_1_2.pdf"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow"><strong class="hw in">Nordic
|
||
Semiconductor nRF24L01</strong></a><strong class="hw in"> </strong>(SPI)</li>
|
||
<li id="28b9" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><strong
|
||
class="hw in"><em class="ii">Ethernet Interface</em>: </strong><a
|
||
href="https://www.wiznet.io/product-item/w5500/"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow"><strong class="hw in">WizNET
|
||
W5500</strong></a></li>
|
||
<li id="5cad" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh"><strong
|
||
class="hw in"><em class="ii">Audio Interface</em>: </strong><a
|
||
href="http://www.vlsi.fi/en/products/vs1053.html"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow"><strong class="hw in">VLSI
|
||
Solution VS1053</strong></a></li>
|
||
</ul>
|
||
<p id="f115" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">Differences from Blue Pill:</p>
|
||
<ul class="">
|
||
<li id="2097" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih kf kg kh">Blue Pill LED is
|
||
connected to PC13</li>
|
||
<li id="9d50" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh">Blue Pill has no
|
||
user-programmable buttons</li>
|
||
<li id="5e2b" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh">Blue Pill doesn’t
|
||
have external flash and EEPROM</li>
|
||
<li id="0318" class="hu hv fk at hw b hx ki hz kj ib kk id kl if km ih kf kg kh">Blue Pill doesn’t
|
||
have interfaces for TF Card, WiFi, RF, Ethernet and Audio</li>
|
||
</ul>
|
||
<p id="c7ae" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">Unlike Blue Pill, my Super Blue
|
||
Pill was delivered with headers all soldered, no soldering required. The RTC Power Supply battery
|
||
connector was not provided.</p>
|
||
<p id="a5d8" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">The Super Blue Pill appears to be
|
||
a new variant of Blue Pill, since it doesn’t appear in <a
|
||
href="https://stm32-base.org/boards/"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">this list of STM32F103 boards</a>.
|
||
(UPDATE: This board has been recently named “<a
|
||
href="https://stm32-base.org/boards/STM32F103C8T6-Black-Board"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">Black Board</a>”)</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<hr class="jd cv je jf jg ja jh ji jj jk jl" />
|
||
<section class="dv dw dx dy dz">
|
||
<div class="n p">
|
||
<div class="ac ae af ag ah fh aj ak">
|
||
<h1 id="9427" class="jm jn fk at as jo jp jq jr js jt ju jv jw jx jy jz">Form Factor</h1>
|
||
<div class="figure is it iu iv iw ea fg ko bv kp kq kr ks kt bg ku kv kw kx ky kz paragraph-image">
|
||
|
||
<p><img src="https://lupyuen.github.io/images/legacy2/g3.png" /></p>
|
||
|
||
|
||
|
||
|
||
<figcaption><p><em>Super Blue Pill Form Factor</em></p></figcaption>
|
||
</div>
|
||
<p id="7089" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">Super Blue Pill is 52 mm by 41 mm
|
||
— half the size of a credit card. It’s slightly shorter than Blue Pill, and twice the width of Blue
|
||
Pill.</p>
|
||
<p id="68f6" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">Super Blue Pill is smaller than
|
||
<a href="https://en.wikipedia.org/wiki/Arduino_Uno"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">Arduino Uno</a> (68 mm by 53 mm)
|
||
and most of the <a
|
||
href="https://www.st.com/en/evaluation-tools/stm32-mcu-mpu-eval-tools.html"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">STM32 Nucleo Boards and Discovery
|
||
Kits</a>.</p>
|
||
<p id="810c" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">The form factor looks similar to
|
||
the <a
|
||
href="https://www.emaxmodel.com/fpv-controllers/emax-skyline32-flight-controller-advanced.html#product_tabs_description_tabbed"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">controller boards for flying
|
||
drones</a>. Like the Super Blue Pill, some drones use <a
|
||
href="http://www.crazepony.com/products/mini.html"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">nRF24L01 for RF
|
||
communications</a>.</p>
|
||
<div class="figure is it iu iv iw ea dm dn paragraph-image">
|
||
|
||
<p><img src="https://lupyuen.github.io/images/legacy2/g4.jpeg" /></p>
|
||
|
||
|
||
|
||
|
||
<figcaption><p><em>Super Blue Pill and Blue Pill</em></p></figcaption>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<hr class="jd cv je jf jg ja jh ji jj jk jl" />
|
||
<section class="dv dw dx dy dz">
|
||
<div class="n p">
|
||
<div class="ac ae af ag ah fh aj ak">
|
||
<h1 id="ecbb" class="jm jn fk at as jo jp jq jr js jt ju jv jw jx jy jz">Sharing of SPI1 port</h1>
|
||
</div>
|
||
</div>
|
||
<div class="ea">
|
||
<div class="n p">
|
||
<div class="eb ec ed ee ef eg ag eh ah ei aj ak">
|
||
<div class="figure is it iu iv iw ea ep eq paragraph-image">
|
||
|
||
<p><img src="https://lupyuen.github.io/images/legacy2/g5.png" /></p>
|
||
|
||
|
||
|
||
<figcaption><p><em>Port SPI1 is shared by nRF24L01, TF Card and
|
||
External Flash interfaces</em></p></figcaption>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="n p">
|
||
<div class="ac ae af ag ah fh aj ak">
|
||
<p id="06e1" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">The nRF24L01, TF Card and
|
||
External Flash interfaces are connected to the same SPI port, SPI1. We select the interface by
|
||
toggling the respective Chip Select Pins: PB2 for nRF24L01, PA4 for TF Card, PC13 for External Flash.
|
||
</p>
|
||
<p id="2544" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">Port SPI2 is not used by any
|
||
interface on the board.</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<hr class="jd cv je jf jg ja jh ji jj jk jl" />
|
||
<section class="dv dw dx dy dz">
|
||
<div class="n p">
|
||
<div class="ac ae af ag ah fh aj ak">
|
||
<h1 id="a399" class="jm jn fk at as jo jp jq jr js jt ju jv jw jx jy jz">OLED and TFT Interface</h1>
|
||
</div>
|
||
</div>
|
||
<div class="ea">
|
||
<div class="n p">
|
||
<div class="eb ec ed ee ef eg ag eh ah ei aj ak">
|
||
<div class="figure is it iu iv iw ea ep eq paragraph-image">
|
||
|
||
<p><img src="https://lupyuen.github.io/images/legacy2/g6.jpeg" /></p>
|
||
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="n p">
|
||
<div class="ac ae af ag ah fh aj ak">
|
||
<div class="figure is it iu iv iw ea fg ko bv kp kq kr ks kt bg ku lh li lj lk kz">
|
||
|
||
<p><script src="https://gist.github.com/lupyuen/c8974f95d69152d744e1040c4988a801.js"></script></p>
|
||
|
||
|
||
<figcaption><p><em>Connector for OLED and TFT displays
|
||
</em></p></figcaption>
|
||
</div>
|
||
<p id="36e0" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">There is an 8-hole connector for
|
||
OLED and TFT displays, connected to Pins PB1, 3, 5, 7, 9, 11, 3.3V, GND. However…</p>
|
||
<p id="3d57" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">1️⃣ Pins PB3 and PB5 belong to
|
||
the Alternate SPI1 Port. However the Primary SPI1 Port is used by the nRF24L01 connector, so we can’t
|
||
use Alternate SPI1 if the nRF24L01 connector is in use.</p>
|
||
<p id="15c4" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">2️⃣ The pins don’t belong to any
|
||
specific I2C port (since SCL1 and SCL2 are missing). So we can’t use Blue Pill’s I2C API to control
|
||
the display.</p>
|
||
<p id="7967" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">3️⃣ We could use <a
|
||
href="https://en.wikipedia.org/wiki/Bit_banging"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">bit-banging</a> to control the
|
||
display. Bit-banging, which requires precise timing, might be a problem if we need to support
|
||
multitasking with a real-time OS like <a
|
||
href="https://mynewt.apache.org/"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">Apache Mynewt</a>.</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<hr class="jd cv je jf jg ja jh ji jj jk jl" />
|
||
<section class="dv dw dx dy dz">
|
||
<div class="n p">
|
||
<div class="ac ae af ag ah fh aj ak">
|
||
<h1 id="bc96" class="jm jn fk at as jo jp jq jr js jt ju jv jw jx jy jz">Compatibility with Blue Pill
|
||
</h1>
|
||
<p id="7514" class="hu hv fk at hw b hx ka hz kb ib kc id kd if ke ih">Super Blue Pill works the same
|
||
way as Blue Pill, no code changes needed (except for LED). I tested with Visual Studio Code (Windows
|
||
and macOS), <a
|
||
href="https://www.lazada.sg/-i105322107-s106873847.html?urlFlag=true&mp=1"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">ST-Link V2 compatible debugger</a>
|
||
and OpenOCD.</p>
|
||
<p id="479d" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">I tested this program that I
|
||
built for Blue Pill, based on <a
|
||
href="https://mynewt.apache.org/"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">Apache Mynewt</a> real-time OS
|
||
with preemptive multitasking…</p>
|
||
<div class="ek el em en eo lm"><a
|
||
href="https://github.com/lupyuen/stm32bluepill-mynewt-sensor?source=post_page-----6d341d9347da----------------------"
|
||
rel="noopener nofollow">
|
||
<section class="lp dm dn ak bw n ap lq lr ls lt lu lv lw lx ly lz ma mb mc md me">
|
||
<div class="mf n dp p mg mh">
|
||
<h2 class="as jo mi au fk">
|
||
<div class="cd ln go gp lo gr">lupyuen/stm32bluepill-mynewt-sensor</div>
|
||
</h2>
|
||
</div>
|
||
<div class="ml r">
|
||
<div class="mm r mn mo mp ml mq mr ms"></div>
|
||
</div>
|
||
</section>
|
||
</a></div>
|
||
<p id="70f2" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">…according to the instructions at
|
||
this article…</p>
|
||
<div class="ek el em en eo lm"><a rel="noopener"
|
||
href="https://lupyuen.github.io/articles/build-your-iot-sensor-network-stm32-blue-pill-nrf24l01-esp8266-apache-mynewt-thethings-io">
|
||
<section class="lp dm dn ak bw n ap lq lr ls lt lu lv lw lx ly lz ma mb mc md me">
|
||
<div class="mf n dp p mg mh">
|
||
<h2 class="as jo mi au fk">
|
||
<div class="cd ln go gp lo gr">Build Your IoT Sensor Network — STM32 Blue Pill + nRF24L01 +
|
||
ESP8266 + Apache Mynewt + thethings.io</div>
|
||
</h2>
|
||
</div>
|
||
<div class="ml r">
|
||
<div class="mt r mn mo mp ml mq mr ms"></div>
|
||
</div>
|
||
</section>
|
||
</a></div>
|
||
<p id="4a3a" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">Here’s a video of my testing done
|
||
with a Super Blue Pill with nRF24L01+ and another Super Blue Pill with nRF24L01+ and ESP-01S…</p>
|
||
</div>
|
||
</div>
|
||
<div class="ea">
|
||
<div class="n p">
|
||
<div class="eb ec ed ee ef eg ag eh ah ei aj ak">
|
||
<div class="figure is it iu iv iw ea">
|
||
<div class="fa r et">
|
||
<div class="ix r"><iframe
|
||
src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F9ikpdsu97KU%3Ffeature%3Doembed&url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D9ikpdsu97KU&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F9ikpdsu97KU%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube"
|
||
allowfullscreen="" frameborder="0" height="300" width="400"
|
||
title="Mynewt Sensor Network with STM32 Blue Pill, nRF24L01, ESP8266 and thethings.io"
|
||
class="dq t u ex ak" scrolling="auto"></iframe></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<hr class="jd cv je jf jg ja jh ji jj jk jl" />
|
||
<section class="dv dw dx dy dz">
|
||
<div class="n p">
|
||
<div class="ac ae af ag ah fh aj ak">
|
||
<h1 id="6c3f" class="jm jn fk at as jo jp jq jr js jt ju jv jw jx jy jz">ESP8266 and nRF24L01 Testing
|
||
</h1>
|
||
</div>
|
||
</div>
|
||
<div class="ea">
|
||
<div class="n p">
|
||
<div class="eb ec ed ee ef eg ag eh ah ei aj ak">
|
||
<div class="figure is it iu iv iw ea ep eq paragraph-image">
|
||
|
||
<p><img src="https://lupyuen.github.io/images/legacy2/g7.jpeg" /></p>
|
||
|
||
|
||
|
||
|
||
<figcaption><p><em>Super Blue Pill with ESP-01S and nRF24L01+
|
||
</em></p></figcaption>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="n p">
|
||
<div class="ac ae af ag ah fh aj ak">
|
||
<div class="figure is it iu iv iw ea fg ko bv kp kq kr ks kt bg ku lh li lj lk kz">
|
||
|
||
<p><script src="https://gist.github.com/lupyuen/2eff9acb902ab2e00e1097d7de2b7187.js"></script></p>
|
||
|
||
|
||
<figcaption><p><em>ESP8266 Connector</em></p></figcaption>
|
||
</div>
|
||
<p id="51d1" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">The ESP8266 and nRF24L01
|
||
connectors on Super Blue Pill were designed to fit popular models of the ESP8266 and nRF24L01 breakout
|
||
boards (I bought mine <a
|
||
href="https://www.lazada.sg/-i281003794-s442063247.html?urlFlag=true&mp=1&spm=spm=a2o42.order_details.item_title.1"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">here</a> and <a
|
||
href="https://www.lazada.sg/-i288146861-s465579095.html?urlFlag=true&mp=1"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">here</a>).</p>
|
||
<div class="figure is it iu iv iw ea fg ko bv kp kq kr ks kt bg ku lh li lj lk kz">
|
||
|
||
<p><script src="https://gist.github.com/lupyuen/570bd8b42471c052c4a7e2059c03092f.js"></script></p>
|
||
|
||
|
||
<figcaption><p><em>nRF24L01 Connector</em></p></figcaption>
|
||
</div>
|
||
<p id="7c2b" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">Both the ESP8266 and nRF24L01
|
||
worked fine when I ran the program above to access the two modules concurrently. (The program routes
|
||
messages from nRF24L01 to ESP8266)</p>
|
||
<p id="21b2" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">nRF24L01 uses an IRQ pin to raise
|
||
an interrupt when data is received. The interrupt worked without problems on Super Blue Pill.</p>
|
||
<p id="cbdf" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">In the test that I conducted
|
||
outdoors in an urban area, the range of the nRF24L01+ on Super Blue Pill was at least 200 metres.</p>
|
||
</div>
|
||
</div>
|
||
<div class="ea">
|
||
<div class="n p">
|
||
<div class="eb ec ed ee ef eg ag eh ah ei aj ak">
|
||
<div class="figure is it iu iv iw ea ep eq paragraph-image">
|
||
|
||
<p><img src="https://lupyuen.github.io/images/legacy2/g8.jpeg" /></p>
|
||
|
||
|
||
|
||
<figcaption><p><em>Field test for Super Blue Pill with ESP-01S
|
||
and nRF24L01+</em></p></figcaption>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<hr class="jd cv je jf jg ja jh ji jj jk jl" />
|
||
<section class="dv dw dx dy dz">
|
||
<div class="n p">
|
||
<div class="ac ae af ag ah fh aj ak">
|
||
<h1 id="4932" class="jm jn fk at as jo jp jq jr js jt ju jv jw jx jy jz">Conclusion</h1>
|
||
<p id="7f88" class="hu hv fk at hw b hx ka hz kb ib kc id kd if ke ih">I highly recommend the Super Blue
|
||
Pill if you’re learning STM32 development. It may be more expensive than the older Blue Pill ($6 vs
|
||
$2), but it’s fully assembled with various useful connectors: ESP8266 WiFi, nRF24L01, TF Card, …</p>
|
||
<p id="eaa7" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">The GPIO pins oriented upwards
|
||
allow for easy connection of sensors, transceivers and other modules via jumper cables, which is good
|
||
for prototyping. With the older Blue Pill, we need a breadboard for prototyping.</p>
|
||
<p id="1279" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">As an IoT Trainer I’m
|
||
particularly excited by Super Blue Pill’s support for ESP8266 WiFi and nRF24L01. Within a classroom, I
|
||
could set up an nRF24L01 network of Super Blue Pills for teaching sensor device development. Another
|
||
Super Blue Pill installed with my <a
|
||
href="https://github.com/lupyuen/stm32bluepill-mynewt-sensor"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">nRF24L01-to-ESP8266 router
|
||
software</a> shall bridge the Super Blue Pills to a cloud-based IoT Server (like <a
|
||
href="https://thethings.io/" class="da by ij ik il im"
|
||
target="_blank" rel="noopener nofollow">thethings.io</a>).</p>
|
||
<p id="50be" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">Super Blue Pill may be the
|
||
breakthrough that makes STM32 embedded development accessible and affordable to makers and students
|
||
worldwide.</p>
|
||
<h1 id="73d7" class="jm jn fk at as jo jp mw jr mx jt my jv mz jx na jz">Further Reading</h1>
|
||
<p id="f782" class="hu hv fk at hw b hx ka hz kb ib kc id kd if ke ih">Here’s the book that got me
|
||
started on Blue Pill programming, I highly recommend it for Blue Pill and Super Blue Pill beginners…
|
||
</p>
|
||
<div class="ek el em en eo lm"><a
|
||
href="https://www.apress.com/us/book/9781484236239?source=post_page-----6d341d9347da----------------------#otherversion=9781484236246"
|
||
rel="noopener nofollow">
|
||
<section class="lp dm dn ak bw n ap lq lr ls lt lu lv lw lx ly lz ma mb mc md me">
|
||
<div class="mf n dp p mg mh">
|
||
<h2 class="as jo mi au fk">
|
||
<div class="cd ln go gp lo gr">Beginning STM32 - Developing with FreeRTOS, libopencm3 and GCC
|
||
| Warren Gay | Apress</div>
|
||
</h2>
|
||
</div>
|
||
<div class="ml r">
|
||
<div class="nb r mn mo mp ml mq mr ms"></div>
|
||
</div>
|
||
</section>
|
||
</a></div>
|
||
<p id="7dfe" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">This book is more advanced and it
|
||
covers the entire STM32 family of microcontrollers. I use it as my STM32 reference…</p>
|
||
<div class="ek el em en eo lm"><a
|
||
href="https://leanpub.com/mastering-stm32?source=post_page-----6d341d9347da----------------------"
|
||
rel="noopener nofollow">
|
||
<section class="lp dm dn ak bw n ap lq lr ls lt lu lv lw lx ly lz ma mb mc md me">
|
||
<div class="mf n dp p mg mh">
|
||
<h2 class="as jo mi au fk">
|
||
<div class="cd ln go gp lo gr">Mastering STM32</div>
|
||
</h2>
|
||
</div>
|
||
<div class="ml r">
|
||
<div class="nc r mn mo mp ml mq mr ms"></div>
|
||
</div>
|
||
</section>
|
||
</a></div>
|
||
<p id="3926" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">The official docs on STM32F103C8
|
||
<a href="https://www.st.com/en/microcontrollers-microprocessors/stm32f103c8.html"
|
||
class="da by ij ik il im" target="_blank" rel="noopener nofollow">are here</a></p>
|
||
<p id="4bb5" class="hu hv fk at hw b hx hy hz ia ib ic id ie if ig ih">Recently I have adopted Rust as a
|
||
safer, simpler way to build embedded applications (with NB-IoT!)…</p>
|
||
<div class="ek el em en eo lm"><a rel="noopener"
|
||
href="https://lupyuen.github.io/articles/rust-rocks-nb-iot-stm32-blue-pill-with-quectel-bc95-g-on-apache-mynewt">
|
||
<section class="lp dm dn ak bw n ap lq lr ls lt lu lv lw lx ly lz ma mb mc md me">
|
||
<div class="mf n dp p mg mh">
|
||
<h2 class="as jo mi au fk">
|
||
<div class="cd ln go gp lo gr">Rust Rocks NB-IoT! STM32 Blue Pill with Quectel BC95-G on
|
||
Apache Mynewt</div>
|
||
</h2>
|
||
</div>
|
||
<div class="ml r">
|
||
<div class="nd r mn mo mp ml mq mr ms"></div>
|
||
</div>
|
||
</section>
|
||
</a></div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</article>
|
||
</div>
|
||
</div>
|
||
|
||
<ul>
|
||
<li>
|
||
<p><a href="https://github.com/sponsors/lupyuen">Sponsor me a coffee</a></p>
|
||
</li>
|
||
<li>
|
||
<p><a href="https://lupyuen.github.io">Check out my articles</a></p>
|
||
</li>
|
||
<li>
|
||
<p><a href="https://lupyuen.github.io/rss.xml">RSS Feed</a></p>
|
||
</li>
|
||
</ul>
|
||
|
||
</body>
|
||
|
||
</html>
|
||
<!--
|
||
FILE ARCHIVED ON 19:42:15 Dec 04, 2019 AND RETRIEVED FROM THE
|
||
INTERNET ARCHIVE ON 01:29:51 Feb 23, 2021.
|
||
JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.
|
||
|
||
ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
|
||
SECTION 108(a)(3)).
|
||
-->
|
||
<!--
|
||
playback timings (ms):
|
||
exclusion.robots: 0.358
|
||
esindex: 0.016
|
||
load_resource: 102.386
|
||
captures_list: 235.087
|
||
PetaboxLoader3.resolve: 69.823
|
||
exclusion.robots.policy: 0.342
|
||
PetaboxLoader3.datanode: 105.587 (4)
|
||
RedisCDXSource: 9.953
|
||
LoadShardBlock: 192.998 (3)
|
||
CDXLines.iter: 27.877 (3)
|
||
--> |