神农鼎 发表于 前天 16:08

帮网友问这个图片


帮网友问这个图片




这个操作怎么样才能下载下去?需要提前刷指定的固件吗?

神农鼎 发表于 前天 16:09


神农鼎 发表于 前天 16:09

<p>好的,信息已经非常充分了。下面我来给您详细解答。</p>
<hr />
<h2>关于 QSPI DMA + SPI DMA 驱动液晶屏程序的下载操作说明</h2>
<h3>回答您最核心的问题:<strong>不需要提前刷指定固件</strong></h3>
<p>这个演示程序本身就是一个完整的用户程序,您需要做的操作流程如下:</p>
<hr />
<h3>完整操作步骤(分两步走)</h3>
<h4>第一步:下载用户程序到单片机</h4>
<ol>
<li><strong>按住 P3.3 按键</strong>,然后给板上电(或按复位键),芯片进入 ISP 下载模式</li>
<li>打开 <strong>STC-ISP 下载软件(6.94P 或更新版本)</strong></li>
<li>选择对应的单片机型号(根据您的图片,可能是 <strong>STC32G144K246</strong> 或 <strong>AI8051U</strong>)</li>
<li>加载本工程的 <strong>hex 文件</strong>(即 QSPI DMA + SPI DMA 驱动液晶屏的程序)</li>
<li><strong>IRC 频率选择</strong>:
<ul>
<li>如果是 <strong>STC32G144K246</strong> 实验箱:选择 <strong>48MHz</strong>(主时钟使用 PLL 60MHz)</li>
<li>如果是 <strong>AI8051U</strong> 实验箱:选择 <strong>40MHz</strong>(频率定义参数在 system.h 中修改)</li>
</ul>
</li>
<li>点击 <strong>下载/编程</strong>,将程序烧录到单片机中</li>
</ol>
<blockquote>
<p>⚠️ <strong>注意</strong>:此时只是把主控程序下载进去了,但外部 Flash(W25Qxx 系列)中还没有图片数据,所以直接上电还不会正常显示动画。</p>
</blockquote>
<hr />
<h4>第二步:使用&quot;串行Flash编程器&quot;工具下载图片到外部 Flash</h4>
<p>这一步是关键,也是您图片中描述的操作:</p>
<ol>
<li><strong>保持按住 P3.3 后重新上电</strong>(或按复位),芯片再次进入 ISP 下载模式</li>
<li>在 STC-ISP 下载软件中,找到 <strong>&quot;串行Flash编程器&quot;</strong> 工具
<ul>
<li>位置:软件界面 → <strong>&quot;串行Flash编程器&quot;</strong> 选项卡(在 6.94P 版本中,位于&quot;发送文件窗口&quot;右下角)</li>
</ul>
</li>
<li>通过该工具将<strong>多幅图片数据</strong>下载到实验箱板载的 <strong>外部串行 Flash(W25Qxx 系列)</strong> 中
<ul>
<li>该工具支持多文件同时发送</li>
<li>支持自动生成文件分配表数据</li>
</ul>
</li>
<li>下载完成后,<strong>断电,然后重新上电(此时不要按 P3.3)</strong></li>
<li>程序会自动运行,通过 QSPI 读取 Flash 中的图片数据,再通过 P2P DMA 直接发送到 SPI LCD 显示,进入动画显示模式</li>
</ol>
<hr />
<h3>关于&quot;是否需要提前刷指定固件&quot;</h3>
<p><strong>不需要。</strong> 这个演示程序本身已经包含了与&quot;串行Flash编程器&quot;通信以及对 Flash 编程的对应程序。您只需要:</p>
<ol>
<li><strong>先下载本工程的 hex 到单片机</strong>(第一步)</li>
<li><strong>再用串行Flash编程器工具把图片数据灌到外部 Flash</strong>(第二步)</li>
</ol>
<p>两步都完成后,重新上电即可运行。</p>
<hr />
<h3>几个关键注意事项</h3>
<table>
<thead>
<tr>
<th>项目</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>ISP 软件版本</strong></td>
<td>必须使用<strong>6.94P 或更新版本</strong>,才有&quot;串行Flash编程器&quot;工具</td>
</tr>
<tr>
<td><strong>图片取模</strong></td>
<td>使用 ISP 软件中的**&quot;图片取模工具&quot;**,支持将 GIF 文件转换为多帧图片数据,方便做视频级动画</td>
</tr>
<tr>
<td><strong>DMA 数据长度</strong></td>
<td>设置为<strong>38400 字节</strong>(STC32G144K246 版本)</td>
</tr>
<tr>
<td><strong>外部 Flash</strong></td>
<td>实验箱板载的 W25Qxx 系列串行 Flash</td>
</tr>
<tr>
<td><strong>LCD 接口</strong></td>
<td>1.3寸 240×240 SPI 接口彩屏(STC32G144K246 实验箱版本)</td>
</tr>
</tbody>
</table>
<hr />
<h3>总结流程图</h3>
<pre><code>[按住P3.3上电] → [下载hex程序到MCU]
    ↓
