打印
[APM32F0]

APM32F003引脚复用精通:深入解析AFR寄存器及其实际应用

[复制链接]
1068|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
david-lau|  楼主 | 2024-6-28 18:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 david-lau 于 2024-6-28 18:12 编辑

#申请原创# #每日话题#
引言
APM32F003是非常通用的微控制器,用途广泛,其引脚复用功能为开发者提供了灵活的设计选择。本文将深入探讨APM32F003的引脚复用功能,特别关注选项字节中的AFR(Alternate Function Remapping)寄存器。
引脚复用概述
引脚复用是微控制器中常见的功能,允许一个物理引脚被分配给不同的功能。这种设计可以最大化芯片的功能,同时保持较小的封装尺寸。在APM32F003中,大多数引脚都支持多种功能,包括GPIO、定时器、通信接口等。
AFR寄存器介绍
AFR(Alternate Function Remapping)寄存器是APM32F003选项字节中的一个重要组成部分。它允许开发者重新映射某些外设功能到不同的引脚,提供了更大的灵活性。
AFR位
启用时功能
禁用时功能
AFR0PC5: TMR2_CH1
PC6: TMR1_CH1
PC7: TMR1_CH2
PC5: SPI_SCK/AIN0/VAIP0
PC6: SPI_MOSI/AIN1/VAIN0
PC7: SPI_MISO
AFR1PA3: SPI_NSS
PD2: TMR2_CH3
PA3: TMR2_CH3/TMR1_ETR/USART3_CK
PD2: AIN3/SWCLK/USART2_RX/TMR1A_BKIN/VAIN1
AFR2保留保留
AFR3PC3: TLIPC3: TMR1_CH3/AIN7/VAIN3
AFR4PB4: ADC_ETR
PB5: TMR1_BKIN
PB4: I2C_SCL/USART3_TX
PB5: I2C_SDA/USART3_RX
AFR5PD5: TMR1A_CH1N<
PD6: TMR1A_CH2N
PD5: AIN5/USART1_TX/TMR1A_CH3/VAIN2
PD6: AIN6/USART1_RX/TMR1A_CH4/VAIP2
AFR6保留保留
AFR7PC3: TMR1_CH1N
PC4: TMR2_CH2N
PC3: TMR1_CH3/AIN7/VAIN3
PC4: TMR1_CH4/CLK_CCO/AIN2/VAIP1
AFR寄存器特点:
  • 位于选项字节中,可通过编程修改
  • 影响多个外设的引脚分配
AFR寄存器配置
AFR寄存器的配置涉及以下步骤:
  • 解锁选项字节
  • 编程AFR寄存器
  • 锁定选项字节
  • 系统复位
推荐参考代码
void AFConfig(void)
{
    FMC_AFRConfig_T AFRConfig;

    /* AFR0 ENABLE if PC5 as TMR2_CH1 function; PC6 as TMR1_CH1 function; PC7 as TMR1_CH2 function */
    /*     DISABLE if PC5 as SPI_SCK/AIN0/VAIP0 function; PC6 as SPI_MOSI/AIN1/VAIN0 function; PC7 as SPI_MISO function */
    AFRConfig.AFR0 = FMC_OB_AFR_DISABLE;
    /* AFR1 ENABLE if PA3 as SPI_NSS function; PD2 as TMR2_CH3 function */
    /*     DISABLE if PA3 as TMR2_CH3/TMR1_ETR/USART3_CK function; PD2 as AIN3/SWCLK/USART2_RX/TMR1A_BKIN/VAIN1 function */
    AFRConfig.AFR1 = FMC_OB_AFR_DISABLE;
    /* AFR2 Reserved */
    /* AFR3 ENABLE if PC3 as TLI function */
    /*     DISABLE if PC3 as TMR1_CH3/AIN7/VAIN3 function */
    AFRConfig.AFR3 = FMC_OB_AFR_DISABLE;
    /* AFR4 ENABLE if PB4 as ADC_ETR function; PB5 as TMR1_BKIN function */
    /*     DISABLE if PB4 as I2C_SCL/USART3_TX function; PB5 as I2C_SDA/USART3_RX function */
    AFRConfig.AFR4 = FMC_OB_AFR_DISABLE;
    /* AFR5 ENABLE if PD5 as TMR1A_CH1N function; PD6 as TMR1A_CH2N function */
    /*     DISABLE if PD5 as AIN5/USART1_TX/TMR1A_CH3/VAIN2 function; PD6 as AIN6/USART1_RX/TMR1A_CH4/VAIP2 function */
    AFRConfig.AFR5 = FMC_OB_AFR_DISABLE;
    /* AFR6 Reserved */
    /* AFR7 ENABLE if PC3 as TMR1_CH1N function; PC4 as TMR2_CH2N function */
    /*     DISABLE if PC3 as TMR1_CH3/AIN7/VAIN3 function; PC4 as TMR1_CH4/CLK_CCO/AIN2/VAIP1 function */
    AFRConfig.AFR7 = FMC_OB_AFR_DISABLE;

    FMC_Unlock();
    FMC_EraseOptionByte();
    FMC_ConfigOptionByteAFR(&AFRConfig);
    FMC_Lock();
}

常见应用场景
  • UART重映射:将UART功能分配到其他引脚,以便更好地适应PCB布局。
  • SPI重映射:在板级设计中优化SPI接口的引脚分配。
  • 定时器通道重映射:为PWM输出选择最合适的引脚,如果发现PWM配置完无法输出,可以检查是不是没配置AFR。
注意事项
  • AFR寄存器的修改会影响多个外设,需要全面考虑系统设计。
  • 修改AFR后必须进行系统复位,这可能影响某些实时应用。
  • 正确配置GPIO的复用功能是充分利用AFR的关键。
结论
APM32F003的引脚复用功能,尤其是通过AFR寄存器实现的灵活配置,为开发者提供了强大的设计工具。合理利用这一特性,可以优化电路设计,提高系统性能,同时降低PCB复杂度。在实际应用中,开发者需要权衡灵活性和系统稳定性,选择最适合特定项目需求的配置。




使用特权

评论回复
沙发
weifeng90| | 2024-7-11 08:23 | 只看该作者
引脚复用主要看芯片参考手册

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

42

帖子

1

粉丝