OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4167|回复: 3

AD采集DMA方式的时间问题

[复制链接]

12

主题

25

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-3-25
在线时间
35 小时
发表于 2017-6-9 18:49:08 | 显示全部楼层 |阅读模式
30金钱
最近用Cube配了一个F407的多通道AD采集,用的DMA方式,但是有一个时间上的疑问。我设置ADC时钟为36MHz,每个通道的采样时间为480个cycle,这样一个通道大约是13.3us,我用了2个通道,每个通道采集5000次后通过HAL_ADC_Start_DMA(&hadc1,(uint32_t *)data,10000);

将数据传递到data数组中,这样的话就大概需要133ms可以传递一次,我想确定一下这个时间对不对,所以就想在中断里通过跑马灯并用示波器看这个时间。
在void ADC_DMAConvCplt(DMA_HandleTypeDef *hdma);
中看到了回调函数
HAL_ADC_ConvHalfCpltCallback(hadc);
我重定义了这个函数如下:
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
        HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_9);
}

但是灯并没有不断亮灭,是我中断函数找的不对么?这是第一个问题。另一个问题就是关于AD采集、DMA传输、对DMA传输的数据进行处理,这三个过程对CPU的占用问题,我的理解是AD采集是独立的,然后DMA传输和对数据进行处理是不能同时进行,在这个前提下如果DMA需要传递很多数据,比如上面需要10000个,是AD采集10000个数据后才会把数据通过DMA将寄存器里的值传递给我要的数组比如data里么?应该不是这种,因为AD的数据寄存器只能存一次采集的结果,所以应该是AD每采集一次就会放入DMA的缓冲里,然后采到10000个后会通过DMA方式把缓冲区里的数据传到data,我觉得应该是这种。所以我有另一个问题,就是在对传输到data里的数据进行处理的程序段时间肯定是很短的,因为系统时钟周期我设置的是168MHz,而且处理过程也不复杂,肯定应该是远小于133ms的。由于AD采集是独立的(我理解是独立的),那么是不是说我处理data里的程序可能会把已经采集过的数据处理了多次,因为,我处理的时候,AD还没有采集够10000个数据传给data。是这样么?有懂得大牛求解答啊。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-6-9 19:58:41 | 显示全部楼层
你想调用到 DMA完成回调函数.当然要使用HAL_ADC_Start_DMA_IT(); 这个函数来开启中断呀..不然.中断没有开..哪里会执行你的回调函数呢?
回复

使用道具 举报

12

主题

25

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-3-25
在线时间
35 小时
 楼主| 发表于 2017-6-19 14:57:45 | 显示全部楼层
操作系统 发表于 2017-6-9 19:58
你想调用到 DMA完成回调函数.当然要使用HAL_ADC_Start_DMA_IT(); 这个函数来开启中断呀..不然.中断没有开.. ...

HAL_ADC_Start_DMA_IT(),额,没有这个中断函数吧
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-6-19 16:16:29 | 显示全部楼层
一头鱼 发表于 2017-6-19 14:57
HAL_ADC_Start_DMA_IT(),额,没有这个中断函数吧

我的库有这个函数..你可以多看一下,有没有其它的类似函数.
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 09:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表