本帖最后由 david-lau 于 2024-6-28 18:12 编辑
#申请原创# #每日话题#
引言APM32F003是非常通用的微控制器,用途广泛,其引脚复用功能为开发者提供了灵活的设计选择。本文将深入探讨APM32F003的引脚复用功能,特别关注选项字节中的AFR(Alternate Function Remapping)寄存器。 引脚复用概述引脚复用是微控制器中常见的功能,允许一个物理引脚被分配给不同的功能。这种设计可以最大化芯片的功能,同时保持较小的封装尺寸。在APM32F003中,大多数引脚都支持多种功能,包括GPIO、定时器、通信接口等。 AFR寄存器介绍AFR(Alternate Function Remapping)寄存器是APM32F003选项字节中的一个重要组成部分。它允许开发者重新映射某些外设功能到不同的引脚,提供了更大的灵活性。 AFR位 | 启用时功能 | 禁用时功能 | AFR0 | PC5: TMR2_CH1
PC6: TMR1_CH1
PC7: TMR1_CH2 | PC5: SPI_SCK/AIN0/VAIP0
PC6: SPI_MOSI/AIN1/VAIN0
PC7: SPI_MISO | AFR1 | PA3: SPI_NSS
PD2: TMR2_CH3 | PA3: TMR2_CH3/TMR1_ETR/USART3_CK
PD2: AIN3/SWCLK/USART2_RX/TMR1A_BKIN/VAIN1 | AFR2 | 保留 | 保留 | AFR3 | PC3: TLI | PC3: TMR1_CH3/AIN7/VAIN3 | AFR4 | PB4: ADC_ETR
PB5: TMR1_BKIN | PB4: I2C_SCL/USART3_TX
PB5: I2C_SDA/USART3_RX | AFR5 | PD5: TMR1A_CH1N<
PD6: TMR1A_CH2N | PD5: AIN5/USART1_TX/TMR1A_CH3/VAIN2
PD6: AIN6/USART1_RX/TMR1A_CH4/VAIP2 | AFR6 | 保留 | 保留 | AFR7 | PC3: TMR1_CH1N
PC4: TMR2_CH2N | PC3: TMR1_CH3/AIN7/VAIN3
PC4: TMR1_CH4/CLK_CCO/AIN2/VAIP1 | 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复杂度。在实际应用中,开发者需要权衡灵活性和系统稳定性,选择最适合特定项目需求的配置。
|