【AG32VF407测评】GPIO映射规则与灵活的IO复用
本帖最后由 lenxvp 于 2023-7-31 20:09 编辑<p><span style="font-size:20px;"><strong>一、GPIO的映射规则</strong></span></p>
<p> </p>
<p>在文档<a href="https://bbs.eeworld.com.cn/elecplay.php?action=show&op=download&id=279&did=5" target="_blank">AG32驱动的使用.pdf</a>中GPIO 的使用里面已经比较详细介绍了GPIO的映射规则,但刚开始看总感觉云里雾里的,我这里大概总结一下</p>
<p>首先在SDK中使用的GPIO引脚是GPIOx_y的格式,但由于这板子直接套用了STM32F407的原理,在原理图里我们看到的是类似PA7这样的格式,这里就需要有个对应规则,将原理图中PA7这样的引脚对应到SDK中的GPIOx_y,这里面我们需要在ve文件中将映射GPIOx_y到PIN_z格式的引脚,例如</p>
<pre>
<code>GPIO4_4 PIN_32 # LED4</code></pre>
<p>ve文件是芯片配置硬件IO映射的重要文件,也是下面要讲到的IO复用的基础</p>
<p>在这里PIN_z中的z在原理图跟芯片引脚旁的数字是一一对应的,即芯片封装引脚旁的黑色小数字</p>
<p> </p>
<p>据此,我们要使用某一指定的IO引脚,先从原理图找到对应引脚。例如LED的PA7,然后找到芯片旁边引脚对应的黑色数字作为PIN_z中的z,例如PA7对应的是32,所以是PIN_32</p>
<p> </p>
<p>之后在ve文件中映射GPIOx_y和PIN_z,这里GPIOx_y可以是任何一个没有使用到的符号,但需要满足0 <= x <= 9,0 <= y <= 7</p>
<p> </p>
<p>最后就可以使用这里的GPIO4_4作为LED的控制GPIO在SDK中使用了</p>
<p> </p>
<p><strong><span style="font-size:22px;">二、基于ve文件IO灵活复用</span></strong></p>
<p>在上边我们提到在ve文件进行引脚的映射,这里边的映射是有很大灵活性的,每个GPIOx_y都可以跟任意一个不受限制的PIN_z上,限制条件参考<a href="https://bbs.eeworld.com.cn/elecplay.php?action=show&op=download&id=279&did=12" target="_blank">AGM32_pinout_100_64_48.xlsx</a>,这比STM32上的IO复用要更加灵活,且配置更加简单,只需要在ve文件进行映射即可</p>
<p>IO复用的好处在于当硬件上的IO配置发生改变时,我们可以只修改IO映射而基本不用动主程序,特别对于“话语权”较弱的软件工程师和强势的硬件工程师之间,在没有协商的情况下,硬件工程师擅自修改了引脚配置且软件配置不方便的时候<img height="28" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/face-with-tears-of-joy_1f602.png" width="28" />,IO复用将会是软件工程师的一大利器</p>
<p> </p>
<p>下面通过一个示例展示下,示例中将一个LED和一个串口复用到了不同的引脚上</p>
<p>在之前的帖子<a href="https://bbs.eeworld.com.cn/thread-1251510-1-1.html">【AG32VF407测评】串口logger配置</a> 中我们做了一个串口logger的demo,该demo基于<a href="https://bbs.eeworld.com.cn/thread-1250753-1-1.html">【AG32VF407测评】开箱、环境搭建与点灯Demo </a>,具体建立demo工程的步骤可以参考这两篇帖子,不再赘述</p>
<p>demo中的ve文件如下</p>
<pre>
<code>SYSCLK 240
HSECLK 8
UART0_UARTRXD PIN_69 # PA10
UART0_UARTTXD PIN_68 # PA9
GPIO4_4 PIN_31 # LED4</code></pre>
<p>我们重新映射UART0_UARTRXD和UART0_UARTTXD、GPIO4_4到不同的引脚上,例如</p>
<pre>
<code>SYSCLK 240
HSECLK 8
UART0_UARTRXD PIN_52 # PB13
UART0_UARTTXD PIN_53 # PB14
GPIO4_4 PIN_32 # LED4</code></pre>
<p>编译后只需要重新下载ve配置即可而不需要下载程序,即使用下面的Upload LOGIC或者终端中使用命令pio run -e release -t upload</p>
<p> </p>
<p>下载完成后可以看到开发板LED从D2闪烁变成D3闪烁,串口从原来的PA9/PA10变成了PB13/PB14,这里我们甚至都不用改变主程序的代码也不用重新下载主程序</p>
<p>9296639530f7976b23dc6706a656995d<br />
感兴趣可以自己多修改几组引脚尝试一下,只要是<a href="https://bbs.eeworld.com.cn/elecplay.php?action=show&op=download&id=279&did=12" target="_blank">AGM32_pinout_100_64_48.xlsx</a>中Function为IO的都是可复用的引脚</p>
<p>你这是被硬件工程师虐过?<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/lol.gif" width="48" /></p>
在上边我们提到在ve文件进行引脚的映射,这里边的映射是有很大灵活性的。我最近用CW32L也是复用IO,现在外设使用非常灵活了呀。 <table cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td id="postmessage_3252550">
<p>咱就是说很nice,很棒,我非常感谢博主的分享,虽然我只是来水评论的,但是也非常感谢博主的帖子</p>
<p> </p>
</td>
</tr>
</tbody>
</table>
<p>这个功能有点强大哦。记得早先的时候nxp的lpc有一些mcu提供一定程度的io定制。AG这款是全pin(除了电源、调试、晶振)都可定制吗?</p>
<p>嗯,AG32 I/O可以灵活定义。如需要了解更多信息,可以联系海振远科技获取资料或者申请样品。</p>
<div style="text-align: center;"></div>
<p> </p>
页:
[1]