[保持按住P3.3重新上电] → [打开&quot;串行Flash编程器&quot;工具] → [将图片数据下载到外部Flash]
    ↓
[断电,松开P3.3,重新上电] → [正常运行,动画显示]
</code></pre>
<p>如果您手头没有实验箱,而是自己画的板子,需要确保:</p>
<ul>
<li>板上有 <strong>外部串行 Flash</strong>(如 W25Q64 / W25Q128)</li>
<li>QSPI 引脚与程序中定义的引脚一致(P7.0~P7.5)</li>
<li>SPI LCD 引脚与程序中定义的引脚一致(P2.2~P2.6)</li>
</ul>
<p>您目前使用的是哪款芯片和哪款实验箱?我可以进一步帮您确认具体的操作细节。</p>
<hr />
<p><a href="https://www.stcaimcu.com/plugin.php?id=twpx_xunsearch&amp;mod=forum&amp;q=%E8%BF%99%E4%B8%AA%E6%93%8D%E4%BD%9C%E6%80%8E%E4%B9%88%E6%A0%B7%E6%89%8D%E8%83%BD%E4%B8%8B%E8%BD%BD%E4%B8%8B%E5%8E%BB%EF%BC%9F%E9%9C%80%E8%A6%81%E6%8F%90%E5%89%8D%E5%88%B7%E6%8C%87%E5%AE%9A%E7%9A%84%E5%9B%BA%E4%BB%B6%E5%90%97%EF%BC%9F&amp;f=_all&amp;m=yes&amp;syn=yes&amp;s=relevance&amp;fid=0">🔍 搜索 &quot;这个操作怎么样才能下载下去?需要提前刷指定的固件吗?&quot;</a></p>
<p><strong>📌 相关论坛讨论</strong></p>
<ol>
<li><a href="https://www.stcaimcu.com/forum.php?mod=viewthread&amp;tid=11288&amp;highlight=%E8%BF%99%E4%B8%AA%E6%93%8D%E4%BD%9C%E6%80%8E%E4%B9%88%E6%A0%B7%E6%89%8D%E8%83%BD%E4%B8%8B%E8%BD%BD%E4%B8%8B%E5%8E%BB%EF%BC%9F%E9%9C%80%E8%A6%81%E6%8F%90%E5%89%8D%E5%88%B7%E6%8C%87%E5%AE%9A%E7%9A%84%E5%9B%BA%E4%BB%B6%E5%90%97%EF%BC%9F&amp;page=15&amp;extra=#pid160131">USB转双串口,芯片 RMB1.2,出厂自带USB程序@Ai8H2K12U-45MHz-SOP16, 量产PCB/SCH开源</a></li>
<li><a href="https://www.stcaimcu.com/forum.php?mod=viewthread&amp;tid=11933&amp;highlight=%E8%BF%99%E4%B8%AA%E6%93%8D%E4%BD%9C%E6%80%8E%E4%B9%88%E6%A0%B7%E6%89%8D%E8%83%BD%E4%B8%8B%E8%BD%BD%E4%B8%8B%E5%8E%BB%EF%BC%9F%E9%9C%80%E8%A6%81%E6%8F%90%E5%89%8D%E5%88%B7%E6%8C%87%E5%AE%9A%E7%9A%84%E5%9B%BA%E4%BB%B6%E5%90%97%EF%BC%9F&amp;page=1&amp;extra=#pid122278">USB-2UART</a></li>
<li><a href="https://www.stcaimcu.com/forum.php?mod=viewthread&amp;tid=21398&amp;highlight=%E8%BF%99%E4%B8%AA%E6%93%8D%E4%BD%9C%E6%80%8E%E4%B9%88%E6%A0%B7%E6%89%8D%E8%83%BD%E4%B8%8B%E8%BD%BD%E4%B8%8B%E5%8E%BB%EF%BC%9F%E9%9C%80%E8%A6%81%E6%8F%90%E5%89%8D%E5%88%B7%E6%8C%87%E5%AE%9A%E7%9A%84%E5%9B%BA%E4%BB%B6%E5%90%97%EF%BC%9F&amp;page=1&amp;extra=#pid197476">无法使用P3.0与P3.1与电脑进行通信</a></li>
</ol>
<p>⏱️ 查找用时 9.1s | 总回答用时 18.6s</p>

