mirror of
https://github.com/Fishwaldo/bl_mcu_sdk.git
synced 2025-07-14 00:38:33 +00:00
[feat] update peripheral api and demo
This commit is contained in:
parent
658b0761db
commit
a11dcbed30
341 changed files with 26075 additions and 2575 deletions
|
@ -0,0 +1,519 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>4. BLE 客户端和服务端互连 — BL_MCU_SDK 开发指南 0.2 文档</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/translations.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="索引" href="../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../search.html" />
|
||||
<link rel="next" title="5. BOOT2 IAP" href="boot2_iap_info.html" />
|
||||
<link rel="prev" title="3. LowPower 低功耗评估" href="lowpower_demo.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.2
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">快速开发指南</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">API 手册</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_structure.html">1. API 分层模型</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_clock.html">2. 时钟树</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_gpio.html">3. GPIO 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_uart.html">4. UART 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_pwm.html">5. PWM 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dma.html">6. DMA 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_i2c.html">7. I2C 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_spi.html">8. SPI 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_adc.html">9. ADC 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dac.html">10. DAC 设备</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">基础外设例程</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/button_demo.html">2. GPIO 中断 - 按键检测</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/uart_loopback_demo.html">4. UART - 数据自收发</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/adc_key_demo.html">9. ADC - 按键检测电压</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">进阶例程</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="shell_demo.html">1. SHELL 命令行调试</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="fatfs_demo.html">2. FATFS 文件系统读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="lowpower_demo.html">3. LowPower 低功耗评估</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">4. BLE 客户端和服务端互连</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id1">4.1. 准备工具</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id2">4.2. 软件实现</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#ble-client">4.2.1. BLE client 软件实现</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#ble-server">4.2.2. BLE server 软件实现</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id3">4.3. 编译和烧录</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id4">4.4. 实验现象</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="boot2_iap_info.html">5. BOOT2 IAP</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">BL_MCU_SDK 开发指南</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><span class="section-number">4. </span>BLE 客户端和服务端互连</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../../_sources/samples/advance samples/ble_scan_demo.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="ble">
|
||||
<h1><span class="section-number">4. </span>BLE 客户端和服务端互连<a class="headerlink" href="#ble" title="永久链接至标题">¶</a></h1>
|
||||
<blockquote>
|
||||
<div><p>本 demo 基于 <strong>bl702</strong> 演示 <strong>ble server</strong> 和 <strong>ble client</strong> 连接和数据收发。</p>
|
||||
</div></blockquote>
|
||||
<div class="section" id="id1">
|
||||
<h2><span class="section-number">4.1. </span>准备工具<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>两块 bl702 开发板 or 一块 bl702 开发板 + 手机 app</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<h2><span class="section-number">4.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<div class="section" id="ble-client">
|
||||
<h3><span class="section-number">4.2.1. </span>BLE client 软件实现<a class="headerlink" href="#ble-client" title="永久链接至标题">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/ble/ble_central</span></code></p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="k">static</span> <span class="k">struct</span> <span class="nc">bt_conn_cb</span> <span class="n">ble_tp_conn_callbacks</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="p">.</span><span class="n">connected</span> <span class="o">=</span> <span class="n">ble_tp_connected</span><span class="p">,</span>
|
||||
<span class="p">.</span><span class="n">disconnected</span> <span class="o">=</span> <span class="n">ble_tp_disconnected</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="kt">void</span> <span class="n">ble_tp_init</span><span class="p">()</span>
|
||||
<span class="p">{</span>
|
||||
<span class="k">if</span><span class="p">(</span> <span class="o">!</span><span class="n">isRegister</span> <span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">isRegister</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
|
||||
<span class="n">bt_conn_cb_register</span><span class="p">(</span><span class="o">&</span><span class="n">ble_tp_conn_callbacks</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>在 <code class="docutils literal notranslate"><span class="pre">bt_conn_cb_register</span></code> 函数中,注册连接成功和断开连接的 <code class="docutils literal notranslate"><span class="pre">callback</span></code> 函数</p></li>
|
||||
<li><p>在 <code class="docutils literal notranslate"><span class="pre">ble_start_scan</span></code> 函数中,设备就开始进行扫描</p></li>
|
||||
<li><p>在 <code class="docutils literal notranslate"><span class="pre">device_found</span></code> 函数中,设备上传扫描到的蓝牙设备,代码通过 <code class="docutils literal notranslate"><span class="pre">adv_name</span></code> 来找到需要连接的蓝牙设备,发起连接</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="k">static</span> <span class="kt">void</span> <span class="n">ble_write_data_task</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">pvParameters</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
|
||||
<span class="kt">uint8_t</span> <span class="n">buf</span><span class="p">[</span><span class="mi">20</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">9</span><span class="p">,</span><span class="mi">10</span><span class="p">,</span><span class="mi">11</span><span class="p">,</span><span class="mi">12</span><span class="p">,</span><span class="mi">13</span><span class="p">,</span><span class="mi">14</span><span class="p">,</span><span class="mi">15</span><span class="p">,</span><span class="mi">16</span><span class="p">,</span><span class="mi">17</span><span class="p">,</span><span class="mi">18</span><span class="p">,</span><span class="mi">19</span><span class="p">};</span>
|
||||
<span class="k">while</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">k_sem_take</span><span class="p">(</span><span class="o">&</span><span class="n">write_data_poll_sem</span><span class="p">,</span> <span class="n">K_FOREVER</span><span class="p">);</span>
|
||||
<span class="n">BT_WARN</span><span class="p">(</span><span class="s">"ble_write_data</span><span class="se">\r\n</span><span class="s">"</span><span class="p">);</span>
|
||||
<span class="c1">// Send data to server</span>
|
||||
<span class="n">error</span> <span class="o">=</span> <span class="n">bt_gatt_write_without_response</span><span class="p">(</span><span class="n">ble_tp_conn</span><span class="p">,</span><span class="n">char_hdl</span><span class="p">.</span><span class="n">tp_wr_hdl</span><span class="p">,</span><span class="n">buf</span><span class="p">,</span><span class="mi">20</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span>
|
||||
<span class="n">BT_WARN</span><span class="p">(</span><span class="s">"Write Complete (err %d)</span><span class="se">\r\n</span><span class="s">"</span><span class="p">,</span> <span class="n">error</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>连接成功后,在 <code class="docutils literal notranslate"><span class="pre">ble_write_data_task</span></code> 函数, client 发送 <code class="docutils literal notranslate"><span class="pre">buf</span></code> 里面的数据到 server</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="k">static</span> <span class="n">u8_t</span> <span class="n">notify_func</span><span class="p">(</span><span class="k">struct</span> <span class="nc">bt_conn</span> <span class="o">*</span><span class="n">conn</span><span class="p">,</span><span class="k">struct</span> <span class="nc">bt_gatt_subscribe_params</span> <span class="o">*</span><span class="n">params</span><span class="p">,</span><span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">,</span> <span class="n">u16_t</span> <span class="n">length</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>连接成功后,在 <code class="docutils literal notranslate"><span class="pre">notify_func</span></code> 函数, client 接收来自 server 的数据, <code class="docutils literal notranslate"><span class="pre">data</span></code> 是数据内容, <code class="docutils literal notranslate"><span class="pre">length</span></code> 是数据长度</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="ble-server">
|
||||
<h3><span class="section-number">4.2.2. </span>BLE server 软件实现<a class="headerlink" href="#ble-server" title="永久链接至标题">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/ble/ble_peripheral</span></code></p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span>
|
||||
<span class="normal">14</span>
|
||||
<span class="normal">15</span>
|
||||
<span class="normal">16</span>
|
||||
<span class="normal">17</span>
|
||||
<span class="normal">18</span>
|
||||
<span class="normal">19</span>
|
||||
<span class="normal">20</span>
|
||||
<span class="normal">21</span>
|
||||
<span class="normal">22</span>
|
||||
<span class="normal">23</span>
|
||||
<span class="normal">24</span>
|
||||
<span class="normal">25</span>
|
||||
<span class="normal">26</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kt">int</span> <span class="nf">ble_start_adv</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="k">struct</span> <span class="nc">bt_le_adv_param</span> <span class="n">adv_param</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="c1">//options:3, connectable undirected, adv one time</span>
|
||||
<span class="p">.</span><span class="n">options</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> \
|
||||
<span class="p">.</span><span class="n">interval_min</span> <span class="o">=</span> <span class="n">BT_GAP_ADV_FAST_INT_MIN_3</span><span class="p">,</span> \
|
||||
<span class="p">.</span><span class="n">interval_max</span> <span class="o">=</span> <span class="n">BT_GAP_ADV_FAST_INT_MAX_3</span><span class="p">,</span> \
|
||||
<span class="p">};</span>
|
||||
|
||||
|
||||
<span class="kt">char</span> <span class="o">*</span><span class="n">adv_name</span> <span class="o">=</span> <span class="s">"BL_TEST_01"</span><span class="p">;</span> <span class="c1">// This name must be the same as adv_name in ble_central</span>
|
||||
<span class="kt">uint8_t</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{(</span><span class="n">BT_LE_AD_LIMITED</span> <span class="o">|</span> <span class="n">BT_LE_AD_NO_BREDR</span><span class="p">)};</span>
|
||||
<span class="kt">uint8_t</span> <span class="n">data_uuid</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mh">0x12</span><span class="p">,</span> <span class="mh">0x18</span><span class="p">};</span><span class="c1">//0x1812</span>
|
||||
<span class="kt">uint8_t</span> <span class="n">data_appearance</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mh">0x80</span><span class="p">,</span> <span class="mh">0x01</span><span class="p">};</span><span class="c1">//0x0180</span>
|
||||
<span class="kt">uint8_t</span> <span class="n">data_manu</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mh">0x71</span><span class="p">,</span> <span class="mh">0x01</span><span class="p">,</span> <span class="mh">0x04</span><span class="p">,</span> <span class="mh">0x13</span><span class="p">};</span>
|
||||
<span class="k">struct</span> <span class="nc">bt_data</span> <span class="n">adv_data</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">BT_DATA</span><span class="p">(</span><span class="n">BT_DATA_FLAGS</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span>
|
||||
<span class="n">BT_DATA</span><span class="p">(</span><span class="n">BT_DATA_UUID16_ALL</span><span class="p">,</span> <span class="n">data_uuid</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">data_uuid</span><span class="p">)),</span>
|
||||
<span class="n">BT_DATA</span><span class="p">(</span><span class="n">BT_DATA_GAP_APPEARANCE</span><span class="p">,</span> <span class="n">data_appearance</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">data_appearance</span><span class="p">)),</span>
|
||||
<span class="n">BT_DATA</span><span class="p">(</span><span class="n">BT_DATA_NAME_COMPLETE</span><span class="p">,</span> <span class="n">adv_name</span><span class="p">,</span> <span class="n">strlen</span><span class="p">(</span><span class="n">adv_name</span><span class="p">)),</span>
|
||||
<span class="n">BT_DATA</span><span class="p">(</span><span class="n">BT_DATA_MANUFACTURER_DATA</span><span class="p">,</span> <span class="n">data_manu</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">data_manu</span><span class="p">))</span>
|
||||
<span class="p">};</span>
|
||||
|
||||
|
||||
<span class="k">return</span> <span class="n">bt_le_adv_start</span><span class="p">(</span><span class="o">&</span><span class="n">adv_param</span><span class="p">,</span> <span class="n">adv_data</span><span class="p">,</span> <span class="n">ARRAY_SIZE</span><span class="p">(</span><span class="n">adv_data</span><span class="p">),</span> <span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>在 <code class="docutils literal notranslate"><span class="pre">ble_start_adv</span></code> 函数中, <code class="docutils literal notranslate"><span class="pre">adv_name</span></code> 设置这次广播的设备名称,设备就开始进行广播</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="k">static</span> <span class="kt">int</span> <span class="n">ble_tp_recv_wr</span><span class="p">(</span><span class="k">struct</span> <span class="nc">bt_conn</span> <span class="o">*</span><span class="n">conn</span><span class="p">,</span> <span class="k">const</span> <span class="k">struct</span> <span class="nc">bt_gatt_attr</span> <span class="o">*</span><span class="n">attr</span><span class="p">,</span><span class="k">const</span> <span class="kt">void</span> <span class="o">*</span><span class="n">buf</span><span class="p">,</span> <span class="n">u16_t</span> <span class="n">len</span><span class="p">,</span> <span class="n">u16_t</span> <span class="n">offset</span><span class="p">,</span> <span class="n">u8_t</span> <span class="n">flags</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>连接成功后, 在 <code class="docutils literal notranslate"><span class="pre">ble_tp_recv_wr</span></code> 中,server接收来自client的数据, <code class="docutils literal notranslate"><span class="pre">buf</span></code> 是数据内容, <code class="docutils literal notranslate"><span class="pre">len</span></code> 是数据长度</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span>
|
||||
<span class="normal">14</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="k">static</span> <span class="kt">void</span> <span class="n">ble_tp_notify_task</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">pvParameters</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="kt">int</span> <span class="n">err</span> <span class="o">=</span> <span class="mi">-1</span><span class="p">;</span>
|
||||
<span class="kt">char</span> <span class="n">data</span><span class="p">[</span><span class="mi">244</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mh">0x01</span><span class="p">,</span> <span class="mh">0x02</span><span class="p">,</span> <span class="mh">0x03</span><span class="p">,</span> <span class="mh">0x04</span><span class="p">,</span> <span class="mh">0x05</span><span class="p">,</span> <span class="mh">0x06</span><span class="p">,</span> <span class="mh">0x07</span><span class="p">,</span> <span class="mh">0x08</span><span class="p">,</span> <span class="mh">0x09</span><span class="p">};</span>
|
||||
<span class="n">k_sem_give</span><span class="p">(</span><span class="o">&</span><span class="n">notify_poll_sem</span><span class="p">);</span>
|
||||
<span class="k">while</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">k_sem_take</span><span class="p">(</span><span class="o">&</span><span class="n">notify_poll_sem</span><span class="p">,</span> <span class="n">K_FOREVER</span><span class="p">);</span>
|
||||
<span class="c1">//send data to client</span>
|
||||
<span class="n">err</span> <span class="o">=</span> <span class="n">bt_gatt_notify</span><span class="p">(</span><span class="n">ble_tp_conn</span><span class="p">,</span> <span class="n">get_attr</span><span class="p">(</span><span class="n">BT_CHAR_BLE_TP_NOT_ATTR_VAL_INDEX</span><span class="p">),</span> <span class="n">data</span><span class="p">,</span> <span class="p">(</span><span class="n">tx_mtu_size</span> <span class="o">-</span> <span class="mi">3</span><span class="p">));</span>
|
||||
<span class="n">BT_WARN</span><span class="p">(</span><span class="s">"ble tp send notify : %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">err</span><span class="p">);</span>
|
||||
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>连接成功后,在 <code class="docutils literal notranslate"><span class="pre">ble_tp_notify_task</span></code> 函数, server 发送 <code class="docutils literal notranslate"><span class="pre">data</span></code> 里面的数据到 client.</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h2><span class="section-number">4.3. </span>编译和烧录<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
||||
<ul>
|
||||
<li><p><strong>CDK工具编译</strong></p>
|
||||
<blockquote>
|
||||
<div><p>暂不支持</p>
|
||||
</div></blockquote>
|
||||
</li>
|
||||
<li><p><strong>命令行编译</strong></p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> <sdk_path>/bl_mcu_sdk
|
||||
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>ble_peripheral <span class="nv">SUPPORT_FREERTOS</span><span class="o">=</span>y <span class="nv">SUPPORT_FLOAT</span><span class="o">=</span>y <span class="nv">SUPPORT_BLE</span><span class="o">=</span>y
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> <sdk_path>/bl_mcu_sdk
|
||||
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>ble_central <span class="nv">SUPPORT_FREERTOS</span><span class="o">=</span>y <span class="nv">SUPPORT_FLOAT</span><span class="o">=</span>y <span class="nv">SUPPORT_BLE</span><span class="o">=</span>y
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul>
|
||||
<li><p><strong>烧录</strong></p>
|
||||
<blockquote>
|
||||
<div><p>见 <code class="docutils literal notranslate"><span class="pre">使用bouffalo_dev_cube烧录代码</span></code></p>
|
||||
</div></blockquote>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<h2><span class="section-number">4.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p><strong>两个 bl702 对连</strong></p></li>
|
||||
</ul>
|
||||
<div class="figure align-default">
|
||||
<img alt="" src="../../_images/ble_client.png" />
|
||||
</div>
|
||||
<div class="figure align-default">
|
||||
<img alt="" src="../../_images/ble_server.png" />
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p><strong>手机连接 bl702</strong></p></li>
|
||||
</ul>
|
||||
<div class="figure align-default">
|
||||
<img alt="" src="../../_images/phone_connect.jpg" />
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>连接成功,如下图所示</p></li>
|
||||
</ul>
|
||||
<div class="figure align-default">
|
||||
<img alt="" src="../../_images/phone_connected.png" />
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>收发数据步骤</p>
|
||||
<ul>
|
||||
<li><p>点击 <code class="docutils literal notranslate"><span class="pre">1</span></code> 处 图标 <code class="docutils literal notranslate"><span class="pre">Unknow</span> <span class="pre">Service</span></code> 显示具体的 service 属性</p></li>
|
||||
<li><p>点击 <code class="docutils literal notranslate"><span class="pre">2</span></code> 处 图标 开启 <code class="docutils literal notranslate"><span class="pre">Notification</span></code> ,允许 server 发送数据给 client</p></li>
|
||||
<li><p>点击 <code class="docutils literal notranslate"><span class="pre">3</span></code> 处 图标 client 发送数据给 server,填写自己想要发送的数据,点击 <code class="docutils literal notranslate"><span class="pre">SEND</span></code> 按钮</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="figure align-default">
|
||||
<img alt="" src="../../_images/ble_data.png" />
|
||||
</div>
|
||||
<div class="figure align-default">
|
||||
<img alt="" src="../../_images/receive_data.png" />
|
||||
</div>
|
||||
<div class="figure align-default">
|
||||
<img alt="" src="../../_images/write_data.jpg" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
<a href="boot2_iap_info.html" class="btn btn-neutral float-right" title="5. BOOT2 IAP" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
<a href="lowpower_demo.html" class="btn btn-neutral float-left" title="3. LowPower 低功耗评估" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 2021, BouffaloLab Co., Ltd.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,276 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>5. BOOT2 IAP — BL_MCU_SDK 开发指南 0.2 文档</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/translations.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="索引" href="../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../search.html" />
|
||||
<link rel="prev" title="4. BLE 客户端和服务端互连" href="ble_scan_demo.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.2
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">快速开发指南</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">API 手册</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_structure.html">1. API 分层模型</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_clock.html">2. 时钟树</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_gpio.html">3. GPIO 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_uart.html">4. UART 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_pwm.html">5. PWM 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dma.html">6. DMA 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_i2c.html">7. I2C 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_spi.html">8. SPI 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_adc.html">9. ADC 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dac.html">10. DAC 设备</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">基础外设例程</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/button_demo.html">2. GPIO 中断 - 按键检测</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/uart_loopback_demo.html">4. UART - 数据自收发</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/adc_key_demo.html">9. ADC - 按键检测电压</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">进阶例程</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="shell_demo.html">1. SHELL 命令行调试</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="fatfs_demo.html">2. FATFS 文件系统读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="lowpower_demo.html">3. LowPower 低功耗评估</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">5. BOOT2 IAP</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id1">5.1. 准备工具</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id2">5.2. 实验现象</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">BL_MCU_SDK 开发指南</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><span class="section-number">5. </span>BOOT2 IAP</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../../_sources/samples/advance samples/boot2_iap_info.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="boot2-iap">
|
||||
<h1><span class="section-number">5. </span>BOOT2 IAP<a class="headerlink" href="#boot2-iap" title="永久链接至标题">¶</a></h1>
|
||||
<p>IAP 是 In Application Programming 的首字母缩写,IAP 是用户自己的程序在运行过程中对 User Flash的部分区域进行烧写,
|
||||
目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。</p>
|
||||
<p>通常在用户需要实现 IAP 功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,
|
||||
第一个项目程序不执行正常的功能操作,而只是通过某种通信管道(如 USB、USART )接收程序或数据,
|
||||
执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。</p>
|
||||
<p>Bouffalo Lab 为 IAP 功能应用提供了相应的 boot2_iap.bin 文件,并将其与 Dev Cube 软件包同步发布。
|
||||
用户可以配合 Dev Cube 图形界面烧写软件,将已有的 boot2_iap.bin 文件烧录进目标板,烧录
|
||||
一次之后,就可以通过 IAP 功能,在线更新用户代码。</p>
|
||||
<p>bl_mcu_sdk 开源了 boot2_iap 的软件源码,用户可以到 examples/boot2_iap 查阅代码,并完成编译烧写。编译烧写过程可以参考《快速开发指南》介绍。</p>
|
||||
<div class="section" id="id1">
|
||||
<h2><span class="section-number">5.1. </span>准备工具<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>最新版本的 Dev Cube</p></li>
|
||||
<li><p>Bl706 开发板</p></li>
|
||||
<li><p>TTL-USB 电平转换芯片</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<h2><span class="section-number">5.2. </span>实验现象<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<p>使用 Dev Cube 完成 IAP 功能的具体步骤,请参阅 <a class="reference external" href="https://dev.bouffalolab.com/media/upload/doc/DevCube%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8Cv1.2.pdf">DevCube用户手册</a> <IAP程序下载>章节。</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
<a href="ble_scan_demo.html" class="btn btn-neutral float-left" title="4. BLE 客户端和服务端互连" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 2021, BouffaloLab Co., Ltd.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,253 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>2. FATFS 文件系统读写 — BL_MCU_SDK 开发指南 0.2 文档</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/translations.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="索引" href="../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../search.html" />
|
||||
<link rel="next" title="3. LowPower 低功耗评估" href="lowpower_demo.html" />
|
||||
<link rel="prev" title="1. SHELL 命令行调试" href="shell_demo.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.2
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">快速开发指南</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">API 手册</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_structure.html">1. API 分层模型</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_clock.html">2. 时钟树</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_gpio.html">3. GPIO 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_uart.html">4. UART 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_pwm.html">5. PWM 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dma.html">6. DMA 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_i2c.html">7. I2C 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_spi.html">8. SPI 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_adc.html">9. ADC 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dac.html">10. DAC 设备</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">基础外设例程</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/button_demo.html">2. GPIO 中断 - 按键检测</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/uart_loopback_demo.html">4. UART - 数据自收发</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/adc_key_demo.html">9. ADC - 按键检测电压</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">进阶例程</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="shell_demo.html">1. SHELL 命令行调试</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">2. FATFS 文件系统读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="lowpower_demo.html">3. LowPower 低功耗评估</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="boot2_iap_info.html">5. BOOT2 IAP</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">BL_MCU_SDK 开发指南</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><span class="section-number">2. </span>FATFS 文件系统读写</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../../_sources/samples/advance samples/fatfs_demo.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="fatfs">
|
||||
<h1><span class="section-number">2. </span>FATFS 文件系统读写<a class="headerlink" href="#fatfs" title="永久链接至标题">¶</a></h1>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
<a href="lowpower_demo.html" class="btn btn-neutral float-right" title="3. LowPower 低功耗评估" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
<a href="shell_demo.html" class="btn btn-neutral float-left" title="1. SHELL 命令行调试" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 2021, BouffaloLab Co., Ltd.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,367 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>3. LowPower 低功耗评估 — BL_MCU_SDK 开发指南 0.2 文档</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/translations.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="索引" href="../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../search.html" />
|
||||
<link rel="next" title="4. BLE 客户端和服务端互连" href="ble_scan_demo.html" />
|
||||
<link rel="prev" title="2. FATFS 文件系统读写" href="fatfs_demo.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.2
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">快速开发指南</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">API 手册</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_structure.html">1. API 分层模型</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_clock.html">2. 时钟树</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_gpio.html">3. GPIO 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_uart.html">4. UART 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_pwm.html">5. PWM 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dma.html">6. DMA 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_i2c.html">7. I2C 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_spi.html">8. SPI 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_adc.html">9. ADC 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dac.html">10. DAC 设备</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">基础外设例程</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/button_demo.html">2. GPIO 中断 - 按键检测</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/uart_loopback_demo.html">4. UART - 数据自收发</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/adc_key_demo.html">9. ADC - 按键检测电压</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">进阶例程</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="shell_demo.html">1. SHELL 命令行调试</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="fatfs_demo.html">2. FATFS 文件系统读写</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">3. LowPower 低功耗评估</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id1">3.1. 简介</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id2">3.2. <strong>低功耗示例测试方法</strong></a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#id3">3.2.1. <strong>编译低功耗示例代码</strong></a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#id4">3.2.2. <strong>准备低功耗测试所需的硬件环境</strong></a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#xshell">3.2.3. <strong>使用Xshell开始评估低功耗性能</strong></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="boot2_iap_info.html">5. BOOT2 IAP</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">BL_MCU_SDK 开发指南</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><span class="section-number">3. </span>LowPower 低功耗评估</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../../_sources/samples/advance samples/lowpower_demo.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="lowpower">
|
||||
<h1><span class="section-number">3. </span>LowPower 低功耗评估<a class="headerlink" href="#lowpower" title="永久链接至标题">¶</a></h1>
|
||||
<div class="section" id="id1">
|
||||
<h2><span class="section-number">3.1. </span>简介<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||
<p>博流系列芯片拥有丰富的低功耗特性,以适配不同的低功耗应用场合。为了方便用户快速的评测使用 bl 系列 MCU 低功耗性能 bl_mcu_sdk 提供了一套抽象的低功耗接口,将低功耗等级分为四个等级,分别为</p>
|
||||
<ol class="arabic simple">
|
||||
<li><p>Running : Running 为代码正常运行时的功耗,由客户应用代码决定功耗。</p></li>
|
||||
<li><p>WFI :WFI 模式,只关闭了 CPU 以节省功耗,当用户退出 WFI 模式的时候程序将会继续运行。</p></li>
|
||||
<li><p>PDS : PDS 模式,关闭了芯片上大多数电源域,同时关闭了 CPU ,可以通过内部 RTC 进行唤醒,或者使用特定的唤醒引脚唤醒。</p></li>
|
||||
<li><p>HBN : HBN 模式,关闭了芯片上绝大多数电源域,关闭了 CPU ,可以通过内部 RTC 进行唤醒,或者使用特定的唤醒引脚唤醒。</p></li>
|
||||
</ol>
|
||||
<p>如下表所示</p>
|
||||
<table class="docutils align-default">
|
||||
<colgroup>
|
||||
<col style="width: 21%" />
|
||||
<col style="width: 21%" />
|
||||
<col style="width: 21%" />
|
||||
<col style="width: 37%" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr class="row-odd"><th class="head"><p>模式</p></th>
|
||||
<th class="head"><p>参考电流</p></th>
|
||||
<th class="head"><p>对应基础模式</p></th>
|
||||
<th class="head"><p>唤醒源</p></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="row-even"><td><p>running</p></td>
|
||||
<td><p>6.28 mA</p></td>
|
||||
<td><p>run</p></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>WFI</p></td>
|
||||
<td><p>5.14 mA</p></td>
|
||||
<td><p>WFI</p></td>
|
||||
<td><p>任意中断</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>PDS</p></td>
|
||||
<td><p>10 uA</p></td>
|
||||
<td><p>PDS 31</p></td>
|
||||
<td><p>内部RTC/引脚中断</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>HBN</p></td>
|
||||
<td><p>1 uA</p></td>
|
||||
<td><p>HBN 1</p></td>
|
||||
<td><p>内部RTC/引脚中断</p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>bl_mcu_sdk 提供了一个简单的低功耗参考示例 (bl_mcu_sdk Examples/power/powerTest/) ,旨在帮助用户快速评估低功耗功能,如果需要进一步适配自身的低功耗场景,采取不同的低功耗策略,请查阅相关 datasheet 或者寻找 Boufflao Lab 的技术支持。</p>
|
||||
<p>上表中的参考电流是通过示例固件测试得出的。符合 bl70x 系列 MCU 的 spec 的描述, run wfi pds hbn 四种等级的定义简化了原先的 hbn level以及 pds level的设定。</p>
|
||||
<p>见 bl702_bl704_bl706_DS_EN_Combo_1.9.pdf page 28</p>
|
||||
<div class="figure align-default">
|
||||
<img alt="../../_images/powerTable.png" src="../../_images/powerTable.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<h2><span class="section-number">3.2. </span><strong>低功耗示例测试方法</strong><a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<div class="section" id="id3">
|
||||
<h3><span class="section-number">3.2.1. </span><strong>编译低功耗示例代码</strong><a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h3>
|
||||
<p>在工程目录下键入 <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">APP=lowpower_test</span>  <span class="pre">SUPPORT_SHELL=y</span> <span class="pre">BOARD=bl706_lp</span></code> 完成低功耗示例 bl706 的编译。或者直接使用CDK工程,完成编译下载
|
||||
您可以参考本文档《快速开发指南》来获取更多编译烧写的信息。</p>
|
||||
<p>当编译并烧写成功后,连接串口到电脑端,并复位芯片,Xshell 会出现如下图所示的页面。</p>
|
||||
<div class="figure align-default">
|
||||
<img alt="../../_images/xShell页面.png" src="../../_images/xShell页面.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<h3><span class="section-number">3.2.2. </span><strong>准备低功耗测试所需的硬件环境</strong><a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>可以串联电流表到电源端的电路板</p></li>
|
||||
<li><p>电流表</p></li>
|
||||
<li><p>一台 PC 主机(运行 Windows 或者 Linux 系统)</p></li>
|
||||
<li><p>TTL转USB</p></li>
|
||||
</ul>
|
||||
<p>如下图所示,将电流表串联进入 bl706 模组的供电线路,通过PC端的串口调试助手软件,下发不同的低功耗指令,使得 bl706 进入对应的低功耗模式
|
||||
观察电流表示值,完成评估。</p>
|
||||
<div class="figure align-default">
|
||||
<img alt="../../_images/低功耗示意图.png" src="../../_images/低功耗示意图.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="xshell">
|
||||
<h3><span class="section-number">3.2.3. </span><strong>使用Xshell开始评估低功耗性能</strong><a class="headerlink" href="#xshell" title="永久链接至标题">¶</a></h3>
|
||||
<p>用户可以通过在 Xshell输入下述指令,进入对应的低功耗模式。</p>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">run</span></code></p>
|
||||
<ul class="simple">
|
||||
<li><p>复位芯片之后,默认进入run模式,没有进入任何低功耗模式,芯片实际在运行 while(1); 语句。</p></li>
|
||||
</ul>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">wfi</span></code></p>
|
||||
<ul class="simple">
|
||||
<li><p>进入wfi模式,后面不加任何参数,进入之后,关闭CPU,降低功耗</p></li>
|
||||
<li><p>进入wfi模式后,任何中断会唤醒,例如uart中断。在Xshell中敲击回车会触发 bl706 UART RX中断,因此可以通过此方法唤醒wfi低功耗模式。</p></li>
|
||||
</ul>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">pds</span> <span class="pre">sleepTim</span></code></p>
|
||||
<ul class="simple">
|
||||
<li><p>pds 可以选择带一个 sleepTim 的参数,决定其内部 RTC 唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。</p></li>
|
||||
<li><p>如果指令包含 sleepTim 参数,pds 将会在sleepTim * clock_period 的时刻被唤醒,表现为复位芯片,重新打印起始报文。</p></li>
|
||||
<li><p>进入低功耗模式后,RTC的时钟是32K ,因此 sleepTim 为32768时,表现为睡眠 1S 后唤醒。</p></li>
|
||||
</ul>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">hbn</span> <span class="pre">sleepTim</span></code></p>
|
||||
<ul class="simple">
|
||||
<li><p>hbn 可以选择带一个 sleepTim 的参数,决定其内部RTC唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。</p></li>
|
||||
<li><p>如果指令包含 sleepTim 参数,hbn 将会在 sleepTim * clock_period 的时刻被唤醒,表现为复位芯片,重新打印起始报文。</p></li>
|
||||
<li><p>进入低功耗模式后,RTC的时钟是32K ,因此 sleepTim 为32768时,表现为睡眠1S 后唤醒。</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
<a href="ble_scan_demo.html" class="btn btn-neutral float-right" title="4. BLE 客户端和服务端互连" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
<a href="fatfs_demo.html" class="btn btn-neutral float-left" title="2. FATFS 文件系统读写" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 2021, BouffaloLab Co., Ltd.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,295 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>1. SHELL 命令行调试 — BL_MCU_SDK 开发指南 0.2 文档</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/translations.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="索引" href="../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../search.html" />
|
||||
<link rel="next" title="2. FATFS 文件系统读写" href="fatfs_demo.html" />
|
||||
<link rel="prev" title="9. ADC - 按键检测电压" href="../basic%20samples/adc_key_demo.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.2
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">快速开发指南</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">API 手册</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_structure.html">1. API 分层模型</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_clock.html">2. 时钟树</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_gpio.html">3. GPIO 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_uart.html">4. UART 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_pwm.html">5. PWM 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dma.html">6. DMA 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_i2c.html">7. I2C 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_spi.html">8. SPI 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_adc.html">9. ADC 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dac.html">10. DAC 设备</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">基础外设例程</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/button_demo.html">2. GPIO 中断 - 按键检测</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/uart_loopback_demo.html">4. UART - 数据自收发</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../basic%20samples/adc_key_demo.html">9. ADC - 按键检测电压</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">进阶例程</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">1. SHELL 命令行调试</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id1">1.1. 准备工具</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id2">1.2. 软件实现</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#id3">1.2.1. 串口中使用 SHELL</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#ble-shell">1.2.2. BLE 中使用 SHELL</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#id4">1.2.3. 以太网中使用 SHELL</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#id5">1.2.4. SHELL 命令注册</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id6">1.3. 编译和烧录</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id7">1.4. 实验现象</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="fatfs_demo.html">2. FATFS 文件系统读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="lowpower_demo.html">3. LowPower 低功耗评估</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="boot2_iap_info.html">5. BOOT2 IAP</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">BL_MCU_SDK 开发指南</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><span class="section-number">1. </span>SHELL 命令行调试</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../../_sources/samples/advance samples/shell_demo.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="shell">
|
||||
<h1><span class="section-number">1. </span>SHELL 命令行调试<a class="headerlink" href="#shell" title="永久链接至标题">¶</a></h1>
|
||||
<p>为方便用户使用 pc 或者其他控制器对开发板进行功能的调试(非仿真器调试),这里提供了 shell 命令行组件,类似于在 linux 下进行命令行操作。用户在 PC 端或者其他控制端进行命令的发送,通过串口、usb、以太网、蓝牙、wifi等方式,将数据发送给开发板的 shell 中,shell 会读取接收的命令进行解析并对已经注册的内部函数扫描,扫描到与之匹配的函数以后,执行匹配的函数,并实时返回传入的键值和函数执行的结果给 pc or 控制端。其中需要注意,控制器端需要发送标准键盘的键值。
|
||||
本 demo 将演示如何使用 <strong>shell</strong> 通过串口进行命令行调试。</p>
|
||||
<div class="section" id="id1">
|
||||
<h2><span class="section-number">1.1. </span>准备工具<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>pc控制端使用串口终端软件:xshell或者mobaxterm</p></li>
|
||||
<li><p>连接介质:usb转串口 or 网络 or usb</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<h2><span class="section-number">1.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<div class="section" id="id3">
|
||||
<h3><span class="section-number">1.2.1. </span>串口中使用 SHELL<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h3>
|
||||
</div>
|
||||
<div class="section" id="ble-shell">
|
||||
<h3><span class="section-number">1.2.2. </span>BLE 中使用 SHELL<a class="headerlink" href="#ble-shell" title="永久链接至标题">¶</a></h3>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<h3><span class="section-number">1.2.3. </span>以太网中使用 SHELL<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h3>
|
||||
</div>
|
||||
<div class="section" id="id5">
|
||||
<h3><span class="section-number">1.2.4. </span>SHELL 命令注册<a class="headerlink" href="#id5" title="永久链接至标题">¶</a></h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id6">
|
||||
<h2><span class="section-number">1.3. </span>编译和烧录<a class="headerlink" href="#id6" title="永久链接至标题">¶</a></h2>
|
||||
</div>
|
||||
<div class="section" id="id7">
|
||||
<h2><span class="section-number">1.4. </span>实验现象<a class="headerlink" href="#id7" title="永久链接至标题">¶</a></h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
<a href="fatfs_demo.html" class="btn btn-neutral float-right" title="2. FATFS 文件系统读写" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
<a href="../basic%20samples/adc_key_demo.html" class="btn btn-neutral float-left" title="9. ADC - 按键检测电压" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 2021, BouffaloLab Co., Ltd.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,425 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>9. ADC - 按键检测电压 — BL_MCU_SDK 开发指南 0.2 文档</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/translations.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="索引" href="../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../search.html" />
|
||||
<link rel="next" title="1. SHELL 命令行调试" href="../advance%20samples/shell_demo.html" />
|
||||
<link rel="prev" title="8. SPI - TFT LCD 显示" href="spi_lcd_demo.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.2
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">快速开发指南</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">API 手册</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_structure.html">1. API 分层模型</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_clock.html">2. 时钟树</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_gpio.html">3. GPIO 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_uart.html">4. UART 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_pwm.html">5. PWM 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dma.html">6. DMA 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_i2c.html">7. I2C 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_spi.html">8. SPI 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_adc.html">9. ADC 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dac.html">10. DAC 设备</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">基础外设例程</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="button_demo.html">2. GPIO 中断 - 按键检测</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="uart_loopback_demo.html">4. UART - 数据自收发</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">9. ADC - 按键检测电压</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id1">9.1. 硬件连接</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id2">9.2. 软件实现</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id3">9.3. 编译和烧录</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id4">9.4. 实验现象</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">进阶例程</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/shell_demo.html">1. SHELL 命令行调试</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/fatfs_demo.html">2. FATFS 文件系统读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/lowpower_demo.html">3. LowPower 低功耗评估</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/boot2_iap_info.html">5. BOOT2 IAP</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">BL_MCU_SDK 开发指南</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><span class="section-number">9. </span>ADC - 按键检测电压</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../../_sources/samples/basic samples/adc_key_demo.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="adc">
|
||||
<h1><span class="section-number">9. </span>ADC - 按键检测电压<a class="headerlink" href="#adc" title="永久链接至标题">¶</a></h1>
|
||||
<blockquote>
|
||||
<div><p>本demo基于ADC,使用按键的方式检测外部输入引脚的电压值。</p>
|
||||
</div></blockquote>
|
||||
<div class="section" id="id1">
|
||||
<h2><span class="section-number">9.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||
<p>本demo基于BL706_AVB开发板:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">GPIO</span> <span class="n">function</span> <span class="n">GPIO</span> <span class="n">pin</span>
|
||||
<span class="o">----------------------------------</span>
|
||||
<span class="n">ADC</span> <span class="n">CH8</span> <span class="o"><--></span> <span class="n">GPIO18</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<h2><span class="section-number">9.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/adc/adc_key</span></code></p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">ADC</span></code> 设备的时钟源由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/clock_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_ADC_CLOCK_SOURCE ROOT_CLOCK_SOURCE_XCLK</span>
|
||||
<span class="cp">#define BSP_ADC_CLOCK_DIV 0</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">ADC</span></code> 设备的复用引脚由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/pinmux_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO18_FUNC GPIO_FUN_ADC</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">ADC</span></code> 设备配置由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span>
|
||||
<span class="normal">14</span>
|
||||
<span class="normal">15</span>
|
||||
<span class="normal">16</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_USING_ADC0</span>
|
||||
|
||||
<span class="cp">#if defined(BSP_USING_ADC0)</span>
|
||||
<span class="cp">#ifndef ADC0_CONFIG</span>
|
||||
<span class="cp">#define ADC0_CONFIG \</span>
|
||||
<span class="cp">{ \</span>
|
||||
<span class="cp"> .clk_div = ADC_CLOCK_DIV_32,\</span>
|
||||
<span class="cp"> .vref = ADC_VREF_3P2V,\</span>
|
||||
<span class="cp"> .continuous_conv_mode = DISABLE,\</span>
|
||||
<span class="cp"> .differential_mode = DISABLE,\</span>
|
||||
<span class="cp"> .data_width = ADC_DATA_WIDTH_16B_WITH_256_AVERAGE,\</span>
|
||||
<span class="cp"> .fifo_threshold = ADC_FIFO_THRESHOLD_1BYTE,\</span>
|
||||
<span class="cp"> .gain = ADC_GAIN_1\</span>
|
||||
<span class="cp">}</span>
|
||||
<span class="cp">#endif</span>
|
||||
<span class="cp">#endif</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span>
|
||||
<span class="normal">14</span>
|
||||
<span class="normal">15</span>
|
||||
<span class="normal">16</span>
|
||||
<span class="normal">17</span>
|
||||
<span class="normal">18</span>
|
||||
<span class="normal">19</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">adc_channel_cfg_t</span> <span class="n">adc_channel_cfg</span><span class="p">;</span>
|
||||
<span class="n">adc_channel_cfg</span><span class="p">.</span><span class="n">pos_channel</span> <span class="o">=</span> <span class="n">posChList</span><span class="p">;</span>
|
||||
<span class="n">adc_channel_cfg</span><span class="p">.</span><span class="n">neg_channel</span> <span class="o">=</span> <span class="n">negChList</span><span class="p">;</span>
|
||||
|
||||
<span class="n">adc_register</span><span class="p">(</span><span class="n">ADC0_INDEX</span><span class="p">,</span> <span class="s">"adc_key"</span><span class="p">,</span> <span class="n">DEVICE_OFLAG_STREAM_RX</span><span class="p">);</span>
|
||||
|
||||
<span class="n">adc_key</span> <span class="o">=</span> <span class="n">device_find</span><span class="p">(</span><span class="s">"adc_key"</span><span class="p">);</span>
|
||||
|
||||
<span class="k">if</span><span class="p">(</span><span class="n">adc_key</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">ADC_DEV</span><span class="p">(</span><span class="n">adc_key</span><span class="p">)</span><span class="o">-></span><span class="n">continuous_conv_mode</span> <span class="o">=</span> <span class="n">ENABLE</span><span class="p">;</span>
|
||||
<span class="n">device_open</span><span class="p">(</span><span class="n">adc_key</span><span class="p">,</span> <span class="n">DEVICE_OFLAG_STREAM_RX</span><span class="p">);</span>
|
||||
<span class="n">device_control</span><span class="p">(</span><span class="n">adc_key</span><span class="p">,</span><span class="n">DEVICE_CTRL_ADC_CHANNEL_CONFIG</span><span class="p">,</span><span class="o">&</span><span class="n">adc_channel_cfg</span><span class="p">);</span>
|
||||
|
||||
<span class="p">}</span><span class="k">else</span><span class="p">{</span>
|
||||
<span class="n">MSG</span><span class="p">(</span><span class="s">"device open failed</span><span class="se">\r\n</span><span class="s">"</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="n">adc_channel_start</span><span class="p">(</span><span class="n">adc_key</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>首先调用 <code class="docutils literal notranslate"><span class="pre">adc_register</span></code> 函数注册 <code class="docutils literal notranslate"><span class="pre">adc_key</span></code> 设备,当前注册为ADC0</p></li>
|
||||
<li><p>然后通过 <code class="docutils literal notranslate"><span class="pre">find</span></code> 函数找到设备对应的句柄,保存于 <code class="docutils literal notranslate"><span class="pre">adc_key</span></code> 句柄中</p></li>
|
||||
<li><p>然后使用 <code class="docutils literal notranslate"><span class="pre">device_open</span></code> 以轮询模式来打开 <code class="docutils literal notranslate"><span class="pre">adc_key</span></code> 设备,调用 <code class="docutils literal notranslate"><span class="pre">device_control</span></code> 完成ADC相关的配置</p></li>
|
||||
<li><p>最后调用 <code class="docutils literal notranslate"><span class="pre">adc_channel_start</span></code> 启用ADC的转换</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span>
|
||||
<span class="normal">3</span>
|
||||
<span class="normal">4</span>
|
||||
<span class="normal">5</span>
|
||||
<span class="normal">6</span>
|
||||
<span class="normal">7</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">device_read</span><span class="p">(</span><span class="n">adc_key</span><span class="p">,</span><span class="mi">0</span><span class="p">,(</span><span class="kt">void</span> <span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">result_val</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span>
|
||||
<span class="n">keyValue</span> <span class="o">=</span> <span class="n">get_adc_key_value</span><span class="p">(</span><span class="n">result_val</span><span class="p">.</span><span class="n">volt</span> <span class="o">*</span> <span class="mi">1000</span><span class="p">);</span>
|
||||
<span class="k">if</span><span class="p">(</span> <span class="n">keyValue</span><span class="o">!=</span><span class="n">KEY_NO_VALUE</span><span class="p">){</span>
|
||||
|
||||
<span class="n">MSG</span><span class="p">(</span><span class="s">"key %d pressed</span><span class="se">\r\n</span><span class="s">"</span><span class="p">,</span><span class="n">keyValue</span><span class="p">);</span>
|
||||
<span class="n">MSG</span><span class="p">(</span><span class="s">"result_val.volt: %0.2f mv</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="p">(</span><span class="n">result_val</span><span class="p">.</span><span class="n">volt</span> <span class="o">*</span> <span class="mi">1000</span><span class="p">));</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>调用 <code class="docutils literal notranslate"><span class="pre">device_read</span></code> 读取 <code class="docutils literal notranslate"><span class="pre">adc_key</span></code> 设备信息保存到 <code class="docutils literal notranslate"><span class="pre">result_val</span></code> 结构体中</p></li>
|
||||
<li><p>调用 <code class="docutils literal notranslate"><span class="pre">get_adc_key_value</span></code> 函数获取当前的键值和电压值</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h2><span class="section-number">9.3. </span>编译和烧录<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
||||
<ul>
|
||||
<li><p><strong>CDK工具编译</strong></p>
|
||||
<p>打开项目中提供的工程文件:adc_key.cdkproj</p>
|
||||
<p>参照 <a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html#windows-cdk-quick-start"><span class="std std-ref">Windows 下使用 CDK (类 MDK Keil)开发指南</span></a> 的步骤编译下载即可</p>
|
||||
</li>
|
||||
<li><p><strong>命令行编译</strong></p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> <sdk_path>/bl_mcu_sdk
|
||||
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_avb <span class="nv">APP</span><span class="o">=</span>adc_key
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul>
|
||||
<li><p><strong>烧录</strong></p>
|
||||
<p>详见 <a class="reference internal" href="../../get_started/bl_dev_cube.html#bl-dev-cube"><span class="std std-ref">BLDevCube 烧录工具指南</span></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<h2><span class="section-number">9.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h2>
|
||||
<p>本实验依次按下开发板上的SW1 ~ SW5会得到不同的电压值:</p>
|
||||
<ul class="simple">
|
||||
<li><p>key 0: 0V左右</p></li>
|
||||
<li><p>key 1: 0.1V左右</p></li>
|
||||
<li><p>key 2: 0.2V左右</p></li>
|
||||
<li><p>key 3: 0.3V左右</p></li>
|
||||
<li><p>key 4: 0.43V左右</p></li>
|
||||
</ul>
|
||||
<p>实际运行结果如下图所示:</p>
|
||||
<div class="figure align-default">
|
||||
<img alt="../../_images/adc_key_result.png" src="../../_images/adc_key_result.png" />
|
||||
</div>
|
||||
<p>见视频展示:</p>
|
||||
<iframe src="//player.bilibili.com/player.html?aid=887712205&bvid=BV1xK4y1P7ur&cid=330261457&page=5" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe></div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
<a href="../advance%20samples/shell_demo.html" class="btn btn-neutral float-right" title="1. SHELL 命令行调试" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
<a href="spi_lcd_demo.html" class="btn btn-neutral float-left" title="8. SPI - TFT LCD 显示" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 2021, BouffaloLab Co., Ltd.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,325 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>1. GPIO 输出 - 流水灯 — BL_MCU_SDK 开发指南 0.2 文档</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/translations.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="索引" href="../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../search.html" />
|
||||
<link rel="next" title="2. GPIO 中断 - 按键检测" href="button_demo.html" />
|
||||
<link rel="prev" title="10. DAC 设备" href="../../api_reference/api_dac.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.2
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">快速开发指南</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">API 手册</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_structure.html">1. API 分层模型</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_clock.html">2. 时钟树</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_gpio.html">3. GPIO 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_uart.html">4. UART 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_pwm.html">5. PWM 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dma.html">6. DMA 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_i2c.html">7. I2C 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_spi.html">8. SPI 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_adc.html">9. ADC 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dac.html">10. DAC 设备</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">基础外设例程</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">1. GPIO 输出 - 流水灯</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id1">1.1. 硬件连接</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id2">1.2. 软件实现</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id3">1.3. 编译和烧录</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id4">1.4. 实验现象</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="button_demo.html">2. GPIO 中断 - 按键检测</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="uart_loopback_demo.html">4. UART - 数据自收发</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="adc_key_demo.html">9. ADC - 按键检测电压</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">进阶例程</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/shell_demo.html">1. SHELL 命令行调试</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/fatfs_demo.html">2. FATFS 文件系统读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/lowpower_demo.html">3. LowPower 低功耗评估</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/boot2_iap_info.html">5. BOOT2 IAP</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">BL_MCU_SDK 开发指南</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><span class="section-number">1. </span>GPIO 输出 - 流水灯</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../../_sources/samples/basic samples/blink_demo.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="gpio">
|
||||
<h1><span class="section-number">1. </span>GPIO 输出 - 流水灯<a class="headerlink" href="#gpio" title="永久链接至标题">¶</a></h1>
|
||||
<blockquote>
|
||||
<div><p>本demo基于GPIO外设的输出模式编写。</p>
|
||||
</div></blockquote>
|
||||
<div class="section" id="id1">
|
||||
<h2><span class="section-number">1.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||
<p>本 demo 基于BL706_IOT开发板,连接方式如下</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">GPIO</span> <span class="n">function</span> <span class="n">GPIO</span> <span class="n">pin</span>
|
||||
<span class="o">----------------------------------</span>
|
||||
<span class="n">D0</span> <span class="o"><--></span> <span class="n">GPIO22</span>
|
||||
<span class="n">D1</span> <span class="o"><--></span> <span class="n">GPIO29</span>
|
||||
<span class="n">D2</span> <span class="o"><--></span> <span class="n">GPIO30</span>
|
||||
<span class="n">D3</span> <span class="o"><--></span> <span class="n">GPIO31</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="figure align-default">
|
||||
<img alt="" src="../../_images/blink_breath_sch.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<h2><span class="section-number">1.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/gpio/gpio_blink</span></code></p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span>
|
||||
<span class="normal">3</span>
|
||||
<span class="normal">4</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">gpio_set_mode</span><span class="p">(</span><span class="n">GPIO_PIN_22</span><span class="p">,</span> <span class="n">GPIO_OUTPUT_PP_MODE</span><span class="p">);</span>
|
||||
<span class="n">gpio_set_mode</span><span class="p">(</span><span class="n">GPIO_PIN_29</span><span class="p">,</span> <span class="n">GPIO_OUTPUT_PP_MODE</span><span class="p">);</span>
|
||||
<span class="n">gpio_set_mode</span><span class="p">(</span><span class="n">GPIO_PIN_30</span><span class="p">,</span> <span class="n">GPIO_OUTPUT_PP_MODE</span><span class="p">);</span>
|
||||
<span class="n">gpio_set_mode</span><span class="p">(</span><span class="n">GPIO_PIN_31</span><span class="p">,</span> <span class="n">GPIO_OUTPUT_PP_MODE</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>使用上述代码将 <code class="docutils literal notranslate"><span class="pre">GPIO22</span></code> <code class="docutils literal notranslate"><span class="pre">GPIO29</span></code> <code class="docutils literal notranslate"><span class="pre">GPIO30</span></code> <code class="docutils literal notranslate"><span class="pre">GPIO31</span></code> 配置为输出上拉模式。</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">gpio_write</span><span class="p">(</span><span class="n">GPIO_PIN_22</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>使用上述代码修改输出的电平值。</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h2><span class="section-number">1.3. </span>编译和烧录<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
||||
<ul>
|
||||
<li><p><strong>CDK 编译</strong></p>
|
||||
<p>打开项目中提供的工程文件:gpio_blink.cdkproj</p>
|
||||
<p>参照 <a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html#windows-cdk-quick-start"><span class="std std-ref">Windows 下使用 CDK (类 MDK Keil)开发指南</span></a> 的步骤编译下载即可</p>
|
||||
</li>
|
||||
<li><p><strong>命令行编译</strong></p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> <sdk_path>/bl_mcu_sdk
|
||||
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>gpio_blink
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul>
|
||||
<li><p><strong>烧录</strong></p>
|
||||
<p>详见 <a class="reference internal" href="../../get_started/bl_dev_cube.html#bl-dev-cube"><span class="std std-ref">BLDevCube 烧录工具指南</span></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<h2><span class="section-number">1.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h2>
|
||||
<p>见视频展示:</p>
|
||||
<iframe src="//player.bilibili.com/player.html?aid=887712205&bvid=BV1xK4y1P7ur&cid=326226616&page=3" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe></div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
<a href="button_demo.html" class="btn btn-neutral float-right" title="2. GPIO 中断 - 按键检测" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
<a href="../../api_reference/api_dac.html" class="btn btn-neutral float-left" title="10. DAC 设备" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 2021, BouffaloLab Co., Ltd.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,378 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>3. PWM - 呼吸灯 — BL_MCU_SDK 开发指南 0.2 文档</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/translations.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="索引" href="../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../search.html" />
|
||||
<link rel="next" title="4. UART - 数据自收发" href="uart_loopback_demo.html" />
|
||||
<link rel="prev" title="2. GPIO 中断 - 按键检测" href="button_demo.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.2
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">快速开发指南</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">API 手册</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_structure.html">1. API 分层模型</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_clock.html">2. 时钟树</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_gpio.html">3. GPIO 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_uart.html">4. UART 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_pwm.html">5. PWM 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dma.html">6. DMA 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_i2c.html">7. I2C 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_spi.html">8. SPI 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_adc.html">9. ADC 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dac.html">10. DAC 设备</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">基础外设例程</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="button_demo.html">2. GPIO 中断 - 按键检测</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">3. PWM - 呼吸灯</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id1">3.1. 硬件连接</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id2">3.2. 软件实现</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id3">3.3. 编译和烧录</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id4">3.4. 实验现象</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="uart_loopback_demo.html">4. UART - 数据自收发</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="adc_key_demo.html">9. ADC - 按键检测电压</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">进阶例程</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/shell_demo.html">1. SHELL 命令行调试</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/fatfs_demo.html">2. FATFS 文件系统读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/lowpower_demo.html">3. LowPower 低功耗评估</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/boot2_iap_info.html">5. BOOT2 IAP</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">BL_MCU_SDK 开发指南</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><span class="section-number">3. </span>PWM - 呼吸灯</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../../_sources/samples/basic samples/breath_pwm_demo.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="pwm">
|
||||
<h1><span class="section-number">3. </span>PWM - 呼吸灯<a class="headerlink" href="#pwm" title="永久链接至标题">¶</a></h1>
|
||||
<blockquote>
|
||||
<div><p>本demo基于PWM外设轮询模式编写。</p>
|
||||
</div></blockquote>
|
||||
<div class="section" id="id1">
|
||||
<h2><span class="section-number">3.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||
<p>本 demo 基于BL706_IOT开发板,连接方式如下</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">GPIO</span> <span class="n">function</span> <span class="n">GPIO</span> <span class="n">pin</span>
|
||||
<span class="o">----------------------------------</span>
|
||||
<span class="n">PWM_CH2</span> <span class="o"><--></span> <span class="n">GPIO22</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="figure align-default">
|
||||
<img alt="" src="../../_images/blink_breath_sch.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<h2><span class="section-number">3.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/pwm/pwm_breath_led</span></code></p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">PWM</span></code> 复用引脚由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/pinmux_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO22_FUNC GPIO_FUN_PWM</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">PWM</span></code> 设备配置由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_USING_PWM_CH2</span>
|
||||
|
||||
<span class="cp">#if defined(BSP_USING_PWM_CH2)</span>
|
||||
<span class="cp">#ifndef PWM_CH2_CONFIG</span>
|
||||
<span class="cp">#define PWM_CH2_CONFIG \</span>
|
||||
<span class="cp">{ \</span>
|
||||
<span class="cp"> .ch = 2, \</span>
|
||||
<span class="cp"> .frequency = 1000000, \</span>
|
||||
<span class="cp"> .dutycycle = 0, \</span>
|
||||
<span class="cp"> .it_pulse_count = 0,\</span>
|
||||
<span class="cp">}</span>
|
||||
<span class="cp">#endif</span>
|
||||
<span class="cp">#endif</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span>
|
||||
<span class="normal">3</span>
|
||||
<span class="normal">4</span>
|
||||
<span class="normal">5</span>
|
||||
<span class="normal">6</span>
|
||||
<span class="normal">7</span>
|
||||
<span class="normal">8</span>
|
||||
<span class="normal">9</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">pwm_register</span><span class="p">(</span><span class="n">PWM_CH2_INDEX</span><span class="p">,</span> <span class="s">"led_breath"</span><span class="p">,</span> <span class="n">DEVICE_OFLAG_RDWR</span><span class="p">);</span>
|
||||
|
||||
<span class="k">struct</span> <span class="nc">device</span> <span class="o">*</span><span class="n">led_breath</span> <span class="o">=</span> <span class="n">device_find</span><span class="p">(</span><span class="s">"led_breath"</span><span class="p">);</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">led_breath</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">device_open</span><span class="p">(</span><span class="n">led_breath</span><span class="p">,</span> <span class="n">DEVICE_OFLAG_STREAM_TX</span><span class="p">);</span>
|
||||
<span class="n">pwm_channel_start</span><span class="p">(</span><span class="n">led_breath</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>首先调用 <code class="docutils literal notranslate"><span class="pre">pwm_register</span></code> 函数注册 <code class="docutils literal notranslate"><span class="pre">PWM</span></code> 设备的一个通道,当前注册 <code class="docutils literal notranslate"><span class="pre">PWM_CH2</span></code></p></li>
|
||||
<li><p>然后通过 <code class="docutils literal notranslate"><span class="pre">find</span></code> 函数找到设备对应的句柄,保存于 <code class="docutils literal notranslate"><span class="pre">led_breath</span></code> 句柄中</p></li>
|
||||
<li><p>使用 <code class="docutils literal notranslate"><span class="pre">device_open</span></code> 以轮询模式来打开 <code class="docutils literal notranslate"><span class="pre">led_breath</span></code> 设备</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span>
|
||||
<span class="normal">3</span>
|
||||
<span class="normal">4</span>
|
||||
<span class="normal">5</span>
|
||||
<span class="normal">6</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">pwm_config_t</span> <span class="n">pwm_cfg</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="mi">1000000</span><span class="p">,</span>
|
||||
<span class="mi">0</span><span class="p">,</span>
|
||||
<span class="p">};</span>
|
||||
|
||||
<span class="n">device_control</span><span class="p">(</span><span class="n">led_breath</span><span class="p">,</span> <span class="n">DEVICE_CTRL_CONFIG</span><span class="p">,</span> <span class="o">&</span><span class="n">pwm_cfg</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>使用 <code class="docutils literal notranslate"><span class="pre">device_contorl</span></code> 函数,配合 <code class="docutils literal notranslate"><span class="pre">DEVICE_CTRL_CONFIG</span></code> 指令,可以修改当前PWM通道的频率和占空比。</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h2><span class="section-number">3.3. </span>编译和烧录<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
||||
<ul>
|
||||
<li><p><strong>CDK 编译</strong></p>
|
||||
<p>打开项目中提供的工程文件:pwm_breath_led.cdkproj</p>
|
||||
<p>参照 <a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html#windows-cdk-quick-start"><span class="std std-ref">Windows 下使用 CDK (类 MDK Keil)开发指南</span></a> 的步骤编译下载即可</p>
|
||||
</li>
|
||||
<li><p><strong>命令行编译</strong></p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> <sdk_path>/bl_mcu_sdk
|
||||
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>pwm_breath_led
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul>
|
||||
<li><p><strong>烧录</strong></p>
|
||||
<p>详见 <a class="reference internal" href="../../get_started/bl_dev_cube.html#bl-dev-cube"><span class="std std-ref">BLDevCube 烧录工具指南</span></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<h2><span class="section-number">3.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h2>
|
||||
<p>见视频展示:</p>
|
||||
<iframe src="//player.bilibili.com/player.html?aid=887712205&bvid=BV1xK4y1P7ur&cid=326227924&page=4" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe></div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
<a href="uart_loopback_demo.html" class="btn btn-neutral float-right" title="4. UART - 数据自收发" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
<a href="button_demo.html" class="btn btn-neutral float-left" title="2. GPIO 中断 - 按键检测" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 2021, BouffaloLab Co., Ltd.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,324 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>2. GPIO 中断 - 按键检测 — BL_MCU_SDK 开发指南 0.2 文档</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/translations.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="索引" href="../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../search.html" />
|
||||
<link rel="next" title="3. PWM - 呼吸灯" href="breath_pwm_demo.html" />
|
||||
<link rel="prev" title="1. GPIO 输出 - 流水灯" href="blink_demo.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.2
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">快速开发指南</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">API 手册</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_structure.html">1. API 分层模型</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_clock.html">2. 时钟树</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_gpio.html">3. GPIO 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_uart.html">4. UART 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_pwm.html">5. PWM 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dma.html">6. DMA 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_i2c.html">7. I2C 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_spi.html">8. SPI 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_adc.html">9. ADC 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dac.html">10. DAC 设备</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">基础外设例程</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">2. GPIO 中断 - 按键检测</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id1">2.1. 硬件连接</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id2">2.2. 软件实现</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id3">2.3. 编译和烧录</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id4">2.4. 实验现象</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="uart_loopback_demo.html">4. UART - 数据自收发</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="adc_key_demo.html">9. ADC - 按键检测电压</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">进阶例程</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/shell_demo.html">1. SHELL 命令行调试</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/fatfs_demo.html">2. FATFS 文件系统读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/lowpower_demo.html">3. LowPower 低功耗评估</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/boot2_iap_info.html">5. BOOT2 IAP</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">BL_MCU_SDK 开发指南</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><span class="section-number">2. </span>GPIO 中断 - 按键检测</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../../_sources/samples/basic samples/button_demo.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="gpio">
|
||||
<h1><span class="section-number">2. </span>GPIO 中断 - 按键检测<a class="headerlink" href="#gpio" title="永久链接至标题">¶</a></h1>
|
||||
<blockquote>
|
||||
<div><p>本demo基于GPIO外设外部中断模式编写。</p>
|
||||
</div></blockquote>
|
||||
<div class="section" id="id1">
|
||||
<h2><span class="section-number">2.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||
<p>本 demo 基于BL706_IOT开发板,自行添加按键电路,连接方式如下</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">GPIO</span> <span class="n">function</span> <span class="n">GPIO</span> <span class="n">pin</span>
|
||||
<span class="o">----------------------------------</span>
|
||||
<span class="n">SW1</span> <span class="o"><--></span> <span class="n">GPIO11</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="figure align-default">
|
||||
<img alt="" src="../../_images/button_sch.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<h2><span class="section-number">2.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/gpio/gpio_int</span></code></p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span>
|
||||
<span class="normal">3</span>
|
||||
<span class="normal">4</span>
|
||||
<span class="normal">5</span>
|
||||
<span class="normal">6</span>
|
||||
<span class="normal">7</span>
|
||||
<span class="normal">8</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="k">static</span> <span class="kt">void</span> <span class="n">gpio11_int_callback</span><span class="p">(</span><span class="kt">uint32_t</span> <span class="n">pin</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">MSG</span><span class="p">(</span><span class="s">"gpio rising trigger !</span><span class="se">\r\n</span><span class="s">"</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="n">gpio_set_mode</span><span class="p">(</span><span class="n">GPIO_PIN_11</span><span class="p">,</span><span class="n">GPIO_SYNC_RISING_TRIGER_INT_MODE</span><span class="p">);</span>
|
||||
<span class="n">gpio_attach_irq</span><span class="p">(</span><span class="n">GPIO_PIN_11</span><span class="p">,</span><span class="n">gpio11_int_callback</span><span class="p">);</span>
|
||||
<span class="n">gpio_irq_enable</span><span class="p">(</span><span class="n">GPIO_PIN_11</span><span class="p">,</span><span class="n">ENABLE</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>使用上述代码将 <code class="docutils literal notranslate"><span class="pre">GPIO11</span></code> 配置为GPIO上升沿中断触发模式,并注册中断回调函数。</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h2><span class="section-number">2.3. </span>编译和烧录<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
||||
<ul>
|
||||
<li><p><strong>CDK 编译</strong></p>
|
||||
<p>打开项目中提供的工程文件:gpio_int.cdkproj</p>
|
||||
<p>参照 <a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html#windows-cdk-quick-start"><span class="std std-ref">Windows 下使用 CDK (类 MDK Keil)开发指南</span></a> 的步骤编译下载即可</p>
|
||||
</li>
|
||||
<li><p><strong>命令行编译</strong></p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> <sdk_path>/bl_mcu_sdk
|
||||
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>gpio_int
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul>
|
||||
<li><p><strong>烧录</strong></p>
|
||||
<p>详见 <a class="reference internal" href="../../get_started/bl_dev_cube.html#bl-dev-cube"><span class="std std-ref">BLDevCube 烧录工具指南</span></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<h2><span class="section-number">2.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h2>
|
||||
<p>当按键按下时,串口会打印 <code class="docutils literal notranslate"><span class="pre">"gpio</span> <span class="pre">rising</span> <span class="pre">trigger</span> <span class="pre">!"</span></code></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
<a href="breath_pwm_demo.html" class="btn btn-neutral float-right" title="3. PWM - 呼吸灯" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
<a href="blink_demo.html" class="btn btn-neutral float-left" title="1. GPIO 输出 - 流水灯" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 2021, BouffaloLab Co., Ltd.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,407 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>6. DMA - RAM间数据搬运 — BL_MCU_SDK 开发指南 0.2 文档</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/translations.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="索引" href="../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../search.html" />
|
||||
<link rel="next" title="7. I2C - AT24CXX 读写" href="i2c_eeprom_demo.html" />
|
||||
<link rel="prev" title="5. MTIMER - 内核定时器" href="mtimer_demo.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.2
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">快速开发指南</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">API 手册</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_structure.html">1. API 分层模型</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_clock.html">2. 时钟树</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_gpio.html">3. GPIO 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_uart.html">4. UART 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_pwm.html">5. PWM 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dma.html">6. DMA 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_i2c.html">7. I2C 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_spi.html">8. SPI 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_adc.html">9. ADC 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dac.html">10. DAC 设备</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">基础外设例程</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="button_demo.html">2. GPIO 中断 - 按键检测</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="uart_loopback_demo.html">4. UART - 数据自收发</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">6. DMA - RAM间数据搬运</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id1">6.1. 硬件连接</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id2">6.2. 软件实现</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id3">6.3. 编译和烧录</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id4">6.4. 实验现象</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="adc_key_demo.html">9. ADC - 按键检测电压</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">进阶例程</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/shell_demo.html">1. SHELL 命令行调试</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/fatfs_demo.html">2. FATFS 文件系统读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/lowpower_demo.html">3. LowPower 低功耗评估</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/boot2_iap_info.html">5. BOOT2 IAP</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">BL_MCU_SDK 开发指南</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><span class="section-number">6. </span>DMA - RAM间数据搬运</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../../_sources/samples/basic samples/dma_m2m_demo.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="dma-ram">
|
||||
<h1><span class="section-number">6. </span>DMA - RAM间数据搬运<a class="headerlink" href="#dma-ram" title="永久链接至标题">¶</a></h1>
|
||||
<blockquote>
|
||||
<div><p>本demo基于DMA,方向为memory to memory 模式,进行数据的搬运。</p>
|
||||
</div></blockquote>
|
||||
<div class="section" id="id1">
|
||||
<h2><span class="section-number">6.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||
<p>无</p>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<h2><span class="section-number">6.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/dma/dma_m2m</span></code></p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">DMA</span></code> 设备配置由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span>
|
||||
<span class="normal">14</span>
|
||||
<span class="normal">15</span>
|
||||
<span class="normal">16</span>
|
||||
<span class="normal">17</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_USING_DMA0_CH0</span>
|
||||
|
||||
<span class="cp">#if defined(BSP_USING_DMA0_CH0)</span>
|
||||
<span class="cp">#ifndef DMA0_CH0_CONFIG</span>
|
||||
<span class="cp">#define DMA0_CH0_CONFIG \</span>
|
||||
<span class="cp">{ \</span>
|
||||
<span class="cp">.id = 0, \</span>
|
||||
<span class="cp">.ch = 0,\</span>
|
||||
<span class="cp">.direction = DMA_MEMORY_TO_MEMORY,\</span>
|
||||
<span class="cp">.transfer_mode = DMA_LLI_ONCE_MODE, \</span>
|
||||
<span class="cp">.src_req = DMA_REQUEST_NONE, \</span>
|
||||
<span class="cp">.dst_req = DMA_REQUEST_NONE, \</span>
|
||||
<span class="cp">.src_width = DMA_TRANSFER_WIDTH_32BIT , \</span>
|
||||
<span class="cp">.dst_width = DMA_TRANSFER_WIDTH_32BIT , \</span>
|
||||
<span class="cp">}</span>
|
||||
<span class="cp">#endif</span>
|
||||
<span class="cp">#endif</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">dma_register</span><span class="p">(</span><span class="n">DMA0_CH0_INDEX</span><span class="p">,</span> <span class="s">"DMA"</span><span class="p">,</span> <span class="n">DEVICE_OFLAG_RDWR</span><span class="p">);</span>
|
||||
|
||||
<span class="k">struct</span> <span class="nc">device</span> <span class="o">*</span><span class="n">dma</span> <span class="o">=</span> <span class="n">device_find</span><span class="p">(</span><span class="s">"DMA"</span><span class="p">);</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">dma</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">device_open</span><span class="p">(</span><span class="n">dma</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
|
||||
<span class="n">device_set_callback</span><span class="p">(</span><span class="n">dma</span><span class="p">,</span> <span class="n">dma_transfer_done</span><span class="p">);</span>
|
||||
<span class="n">device_control</span><span class="p">(</span><span class="n">dma</span><span class="p">,</span> <span class="n">DEVICE_CTRL_SET_INT</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>首先调用 <code class="docutils literal notranslate"><span class="pre">dma_register</span></code> 函数注册 <code class="docutils literal notranslate"><span class="pre">DMA</span></code> 设备的一个通道,当前注册 <code class="docutils literal notranslate"><span class="pre">DMA_CH0</span></code></p></li>
|
||||
<li><p>然后通过 <code class="docutils literal notranslate"><span class="pre">find</span></code> 函数找到设备对应的句柄,保存于 <code class="docutils literal notranslate"><span class="pre">dma</span></code> 句柄中</p></li>
|
||||
<li><p>最后使用 <code class="docutils literal notranslate"><span class="pre">device_open</span></code> 以默认模式来打开 <code class="docutils literal notranslate"><span class="pre">dma</span></code> 设备,调用 <code class="docutils literal notranslate"><span class="pre">device_set_callback</span></code> 注册一个dma通道0中断回调函数,调用 <code class="docutils literal notranslate"><span class="pre">device_control</span></code> 开启dma传输完成中断</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">dma_reload</span><span class="p">(</span><span class="n">dma</span><span class="p">,(</span><span class="kt">uint32_t</span><span class="p">)</span><span class="n">dma_src_buffer</span><span class="p">,(</span><span class="kt">uint32_t</span><span class="p">)</span><span class="n">dma_dst_buffer</span><span class="p">,</span><span class="mi">8000</span><span class="p">);</span>
|
||||
<span class="n">dma_channel_start</span><span class="p">(</span><span class="n">dma</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>调用 <code class="docutils literal notranslate"><span class="pre">dma_reload</span></code> 函数对dma 通道0的配置进行补充,<code class="docutils literal notranslate"><span class="pre">DMA0_CH0_CONFIG</span></code> 中已经补充了一部分配置,这边主要补充源数据地址和目标数据地址以及传输总长度</p></li>
|
||||
<li><p>调用 <code class="docutils literal notranslate"><span class="pre">dma_channel_start</span></code> 开启dma传输</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span>
|
||||
<span class="normal">14</span>
|
||||
<span class="normal">15</span>
|
||||
<span class="normal">16</span>
|
||||
<span class="normal">17</span>
|
||||
<span class="normal">18</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kt">void</span> <span class="nf">dma_transfer_done</span><span class="p">(</span><span class="k">struct</span> <span class="nc">device</span> <span class="o">*</span><span class="n">dev</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">size</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">state</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="kt">uint32_t</span> <span class="n">index</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
|
||||
|
||||
<span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="n">state</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">MSG</span><span class="p">(</span><span class="s">"dma transfer task done</span><span class="se">\r\n</span><span class="s">"</span><span class="p">);</span>
|
||||
|
||||
<span class="k">for</span><span class="p">(</span><span class="n">index</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="n">index</span><span class="o"><</span><span class="mi">8000</span><span class="p">;</span><span class="n">index</span><span class="o">++</span><span class="p">){</span>
|
||||
<span class="k">if</span><span class="p">(</span><span class="n">dma_dst_buffer</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="o">!=</span><span class="mh">0xff</span><span class="p">){</span>
|
||||
<span class="n">MSG</span><span class="p">(</span><span class="s">"dma transfer error</span><span class="se">\r\n</span><span class="s">"</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="n">MSG</span><span class="p">(</span><span class="s">"dma transfer success</span><span class="se">\r\n</span><span class="s">"</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>在中断函数中判断数据传输是否正确</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h2><span class="section-number">6.3. </span>编译和烧录<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
||||
<ul>
|
||||
<li><p><strong>CDK 编译</strong></p>
|
||||
<p>打开项目中提供的工程文件:dma_m2m.cdkproj</p>
|
||||
<p>参照 <a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html#windows-cdk-quick-start"><span class="std std-ref">Windows 下使用 CDK (类 MDK Keil)开发指南</span></a> 的步骤编译下载即可</p>
|
||||
</li>
|
||||
<li><p><strong>命令行编译</strong></p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> <sdk_path>/bl_mcu_sdk
|
||||
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>dma_m2m
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul>
|
||||
<li><p><strong>烧录</strong></p>
|
||||
<p>详见 <a class="reference internal" href="../../get_started/bl_dev_cube.html#bl-dev-cube"><span class="std std-ref">BLDevCube 烧录工具指南</span></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<h2><span class="section-number">6.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h2>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">dma_src_buffer</span></code> 数组中的数据通过DMA 通道0 ,以源32位宽、目标32位宽传输到 <code class="docutils literal notranslate"><span class="pre">dma_dst_buffer</span></code> 数组中,数据传输完成并完整,串口打印 <code class="docutils literal notranslate"><span class="pre">dma</span> <span class="pre">transfer</span> <span class="pre">success</span></code>。</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
<a href="i2c_eeprom_demo.html" class="btn btn-neutral float-right" title="7. I2C - AT24CXX 读写" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
<a href="mtimer_demo.html" class="btn btn-neutral float-left" title="5. MTIMER - 内核定时器" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 2021, BouffaloLab Co., Ltd.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,398 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>7. I2C - AT24CXX 读写 — BL_MCU_SDK 开发指南 0.2 文档</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/translations.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="索引" href="../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../search.html" />
|
||||
<link rel="next" title="8. SPI - TFT LCD 显示" href="spi_lcd_demo.html" />
|
||||
<link rel="prev" title="6. DMA - RAM间数据搬运" href="dma_m2m_demo.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.2
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">快速开发指南</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">API 手册</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_structure.html">1. API 分层模型</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_clock.html">2. 时钟树</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_gpio.html">3. GPIO 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_uart.html">4. UART 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_pwm.html">5. PWM 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dma.html">6. DMA 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_i2c.html">7. I2C 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_spi.html">8. SPI 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_adc.html">9. ADC 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dac.html">10. DAC 设备</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">基础外设例程</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="button_demo.html">2. GPIO 中断 - 按键检测</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="uart_loopback_demo.html">4. UART - 数据自收发</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">7. I2C - AT24CXX 读写</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id1">7.1. 硬件连接</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id2">7.2. 软件实现</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id3">7.3. 编译和烧录</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id4">7.4. 实验现象</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="adc_key_demo.html">9. ADC - 按键检测电压</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">进阶例程</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/shell_demo.html">1. SHELL 命令行调试</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/fatfs_demo.html">2. FATFS 文件系统读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/lowpower_demo.html">3. LowPower 低功耗评估</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/boot2_iap_info.html">5. BOOT2 IAP</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">BL_MCU_SDK 开发指南</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><span class="section-number">7. </span>I2C - AT24CXX 读写</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../../_sources/samples/basic samples/i2c_eeprom_demo.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="i2c-at24cxx">
|
||||
<h1><span class="section-number">7. </span>I2C - AT24CXX 读写<a class="headerlink" href="#i2c-at24cxx" title="永久链接至标题">¶</a></h1>
|
||||
<div class="section" id="id1">
|
||||
<h2><span class="section-number">7.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||
<p>本 demo 基于BL706_IOT开发板,自行添加 AT24CXX 电路,连接方式如下</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">GPIO</span> <span class="n">function</span> <span class="n">GPIO</span> <span class="n">pin</span>
|
||||
<span class="o">----------------------------------</span>
|
||||
<span class="n">I2C_SCL</span> <span class="o"><--></span> <span class="n">GPIO11</span>
|
||||
<span class="n">I2C_SDA</span> <span class="o"><--></span> <span class="n">GPIO16</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<h2><span class="section-number">7.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/i2c/i2c_at24cxx</span></code></p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">I2C</span></code> 设备的时钟源由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/clock_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_I2C_CLOCK_SOURCE ROOT_CLOCK_SOURCE_BCLK</span>
|
||||
<span class="cp">#define BSP_I2C_CLOCK_DIV 0</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">I2C</span></code> 设备的复用引脚由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/pinmux_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C</span>
|
||||
<span class="cp">#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">I2C</span></code> 设备配置由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_USING_I2C0</span>
|
||||
|
||||
<span class="cp">#if defined(BSP_USING_I2C0)</span>
|
||||
<span class="cp">#ifndef I2C0_CONFIG</span>
|
||||
<span class="cp">#define I2C0_CONFIG \</span>
|
||||
<span class="cp">{ \</span>
|
||||
<span class="cp">.id = 0, \</span>
|
||||
<span class="cp">.mode = I2C_HW_MODE,\</span>
|
||||
<span class="cp">.phase = 15, \</span>
|
||||
<span class="cp">}</span>
|
||||
<span class="cp">#endif</span>
|
||||
<span class="cp">#endif</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span>
|
||||
<span class="normal">3</span>
|
||||
<span class="normal">4</span>
|
||||
<span class="normal">5</span>
|
||||
<span class="normal">6</span>
|
||||
<span class="normal">7</span>
|
||||
<span class="normal">8</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">i2c_register</span><span class="p">(</span><span class="n">I2C0_INDEX</span><span class="p">,</span> <span class="s">"i2c"</span><span class="p">,</span> <span class="n">DEVICE_OFLAG_RDWR</span><span class="p">);</span>
|
||||
<span class="k">struct</span> <span class="nc">device</span> <span class="o">*</span><span class="n">i2c0</span> <span class="o">=</span> <span class="n">device_find</span><span class="p">(</span><span class="s">"i2c"</span><span class="p">);</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">i2c0</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">MSG</span><span class="p">(</span><span class="s">"device find success</span><span class="se">\r\n</span><span class="s">"</span><span class="p">);</span>
|
||||
<span class="n">device_open</span><span class="p">(</span><span class="n">i2c0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>首先调用 <code class="docutils literal notranslate"><span class="pre">i2c_register</span></code> 函数注册 <code class="docutils literal notranslate"><span class="pre">I2C</span></code> 设备,当前注册 <code class="docutils literal notranslate"><span class="pre">I2C0</span></code></p></li>
|
||||
<li><p>然后通过 <code class="docutils literal notranslate"><span class="pre">find</span></code> 函数找到设备对应的句柄,保存于 <code class="docutils literal notranslate"><span class="pre">i2c0</span></code> 句柄中</p></li>
|
||||
<li><p>最后使用 <code class="docutils literal notranslate"><span class="pre">device_open</span></code> 以默认模式来打开 <code class="docutils literal notranslate"><span class="pre">I2C0</span></code> 设备</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span>
|
||||
<span class="normal">14</span>
|
||||
<span class="normal">15</span>
|
||||
<span class="normal">16</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">i2c_msg_t</span> <span class="n">msg</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
|
||||
<span class="kt">uint8_t</span> <span class="n">buf</span><span class="p">[</span><span class="mi">8</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
|
||||
|
||||
<span class="n">msg</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">buf</span> <span class="o">=</span> <span class="n">buf</span><span class="p">;</span>
|
||||
<span class="n">msg</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">flags</span> <span class="o">=</span> <span class="n">SUB_ADDR_1BYTE</span> <span class="o">|</span> <span class="n">I2C_WR</span><span class="p">;</span>
|
||||
<span class="n">msg</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">len</span> <span class="o">=</span> <span class="mi">8</span><span class="p">;</span>
|
||||
<span class="n">msg</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">slaveaddr</span> <span class="o">=</span> <span class="mh">0x50</span><span class="p">;</span>
|
||||
<span class="n">msg</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">subaddr</span> <span class="o">=</span> <span class="mh">0x00</span><span class="p">;</span>
|
||||
|
||||
<span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">buf</span> <span class="o">=</span> <span class="n">buf</span><span class="p">;</span>
|
||||
<span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">flags</span> <span class="o">=</span> <span class="n">SUB_ADDR_1BYTE</span> <span class="o">|</span> <span class="n">I2C_RD</span><span class="p">;</span>
|
||||
<span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">len</span> <span class="o">=</span> <span class="mi">8</span><span class="p">;</span>
|
||||
<span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">slaveaddr</span> <span class="o">=</span> <span class="mh">0x50</span><span class="p">;</span>
|
||||
<span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">subaddr</span> <span class="o">=</span> <span class="mh">0x00</span><span class="p">;</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">i2c_transfer</span><span class="p">(</span><span class="n">i2c0</span><span class="p">,</span> <span class="o">&</span><span class="n">msg</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="mi">2</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">MSG</span><span class="p">(</span><span class="s">"</span><span class="se">\r\n</span><span class="s"> read:%0x</span><span class="se">\r\n</span><span class="s">"</span><span class="p">,</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">buf</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o"><<</span> <span class="mi">8</span> <span class="o">|</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">buf</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>调用 <code class="docutils literal notranslate"><span class="pre">i2c_transfer</span></code> 传输两个 <code class="docutils literal notranslate"><span class="pre">msg</span></code>,一个 <code class="docutils literal notranslate"><span class="pre">msg</span></code> 代表向 eeprom 写入8字节数据,一个 <code class="docutils literal notranslate"><span class="pre">msg</span></code> 代表从 eeprom 读取8字节数据,</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h2><span class="section-number">7.3. </span>编译和烧录<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
||||
<ul>
|
||||
<li><p><strong>CDK 编译</strong></p>
|
||||
<p>打开项目中提供的工程文件:i2c_at24cxx.cdkproj</p>
|
||||
<p>参照 <a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html#windows-cdk-quick-start"><span class="std std-ref">Windows 下使用 CDK (类 MDK Keil)开发指南</span></a> 的步骤编译下载即可</p>
|
||||
</li>
|
||||
<li><p><strong>命令行编译</strong></p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> <sdk_path>/bl_mcu_sdk
|
||||
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>i2c_at24cxx
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul>
|
||||
<li><p><strong>烧录</strong></p>
|
||||
<p>详见 <a class="reference internal" href="../../get_started/bl_dev_cube.html#bl-dev-cube"><span class="std std-ref">BLDevCube 烧录工具指南</span></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<h2><span class="section-number">7.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
<a href="spi_lcd_demo.html" class="btn btn-neutral float-right" title="8. SPI - TFT LCD 显示" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
<a href="dma_m2m_demo.html" class="btn btn-neutral float-left" title="6. DMA - RAM间数据搬运" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 2021, BouffaloLab Co., Ltd.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,317 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>5. MTIMER - 内核定时器 — BL_MCU_SDK 开发指南 0.2 文档</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/translations.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="索引" href="../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../search.html" />
|
||||
<link rel="next" title="6. DMA - RAM间数据搬运" href="dma_m2m_demo.html" />
|
||||
<link rel="prev" title="4. UART - 数据自收发" href="uart_loopback_demo.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.2
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">快速开发指南</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">API 手册</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_structure.html">1. API 分层模型</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_clock.html">2. 时钟树</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_gpio.html">3. GPIO 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_uart.html">4. UART 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_pwm.html">5. PWM 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dma.html">6. DMA 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_i2c.html">7. I2C 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_spi.html">8. SPI 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_adc.html">9. ADC 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dac.html">10. DAC 设备</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">基础外设例程</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="button_demo.html">2. GPIO 中断 - 按键检测</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="uart_loopback_demo.html">4. UART - 数据自收发</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">5. MTIMER - 内核定时器</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id1">5.1. 硬件连接</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id2">5.2. 软件实现</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id3">5.3. 编译和烧录</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id4">5.4. 实验现象</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="adc_key_demo.html">9. ADC - 按键检测电压</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">进阶例程</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/shell_demo.html">1. SHELL 命令行调试</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/fatfs_demo.html">2. FATFS 文件系统读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/lowpower_demo.html">3. LowPower 低功耗评估</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/boot2_iap_info.html">5. BOOT2 IAP</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">BL_MCU_SDK 开发指南</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><span class="section-number">5. </span>MTIMER - 内核定时器</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../../_sources/samples/basic samples/mtimer_demo.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="mtimer">
|
||||
<h1><span class="section-number">5. </span>MTIMER - 内核定时器<a class="headerlink" href="#mtimer" title="永久链接至标题">¶</a></h1>
|
||||
<blockquote>
|
||||
<div><p>本demo基于 risc-v 内核自带的一个64位定时器(MTIMER)编写。MTIMER最大可以定时500年,本demo可以为后面os tick提供参考。</p>
|
||||
</div></blockquote>
|
||||
<div class="section" id="id1">
|
||||
<h2><span class="section-number">5.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||
<p>无</p>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<h2><span class="section-number">5.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/systick</span></code></p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">mtimer</span></code> 时钟默认经过分频以后为 1M,方便后面使用,减少计算时间。</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span>
|
||||
<span class="normal">3</span>
|
||||
<span class="normal">4</span>
|
||||
<span class="normal">5</span>
|
||||
<span class="normal">6</span>
|
||||
<span class="normal">7</span>
|
||||
<span class="normal">8</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kt">void</span> <span class="nf">systick_isr</span><span class="p">()</span>
|
||||
<span class="p">{</span>
|
||||
<span class="k">static</span> <span class="kt">uint32_t</span> <span class="n">tick</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
|
||||
<span class="n">tick</span><span class="o">++</span><span class="p">;</span>
|
||||
<span class="n">MSG</span><span class="p">(</span><span class="s">"tick:%d</span><span class="se">\r\n</span><span class="s">"</span><span class="p">,</span><span class="n">tick</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="n">bflb_platform_set_alarm_time</span><span class="p">(</span><span class="mi">1000000</span><span class="p">,</span><span class="n">systick_isr</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>使用上述代码设置mtimer定时时间为1s,并且注册中断回调函数。</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h2><span class="section-number">5.3. </span>编译和烧录<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
||||
<ul>
|
||||
<li><p><strong>CDK 编译</strong></p>
|
||||
<p>打开项目中提供的工程文件:systick.cdkproj</p>
|
||||
<p>参照 <a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html#windows-cdk-quick-start"><span class="std std-ref">Windows 下使用 CDK (类 MDK Keil)开发指南</span></a> 的步骤编译下载即可</p>
|
||||
</li>
|
||||
<li><p><strong>命令行编译</strong></p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> <sdk_path>/bl_mcu_sdk
|
||||
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>systick
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul>
|
||||
<li><p><strong>烧录</strong></p>
|
||||
<p>详见 <a class="reference internal" href="../../get_started/bl_dev_cube.html#bl-dev-cube"><span class="std std-ref">BLDevCube 烧录工具指南</span></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<h2><span class="section-number">5.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h2>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">tick</span></code> 值每秒自增1并通过串口打印。</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
<a href="dma_m2m_demo.html" class="btn btn-neutral float-right" title="6. DMA - RAM间数据搬运" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
<a href="uart_loopback_demo.html" class="btn btn-neutral float-left" title="4. UART - 数据自收发" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 2021, BouffaloLab Co., Ltd.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,448 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>8. SPI - TFT LCD 显示 — BL_MCU_SDK 开发指南 0.2 文档</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/translations.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="索引" href="../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../search.html" />
|
||||
<link rel="next" title="9. ADC - 按键检测电压" href="adc_key_demo.html" />
|
||||
<link rel="prev" title="7. I2C - AT24CXX 读写" href="i2c_eeprom_demo.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.2
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">快速开发指南</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">API 手册</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_structure.html">1. API 分层模型</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_clock.html">2. 时钟树</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_gpio.html">3. GPIO 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_uart.html">4. UART 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_pwm.html">5. PWM 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dma.html">6. DMA 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_i2c.html">7. I2C 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_spi.html">8. SPI 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_adc.html">9. ADC 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dac.html">10. DAC 设备</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">基础外设例程</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="button_demo.html">2. GPIO 中断 - 按键检测</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="uart_loopback_demo.html">4. UART - 数据自收发</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">8. SPI - TFT LCD 显示</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id1">8.1. 硬件连接</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id2">8.2. 软件实现</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id3">8.3. 编译和烧录</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id4">8.4. 实验现象</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="adc_key_demo.html">9. ADC - 按键检测电压</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">进阶例程</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/shell_demo.html">1. SHELL 命令行调试</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/fatfs_demo.html">2. FATFS 文件系统读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/lowpower_demo.html">3. LowPower 低功耗评估</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/boot2_iap_info.html">5. BOOT2 IAP</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">BL_MCU_SDK 开发指南</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><span class="section-number">8. </span>SPI - TFT LCD 显示</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../../_sources/samples/basic samples/spi_lcd_demo.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="spi-tft-lcd">
|
||||
<h1><span class="section-number">8. </span>SPI - TFT LCD 显示<a class="headerlink" href="#spi-tft-lcd" title="永久链接至标题">¶</a></h1>
|
||||
<div class="section" id="id1">
|
||||
<h2><span class="section-number">8.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||
<p>本 demo 基于BL706_AVB开发板,<strong>其中 MISO 和MOSI 默认进行了调换</strong>,连接方式如下</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">GPIO</span> <span class="n">function</span> <span class="n">GPIO</span> <span class="n">pin</span>
|
||||
<span class="o">----------------------------------</span>
|
||||
<span class="n">LCD_CS</span> <span class="o"><--></span> <span class="n">GPIO10</span>
|
||||
<span class="n">LCD_DC</span> <span class="o"><--></span> <span class="n">GPIO22</span>
|
||||
<span class="n">SPI_SCK</span> <span class="o"><--></span> <span class="n">GPIO19</span>
|
||||
<span class="n">SPI_MISO</span> <span class="o"><--></span> <span class="n">GPIO20</span>
|
||||
<span class="n">SPI_MOSI</span> <span class="o"><--></span> <span class="n">GPIO21</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<h2><span class="section-number">8.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/spi/spi_lcd</span></code></p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">SPI</span></code> 设备的时钟源由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_avb/clock_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_SPI_CLOCK_SOURCE ROOT_CLOCK_SOURCE_BCLK</span>
|
||||
<span class="cp">#define BSP_SPI_CLOCK_DIV 0</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">SPI</span></code> 设备的复用引脚由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_avb/pinmux_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span>
|
||||
<span class="normal">3</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO19_FUNC GPIO_FUN_SPI</span>
|
||||
<span class="cp">#define CONFIG_GPIO20_FUNC GPIO_FUN_SPI</span>
|
||||
<span class="cp">#define CONFIG_GPIO21_FUNC GPIO_FUN_SPI</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">SPI</span></code> 设备配置由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_avb/peripheral_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span>
|
||||
<span class="normal">14</span>
|
||||
<span class="normal">15</span>
|
||||
<span class="normal">16</span>
|
||||
<span class="normal">17</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_USING_SPI0</span>
|
||||
|
||||
<span class="cp">#if defined(BSP_USING_SPI0)</span>
|
||||
<span class="cp">#ifndef SPI0_CONFIG</span>
|
||||
<span class="cp">#define SPI0_CONFIG \</span>
|
||||
<span class="cp">{ \</span>
|
||||
<span class="cp">.id = 0, \</span>
|
||||
<span class="cp">.clk = 36000000,\</span>
|
||||
<span class="cp">.mode = SPI_MASTER_MODE, \</span>
|
||||
<span class="cp">.direction = SPI_MSB_BYTE0_DIRECTION_FIRST, \</span>
|
||||
<span class="cp">.clk_polaraity = SPI_POLARITY_LOW, \</span>
|
||||
<span class="cp">.clk_phase = SPI_PHASE_1EDGE, \</span>
|
||||
<span class="cp">.datasize = SPI_DATASIZE_8BIT, \</span>
|
||||
<span class="cp">.fifo_threshold = 4, \</span>
|
||||
<span class="cp">}</span>
|
||||
<span class="cp">#endif</span>
|
||||
<span class="cp">#endif</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span>
|
||||
<span class="normal">14</span>
|
||||
<span class="normal">15</span>
|
||||
<span class="normal">16</span>
|
||||
<span class="normal">17</span>
|
||||
<span class="normal">18</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">gpio_set_mode</span><span class="p">(</span><span class="n">LCD_CS_PIN</span><span class="p">,</span><span class="n">GPIO_OUTPUT_MODE</span><span class="p">);</span>
|
||||
<span class="n">gpio_set_mode</span><span class="p">(</span><span class="n">LCD_DC_PIN</span><span class="p">,</span><span class="n">GPIO_OUTPUT_MODE</span><span class="p">);</span>
|
||||
<span class="n">gpio_write</span><span class="p">(</span><span class="n">LCD_CS_PIN</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span> <span class="c1">//CS1</span>
|
||||
<span class="n">gpio_write</span><span class="p">(</span><span class="n">LCD_DC_PIN</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span> <span class="c1">//DC</span>
|
||||
|
||||
<span class="n">spi0</span> <span class="o">=</span> <span class="n">device_find</span><span class="p">(</span><span class="s">"spi0"</span><span class="p">);</span>
|
||||
<span class="k">if</span><span class="p">(</span><span class="n">spi0</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">device_close</span><span class="p">(</span><span class="n">spi0</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
<span class="k">else</span><span class="p">{</span>
|
||||
<span class="n">spi_register</span><span class="p">(</span><span class="n">SPI0_INDEX</span><span class="p">,</span><span class="s">"spi0"</span><span class="p">,</span><span class="n">DEVICE_OFLAG_RDWR</span><span class="p">);</span>
|
||||
<span class="n">spi0</span> <span class="o">=</span> <span class="n">device_find</span><span class="p">(</span><span class="s">"spi0"</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
<span class="k">if</span><span class="p">(</span><span class="n">spi0</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">device_open</span><span class="p">(</span><span class="n">spi0</span><span class="p">,</span><span class="n">DEVICE_OFLAG_STREAM_TX</span><span class="o">|</span><span class="n">DEVICE_OFLAG_STREAM_RX</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>配置 <code class="docutils literal notranslate"><span class="pre">LCD_CS</span></code> 和 <code class="docutils literal notranslate"><span class="pre">LCD_DC</span></code> 引脚为输出模式并拉高</p></li>
|
||||
<li><p>调用 <code class="docutils literal notranslate"><span class="pre">spi_register</span></code> 函数注册 <code class="docutils literal notranslate"><span class="pre">SPI</span></code> 设备,当前注册 <code class="docutils literal notranslate"><span class="pre">SPI0</span></code></p></li>
|
||||
<li><p>然后通过 <code class="docutils literal notranslate"><span class="pre">find</span></code> 函数找到设备对应的句柄,保存于 <code class="docutils literal notranslate"><span class="pre">spi0</span></code> 句柄中</p></li>
|
||||
<li><p>最后使用 <code class="docutils literal notranslate"><span class="pre">device_open</span></code> 以轮询发送模式来打开 <code class="docutils literal notranslate"><span class="pre">spi0</span></code> 设备</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span>
|
||||
<span class="normal">14</span>
|
||||
<span class="normal">15</span>
|
||||
<span class="normal">16</span>
|
||||
<span class="normal">17</span>
|
||||
<span class="normal">18</span>
|
||||
<span class="normal">19</span>
|
||||
<span class="normal">20</span>
|
||||
<span class="normal">21</span>
|
||||
<span class="normal">22</span>
|
||||
<span class="normal">23</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kt">void</span> <span class="nf">LCD_WR_Byte</span><span class="p">(</span><span class="kt">uint8_t</span> <span class="n">data</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">CS1_LOW</span><span class="p">;</span>
|
||||
<span class="n">DC_HIGH</span><span class="p">;</span>
|
||||
<span class="n">spi_transmit</span><span class="p">(</span><span class="n">spi0</span><span class="p">,</span><span class="o">&</span><span class="n">data</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">SPI_TRANSFER_TYPE_8BIT</span><span class="p">);</span>
|
||||
<span class="n">CS1_HIGH</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="kt">void</span> <span class="nf">LCD_WR_HalfWord</span><span class="p">(</span><span class="kt">uint16_t</span> <span class="n">data</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">CS1_LOW</span><span class="p">;</span>
|
||||
<span class="n">DC_HIGH</span><span class="p">;</span>
|
||||
<span class="n">spi_transmit</span><span class="p">(</span><span class="n">spi0</span><span class="p">,</span><span class="o">&</span><span class="n">data</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">SPI_TRANSFER_TYPE_16BIT</span><span class="p">);</span>
|
||||
<span class="n">CS1_HIGH</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="kt">void</span> <span class="nf">LCD_WR_Word</span><span class="p">(</span><span class="kt">uint32_t</span> <span class="n">data</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">CS1_LOW</span><span class="p">;</span>
|
||||
<span class="n">DC_HIGH</span><span class="p">;</span>
|
||||
<span class="n">spi_transmit</span><span class="p">(</span><span class="n">spi0</span><span class="p">,</span><span class="o">&</span><span class="n">data</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">SPI_TRANSFER_TYPE_32BIT</span><span class="p">);</span>
|
||||
<span class="n">CS1_HIGH</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>为 LCD 显示驱动提供接口</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h2><span class="section-number">8.3. </span>编译和烧录<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
||||
<ul>
|
||||
<li><p><strong>CDK 编译</strong></p>
|
||||
<p>打开项目中提供的工程文件:spi_lcd.cdkproj</p>
|
||||
<p>参照 <a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html#windows-cdk-quick-start"><span class="std std-ref">Windows 下使用 CDK (类 MDK Keil)开发指南</span></a> 的步骤编译下载即可</p>
|
||||
</li>
|
||||
<li><p><strong>命令行编译</strong></p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> <sdk_path>/bl_mcu_sdk
|
||||
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_avb <span class="nv">APP</span><span class="o">=</span>spi_lcd
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul>
|
||||
<li><p><strong>烧录</strong></p>
|
||||
<p>详见 <a class="reference internal" href="../../get_started/bl_dev_cube.html#bl-dev-cube"><span class="std std-ref">BLDevCube 烧录工具指南</span></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<h2><span class="section-number">8.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
<a href="adc_key_demo.html" class="btn btn-neutral float-right" title="9. ADC - 按键检测电压" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
<a href="i2c_eeprom_demo.html" class="btn btn-neutral float-left" title="7. I2C - AT24CXX 读写" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 2021, BouffaloLab Co., Ltd.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,430 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>4. UART - 数据自收发 — BL_MCU_SDK 开发指南 0.2 文档</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/translations.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="索引" href="../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../search.html" />
|
||||
<link rel="next" title="5. MTIMER - 内核定时器" href="mtimer_demo.html" />
|
||||
<link rel="prev" title="3. PWM - 呼吸灯" href="breath_pwm_demo.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="version">
|
||||
0.2
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="caption"><span class="caption-text">快速开发指南</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">API 手册</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_structure.html">1. API 分层模型</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_clock.html">2. 时钟树</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_gpio.html">3. GPIO 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_uart.html">4. UART 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_pwm.html">5. PWM 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dma.html">6. DMA 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_i2c.html">7. I2C 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_spi.html">8. SPI 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_adc.html">9. ADC 设备</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api_reference/api_dac.html">10. DAC 设备</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">基础外设例程</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="button_demo.html">2. GPIO 中断 - 按键检测</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">4. UART - 数据自收发</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id1">4.1. 硬件连接</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id2">4.2. 软件实现</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id3">4.3. 编译和烧录</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#id4">4.4. 实验现象</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="adc_key_demo.html">9. ADC - 按键检测电压</a></li>
|
||||
</ul>
|
||||
<p class="caption"><span class="caption-text">进阶例程</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/shell_demo.html">1. SHELL 命令行调试</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/fatfs_demo.html">2. FATFS 文件系统读写</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/lowpower_demo.html">3. LowPower 低功耗评估</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../advance%20samples/boot2_iap_info.html">5. BOOT2 IAP</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">BL_MCU_SDK 开发指南</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><span class="section-number">4. </span>UART - 数据自收发</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="../../_sources/samples/basic samples/uart_loopback_demo.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="uart">
|
||||
<h1><span class="section-number">4. </span>UART - 数据自收发<a class="headerlink" href="#uart" title="永久链接至标题">¶</a></h1>
|
||||
<blockquote>
|
||||
<div><p>本demo基于 UART 外设轮询发送、接收FIFO中断模式编写。</p>
|
||||
</div></blockquote>
|
||||
<div class="section" id="id1">
|
||||
<h2><span class="section-number">4.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||
<p>本 demo 基于BL706_IOT开发板,连接方式如下</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">GPIO</span> <span class="n">function</span> <span class="n">GPIO</span> <span class="n">pin</span>
|
||||
<span class="o">----------------------------------</span>
|
||||
<span class="n">UART0_TX</span> <span class="o"><--></span> <span class="n">GPIO14</span>
|
||||
<span class="n">UART0_RX</span> <span class="o"><--></span> <span class="n">GPIO15</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id2">
|
||||
<h2><span class="section-number">4.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/uart/uart_echo</span></code></p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">UART</span></code> 设备的时钟源由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/clock_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_UART_CLOCK_SOURCE ROOT_CLOCK_SOURCE_PLL_96M</span>
|
||||
<span class="cp">#define BSP_UART_CLOCK_DIV 0</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">UART</span></code> 设备的复用引脚由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/pinmux_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX</span>
|
||||
<span class="cp">#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">UART</span></code> 设备配置由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code> 来配置</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span>
|
||||
<span class="normal">14</span>
|
||||
<span class="normal">15</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_USING_UART0</span>
|
||||
|
||||
<span class="cp">#if defined(BSP_USING_UART0)</span>
|
||||
<span class="cp">#ifndef UART0_CONFIG</span>
|
||||
<span class="cp">#define UART0_CONFIG \</span>
|
||||
<span class="cp">{ \</span>
|
||||
<span class="cp">.id = 0, \</span>
|
||||
<span class="cp">.baudrate = 2000000,\</span>
|
||||
<span class="cp">.databits = UART_DATA_LEN_8, \</span>
|
||||
<span class="cp">.stopbits = UART_STOP_ONE, \</span>
|
||||
<span class="cp">.parity = UART_PAR_NONE, \</span>
|
||||
<span class="cp">.fifo_threshold = 1, \</span>
|
||||
<span class="cp">}</span>
|
||||
<span class="cp">#endif</span>
|
||||
<span class="cp">#endif</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">bflb_platform_init</span><span class="p">();</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>在 <code class="docutils literal notranslate"><span class="pre">bflb_platform_init</span></code> 函数中,我们已经注册并且打开了一个调试用的串口设备,给用户实现一个 <code class="docutils literal notranslate"><span class="pre">MSG</span></code> 的基本功能用作打印输出报文。具体实现如下</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span>
|
||||
<span class="normal">3</span>
|
||||
<span class="normal">4</span>
|
||||
<span class="normal">5</span>
|
||||
<span class="normal">6</span>
|
||||
<span class="normal">7</span>
|
||||
<span class="normal">8</span>
|
||||
<span class="normal">9</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">uart_register</span><span class="p">(</span><span class="n">board_get_debug_uart_index</span><span class="p">(),</span> <span class="s">"debug_log"</span><span class="p">,</span> <span class="n">DEVICE_OFLAG_RDWR</span><span class="p">);</span>
|
||||
<span class="k">struct</span> <span class="nc">device</span> <span class="o">*</span><span class="n">uart</span> <span class="o">=</span> <span class="n">device_find</span><span class="p">(</span><span class="s">"debug_log"</span><span class="p">);</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">uart</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">device_open</span><span class="p">(</span><span class="n">uart</span><span class="p">,</span> <span class="n">DEVICE_OFLAG_STREAM_TX</span> <span class="o">|</span> <span class="n">DEVICE_OFLAG_INT_RX</span><span class="p">);</span>
|
||||
<span class="n">device_set_callback</span><span class="p">(</span><span class="n">uart</span><span class="p">,</span> <span class="n">uart_iqr_callback</span><span class="p">);</span>
|
||||
<span class="n">device_control</span><span class="p">(</span><span class="n">uart</span><span class="p">,</span> <span class="n">DEVICE_CTRL_SET_INT</span><span class="p">,</span> <span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="p">)(</span><span class="n">UART_RX_FIFO_IT</span><span class="p">));</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>首先调用 <code class="docutils literal notranslate"><span class="pre">uart_register</span></code> 函数注册 <code class="docutils literal notranslate"><span class="pre">UART</span></code> 设备,当前注册 <code class="docutils literal notranslate"><span class="pre">UART0</span></code></p></li>
|
||||
<li><p>然后通过 <code class="docutils literal notranslate"><span class="pre">find</span></code> 函数找到设备对应的句柄,保存于 <code class="docutils literal notranslate"><span class="pre">uart</span></code> 句柄中</p></li>
|
||||
<li><p>最后使用 <code class="docutils literal notranslate"><span class="pre">device_open</span></code> 以轮询发送和中断接收来打开 <code class="docutils literal notranslate"><span class="pre">uart</span></code> 设备,调用 <code class="docutils literal notranslate"><span class="pre">device_set_callback</span></code> 注册一个 <code class="docutils literal notranslate"><span class="pre">UART0</span></code> 中断回调函数,调用 <code class="docutils literal notranslate"><span class="pre">device_control</span></code> 开启 <code class="docutils literal notranslate"><span class="pre">UART</span> <span class="pre">RX</span> <span class="pre">FIFO</span></code> 中断</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span>
|
||||
<span class="normal">3</span>
|
||||
<span class="normal">4</span>
|
||||
<span class="normal">5</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="p">(</span><span class="n">uart</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">device_set_callback</span><span class="p">(</span><span class="n">uart</span><span class="p">,</span> <span class="n">uart_irq_callback</span><span class="p">);</span>
|
||||
<span class="n">device_control</span><span class="p">(</span><span class="n">uart</span><span class="p">,</span> <span class="n">DEVICE_CTRL_SET_INT</span><span class="p">,</span> <span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="p">)(</span><span class="n">UART_RX_FIFO_IT</span><span class="o">|</span><span class="n">UART_RTO_IT</span><span class="p">));</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
<li><p>通过 <code class="docutils literal notranslate"><span class="pre">device_set_callback</span></code> 函数,注册用户指定的中断服务函数。通过 <code class="docutils literal notranslate"><span class="pre">device_control</span></code> 函数打开 <code class="docutils literal notranslate"><span class="pre">RX</span> <span class="pre">FIFO</span></code> 和 <code class="docutils literal notranslate"><span class="pre">RTO</span></code> 中断</p></li>
|
||||
</ul>
|
||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kt">void</span> <span class="nf">uart_irq_callback</span><span class="p">(</span><span class="k">struct</span> <span class="nc">device</span> <span class="o">*</span><span class="n">dev</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">size</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">state</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">state</span> <span class="o">==</span> <span class="n">UART_EVENT_RX_FIFO</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">device_write</span><span class="p">(</span><span class="n">dev</span><span class="p">,</span><span class="mi">0</span><span class="p">,(</span><span class="kt">uint8_t</span> <span class="o">*</span><span class="p">)</span><span class="n">args</span><span class="p">,</span><span class="n">size</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
<span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">state</span> <span class="o">==</span> <span class="n">UART_EVENT_RTO</span><span class="p">)</span>
|
||||
<span class="p">{</span>
|
||||
<span class="n">device_write</span><span class="p">(</span><span class="n">dev</span><span class="p">,</span><span class="mi">0</span><span class="p">,(</span><span class="kt">uint8_t</span> <span class="o">*</span><span class="p">)</span><span class="n">args</span><span class="p">,</span><span class="n">size</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul>
|
||||
<li><p>此函数是示例的中断服务函数,作用是将接受到的数据原封不动的发送出去。</p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">state</span></code> 会返回 <code class="docutils literal notranslate"><span class="pre">UART</span></code> 设备的中断类型</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">args</span></code> 包含了返回数据指针</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">size</span></code> 包含返回数据的长度</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">dev</span></code> 为中断的 <code class="docutils literal notranslate"><span class="pre">uart</span></code> 设备句柄</p></li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
</li>
|
||||
<li><p>当中断产生,将会调用 <code class="docutils literal notranslate"><span class="pre">device_write</span></code> 函数将接受到的数据发送回去。</p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h2><span class="section-number">4.3. </span>编译和烧录<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
||||
<ul>
|
||||
<li><p><strong>CDK 编译</strong></p>
|
||||
<p>打开项目中提供的工程文件:uart_echo.cdkproj</p>
|
||||
<p>参照 <a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html#windows-cdk-quick-start"><span class="std std-ref">Windows 下使用 CDK (类 MDK Keil)开发指南</span></a> 的步骤编译下载即可</p>
|
||||
</li>
|
||||
<li><p><strong>命令行编译</strong></p></li>
|
||||
</ul>
|
||||
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> <sdk_path>/bl_mcu_sdk
|
||||
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>uart_echo
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul>
|
||||
<li><p><strong>烧录</strong></p>
|
||||
<p>详见 <a class="reference internal" href="../../get_started/bl_dev_cube.html#bl-dev-cube"><span class="std std-ref">BLDevCube 烧录工具指南</span></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<h2><span class="section-number">4.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h2>
|
||||
<p>见视频展示:</p>
|
||||
<iframe src="//player.bilibili.com/player.html?aid=887712205&bvid=BV1xK4y1P7ur&cid=330261457&page=5" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe></div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
<a href="mtimer_demo.html" class="btn btn-neutral float-right" title="5. MTIMER - 内核定时器" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
<a href="breath_pwm_demo.html" class="btn btn-neutral float-left" title="3. PWM - 呼吸灯" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 版权所有 2021, BouffaloLab Co., Ltd.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Add a link
Reference in a new issue