版本协议

Public Domain

标签
专业版
#第十届立创电赛#SF32LB52桌面小智

创建时间:4周前

29 0

描述

<div> <h3 style="line-height:1.8">* 1、项目功能介绍</h3> <hr> <p style="line-height:1.8">本项目基于立创开源蓝牙模组  SF32LB52 的小智 AI 对话机器人,实现AI实时语音对话。它能够听懂你的情绪,解答你的疑惑,也能分享你的快乐。在基础营的版本上,重新进行了PCB板的规划设计,从方形改为圆形,并且加载了充电回路和锂电池设计,功放喇叭也挑选了紧凑型</p> <h3 style="line-height:1.8">*2、项目属性</h3> <h3 style="line-height:1.8">* 3、开源协议</h3> <hr> <p><span>协议名</span></p> <p><span>Public Domain</span></p> <p><span>GPL 3.0</span></p> <h3 style="line-height:1.8">*4、硬件部分</h3> <div> <h2><strong>主控部分</strong></h2> <div> </div> <div>主控用的是 [立创·开源SF32LB52模组](<u>https://item.szlcsc.com/45024582.html</u>),一款蓝牙低功耗芯片,频率 <strong>240MHz</strong>,集成 8MB PSRAM 和 16MB Flash,支持锂电池直接供电。BLE 连接功耗(1S间隔)仅需 7μA,BT连接功耗(1S间隔)仅需 10μA,BLE + BT 双连接功耗比同行单BT连接功耗还能降低 60%。</div> <div> </div> <div>模组支持 BT PAN 功能可以直接连接手机上网,相比 WIFI 功耗更低,更加适合电池场景,带屏连接功耗仅 <strong>30mA</strong>。</div> <div> </div> <div>在本项目中,直接让电池电源直连模组的电源输入引脚 VSYS。这里需要注意<span style="color:#d83931"><code>该模组电压范围要求 3.7V~4.7V</code></span>。3.3V 和 5V 供电都不行。</div> <div> </div> <div>模组的 VDD33_VOUT2 是由软件控制输出的,需要芯片正常启动后才有输出3V3。</div> <div> </div> <div>模组与其他电路模块的连接情况</div> <div><span>暂时无法在飞书文档外展示此内容</span></div> <h2><strong>音频功放部分</strong></h2> <br> <div>音频功放主要以上图的 U6 为主,它型号是 LM4871,是一款 3W、单声道 AB 类音频功率放大器,工作电压 1.9 - 5.5V。</div> <br> <div>关于该电路每一个器件为什么这么放,是参考手册中的典型应用电路。其数据手册上的典型应用电路如下:</div> <br> <div>根据数据手册的典型应用电路的推荐和我们项目的实际情况,最后采用的是 <code>差分输入模式的典型应用电路</code>。</div> <div> </div> <div>这里有一个问题,虽然我们按照了典型应用电路放置了对应器件,但是器件的值跟典型电路是不一致的。为什么这么做?是为了低成本考虑,典型应用电路中,用到了 10K 20K 1UF 0.39UF 等器件,而我们为了购买器件少一点,让电路更简洁,将电阻统一改为 10K,电容改为常用的 100nF(0.1UF) 和 22UF。实测没有问题。</div> <div> </div> <div>器件的 1 脚 Shutdown 是芯片掉电控制引脚,为高电平时功放停止工作实现低功耗;为低电平时功放正常工作。在原理图中通过 R4 电阻让该引脚默认为高电平即芯片默认停止工作,当需要功放工作时,需要主控的 PA26 引脚输出低电平才能工作,这样只有需要用的时候才开,不用的时候默认关闭。</div> <div> <div> <div style="background-color:#f0fbef;border-color:#b7edb1;border-radius:8px"> <div><strong>声音大小控制</strong></div> <div>通过实际测试发现,项目原理图中的 R7 和 R8 电阻跟声音大小成线性关系,两个电阻越大,声音越小;两个电阻越小,声音越大。但是声音的大小始终不会超过喇叭的实际可输出声音大小。毕竟该芯片只有 1W 的功放输出。 W 数越大,功率越高,耗电越大,声音越响。</div> </div> </div> </div> <div> <div> <div style="background-color:#f0fbef;border-color:#b7edb1;border-radius:8px"> <div><strong>噪声控制</strong></div> <div>通过实际测试发现,项目原理图中的 C2 和 C5 电容跟噪声消除有关,具体如何调整数值达到理想效果参考该芯片的数据手册说明。这里简洁为一句话:高频噪声放小电容滤除,低频噪声放大电容滤除。</div> </div> </div> </div> <div> </div> <h2><strong>麦克风部分</strong></h2> <div> <table style="border:none;border-collapse:collapse;table-layout:fixed;width:500px"> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:center"><img src="//"></div> </td> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:center"><strong>麦克风部分的电路</strong></div> </td> </tr> </table> </div> <div>麦克风咪头(通常为驻极体话筒)的核心是一个<strong>可振动</strong>的极板(振膜)与固定背极板组成的电容。</div> <div> </div> <div>当声音振动波作用在振膜上时,会导致其与背极板的距离动态变化,从而改变电容值。当有声音时,器件内部电容发生变化,这一变化会引发电容两端的电荷移动,产生微弱的交流电信号(模拟信号)。</div> <div> </div> <div>但是虽然麦克风内部的驻极体材料自带永久电荷(无需外部供电维持电场),即使没有电源输入,麦克风也能够使用,但是为了确保麦克风能够正常稳定的工作,通常是需要提供一个基准电压(通常2~5V),使内部电容处于预充电状态,确保声音引起的电容变化能转换为有效电流信号。</div> <div> </div> <div>在原理图中,R3 电阻的作用就是给麦克风的正极输入一个基准电压MIC_BIAS,这个电压是由模组控制输出的,由模组控制则可以在要用时才输出,不用时关闭,实现低功耗。R3 的电阻值为 10K,测试效果能够接受,过低则采集的音频信号弱,过高则易引入噪声。</div> <div> </div> <div>在原理图中,U4 电容的作用就是对采集的信号进行滤波,滤除高频噪声,大多是滤除滋滋滋的声音或者声音沙哑问题。</div> <div> </div> <h2><strong>屏幕显示部分</strong></h2> <div> <table style="border:none;border-collapse:collapse;table-layout:fixed;width:500px"> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:center"><img src="//"></div> </td> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:center"><strong>屏幕显示部分的电路</strong></div> </td> </tr> </table> </div> <div>屏幕显示使用的是 1.69寸TFT屏幕,采购自 <a href="https://item.taobao.com/item.htm?id=694205959541" target="_blank">金逸晨1.69寸TFT液晶屏ST7789小屏240x280显示器LCD圆角屏SPI彩屏</a>,</div> <div>屏幕通过SPI协议控制,供电 3.3V。</div> <div> </div> <div>这里SPI的通信控制信号引脚,可以使用主控的硬件SPI外设,实现更高的通信速率,更快的屏幕刷新。但是使用主控的硬件SPI外设,则需要选择特定的引脚。</div> <div> </div> <div><strong>模组与屏幕的连接</strong></div> <div> <table style="border:none;border-collapse:collapse;table-layout:fixed;width:500px"> <tr style="height:39px"> <th style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:left">模组</div> </th> <th style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:left">1.69寸TFT屏幕</div> </th> <th style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:left">说明</div> </th> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">GND</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">GND</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:left">屏幕电源地</div> </td> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">VDD33_VOUT2</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">VCC</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:left">屏幕电源输入</div> </td> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">PA04</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">DO(SCL)</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:left">屏幕通信时钟引脚</div> </td> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">PA05</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">D1(SDA)</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:left">屏幕通信数据引脚</div> </td> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">PA00</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">RES</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:left">屏幕屏幕复位引脚</div> </td> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">PA06</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">D/C</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:left">屏幕读写功能引脚</div> </td> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">PA03</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">CS</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:left">屏幕通信片选引脚</div> </td> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">PA42</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:center">BLK</div> </td> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top" colspan="1" rowspan="1"> <div style="text-align:left">屏幕背光控制引脚,高电平屏幕背光亮</div> </td> </tr> </table> </div> <div><strong>模组的引脚复用表</strong></div> <div> <table style="border:none;border-collapse:collapse;table-layout:fixed;width:500px"> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:center"><img src="//"></div> </td> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:center"><strong>模组的引脚复用表</strong></div> </td> </tr> </table> </div> <h2><strong>按键部分</strong></h2> <div> <table style="border:none;border-collapse:collapse;table-layout:fixed;width:500px"> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:center"><img src="//"></div> </td> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:center"><strong>按键部分的电路</strong></div> </td> </tr> </table> </div> <div>每一个项目基本都需要有人机交互部分,本项目通过按键进行控制,U2 PA34_KEY 是唤醒键 + 语音输入键,按下 U2 按键可以让主控从低功耗睡眠状态唤醒,当主控正在工作时,按下按键进行语音输入。</div> <div> </div> <div>U1按键目前待定用途,设计出来备用。</div> <div> </div> <h2><strong>指示灯部分</strong></h2> <div> <table style="border:none;border-collapse:collapse;table-layout:fixed;width:500px"> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:center"><img src="//"></div> </td> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:center"><strong>指示灯部分的电路</strong></div> </td> </tr> </table> </div> <div> </div> <div>用于指示模组状态。通过模组IO控制。IO输出低电平LED灯亮,IO输出高电平LED灯灭。</div> <div> </div> <h2><strong>下载部分</strong></h2> <div> <table style="border:none;border-collapse:collapse;table-layout:fixed;width:500px"> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:center"><img src="//"></div> </td> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:center"><strong>串口下载部分的电路</strong></div> </td> </tr> </table> </div> <div> </div> <div>模组的下载是通过串口进行下载的,必须使用 PA18 和 PA19 引脚下载。</div> <div> </div> <div>本项目直接使用 <a href="https://item.szlcsc.com/51679391.html?fromZone=s_s__%2522CH340X%2522&spm=sc.gbn.xh2.zy.t___sc.hm.hd.ss&lcsc_vid=QVhbAlYAFlcKVQIAFQBcBFNSElNbUgFTTlNXXgZVTwIxVlNTRlVbV1dUQ1BXVDtW" target="_blank">CH340X 模块</a>的接口作为下载器。实测能够正常下载和串口调试通信。</div> <div> <table style="border:none;border-collapse:collapse;table-layout:fixed;width:500px"> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:center"><img src="//"></div> </td> </tr> <tr style="height:39px"> <td style="border:1px solid #dee0e3;font-size:10pt;padding:8px;vertical-align:top;font-weight:500;background-color:#f2f3f5;text-align:left" colspan="1" rowspan="1"> <div style="text-align:center"><strong>串口下载器</strong></div> </td> </tr> </table> </div> </div> <p style="line-height:1.8"> </p> <h3 style="line-height:1.8">*5、软件部分</h3> <hr> <p style="line-height:1.8"> </p> <div> <h2>硬件准备</h2> <h3>前置准备</h3> <div>因训练营中每位同学的设计都有可能不同,在此仅介绍参考设计的硬件,有改动的同学可以进行参考并针对自己的板子进行相关调整。</div> <ol> <li style="text-align:left"> <div>准备一个 <a href="https://item.szlcsc.com/51679391.html?fromZone=s_s__%2522CH340X%2522&spm=sc.gbn.xh2.zy.t___sc.hm.hd.ss&lcsc_vid=QVhbAlYAFlcKVQIAFQBcBFNSElNbUgFTTlNXXgZVTwIxVlNTRlVbV1dUQ1BXVDtW" target="_blank">立创商城 CH340X 串口模块</a></div> </li> <li style="text-align:left"> <div>准备一个 CR123A 电池,需要注意在后续的下载过程中,电池的电量需要保持充足。因为该板子没有其他供电路径,串口模块无法供电!!</div> </li> </ol> <h2>连接喇叭</h2> <div>应该将喇叭连接到板子的喇叭连接器上,注意该板子的功放最大输出功率仅有 1W,建议使用 8Ω的喇叭。</div> <div><img src="//"></div> <h3>连接屏幕</h3> <div>准备一块 1.69寸TFT屏幕。插在屏幕排母上即可。</div> <h2>下载程序</h2> <div>硬件连接完成即可开始下载固件</div> <h3>烧录和使用方法</h3> <h4>前置准备</h4> <div>在开始之前,我们需要进行一些前置工具,请确保完成以下的步骤:</div> <ol> <li style="text-align:left"> <div>sftool: 用于SF32系列SoC芯片的烧录</div> </li> <li style="white-space:pre;text-align:left"> <div>下载固件: 开发板的固件位于 <a href="https://github.com/78/xiaozhi-sf32/releases" target="_blank">https://github.com/78/xiaozhi-sf32/releases</a>,我们下载最新release版本的压缩包。需要注意的是,我们一共需要<code>bootloader.bin</code>、<code>ER_IROM2.bin</code>、<code>ER_IROM3.bin</code>、<code>ER_IROM1.bin</code> 和<code>ftab.bin</code>这五个文件。 建议先下载sftool工具,下载完成后将这些文件放在sftool文件夹中,与sftool.exe同一路径。</div> </li> <li> <div>开发板对应固件:小汤圆直插版(立创训练营): sf32lb52-xty-ai-tht.zip</div> </li> </ol> <h4>下载sftool</h4> <div>sftool 是一个开源软件,可以在<a href="https://github.com/OpenSiFli/sftool" target="_blank">GitHub</a> 上找到它的源码。不过我们现在并不需要关心源码,只需要下载编译好的二进制文件即可。</div> <div>我们可以在<a href="https://github.com/OpenSiFli/sftool/releases" target="_blank">Release</a> 页面中找到最新版本的sftool,其中最靠前的版本并且有着<code>Latest</code>绿色标签的就是最新版本。例如我现在的最新版本上<code>0.1.5</code>,看起来是这样的:</div> <div><img src="//"></div> <div>接下来我们需要选择合适的版本。我们需要根据自己的操作系统和CPU架构来选择合适的版本。sftool支持Linux、Windows和MacOS等操作系统,支持x86_64和aarch64等CPU架构。例如我们是<code>Windows 64bit</code>操作系统,我们就应该选择<code> sftool-0.1.5-x86_64-pc-windows-msvc.zip</code>这个版本,同样的,如果是<code>Windows 32bit</code>的版本,我们就应该选择<code>sftool-0.1.5-i686-pc-windows-msvc.zip</code>这个文件镜像下载。特别的,如果您找不到您系统的文件,那可能需要点击一下<code>Show all assets</code>按钮。</div> <div><img src="//"></div> <div>下载完成之后,我们需要解压这个文件,解压之后我们会得到一个命令行工具,在windows上它的后缀是<code>.exe</code>(sftool.exe),在Linux和MacOS上没有后缀(sftool)。需要注意的是,windows的资源管理器可能会忽略文件的后缀名,因此看起来可能也是<code>sftool</code>。</div> <div> <div> <div style="background-color:#fff5eb;border-color:#fed4a4;border-radius:8px"> <div>对于中国大陆地区用户,可以无法访问<code>Github</code>,因此可使用国内镜像加速链接。例如原链接为:<code>https://github.com/OpenSiFli/sftool/releases/download/0.1.5/sftool-0.1.5-x86_64-pc-windows-msvc.zip</code>,那么我们就将<code>github.com</code>替换为<code>downloads.sifli.com/github_assets</code>,变成<code>https://downloads.sifli.com/github_assets/OpenSiFli/sftool/releases/download/0.1.5/sftool-0.1.5-x86_64-pc-windows-msvc.zip</code>,就可以加速下载了。</div> </div> </div> </div> <h4>sftool 命令格式及使用方法</h4> <div>sftool是一个命令行工具,它有一套自己的命令格式,一般的命令规则如下:</div> <pre style="text-align:left"> </pre> <div>sftool [选项] [选项值] [命令] [命令选项]</div> <pre style="text-align:left"> </pre> <h5>全局选项</h5> <ul> <li style="text-align:left"> <div><code>-c, --chip </code>: 目标芯片类型 (目前支持SF32LB52)</div> </li> <li style="text-align:left"> <div><code>-m, --memory </code>: 存储类型 [nor, nand, sd] (默认: nor)</div> </li> <li style="text-align:left"> <div><code>-p, --port </code>: 串行端口设备路径</div> </li> <li style="text-align:left"> <div><code>-b, --baud </code>: 闪存/读取时使用的串口波特率 (默认: 1000000)</div> </li> <li style="text-align:left"> <div><code>--before </code>: 连接芯片前的操作 [no_reset, soft_reset] (默认: no_reset)</div> </li> <li style="text-align:left"> <div><code>--after </code>: 工具完成后的操作 [no_reset, soft_reset] (默认: soft_reset)</div> </li> <li style="text-align:left"> <div><code>--connect-attempts </code>: 连接尝试次数,负数或0表示无限次 (默认: 7)</div> </li> <li style="text-align:left"> <div><code>--compat</code> : 兼容模式,如果经常出现超时错误或下载后校验失败,则应打开此选项。</div> </li> </ul> <h5>写入闪存命令</h5> <pre style="text-align:left"> </pre> <div># Linux/Macsftool -c SF32LB52 -p /dev/ttyUSB0 write_flash [选项] ...# Windowssftool -c SF32LB52 -p COM9 write_flash [选项] ...</div> <pre style="text-align:left"> </pre> <h5>写入闪存选项</h5> <ul> <li style="text-align:left"> <div><code>--verify</code>: 验证刚写入的闪存数据</div> </li> <li style="text-align:left"> <div><code>-u, --no-compress</code>: 传输期间禁用数据压缩</div> </li> <li style="text-align:left"> <div><code>-e, --erase-all</code>: 在编程前擦除所有闪存区域(不仅仅是写入区域)</div> </li> <li style="text-align:left"> <div><code></code>: 二进制文件及其目标地址,如果文件格式包含地址信息,@地址部分是可选的</div> </li> </ul> <h5>示例</h5> <div>Linux/Mac:</div> <pre style="text-align:left"> </pre> <div># 写入单个文件到闪存sftool -c SF32LB52 -p /dev/ttyUSB0 write_flash app.bin@0x12020000# 写入多个文件到不同地址sftool -c SF32LB52 -p /dev/ttyUSB0 write_flash bootloader.bin@0x12010000 app.bin@0x12020000 ftab.bin@0x12000000# 写入并验证sftool -c SF32LB52 -p /dev/ttyUSB0 write_flash --verify app.bin@0x12020000# 写入前擦除所有闪存sftool -c SF32LB52 -p /dev/ttyUSB0 write_flash -e app.bin@0x12020000</div> <pre style="text-align:left"> </pre> <div>Windows:</div> <pre style="text-align:left"> </pre> <div># 写入多个文件到不同地址sftool -c SF32LB52 -p COM10 write_flash bootloader.bin@0x12010000 app.bin@0x12020000 ftab.bin@0x12000000# 其它同上</div> <pre style="text-align:left"> </pre> <h4>烧录固件</h4> <div style="white-space:pre">使用<a href="https://docs.sifli.com/projects/xiaozhi/sftool.html" target="_blank">sftool工具</a>烧录固件,打开终端之后输入如下命令(Windows): !!!需要注意的是:命令中的 ./sftool.exe 中的斜杠,在不同操作系统中有不同的表现: windows是反斜杠,linux是斜杠。</div> <div>下面是1.2.0-1.2.2版本的烧录命令:</div> <pre> </pre> <div>./sftool.exe -p COM3 -c SF32LB52 write_flash bootloader.bin@0x12010000 ftab.bin@0x12000000 ER_IROM2.bin@0x12A28000 ER_IROM3.bin@0x12228000 ER_IROM1.bin@0x12020000</div> <pre> </pre> <div>1.3.0版本则应该使用下列命令:</div> <pre> </pre> <div>./sftool.exe -p COM3 -c SF32LB52 write_flash bootloader.bin@0x12010000 ftab.bin@0x12000000 ER_IROM2.bin@0x12A28000 ER_IROM3.bin@0x12268000 ER_IROM1.bin@0x12020000</div> <pre> </pre> <div> <div> <div style="background-color:#fff5eb;border-color:#fed4a4;border-radius:8px"> <div style="white-space:pre"><code>bootloader.bin</code>、<code>ER_IROM2.bin</code>、<code>ER_IROM3.bin</code>、<code>ER_IROM1.bin</code> 和<code>ftab.bin</code>是你下载的固件文件名,建议使用绝对路径引用,如果路径中出现中文或者空格请用<code>"</code>将路径括起来。 其中<code>COM3</code>是你连接开发板的串口号,可能会有所不同,请根据实际情况修改。 可以打开设备管理器查看对应串口号:'COM'后面接着的数字就是串口号</div> </div> </div> </div> <div>没有意外的话,烧录完成之后会自动重启运行,屏幕应该被点亮。</div> <h4>蓝牙使用注意事项</h4> <div> <div> <div style="background-color:#fff5eb;border-color:#fed4a4;border-radius:8px"> <div>在连接板子设备之前,请打开手机的蓝牙网络共享功能!!!</div> </div> </div> </div> <h5>Android蓝牙使用注意事项</h5> <div>以下是Android手机的蓝牙设置界面,通过打开个人热点共享中的蓝牙共享网络功能。</div> <div><img src="//"><img src="//"><img src="//"></div> <div> </div> <h5>iOS蓝牙使用注意事项</h5> <div>iOS同样需要打开蓝牙共享网络功能,以下是参考步骤</div> <div><img src="//"><img src="//"><img src="//"></div> <div> </div> <div>⚠ 注意 如果iOS在蓝牙列表未看见sifli-pan 设备,请尝试重启手机。</div> <h3>开始使用</h3> <div>正确烧录固件后,开发板初始化界面如下:</div> <div style="text-align:center"><img src="//"></div> <h4>激活设备</h4> <div>烧录固件之后,确保蓝牙共享网络已打开,这时,手机就可以连接蓝牙 sifli-pan 设备了。 以下是Android手机连接状态示例图:</div> <div style="text-align:center"><img src="//"></div> <div>⚠ 注意:一般情况下,Android连接成功后,连接的蓝牙设备会显示正在向设备共享网络(iOS不会显示),我们可以以此确定是否成功开启蓝牙网络共享</div> <div>⚠ 连接上sifli-pan设备后,开发板会有连接画面提示,此时按下对话按键(参考对应硬件支持查看对话按键),xiaozhi则会提示需要登录到控制面板,填设备码。</div> <div><img src="//"><img src="//"></div> <div style="text-align:center">1</div> <div><img src="//"><img src="//"></div> <div style="text-align:center">3</div> <div style="text-align:center">2</div> <div style="text-align:center">4</div> <div> </div> <div>⚠ 这个时候,打开浏览器,输入网址:<a href="https://xiaozhi.me/" target="_blank">https://xiaozhi.me</a>。浏览器用手机或者电脑都可以。 进入小智 AI 的网页后,点击控制台,用手机号登录。</div> <div>新建智能体填写,最后添加设备码。</div> <div>这个时候拔掉开发板上的数据线再接入就可以正常使用了</div> <div style="text-align:center"><img src="//"></div> <div style="text-align:center"><img src="//"></div> <div style="text-align:center"><img src="//"></div> <div style="text-align:center"><img src="//"></div> <h4>界面提示含义</h4> <div>出现下方UI提示均是pan断开的情况</div> <div><img src="//"><img src="//"><img src="//"></div> <div> </div> <h4>异常情况:</h4> <ol> <li style="text-align:left"> <div>对应手机的显示可能是未打开蓝牙共享直接连接sifli-pan设备</div> </li> <li style="text-align:left"> <div>蓝牙共享网络关闭</div> </li> <li style="text-align:left"> <div>蓝牙已断开</div> </li> </ol> <div>解决方案:打开蓝牙共享网络重新连接设备</div> <div>下图为蓝牙连接成功但未开启蓝牙共享网络:</div> <div style="text-align:center"><img src="//"></div> <h4>唤醒 & 重连</h4> <h5>唤醒</h5> <div>长时间未对话小智会进入休眠,此时需要按下唤醒键进行唤醒(参考对应硬件支持查看唤醒键)</div> <div style="text-align:center"><img src="//"></div> <h5>重连</h5> <div>支持重连操作:若无主动删除手机匹配列表下的sifli-pan设备,当按下唤醒键也可进行蓝牙重连(参考对应硬件支持查看唤醒键)</div> <div><img src="//"><img src="//"></div> <div> </div> </div> </div>

文档

BOM

暂无

附件

附件名 下载
BOM_Board1_2_PCB1_2_2025-09-08.xlsx
3DShell_PCB1_2.zip
2.jpg
微信视频2025-09-08_213718_571.mp4

成员

评论(0)

  • 表情
    emoji
    小嘉工作篇
    小嘉日常篇
  • 图片
成功
工程所有者当前已关闭评论
goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow