描述
<h2>1、项目功能介绍</h2>
<p>本项目设计了一款以ESP32-C3 MCU为控制器、采用MPQ4263 Buck-Boost拓扑进行电压变换的数控电源。主要面向12V/15V/20V PD诱骗 或 12-24V DC电源供电的情况。</p>
<p>首先感谢嘉立创、瑞萨以及其他赞助商对于本届立创电赛的支持,为选手提供学习与实践的平台。再次感谢!</p>
<h2>2、项目属性</h2>
<p>项目首次公开;项目为原创;项目未曾经在其他比赛中获奖;项目未在学校参加过答辩。</p>
<h2>3、开源协议</h2>
<p><span style="color:#FF0000;"><strong>开源协议为CC BY-NC-SA 4.0 若使用该开源项目,请遵守开源协议!</strong></span></p>
<h2>4、硬件部分</h2>
<h3>4.1 基本特征</h3>
<ul>
<li>设备尺寸:L58 x W39.5 x H18 mm(不含编码开关、脚垫和香蕉母座 经典外面不算体积)</li>
<li>输入电压VIN:12V ~ 24V</li>
<li>输出电压VOUT:1.6V ~ 34.352V(理想) / <strong>1.8V ~ 32V(软件)</strong></li>
<li>输出电流IOUT:0 ~ 5.4A(硬件) / <strong>0 ~ 4A(软件)</strong></li>
<li>控制精度:0.1V / 0.1A</li>
<li>输出精度:0.01V / 0.01A</li>
</ul>
<p>说明:</p>
<ol>
<li>输入电压过低时无法使能MPQ4263,系统无输出;电压过高时可能系统可能无法正常工作(高于辅助DC-DC电源有效输入);</li>
<li>测量精度可达小数点后3位,但受制于TFT尺寸、控制效果的原因,软件仅保留小数点后2位显示、小数点后1位输出控制。</li>
</ol>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/6c0015e44a214ad78b03a62079d1c8ba.jpg" alt="尺寸对比.jpg">
与上一版本相比,本项目设计的电源在尺寸大大缩小。</p>
<hr>
<h3>4.2 机械结构</h3>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/6353868852f74476bfb7cd0ac9e704ce.jpg" alt="接口布局.jpg">
设备的接口布局如上图所示。
其中,DC_IN与TYPE-C_IN用于电源输入,有效输入范围为11.5V ~ 24V。</p>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/c270efa516464e9aafa96f9be20614af.jpg" alt="零件图.jpg">
电源的所有构成组件如上图所示。除PCB上元器件外所有零件明细见下表:</p>
<table>
<tr>
<th>零件名称</th>
<th>数量</th>
<th>获取方式</th>
<th>备注</th>
</tr>
<tr>
<td>上壳</td>
<td>1</td>
<td>3D打印</td>
<td>本项目中采用拓竹A1 Aliz PETG耗材打印,见附件。</td>
</tr>
<tr>
<td>下壳</td>
<td>1</td>
<td>3D打印</td>
<td>本项目中采用拓竹A1 Aliz PETG耗材打印,见附件。</td>
</tr>
<tr>
<td>散热块</td>
<td>1</td>
<td>CNC</td>
<td>本项目中采用嘉立创CNC加工,见附件。孔径1.6mm能够自动识别为M2螺纹孔,若需要手动攻丝请选择为光孔。</td>
</tr>
<tr>
<td>1.54"TFT屏幕</td>
<td>1</td>
<td>-</td>
<td>插接 0.5mm间距 12P。</td>
</tr>
<tr>
<td>M2x7+3mm铜柱</td>
<td>4</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>M2x10螺丝</td>
<td>4</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>M2x4x2土八螺母</td>
<td>4</td>
<td>-</td>
<td>需要嵌入上壳中。</td>
</tr>
<tr>
<td>4mm香蕉母座</td>
<td>2</td>
<td>-</td>
<td>颜色不同。</td>
</tr>
</table>
<p>详细机械装配结构见下文。
嘉立创CNC每月免费打样:<a href="https://www.jlc-cnc.com/ac/ACUHiDI0/CP5SzoAs" target="_blank">https://www.jlc-cnc.com/ac/ACUHiDI0/CP5SzoAs</a></p>
<hr>
<h3>4.3 硬件设计思路</h3>
<h4>4.3.1 电源主拓扑与选型</h4>
<p>在上一版本的电源中,采用了Buck的拓扑结构,这一拓扑结构只能实现降压的控制,输出受到VIN的限制。为了获得更宽的输出范围,本次采用了Buck-Boost的升降压拓扑结构。在上一次的MPS征集令项目中,接触到了如MP4248、MPQ4263这样内置下管的Buck-Boost控制器,这样的结构能够大大减小DC-DC部分的footprint,与本次设计的<strong>迷你</strong>电源十分贴切。因此在本次的设计中,采用了MPQ4263作为控制器。除了内置下管外,MPQ4263还能够通过I2C进行通讯,能够减小FB电阻网络部分的设计。对于ESP32-C3此类没有内置DAC的MCU来说,这样的特征是极为有利的。</p>
<h4>4.3.2 电源框架设计</h4>
<p>本项目的电源框架设计大体与上一版本的电源保持一致,主要针对MPQ4263进行适配,并且解决了在上一版本电源设计中发现的硬件缺陷。详细的电源框架设计见:<a href="https://oshwhub.com/carele/carele_power_box_v1" target="_blank">MP9928-ESP32C3 降压型便携数控电源 5.2 电源框架设计</a>。</p>
<p>MPQ4263的外围元件简单,除了Buck-Boost必要的电感、电容与MOSFET外,仅需少量的阻容即可构建系统,利于迷你电源设计。</p>
<p>在输入部分,本次增加P-MOS构建了防反接、缓启动电路,以对系统进行保护。另外,在输出部分,上一版本系统中采用N-MOS控制负端开关的方案,实测关断时输出不能完全被切断、正段对地仍有电压,算是一个设计缺陷。因此在本次设计中采用Pull-Push结构构建开关,用于控制正端的输出,而负端始终接地保持0电位。</p>
<p>输出采样部分,为了节省元件并减少Layout面积,本次输出采样INA226与MPQ4263共用采样电阻。</p>
<hr>
<h3>4.4 控制结构设计</h3>
<p>本次项目的控制结构设计大体与上一版本保持一致。详见:<a href="https://oshwhub.com/carele/carele_power_box_v1" target="_blank">MP9928-ESP32C3 降压型便携数控电源 5.3 控制结构设计</a>。</p>
<p>不同的是,本次对于DC-DC拓扑的控制并不是采用PWM实现的,而是通过I2C总线对MPQ4263寄存器写入。</p>
<hr>
<h3>4.5 MCU IO配置</h3>
<p>本项目所需的IO如下表所示:</p>
<table>
<tr>
<th>项目</th>
<th>IO名</th>
<th>IO数量</th>
<th>备注</th>
</tr>
<tr>
<td>SPI</td>
<td>SCK / MOSI / D/C / RSE</td>
<td>4</td>
<td>若要使用硬件SPI需要使用特定引脚</td>
</tr>
<tr>
<td>I2C</td>
<td>SCL / SDA</td>
<td>2</td>
<td>-</td>
</tr>
<tr>
<td>USB</td>
<td>USB_D+ / USB_D-</td>
<td>2</td>
<td>固定为IO19 / IO18</td>
</tr>
<tr>
<td>VADC</td>
<td>-</td>
<td>1</td>
<td>需要ADC1</td>
</tr>
<tr>
<td>OCTRL</td>
<td>-</td>
<td>1</td>
<td>-</td>
</tr>
<tr>
<td>KEY1</td>
<td>-</td>
<td>1</td>
<td>为方便烧录选择IO9 BOOT</td>
</tr>
<tr>
<td>编码器开关</td>
<td>KEY2 / KEYA / KEYB</td>
<td>3</td>
<td>-</td>
</tr>
<tr>
<td>Reserve</td>
<td>-</td>
<td>1</td>
<td>保留/未使用</td>
</tr>
</table>
<table>
<tr>
<th>最后分配IO表如下所示:</th>
<th>项目</th>
<th>IO名</th>
<th>IO号</th>
<th>备注</th>
</tr>
<tr>
<td>SPI</td>
<td>SCK / MOSI / D/C / RSE</td>
<td>6 / 7 / 4 / 5</td>
<td>使用软件SPI</td>
</tr>
<tr>
<td>I2C</td>
<td>SCL / SDA</td>
<td>20 / 21</td>
<td>使用硬件I2C</td>
</tr>
<tr>
<td>USB</td>
<td>USB_D+ / USB_D-</td>
<td>19 / 18</td>
<td>固定为IO19 / IO18</td>
</tr>
<tr>
<td>VADC</td>
<td>-</td>
<td>0</td>
<td>ADC1_CH0</td>
</tr>
<tr>
<td>OCTRL</td>
<td>-</td>
<td>3</td>
<td>-</td>
</tr>
<tr>
<td>KEY1</td>
<td>-</td>
<td>9</td>
<td>与BOOT功能共用引脚</td>
</tr>
<tr>
<td>编码器开关</td>
<td>KEY2 / KEYA / KEYB</td>
<td>2 / 8 / 10</td>
<td>-</td>
</tr>
<tr>
<td>Reserve</td>
<td>-</td>
<td>1</td>
<td>保留/未使用</td>
</tr>
</table>
<p>IO的使用大体与上一版本一致。</p>
<h2>5、软件部分</h2>
<h3>5.1 软件框架</h3>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/4449de4bdfee43f1b2044a3f2237f8be.jpg" alt="软件框架.jpg"></p>
<p>先前版本在定时器中断服务函数中对DC-DC控制量进行刷新,但是本次采用I2C总线进行通讯,无法在中断服务函数中完成(至少我碰到的是这样的情况),因此将MPQ4263的写入部分移入<code>loop()</code>中。</p>
<hr>
<h3>5.2 各模块设计介绍</h3>
<p>本项目中大部分的模块设计沿用了上一版本设计。</p>
<h4>5.2.1 TFT显示</h4>
<p>本项目中,采用<code>TFT_eSPI.h</code>库进行显示驱动。使用方法较为简单,通过相应的函数绘制需要的文字、图形等即可实现。值得注意的是:</p>
<ul>
<li>
<p>需要根据设备情况在<code>User_Setup.h</code>中更新对应设置
该库的正确调用需要在<code>User_Setup.h</code>设置对应的引脚、驱动型号、频率等参数,注意看注释说明。</p>
</li>
<li>
<p>刷新采用缓冲区的形式刷新
在之前的ESP32-S3数字电源项目中,同样使用了<code>TFT_eSPI.h</code>库。在之前的使用中发现刷新会出现频闪的情况,但没有找到解决方法(属于是学习不够到位)。在本次项目的设计过程中,发现了缓冲区的形式能够避免频闪情况。
通过<code>createSprite()</code>函数能够创建Sprite对象(缓冲区)。在后续的刷新中,可以对缓冲区内容进行更新,更新后再一次性发送缓冲区中的内容,避免频闪情况的出现。较为简单的形式是将整个屏幕创建为一个缓冲区,只对这个缓冲区进行编辑-发送。</p>
</li>
</ul>
<h4>5.2.2 非易失性存储NVS</h4>
<p>NVS是ESP32中的一种功能,其能够将Flash中的部分区域划分为NVS,可在其中存取数据,这些数据不像RAM中的数据一样,不会在掉电后丢失。能够用来存储一些运行中可能会更改的、需要永久保留的重要设置信息(例如本项目中的PID参数、电压电流设置)。
通过<code>nvs_flash_init()</code>能够在Flash中划分出一定区域作为NVS,<code>nvs_set_xx</code>系列函数进行写入、<code>nvs_get_xx</code>系列函数进行读取,即可实现非易失存取。
NVS的储存形式为键值对,与Json的形式类似,对“键”进行命名,并在对应“键”存入“值”。
需要注意的是,ESP32-C3的NVS中只能存储整数型、以<code>\0</code>结尾的字符串以及可变长度的二级制数据。因此,例如PID设置参数这样的浮点型数据,需要转换成整数类型进行存储。</p>
<h4>5.2.3 PID控制</h4>
<p>本项目中的电压与电流输出的控制采用了PID控制的形式。PID使用的是理想的增量型PID,有数学式如下:
$$
Δu = K_p[ e<em>k - e</em>{k-1} + \frac{T_s}{K_i}e_k + \frac{K_d}{T_s}(e<em>k - 2e</em>{k-1} +e_{k-2}) ]
$$
输入PID参数、当前和前1-2时刻的误差值以及采样周期$$ T_s $$,即可得到控制量的变化量。
将PID封装为函数:</p>
<pre><code>float PID_compute(float Vek, float Vek_1, float Vek_2, float Kp, float Ki, float Kd) {
float delta_value;
float Pterm = (Vek - Vek_1);
float Itrem = Vek;
float Dterm = ( Vek - 2*Vek_1 +Vek_2);
delta_value = Kp*( Pterm + Ts/Ki*Itrem + Kd/Ts*Dterm );
return delta_value;
}</code></pre>
<p>值得一提的是,在本项目中输出电压VOUT的控制并不只是依赖PID控制(恒压模式)。当处于输出状态,并且VSET发生变化时,将根据设置值-输出电压关系计算一个设置值,再进行PID控制。设置值与输出电压存在有数学关系,参照<a href="https://item.szlcsc.com/datasheet/MPQ4263GQVE-0002-AEC1-Z/40699751.html?spm=sc.it.pdf.fd___sc.gbn.xh2.zy.t&lcsc_vid=ElBZUgJfRAANXwVWFQJcUQZeElJWBQBVFgIPXwJTQ1ExVlNQRlFbUVBSQFVYUjtW" target="_blank">MPQ4263 datasheet VOUT_COMMAND (21h)</a>,可以推导得:
$$
Value = V<em>{SET} / (0.0009765625 * {FB}</em>{ratio})
$$
由此可以计算得到较为准确的设置值,之后再通过PID进行微调修正使输出更加准确。
<strong>要强调的是,这样的输出模式不宜叠加较大的PID控制效果,即Kp需要设置一个较小的值。</strong></p>
<p>而恒流模式由于输出与负载有关,并不能通过单一的函数确定占空比与输出关系,因此仅采用PID控制调节输出。</p>
<h4>5.2.4 MPQ4263、CH224Q、INA226写入/读取</h4>
<p>以上三个对象通过I2C总线进行通讯。CH224Q设置请求电压值只需要通过I2C总线向其寄存器写入特定值;INA226需要向其寄存器中写入采样电阻值,并从寄存器中读取总线电压与差分电压值。
由于CH224Q只要向寄存器写入一位数据,因此只要使用<code>Wire.h</code>库进行简单操作;而INA226需要进行多次写入、读取操作,调用针对INA226封装好的库函数更加轻松,因此使用<code>INA226.h</code>库来完成被测量读取的任务。
需要注意的是MPQ4263较为特殊,需要采用PMBus的协议。简单来说,主机需要先发送从机地址,再发送从机寄存器地址(指令),然后才能进行传统意义的I2C读写。可以参照文章<a href="https://oshwhub.com/zhupf1984/mini-adjustable-power-supply" target="_blank">基于MPS的MPQ4263芯片I2C通讯可调电源</a>,其中进行了相关描述。另外,需要仔细阅读<a href="https://item.szlcsc.com/datasheet/MPQ4263GQVE-0002-AEC1-Z/40699751.html?spm=sc.it.pdf.fd___sc.gbn.xh2.zy.t&lcsc_vid=ElBZUgJfRAANXwVWFQJcUQZeElJWBQBVFgIPXwJTQ1ExVlNQRlFbUVBSQFVYUjtW" target="_blank">MPQ4263 datasheet DIGITAL INTERFACE</a>章节关于数字接口通讯的描述。</p>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/c3514f57d42e4f34bdf706c9f98fd8d6.jpg" alt="PMBus_I2C.jpg"></p>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/e57ccd94cb0a4adbb66212efd97a9416.jpg" alt="PMBus.jpg"></p>
<ul>
<li>S = Start condition</li>
<li>Sr = Repeated start condition</li>
<li>P = Stop condition</li>
<li>R = Read bit</li>
<li>W# = Write bit</li>
<li>A = Acknowledge bit (0) </li>
<li>A# = Acknowledge bit (1) </li>
</ul>
<p>这里详细说明下PMBus的通讯。很明显,都是基于I2C总线进行通讯的,相较于传统I2C通讯,从机寄存器地址被<strong>Command</strong>概念所代替。如上图所示,对于读取,需要发送从机地址、再发送Command Code对应传统I2C通讯的寄存器地址,接下来再向从机请求Command Code对应的数据;而对于写入,基本与传统I2C通讯无异,发送需要写入的从机地址、再发送Command Code接着发送要写入的内容。</p>
<p>开始帧内容由从机地址Address和读写位R/W#构成,需要注意的是,对于Arduino <code>Wire.h</code>库而言,读写位R/W#根据用户代码判断而不需要自行添加读写位,保持七位地址即可,对于MPQ4263,默认地址为<code>0x67</code>。</p>
<p>另外PMBus的数据格式也值得注意。主要有两种数据格式:Byte - 8位;Word - 16位。对于Byte而言,与传统I2C没有太大的区别;但是对于Word,其高低位读写方式与I2C相反,PMBus采用的是<strong>先低位、后高位</strong>的顺序收发,在实际的使用中需要注意。</p>
<p><strong>该项目目前尚未完全解决通讯问题,复刻请确保自己有能力解决相关问题!</strong> 详细情况会在下文存在的问题部分提及。</p>
<h4>5.2.5 按键、编码器</h4>
<p>按键与编码器是本系统进行人机交互的主要工具。其中,按键相关功能通过调用<code>OneButton.h</code>库实现;编码器数值调节功能通过调用<code>AiEsp32RotaryEncoder.h</code>库实现。
其中,<code>AiEsp32RotaryEncoder.h</code>库中可以实现滚轮编码器的变速控制,即滚轮滚的越快、数值变化越快,其通过<code>setAcceleration()</code>函数实现。这样能够使得大量程变化的调整速度更快。</p>
<hr>
<h3>5.3 交互逻辑</h3>
<p>交互逻辑与上一项目保持一致。</p>
<h4>5.3.1 按键交互逻辑</h4>
<table>
<tr>
<th>按键</th>
<th>行为</th>
<th>调整</th>
</tr>
<tr>
<td>KEY1</td>
<td>单击</td>
<td>输出开关</td>
</tr>
<tr>
<td>KEY2</td>
<td>双击</td>
<td>设置启用</td>
</tr>
<tr>
<td>KEY2</td>
<td>单击</td>
<td>对象切换</td>
</tr>
<tr>
<td>编码器</td>
<td>顺时针</td>
<td>数值增大</td>
</tr>
<tr>
<td>编码器</td>
<td>逆时针</td>
<td>数值减小</td>
</tr>
</table>
<h3>5.3.2 上位机逻辑</h3>
<p>本项目中上位机使用串口通信,为进行多控制量的调整,使用标准Json格式进行编码。
Key与Value对照表如下:</p>
<table>
<tr>
<th>对象</th>
<th>Key</th>
<th>Value类型</th>
<th>单位</th>
<th>范围</th>
</tr>
<tr>
<td>恒压PID参数</td>
<td>"VKpid_p" (i, d同)</td>
<td>float</td>
<td>-</td>
<td>0 ~ 655.35</td>
</tr>
<tr>
<td>恒流PID参数</td>
<td>"IKpid_p" (i, d同)</td>
<td>float</td>
<td>-</td>
<td>0 ~ 655.35</td>
</tr>
<tr>
<td>目标输出电压</td>
<td>"VSET"</td>
<td>float</td>
<td>1.0V</td>
<td>2.5 ~ (VIN-0.5)</td>
</tr>
<tr>
<td>目标输出电流</td>
<td>"ISET"</td>
<td>float</td>
<td>1.0A</td>
<td>0 ~ 4.5</td>
</tr>
<tr>
<td>输出状态</td>
<td>"OUT"</td>
<td>bool</td>
<td>-</td>
<td>0 / 1</td>
</tr>
</table>
<p>例如要设置目标输出电压为12V、输出电流为1A、输出状态为1,则编码为:
<code>{"VSET":12, "ISET":1, "OUT":1}\n</code>
设备会在接收到上位机数据后返回相同的信息。</p>
<h3>5.3.3 TFT显示逻辑</h3>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/d5e3f3833ee5426d8527f7c8934596f2.jpg" alt="显示逻辑.jpg"></p>
<ul>
<li>屏幕上部显示输入电压与输出状态。
输入电压保留1位小数。当电压低于有效输入时,判断输出处于异常状态;低于有效输入、高于4.5V时显示“LOW”;低于4.5V时显示“NONE”。
输出状态在无输出时显示“WAIT”,当输出模式为恒压时显示“CV”,若输出电流超过设置值时进入恒流模式,显示“CC”。</li>
<li>屏幕中部显示输出电压、输出电流和输出功率。显示保留2位小数。</li>
<li>屏幕下部显示设置电压和电流,设置精确到一位小数。当双击编码器KEY2时进入选择状态,在待设置数值下显示横线;单机编码器KEY2切换设置输出电压或输出电流。</li>
</ul>
<h2>6、BOM清单</h2>
<table>
<tr>
<th>零件名称</th>
<th>数量</th>
<th>获取方式</th>
<th>备注</th>
</tr>
<tr>
<td>机械零件</td>
<td>若干</td>
<td>-</td>
<td>见4.2 机械结构</td>
</tr>
<tr>
<td>PCB_UP</td>
<td>1</td>
<td>嘉立创免费打样</td>
<td>厚度1.6mm</td>
</tr>
<tr>
<td>PCB_DOWN</td>
<td>1</td>
<td>嘉立创免费打样</td>
<td>厚度1.6mm 4层板 3313阻抗</td>
</tr>
</table>
<p>PCB BOM清单请见页尾自动生成部分。<span style="color:#FF0000;"><strong>注意电容选型的耐压!</strong></span></p>
<hr>
<h3>6.1 机械装配</h3>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/5975d366be834f108d35b369f3e01f9d.jpg" alt="爆炸图.jpg">
零件爆炸图如图所示,安装需自上向下安装。
首先使用M2x7+3mm铜柱将PCB_UP固定再上壳上,然后向下放入下壳当中。注意,需要对外壳进行适当的形变,并且由于编码器体积问题,安装时需要以一定角度置入下壳。
上壳与PCB_UP安装后翻转并安装PCB_DOWN,接着安装CNC铝板,最后使用M2x10mm螺丝固定。需要注意的是,CNC铝板安装前应当在铝板的凸台上涂抹硅脂/散热凝胶,在一些可能碰到的位置增加绝缘胶带;PCB_DOWN中固态电容也需要在可能与金属接触到的位置缠绕绝缘胶带。如4.2 机械结构图中所示。</p>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/e81e865e07c74a678a0203bfe4f3fa33.jpg" alt="铝板装配建议.jpg"></p>
<h2>7、性能测试</h2>
<p>时间关系暂未进行完整的性能测试,后续进行补充。</p>
<hr>
<h3>7.1 电压跟随测试</h3>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/c1d2914be1d54b87952bb05cfcbf6b3a.jpg" alt="电压跟随测试.jpg">
图中,I0为目标电压值,I1为输出电压值,上图电压采样曲线所示可见跟随性能较好。</p>
<h2>8、现存的一些问题</h2>
<p>目前问题主要集中在MPQ4263的I2C通讯上。之前没有用过I2C通讯的DC-DC控制器,项目设计中缺少经验,对PMBus协议的使用也较为生疏。后续还要进一步优化代码以改进对MPQ4263的控制。
<span style="color:#FF0000;"><strong>请注意,由于当前存在的问题,电源使用还存在不确定性,若要进行复刻请确保自己有修改的能力!</strong></span></p>
<ul>
<li>MPQ4263输出问题1:输出斜率过大会突然掉压,然后输出保持在约3.8V,猜测可能出现了某种错误并陷入保护状态,等待解决。</li>
<li>MPQ4263输出问题2:输出电压最高只能达到约26.5V,当电压高于这一值时无法继续增加,猜测也是受到了某种保护。</li>
<li>MPQ4263工作问题:OPERATION寄存器写入似乎存在问题,还未确定具体情况。</li>
</ul>
<h2>9、大赛LOGO验证</h2>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/8a28716d217e4916aa6cbe042a3eefda.jpg" alt="logo验证.jpg">
大赛LOGO如上图所示。</p>
<h2>10、演示您的项目并录制成视频上传</h2>
<p>详见附件内容。</p>
<p></p>
评论(0)