我正在尝试使用
STM32F446 测量标准伺服 PWM 信号(50Hz 和 5% 至 10% 占空比)的占空比和频率。我已将定时器配置为 PWM 输入模式,我可以读取频率和占空比。32 位定时器(
tiM2 和 TIM5)的测量非常准确,脉冲长度低至亚 uS。然而,对于 16 位定时器,频率和占空比测量非常不准确。我相信这是由于我使用的预分频器。我必须对 16 位定时器使用大于 50 的预分频器以避免溢出。然而,对于 32 位定时器,我使用了 0 的预分频器。有趣的是,当我在 32 位上使用与 16 位定时器相同的预分频器时,它也非常不准确。以下是我为测量 50Hz 和 2000uS 脉冲长度所做的一些测试,
- 50 预分频器 -> 51.5Hz;1960.714uS
- 75 Presclaer -> 50.667Hz,1973.214uS
- 100 预分频器 -> 50.49Hz,1979.76uS
- 500 预分频器 -> 50.1Hz,19940.476uS
- 1000 预分频器 -> 50.05Hz,19880.09uS
有趣的是,更高的预分频器将精度提高到一个点。我认为较低的预分频器会提高精度,因为它的步长较小。精度是 STM32 的限制吗?有什么方法可以使测量更准确?