神农鼎 发表于 前天 16:12

用的是串口几?







神农鼎 发表于 前天 16:12

<p>好问题!从您之前贴的代码来看,您用的是 <strong>USART2 的 SPI 模式</strong>,也就是通过 <strong>串口2(UART2)</strong> 来模拟 SPI 主机功能。</p>
<p>不过,您图片中那个 <strong>QSPI DMA + SPI DMA 驱动液晶屏</strong> 的演示程序,和您自己写的那个 SPI 配置代码<strong>不是同一个东西</strong>,需要分开说清楚:</p>
<hr />
<h2>1. 您自己写的代码(ADC_SPI_Init)——用的是 USART2 的 SPI 模式</h2>
<p>从您的代码来看:</p>
<pre><code class="language-c">P_SW3 &amp;= ~0x30;   
P_SW3 |= 0x20;       // 选择 USART2 的引脚映射
S2CON = 0x10;      // S2CON 是 USART2 的控制寄存器
USART2CR1 = 0x10;    // USART2 的 SPI 模式控制
</code></pre>
<p>您用的是 <strong>USART2(串口2)</strong> 的 SPI 同步模式,对应的寄存器是:</p>
<ul>
<li><code>S2CON</code> — USART2 控制寄存器</li>
<li><code>USART2CR1</code> — USART2 SPI 模式控制寄存器</li>
<li><code>USART2CR4</code> — USART2 SPI 时钟分频寄存器</li>
<li><code>S2BUF</code> — USART2 数据缓冲寄存器</li>
</ul>
<p><strong>所以答案是:您用的是串口2(USART2)。</strong></p>
<hr />
<h2>2. 图片中那个 QSPI DMA 演示程序——用的是 QSPI + 硬件 SPI</h2>
<p>您图片中那个 <strong>&quot;QSPI DMA + SPI DMA 驱动液晶屏程序&quot;</strong> 是 STC 官方实验箱的演示程序,它用的是:</p>
<table>
<thead>
<tr>
<th>外设</th>
<th>用途</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>QSPI</strong></td>
<td>读取外部 Flash 中的图片数据</td>
<td>使用芯片的硬件 QSPI 外设(不是用串口模拟的)</td>
</tr>
<tr>
<td><strong>硬件 SPI</strong></td>
<td>驱动 LCD 显示</td>
<td>使用芯片的硬件 SPI 外设(也不是用串口模拟的)</td>
</tr>
<tr>
<td><strong>DMA(P2P)</strong></td>
<td>QSPI → SPI 直接传输</td>
<td>外设到外设的 DMA,不经过 CPU</td>
</tr>
</tbody>
</table>
<p>这个演示程序<strong>没有用串口模拟 SPI</strong>,而是用的<strong>真正的硬件 SPI 和 QSPI 外设</strong>。</p>
<hr />
<h2>3. 您的代码和图片中的程序是两回事</h2>
<table>
<thead>
<tr>
<th>项目</th>
<th>您的代码</th>
<th>图片中的演示程序</th>
</tr>
</thead>
<tbody>
<tr>
<td>通信方式</td>
<td><strong>USART2 的 SPI 模式</strong>(串口模拟 SPI)</td>
<td><strong>硬件 QSPI + 硬件 SPI</strong></td>
</tr>
<tr>
<td>目标器件</td>
<td>TLV5638(DAC)</td>
<td>W25Qxx Flash + SPI LCD</td>
</tr>
<tr>
<td>速度</td>
<td>受限于 USART 的 SPI 模式</td>
<td>真正的硬件 SPI/QSPI,速度更快</td>
</tr>
<tr>
<td>适用场景</td>
<td>低速 SPI 从机通信</td>
<td>高速视频级动画显示</td>
</tr>
</tbody>
</table>
<hr />
<p><strong>总结:</strong></p>
<ul>
<li>您代码里用的是 <strong>串口2(USART2)</strong> 的 SPI 模式</li>
<li>图片演示程序用的是 <strong>硬件 QSPI + 硬件 SPI</strong>,跟串口没关系</li>
</ul>
<p>如果您是想把图片中那个演示程序跑起来,那您需要确认您的芯片是否支持 <strong>硬件 QSPI</strong> 和 <strong>硬件 SPI</strong>(以及 DMA),而不是用 USART 的 SPI 模式。您具体用的是哪款芯片?我可以帮您查一下它是否支持这些外设。</p>
<hr />
<p><a href="https://www.stcaimcu.com/plugin.php?id=twpx_xunsearch&amp;mod=forum&amp;q=%E7%94%A8%E7%9A%84%E6%98%AF%E4%B8%B2%E5%8F%A3%E5%87%A0%EF%BC%9F&amp;f=_all&amp;m=yes&amp;syn=yes&amp;s=relevance&amp;fid=0">🔍 搜索 &quot;用的是串口几?&quot;</a></p>
<p><strong>📌 相关论坛讨论</strong></p>
<ol>
<li><a href="https://www.stcaimcu.com/forum.php?mod=viewthread&amp;tid=8251&amp;highlight=%E7%94%A8%E7%9A%84%E6%98%AF%E4%B8%B2%E5%8F%A3%E5%87%A0%EF%BC%9F&amp;page=2&amp;extra=#pid77807">【冲哥版】stc32学习心得</a></li>
<li><a href="https://www.stcaimcu.com/forum.php?mod=viewthread&amp;tid=21221&amp;highlight=%E7%94%A8%E7%9A%84%E6%98%AF%E4%B8%B2%E5%8F%A3%E5%87%A0%EF%BC%9F&amp;page=1&amp;extra=#pid196622">关于 STC 下载软件 用CDC串口下载后,每次都需要重新选择COM口的问题</a></li>
<li><a href="https://www.stcaimcu.com/forum.php?mod=viewthread&amp;tid=348&amp;highlight=%E7%94%A8%E7%9A%84%E6%98%AF%E4%B8%B2%E5%8F%A3%E5%87%A0%EF%BC%9F&amp;page=7&amp;extra=#pid4301">STC-ISP软件更新到 V6.92A</a></li>
</ol>
<p>⏱️ 查找用时 1.0s | 总回答用时 7.1s</p>
页: [1]
查看完整版本: 帮网友问这个图片