367|9

10

帖子

0

资源

一粒金砂(初级)

STM32F103通过TIM+DMA发送指定个数脉冲,数量会多

如题,我用STM32F103VCT6的TIM+DMA功能,在1ms里发送指定个数的脉冲个数。通过DMA改变TIM->CCRx,TIM的比较输出时间触发DMA传输,当DMA长度为0,触发DMA中断事件,清零TIM->CCRx的值,停止TIM发送PWM。我需要发10、200、500、1000、2000、5000个的脉冲数。目前当我发送500个脉冲的时候,会多1个。然后我也移植到407VET6去进行测试,发现发送500个正常了,1000个会多1个脉冲。所以,请问大佬,怎么回事?找了很久,还是没找到原因。怀疑是进中断关TIM的速度不够,导致这个期间多发了脉冲,但没法知道这个期间花了多长时间,不能验证这个可能。

此帖出自stm32/stm8论坛

这段发送500个脉冲

这段发送500个脉冲

这个是多余的1个脉冲

这个是多余的1个脉冲

PWM Encoder.zip

314.42 KB, 下载次数: 7

波形分析.zip

12.53 KB, 下载次数: 0

这个是用逻辑分析仪抓到的波形


回复

326

帖子

0

资源

一粒金砂(中级)

IO配置上下拉了吗


回复

10

帖子

0

资源

一粒金砂(初级)

宋元浩 发表于 2020-9-14 10:58 IO配置上下拉了吗

嗯,配置上拉的。程序并不是一开始就不能发脉冲,而是频率高了之后,就会多脉冲。这个跟上下拉不关系的吧?

点评

之前在H750搞的指定脉冲,也是会多了个脉冲,配置了上下拉就好了  详情 回复 发表于 2020-9-14 11:16

回复

326

帖子

0

资源

一粒金砂(中级)

ckjjjj 发表于 2020-9-14 11:07 嗯,配置上拉的。程序并不是一开始就不能发脉冲,而是频率高了之后,就会多脉冲。这个跟上下拉不关系的吧 ...

之前在H750搞的指定脉冲,也是会多了个脉冲,配置了上下拉就好了


回复

10

帖子

0

资源

一粒金砂(初级)

宋元浩 发表于 2020-9-14 11:16 之前在H750搞的指定脉冲,也是会多了个脉冲,配置了上下拉就好了

你那个方式和我这个相同么?因为我这个需要1ms发送完指定脉冲数

点评

思路差不多,具体忘了,不过我是用HAL开发的,晚上下班回去我可以找下代码发上来  详情 回复 发表于 2020-9-14 11:21

回复

326

帖子

0

资源

一粒金砂(中级)

ckjjjj 发表于 2020-9-14 11:17 你那个方式和我这个相同么?因为我这个需要1ms发送完指定脉冲数

思路差不多,具体忘了,不过我是用HAL开发的,晚上下班回去我可以找下代码发上来


回复

10

帖子

0

资源

一粒金砂(初级)

宋元浩 发表于 2020-9-14 11:21 思路差不多,具体忘了,不过我是用HAL开发的,晚上下班回去我可以找下代码发上来

可以,谢谢啦


回复

3750

帖子

0

资源

版主

通道值赋0值就可以关闭输出,不要关闭定时器.


回复

10

帖子

0

资源

一粒金砂(初级)

huo_hu 发表于 2020-9-14 14:37 通道值赋0值就可以关闭输出,不要关闭定时器.

没有在中断里关闭TIM,而是在发脉冲前,配置PSC和ARR值才关闭的。


回复

3750

帖子

0

资源

版主

这个只用溢出中断就行了,用不着dma,输出会落后一个周期


回复
您需要登录后才可以回帖 登录 | 注册

关闭
站长推荐上一条 1/6 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表