打印
[STM32F4]

不用中断和 DMA,尽量少占用 CPU,如何高速、连续启动 SPI ?

[复制链接]
4753|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
玄德|  楼主 | 2014-4-3 16:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 玄德 于 2014-4-3 16:30 编辑

要用F407的SPI接口,高速采集AD数据,采样频率几百K ~ 1 MHz。

SPI的启动方法,我知道以下方法,但都有问题:
1、用软件向 SPI -> DR 寄存器写数据,写一次就启动一次。这是常规的方法。
   我现在的情况是:CPU很忙,这样做难以达到几百 K 的高速。另外,暂时不考虑在中断中写 DR 寄存器,因为难以协调其他中断。
2、用 DMA 方式,可以“批量”启动SPI,次数可以定义。     
   可惜两个 DMA 控制器都已经占用了,一个用于 DA 高速输出(另有一片高速 DA ),另一个准备用来转移这个高速 AD 采集的数据。

还有其他可能的方法吗?



沙发
airwill| | 2014-4-3 16:48 | 只看该作者
DMA 的每一个通道都可以独立使用.
还是使用 DMA 吧

使用特权

评论回复
板凳
玄德|  楼主 | 2014-4-3 16:48 | 只看该作者
本帖最后由 玄德 于 2014-4-3 18:29 编辑

似乎我关于DMA的概念有误,
每个DMA控制器可以同时处理多个事件,是这样吗?
如果是,应当可以解决。

使用特权

评论回复
地板
df_flying| | 2014-4-3 17:30 | 只看该作者
SPI通道会有自己独立的DMA,而不是只有两个。。。

使用特权

评论回复
5
huzi2099| | 2014-4-3 17:36 | 只看该作者
几百k算不上高.

使用特权

评论回复
6
feilusia| | 2014-4-3 21:14 | 只看该作者
玄德 发表于 2014-4-3 16:48
似乎我关于DMA的概念有误,
每个DMA控制器可以同时处理多个事件,是这样吗?
如果是,应当可以解决。 ...

你搞错了,一个DMA有多个通道,但是同一时间内只能运行一个通道。与AD是一样的。
当有多个通道时,需要设置DMA的优先级,一共有4个等级。

使用特权

评论回复
7
feilusia| | 2014-4-3 21:30 | 只看该作者
还是用多个CPU吧
采集、处理、输出分三个CPU。

使用特权

评论回复
8
玄德|  楼主 | 2014-4-3 22:24 | 只看该作者
feilusia 发表于 2014-4-3 21:14
你搞错了,一个DMA有多个通道,但是同一时间内只能运行一个通道。与AD是一样的。
当有多个通道时,需要设 ...

我这样设想:
1、定时器 PWM 方式输出脉冲,启动 AD 转换;
2、这个脉冲的后沿同时启动 DMA ,向 SPI-DR 寄存器搬数据,即启动 SPI 接收 AD 数据;
3、接收完成事件启动同一个 DMA 的另一个通道,把接收数据搬到其他地方(缓冲区)。
以上过程反复运行。

两个通道的物理过程,决定了它们不是同时出现的。似乎可行吧。

明天试一试。要查 AD 的手册,看时序能不能配出来。




使用特权

评论回复
9
海中水| | 2014-4-4 00:23 | 只看该作者
查看一下他的DMA配置,就用DMA吧!不用中断,很难做到你说的那个要求。

使用特权

评论回复
10
ticomi| | 2014-4-4 08:33 | 只看该作者
huzi2099 发表于 2014-4-3 17:36
几百k算不上高.

用F4系列的话,我感觉还是有些困难的,我现在降频为48M,采集的速度大概是200Hz左右,再高CPU就处理的很吃力了。

使用特权

评论回复
11
huzi2099| | 2014-4-4 08:57 | 只看该作者
ticomi 发表于 2014-4-4 08:33
用F4系列的话,我感觉还是有些困难的,我现在降频为48M,采集的速度大概是200Hz左右,再高CPU就处理的很 ...

天哪,F4耶

使用特权

评论回复
12
myxiaonia| | 2014-4-4 09:40 | 只看该作者
玄德 发表于 2014-4-3 16:48
似乎我关于DMA的概念有误,
每个DMA控制器可以同时处理多个事件,是这样吗?
如果是,应当可以解决。 ...

分时复用么?

使用特权

评论回复
13
大秦正声| | 2014-4-4 10:17 | 只看该作者
用两个cpu !

使用特权

评论回复
14
大秦正声| | 2014-4-4 10:17 | 只看该作者
feilusia 发表于 2014-4-3 21:30
还是用多个CPU吧
采集、处理、输出分三个CPU。

需要协调好!

使用特权

评论回复
15
ticomi| | 2014-4-4 11:43 | 只看该作者
huzi2099 发表于 2014-4-4 08:57
天哪,F4耶

因为我是实时系统,每次采集的数据都需要运算出来,这个占用较多时间,我也没有开始F4的浮点功能。

使用特权

评论回复
16
yzzly| | 2014-4-4 12:17 | 只看该作者
思路有问题

使用特权

评论回复
17
玄德|  楼主 | 2014-4-4 12:36 | 只看该作者
yzzly 发表于 2014-4-4 12:17
思路有问题

怎么讲?

使用特权

评论回复
18
elec921| | 2014-4-4 13:25 | 只看该作者
上CPLD吧 EPM240T100 才几块钱

使用特权

评论回复
19
笑着奔跑| | 2014-4-4 15:30 | 只看该作者
各位工程师朋友
     大家 好, 首先向大家说一声,您辛苦了。
     我是亚芯科技的销售Tom , 本人自毕业起,一直在IC 行业做销售,一直有为西电,华工,上海光机所,哈工大等电子院校的本科,研究生朋友提供IC芯片, 不管数量大小,无最小起订量限制,了解IC 市场,找货能力强。所提供的为全新原装芯片,大家 有需话的话,可以联系我,所有交易可以通过淘宝交易。希望能和大家做个朋友,你们是行业的栋梁,国家的未来。

谢谢,
我的联系方式是

电话:18988759952
QQ : 1552295620

使用特权

评论回复
20
Rain_King| | 2014-4-4 17:56 | 只看该作者
楼上果真是销售员的节奏啊,搞技术怎么可能会有这样的语调..................

使用特权

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

本版积分规则

个人签名:有事请找 xuander

153

主题

5927

帖子

44

粉丝