8296|44

9853

帖子

24

TA的资源

版主

楼主
 

为什么用STM32的TIMER捕获 DMA只有一个通道有数据 [复制链接]

 

我使用cubemx配置timer的通道1和通道2为捕获模式

2个通道使用类似的DMA配置

 

现在的问题是如果我使用下边的两行代码,触发后cp2数据里没有数据

如果注释掉第一行cp2才有数据,感觉2个通道不能同时捕获,是我的代码哪里配置不正确吗?

  HAL_TIM_IC_Start_DMA(&htim2,TIM_CHANNEL_1,cp1,20);
  HAL_TIM_IC_Start_DMA(&htim2,TIM_CHANNEL_2,cp2,20);

 

 

测试用的工程文件:

BB.rar (9.28 MB, 下载次数: 130)

 

此帖出自stm32/stm8论坛

最新回复

新手弱弱的请教一下,我设置的是上升沿捕获,这个CP1和CP2测出来具体是个什么值,捕获的时间嘛,还有后面的长度20是什么意思,读20个值嘛   详情 回复 发表于 2021-8-24 09:44
点赞 关注(2)
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 

回复
举报

4008

帖子

0

TA的资源

版主

沙发
 

因为start DMA会重新初始化dma的配置,你可以看一下代码,初始化dma在这个函数里,你试试这样

HAL_TIM_IC_Start_DMA(&htim2,TIM_CHANNEL_1|TIM_CHANNEL_2,cp1,20);

此帖出自stm32/stm8论坛

点评

看这个函数介绍应该是不能这样做,从函数内部switch来看同时也只能处理一个通道,而且完一个通道后就直接break了,不会对另一个通道进行配置  详情 回复 发表于 2019-7-19 12:25
 
 

回复

9853

帖子

24

TA的资源

版主

板凳
 
huo_hu 发表于 2019-7-19 10:32 因为start DMA会重新初始化dma的配置,你可以看一下代码,初始化dma在这个函数里,你试试这样 HAL_TIM_IC_S ...

看这个函数介绍应该是不能这样做,从函数内部switch来看同时也只能处理一个通道,而且完一个通道后就直接break了,不会对另一个通道进行配置

此帖出自stm32/stm8论坛
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 

回复

260

帖子

0

TA的资源

一粒金砂(中级)

4
 
楼主解决了吗??
此帖出自stm32/stm8论坛

点评

问题解决了  详情 回复 发表于 2019-8-25 18:02
没解决 查了很多资料 好像DMA方式好像只能开启一个通道  详情 回复 发表于 2019-8-14 22:15
 
 
 

回复

9853

帖子

24

TA的资源

版主

5
 
wdliming 发表于 2019-8-14 21:25
楼主解决了吗??

没解决 查了很多资料 好像DMA方式好像只能开启一个通道
此帖出自stm32/stm8论坛

点评

那我用定时器5通道1,定时器2通道2,可以可以开启吗??  详情 回复 发表于 2019-8-15 10:38
一个定时器一个通道是吧,那我用两个定时器来捕获两个独立的通道,应该可以的吧~~ 比如tim5 ch1 tim2 ch2这样是可以的吧  详情 回复 发表于 2019-8-15 08:51
 
 
 

回复

260

帖子

0

TA的资源

一粒金砂(中级)

6
 
littleshrimp 发表于 2019-8-14 22:15 没解决 查了很多资料 好像DMA方式好像只能开启一个通道

一个定时器一个通道是吧,那我用两个定时器来捕获两个独立的通道,应该可以的吧~~

比如tim5 ch1 tim2 ch2这样是可以的吧

此帖出自stm32/stm8论坛

点评

这个要看你的要求 我的需要计算几个通道间的时差 一个定时器的多个通道会使用一个计数器 容易计算 两个定时器计数就需要同步 否则没法算时差  详情 回复 发表于 2019-8-15 10:30
这个要看你的要求 我的需要计算几个通道间的时差 一个定时器的多个通道会使用一个计数器 容易计算 两个定时器计数就需要同步 否则没法算时差  详情 回复 发表于 2019-8-15 10:22
 
 
 

回复

260

帖子

0

TA的资源

一粒金砂(中级)

7
 
想请问一下,你cp1的数组里面为何是100大小,那ccp1的值是读取cp1[0]吗??
此帖出自stm32/stm8论坛
 
 
 

回复

260

帖子

0

TA的资源

一粒金砂(中级)

8
 

还想请问一下 ,这个dma来取读的方式是不是会节约cpu运行时间的?因为用中断方式的话,会频繁进中断,dma是不是不会频繁进中断?我看你是使用normal模式的,那我是不是可以每100ms调用HAL_TIM_IC_Start_DMA,意味着硬件始终是在采样频率的,只是我数据搬运是100一次,可以这么理解?

还是说dma数据一值搬运,搬运到100个数据后,dma触发中断,中断结束了,等下次调用HAL_TIM_IC_Start_DMA再次开启数据搬运,请问哪个理解是对的??

还望多多指教谢谢~~

此帖出自stm32/stm8论坛

点评

