STM32
直播中

徐伟

7年用户 924经验值
私信 关注
[问答]

STM32F103如何测量两个方波的相位差?

具体情况是,有两个相同频率但不同相位差的方波信号,想要利用tiM2输入捕获CH1 CH2下去进行量测两信号上升沿之间的计数值,在依照工作频率等公式换算出相位差,但是不太知道如何去配置CubeMx来实现,目前只实现输入捕获能量测单一讯号的周期及频率,但两个信号来做判断就不太知道该怎么去设置及判断板子是STM32F103C8T6,TIM2 72MHz工作頻率请指点一下迷津,谢谢

回帖(1)

木頭瓶子

2024-7-23 17:38:42
要在STM32F103上测量两个方波的相位差,可以通过以下步骤实现:

1. 配置TIM2为输入捕获模式:首先,需要在CubeMx中配置TIM2为输入捕获模式。在CubeMx的"Timer"选项卡中,选择TIM2,然后设置其工作模式为"Input Capture"。

2. 配置输入捕获通道:在TIM2的配置中,需要配置两个输入捕获通道(CH1和CH2)。在"Input Capture"选项卡中,选择"CH1"和"CH2",然后设置它们的输入源为相应的引脚。

3. 配置TIM2的时钟:由于TIM2的工作频率为72MHz,需要根据这个频率设置TIM2的预分频器和自动重载寄存器。在CubeMx的"Timer"选项卡中,设置预分频器为71(72MHz / (71 + 1) = 1MHz),自动重载寄存器为1000(1MHz的周期计数,即1ms)。

4. 配置中断:在CubeMx中,为TIM2的输入捕获中断启用中断。这将允许在捕获到上升沿时执行中断服务程序。

5. 编写中断服务程序:在中断服务程序中,需要记录捕获到的上升沿的时间戳。可以使用两个全局变量(例如,uint32_t capture1, capture2)来存储CH1和CH2的捕获值。

6. 计算相位差:在中断服务程序中,当两个通道都捕获到上升沿时,可以计算它们的相位差。相位差可以通过以下公式计算:
   phase_difference = (capture2 - capture1) * 360 / (TIM2_Period * TIM2_Clock)

   其中,TIM2_Period为自动重载寄存器的值(1000),TIM2_Clock为预分频后的时钟频率(1MHz)。

7. 处理相位差:根据计算出的相位差,可以进行相应的处理,例如显示或进一步分析。

8. 清除捕获标志:在中断服务程序的最后,需要清除捕获标志,以便进行下一次捕获。

通过以上步骤,可以实现在STM32F103上测量两个方波的相位差。希望这对您有所帮助!
举报

更多回帖

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