打印

求助香版主及各位高人STM32f103ve数据采集问题

[复制链接]
2358|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我用STM32产生两路PWM信号,想在PWM的下降沿开始数据采集,需要采集的信号是在PWM的下降沿产生的周期性脉冲信号。请问我应该采用什么办法好呢?谢谢!!
另:PWM频率500HZ,占空比25%,产生的脉冲信号持续时间约为300us。
沙发
uet_cache| | 2013-1-22 09:20 | 只看该作者
你要采集脉冲的什么信息。。电压?时间?频率?

使用特权

评论回复
板凳
yayasoso|  楼主 | 2013-1-22 14:16 | 只看该作者
uet_cache 发表于 2013-1-22 09:20
你要采集脉冲的什么信息。。电压?时间?频率?

谢谢回复!我采集的是整个脉冲的幅度信息。

使用特权

评论回复
地板
yayasoso|  楼主 | 2013-1-22 14:26 | 只看该作者

使用特权

评论回复
5
yayasoso|  楼主 | 2013-1-22 14:28 | 只看该作者
这个就是我用示波器观察到的发射的PWM波形和接收到的脉冲波形,这个图对应的应该是上升沿开始采集的。。。。

使用特权

评论回复
6
yayasoso|  楼主 | 2013-1-22 14:30 | 只看该作者
本帖最后由 yayasoso 于 2013-1-22 14:56 编辑

每一个PWM的上升沿产生的都是同一个周期性信号,但是我采集出来的信号显示出来总会发生偏移,有时候采集不到,有时候波形左移或者右移。。。

使用特权

评论回复
7
uet_cache| | 2013-1-22 15:48 | 只看该作者
你的PWM是自己输出的2路吧。你可以用Ad的触发功能。。。

使用特权

评论回复
8
yayasoso|  楼主 | 2013-1-22 16:51 | 只看该作者
uet_cache 发表于 2013-1-22 15:48
你的PWM是自己输出的2路吧。你可以用Ad的触发功能。。。

是的。我确实用的是PWM的TIM_FLAG_CC1和TIM_FLAG_CC2作为边沿标志的,进入中断后我打开DMA,打开ADC采集,采集足够的点之后触发DMA中断,关闭ADC,数据上传给上位软件

使用特权

评论回复
9
yayasoso|  楼主 | 2013-1-22 16:52 | 只看该作者
uet_cache 发表于 2013-1-22 15:48
你的PWM是自己输出的2路吧。你可以用Ad的触发功能。。。

是的,我就是用PWM的TIM_FLAG_CC1和TIM_FLAG_CC2作为触发的标志的。

使用特权

评论回复
10
yayasoso|  楼主 | 2013-1-22 16:54 | 只看该作者
我具体的做法:边沿触发中断,进入中断后打开DMA,打开ADC。采集到一定点数后触发DMA中断,在DMA中断里关闭ADC,打开发送标志。在while循环里发送数据到上位机。ADC我是用TIM3定时触发的。

使用特权

评论回复
11
uet_cache| | 2013-1-22 17:05 | 只看该作者
你进中断后使能TIM3? TIM3定时到了才采集ADC?那这个时间长?

使用特权

评论回复
12
uet_cache| | 2013-1-22 17:06 | 只看该作者
你的逻辑好麻烦,你可以直接用输出PWM的定时器,在CC4通道触发ADC,这样不用进中断,自动触发,自动连续采集设定点,通过DMA传到内存。多方便。。。

使用特权

评论回复
13
yayasoso|  楼主 | 2013-1-22 17:12 | 只看该作者
uet_cache 发表于 2013-1-22 17:06
你的逻辑好麻烦,你可以直接用输出PWM的定时器,在CC4通道触发ADC,这样不用进中断,自动触发,自动连续采 ...

:L您这个办法好点,不过我没具体做过。我已经折腾好久了,就是不知道我问题出在哪里

使用特权

评论回复
14
yayasoso|  楼主 | 2013-1-22 17:15 | 只看该作者
yayasoso 发表于 2013-1-22 17:12
您这个办法好点,不过我没具体做过。我已经折腾好久了,就是不知道我问题出在哪里 ...

非常感谢您的耐心回答!我试试直接用PWM的下降作为ADC的触发。

使用特权

评论回复
15
yayasoso|  楼主 | 2013-1-22 17:23 | 只看该作者
uet_cache 发表于 2013-1-22 17:05
你进中断后使能TIM3? TIM3定时到了才采集ADC?那这个时间长?

不好意思,说错了。TIM3用来控制两路PWM,TIM2控制ADC的。ADC是2us触发一次的。具体流程:串口中断》》打开TIM3中断,关闭串口接收中断》TIM3中断》打开ADC使能和DMA中断,关闭TIM3中断》》DMA中断》关闭ADC及DMA中断,置位发送标志》判断置位标志,进入while,发送数据,打开串口接收中断

使用特权

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

本版积分规则

4

主题

61

帖子

0

粉丝