ST意法半导体
直播中

李敏

8年用户 1444经验值
私信 关注
[问答]

STM32MP135D的TIM2使用ETR作为外部时钟时,无法使用PE15作为输入怎么解决?

主芯片为STM32MP135D,使用最新的STM32CubeMX配置tiM2为外部时钟模式2,管脚选择PE15
实测计数器不会增加,当改用PA15时是正常的;参考最新手册看明显有问题,各位能否帮忙验证一下,是否我的程序问题,还是手册错误?

回帖(1)

CDCNKA

2025-6-3 17:59:03

针对STM32MP135D的TIM2使用ETR外部时钟时PE15无法正常工作的问题,可以按照以下步骤排查和解决:




1. 确认TIM2_ETR的引脚复用功能



  • 查阅数据手册:检查STM32MP135D的参考手册(如RM0481)中的"Alternate function mapping"表,确认PE15是否支持TIM2_ETR功能。

  • 验证CubeMX配置:在CubeMX中,确保PE15的Alternate Function已正确设置为TIM2_ETR(可能需要配置为AF1或其他,具体以手册为准)。




2. 检查CubeMX配置



  • TIM2模式配置

    • Clock Source: 选择"External Clock Mode 2"。

    • ETR Configuration:

    • Prescaler: 根据输入信号频率设置。

    • Polarity: 与输入信号边沿一致(上升沿或下降沿)。

    • Filter: 根据噪声情况调整(可暂时禁用以测试)。


  • GPIO配置

    • PE15模式:配置为Alternate Function模式。

    • Pull-up/down:根据外部信号特性选择(如上拉或下拉)。





3. 验证硬件连接



  • 信号质量:使用示波器检查PE15引脚是否有正确的脉冲信号(频率、幅值)。

  • 线路问题:排除硬件线路短路、断路或接触不良。




4. 排查外设冲突



  • 其他外设占用:检查PE15是否被其他外设(如SPI、UART等)占用。在CubeMX的"Pinout View"中确认无冲突标记(黄色警告)。

  • 复用功能冲突:某些引脚可能在不同Alternate Function下有复用限制,需确保无其他复用功能激活。




5. 代码级验证



  • 检查寄存器配置

    • 确保TIM2->SMCR寄存器中ETP(极性)、ETF(滤波器)、ETPS(预分频)配置正确。

    • 确认TIM2->SMCRECE(External Clock Enable)位已置1。


  • 手动配置AF映射(如果CubeMX未正确生成):
    // 示例代码:手动设置PE15为TIM2_ETR(AF1)
    HAL_GPIO_DeInit(GPIOE, GPIO_PIN_15);
    GPIO_InitStruct.Pin = GPIO_PIN_15;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF1_TIM2; // 根据手册确认AF编号
    HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);




6. 对比测试PA15与PE15



  • 寄存器差异:当使用PA15时,检查以下寄存器配置与PE15的区别:

    • RCC->APBxENR(时钟使能)

    • GPIOx->AFR[L/H](Alternate Function寄存器)

    • TIM2->SMCR(从模式控制寄存器)


  • 信号路径差异:PA15可能通过不同的内部信号路径连接到TIM2_ETR。




7. 排查手册或软件库问题



  • 手册版本:确认参考手册与芯片型号完全匹配(如STM32MP135D vs. STM32MP153D)。

  • CubeMX版本:更新到最新版本(可能修复已知BUG)。

  • 社区验证:在ST社区(如STMCU论坛)搜索类似问题,确认是否已知问题。




8. 替代方案


如果确认PE15存在硬件或库限制:



  • 更换引脚:使用PA15或其他支持TIM2_ETR的引脚。

  • 重映射功能:某些芯片支持Remap功能(需查看手册)。




总结



  • 可能原因

    • PE15的Alternate Function未正确配置(AF1或其他)。

    • 硬件信号问题(如未焊接、信号幅值不足)。

    • CubeMX生成代码的BUG或手册描述错误。


  • 解决步骤

    1. 确认PE15支持TIM2_ETR。

    2. 检查CubeMX配置和生成代码。

    3. 验证硬件信号和连接。

    4. 手动修改代码或更换引脚。



如果问题仍未解决,建议联系ST技术支持并提供最小复现代码和硬件配置。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分