【AG32VF407测评】GPIO映射规则与灵活的IO复用
[复制链接]
本帖最后由 lenxvp 于 2023-7-31 20:09 编辑
一、GPIO的映射规则
在文档AG32驱动的使用.pdf中GPIO 的使用里面已经比较详细介绍了GPIO的映射规则,但刚开始看总感觉云里雾里的,我这里大概总结一下
首先在SDK中使用的GPIO引脚是GPIOx_y的格式,但由于这板子直接套用了STM32F407的原理,在原理图里我们看到的是类似PA7这样的格式,这里就需要有个对应规则,将原理图中PA7这样的引脚对应到SDK中的GPIOx_y,这里面我们需要在ve文件中将映射GPIOx_y到PIN_z格式的引脚,例如
GPIO4_4 PIN_32 # LED4
ve文件是芯片配置硬件IO映射的重要文件,也是下面要讲到的IO复用的基础
在这里PIN_z中的z在原理图跟芯片引脚旁的数字是一一对应的,即芯片封装引脚旁的黑色小数字
据此,我们要使用某一指定的IO引脚,先从原理图找到对应引脚。例如LED的PA7,然后找到芯片旁边引脚对应的黑色数字作为PIN_z中的z,例如PA7对应的是32,所以是PIN_32
之后在ve文件中映射GPIOx_y和PIN_z,这里GPIOx_y可以是任何一个没有使用到的符号,但需要满足0 <= x <= 9,0 <= y <= 7
最后就可以使用这里的GPIO4_4作为LED的控制GPIO在SDK中使用了
二、基于ve文件IO灵活复用
在上边我们提到在ve文件进行引脚的映射,这里边的映射是有很大灵活性的,每个GPIOx_y都可以跟任意一个不受限制的PIN_z上,限制条件参考AGM32_pinout_100_64_48.xlsx,这比STM32上的IO复用要更加灵活,且配置更加简单,只需要在ve文件进行映射即可
IO复用的好处在于当硬件上的IO配置发生改变时,我们可以只修改IO映射而基本不用动主程序,特别对于“话语权”较弱的软件工程师和强势的硬件工程师之间,在没有协商的情况下,硬件工程师擅自修改了引脚配置且软件配置不方便的时候,IO复用将会是软件工程师的一大利器
下面通过一个示例展示下,示例中将一个LED和一个串口复用到了不同的引脚上
在之前的帖子【AG32VF407测评】串口logger配置 中我们做了一个串口logger的demo,该demo基于【AG32VF407测评】开箱、环境搭建与点灯Demo ,具体建立demo工程的步骤可以参考这两篇帖子,不再赘述
demo中的ve文件如下
SYSCLK 240
HSECLK 8
UART0_UARTRXD PIN_69 # PA10
UART0_UARTTXD PIN_68 # PA9
GPIO4_4 PIN_31 # LED4
我们重新映射UART0_UARTRXD和UART0_UARTTXD、GPIO4_4到不同的引脚上,例如
SYSCLK 240
HSECLK 8
UART0_UARTRXD PIN_52 # PB13
UART0_UARTTXD PIN_53 # PB14
GPIO4_4 PIN_32 # LED4
编译后只需要重新下载ve配置即可而不需要下载程序,即使用下面的Upload LOGIC或者终端中使用命令pio run -e release -t upload
下载完成后可以看到开发板LED从D2闪烁变成D3闪烁,串口从原来的PA9/PA10变成了PB13/PB14,这里我们甚至都不用改变主程序的代码也不用重新下载主程序
785234202
感兴趣可以自己多修改几组引脚尝试一下,只要是AGM32_pinout_100_64_48.xlsx中Function为IO的都是可复用的引脚
|