数组长度是要捕获的次数 如果是单通道使用DMA可以单次捕获(捕获到DMA数据长度后停止)也可以是循环捕获,写满以后重头在写 中断方式如果输入信号频率不高影响不大 我的会有非常高频的信号 因为中断读取捕获数据  详情 回复 发表于 2019-8-15 10:19
 
 
 

回复

9853

帖子

24

TA的资源

版主

9
 
wdliming 发表于 2019-8-15 09:27
还想请问一下 ,这个dma来取读的方式是不是会节约cpu运行时间的?因为用中断方式的话,会频繁进中断,dma是 ...

数组长度是要捕获的次数
如果是单通道使用DMA可以单次捕获(捕获到DMA数据长度后停止)也可以是循环捕获,写满以后重头在写
中断方式如果输入信号频率不高影响不大
我的会有非常高频的信号
因为中断读取捕获数据需要处理时间
如果上一次捕获数据还没处理好又来一次数据就会出问题
此帖出自stm32/stm8论坛

点评

嗯嗯,是得 我就是只采样频率,如果用两个定时器来分别对两个独立的引脚进行采样,好上面我说的,dma可以同时开启吗?还是说也只能一个DMA呢?  详情 回复 发表于 2019-8-15 11:30
 
 
 

回复

9853

帖子

24

TA的资源

版主

10
 
wdliming 发表于 2019-8-15 08:51
一个定时器一个通道是吧,那我用两个定时器来捕获两个独立的通道,应该可以的吧~~

比如tim5 ch1 tim2  ...

这个要看你的要求 我的需要计算几个通道间的时差 一个定时器的多个通道会使用一个计数器 容易计算
两个定时器计数就需要同步 否则没法算时差
此帖出自stm32/stm8论坛
 
 
 

回复

9853

帖子

24

TA的资源

版主

11
 
wdliming 发表于 2019-8-15 08:51
一个定时器一个通道是吧,那我用两个定时器来捕获两个独立的通道,应该可以的吧~~

比如tim5 ch1 tim2  ...

这个要看你的要求 我的需要计算几个通道间的时差 一个定时器的多个通道会使用一个计数器 容易计算
两个定时器计数就需要同步 否则没法算时差
此帖出自stm32/stm8论坛
 
 
 

回复

260

帖子

0

TA的资源

一粒金砂(中级)

12
 
littleshrimp 发表于 2019-8-14 22:15 没解决 查了很多资料 好像DMA方式好像只能开启一个通道

那我用定时器5通道1,定时器2通道2,可以可以开启吗??

此帖出自stm32/stm8论坛

点评

你是说同时开启吗?  详情 回复 发表于 2019-8-15 11:12
 
 
 

回复

9853

帖子

24

TA的资源

版主

13
 
wdliming 发表于 2019-8-15 10:38
那我用定时器5通道1,定时器2通道2,可以可以开启吗??

你是说同时开启吗?
此帖出自stm32/stm8论坛

点评

对呀,因为我也有两个通道需要采样频率的,但是可以不用一个定时器  详情 回复 发表于 2019-8-15 11:27
 
 
 

回复

260

帖子

0

TA的资源

一粒金砂(中级)

14
 
littleshrimp 发表于 2019-8-15 11:12 你是说同时开启吗?

对呀,因为我也有两个通道需要采样频率的,但是可以不用一个定时器

此帖出自stm32/stm8论坛
 
 
 

回复

260

帖子

0

TA的资源

一粒金砂(中级)

15
 
littleshrimp 发表于 2019-8-15 10:19 数组长度是要捕获的次数 如果是单通道使用DMA可以单次捕获(捕获到DMA数据长度后停止)也可以是循环捕获 ...

嗯嗯,是得

我就是只采样频率,如果用两个定时器来分别对两个独立的引脚进行采样,好上面我说的,dma可以同时开启吗?还是说也只能一个DMA呢?

此帖出自stm32/stm8论坛

点评

可以同时开启  详情 回复 发表于 2019-8-17 12:28
 
 
 

回复

9853

帖子

24

TA的资源

版主

16
 
wdliming 发表于 2019-8-15 11:30
嗯嗯,是得

我就是只采样频率,如果用两个定时器来分别对两个独立的引脚进行采样,好上面我说的,dma ...

可以同时开启
此帖出自stm32/stm8论坛

点评

谢谢,已经试过了。ok的  详情 回复 发表于 2019-8-17 14:33
 
 
 

回复

260

帖子

0

TA的资源

一粒金砂(中级)

17
 

谢谢,已经试过了。ok的

此帖出自stm32/stm8论坛
 
 
 

回复

9853

帖子

24

TA的资源

版主

18
 

 

找到解决办法

https://community.st.com/s/question/0D50X00009XkWIcSAN/multiple-channels-input-capture-at-the-same-time

 

问题解决,测试工程 BB.rar (13.41 MB, 下载次数: 215)

 

 

此帖出自stm32/stm8论坛
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

9853

帖子

24

TA的资源

版主

19
 
wdliming 发表于 2019-8-14 21:25 楼主解决了吗??

问题解决了

此帖出自stm32/stm8论坛

点评

好的 谢谢,我立马看看~~  详情 回复 发表于 2019-9-17 12:50
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

260

帖子

0

TA的资源

一粒金砂(中级)

20
 

好的

谢谢,我立马看看~~

此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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

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

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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