【雅特力AT32WB415系列蓝牙BLE 5.0 MCU】+IAP(Bootloader)
<p align="center">【雅特力AT32WB415系列蓝牙BLE 5.0 MCU】+IAP(Bootloader)</p><p align="justify" style="">首先,对雅特力表示感谢,既提供了测评的机会,又提供了完善的资源供大家学习。</p>
<p align="justify" style="">本节体验Bootloader,不的不说其Bootloader相关文档给的是真的全面,包含USART Bootloader支持命令(命令描述的非常细节),Bootloader USB DFU 请求流程(命令数据描述很清楚)以及各芯片型号的外设配置表。</p>
<ul>
<li align="justify" style="">芯片及功能介绍</li>
</ul>
<p align="justify" style=""> </p>
<p align="justify" style=""> </p>
<ol>
<li style="list-style-type:none">
<ol>
<li align="justify" style="">AT32WB415系列芯片基于RAM32基于ARM® 32位的Cortex® -M4的无线蓝牙微控制器.产品对标STM32WB系列芯片,可以说性价比非常高。</li>
<li style="">Bootloader内存空间:芯片内256 K字节的闪存存储器,18 K字节的启动程序代码区作启动加载程序 (Bootloader)用,32k字节的SRAM缓存。</li>
</ol>
</li>
</ol>
<p style=""> </p>
<ul>
<li style="list-style-type:none">
<ol start="3">
<li style="">如图所示:Bootloader支持USART2和OTGFS1升级方式。</li>
</ol>
</li>
<li style="">API文件研究</li>
</ul>
<p style=""> </p>
<p style="">2.1、IAP 功能的实现,一般将程序分为两个部分,即:Bootloader 和 APP。Bootloader 程序用于上电时判断程 序是进入 IAP 升级流程还是进入 APP 应用程序执行过程。</p>
<p style="">2.2、官方例程和api文档一致,如图所示,有USART和USB两种接口的IAP升级例程,配有Bootloader和APP例程。</p>
<p style="">2.3、雅特力AT32还配有API代码说明文档,文档内注明函数的使用方法,还有代码程序例程,简直不要太好用。</p>
<p style="">三、Bootloader程序</p>
<p style=""> </p>
<p style="">3.1、BOOT程序</p>
<p style=""> </p>
<p style="">3.2、APP程序</p>
<p style=""> </p>
<p style="">3.3、上位机传程序软件</p>
<p style="">四、Bootloader软件开发逻辑</p>
<p style="">4.1、UARTx 编程启动模式 </p>
<p style="">当使用UART编程模式时,Bootloader启动之后会检测UARTx Rx引脚,等待接收0x7F数据帧:一个 起始位,0x7F数据位,奇偶校验位和一个停止位。通过Systick定时器测量该数据帧,计算出UARTx</p>
<p style="">使用的波特率,再通过UARTx响应主机0x79,表示连接成功,此时微控制器端等待接收主机命令。 如下图流程</p>
<p style=""> </p>
<p style="">4.2、UARTx 波特率 </p>
<p style="">波特率设定 AT32 Bootloader 支持自动侦测波特率,误差率低于 2.5%。最小波特率支持 1200,最大波特率支持</p>
<p style="">256000。 </p>
<p style="">误差率 = | | × 100%。误差率小于2.5%。 Bootloader侦测波特率方法: </p>
<p style="">微控制启动之后,主机端发送0x7F数据到设备端,包括1个起始位,值为0x7F的8位数据,偶校验位 和1个停止位。 </p>
<p style="">当设备侦测到主机发送的数据后,会将设备端对应的UARTx设定好波特率,然后响应0x79,当主机 接收到0x79,则表示连接成功,可以继续发送命令。 ACK = 0x79 NACK = 0x1F</p>
<p style="">4.3、Bootloader 命令详解请参考Bootloader文档资料,下面是主要的数据传输学习概况。</p>
<p style="">Write Memory</p>
<p style="">Write Memory 命令用于将数据写入主存储器,SRAM,用户系统数据区等,在写入主存储器之前, 需要先擦除对应地址的数据,另外写入的地址必须是有效范围内的地址,需要注意各个型号的有效地 址范围不同。 </p>
<p style="">用户系统数据区由于不同型号范围不同,会有不同处理: </p>
<p style="">l 用户系统数据区小于 256 字节 </p>
<p style="">主机只发一次写命令将所有用户系统数据写入,设备端在收到命令之后会自动擦除用户系统数据 区,然后将数据写入,最后自动执行系统复位。 </p>
<p style="">l 用户系统系统数据区大于 256 字节 </p>
<p style="">主机需要发送多次写命令,才能将用户系统数据写入 </p>
<p style="">设备端在收到命令之后,如果地址为用户系统数据区的起始地址,则执行擦除,然后写入数据。 </p>
<p style="">如果收到的地址不是用户系统数据区的起始地址,则不执行擦除,直接将数据写入对应地址。 </p>
<p style="">当数据写完之后,将自动执行系统复位。 </p>
<p style="">注意:AT32F435xx/AT32F437xx 在写完用户系统数据区之后不会自动执行系统复位,需要主机 端发送复位命令(Reset)。 </p>
<p style="">当设备收到此命令后,如果访问保护没有开启,则响应主机 ACK,接着会等待 4 字节的写入地址及 其 Checksum,当收到的地址和 Checksum 都有效时,响应主机 ACK,再等待 1 字节的写入长度及 其 Checksum,长度的值为实际要写入的值长度减 1(如写 10 字节数据,此值为 9),当 Checksum 正 确时,将开始写入对应地址的数据,写完之后响应主机 ACK。 </p>
<p style="">此命令在访问保护开启时不能使用。 </p>
<p align="center" style="">Write Memory <b>主机端流程图</b></p>
<p align="center" style=""> </p>
<p align="center" style="">Write Memory <b>设备端流程图</b></p>
<p align="center" style=""> </p>
<p>测评很详细,参考意义很大</p>
<p>Bootloader 程序编译后大概多大?</p> Jacktang 发表于 2022-8-11 07:43
测评很详细,参考意义很大
<p>谢谢</p>
页:
[1]