OpenEdv-开源电子网

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

STM32F4 通过SPI口DMA读取ADC

[复制链接]

24

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2014-3-6
在线时间
23 小时
发表于 2018-3-9 15:11:06 | 显示全部楼层 |阅读模式
1金钱
大家好:      课题:STM32F4 通过SPI口DMA读取ADC      ADC采样速率:32KHz,即每1ms采样32次
      SPI设置: SPI 主 + DMA

      期望:系统启动SPI后,SPI口按32KHz的速率,自动的通过DMA读取ADC,不用CPU干预(不要中断,因为32KHz太频繁了)。

      问题:由于F4的SPI作为主时其NSS只能使用软模式,需要CPU显式的操作NSS。
                有什么方法可以不用CPU干预呢?

谢谢!



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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-3-10 01:51:33 | 显示全部楼层
你可以设置一定大小的buf,adc通过dma读取到buf,到了一定程度再去cpu处理即可。
回复

使用道具 举报

24

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2014-3-6
在线时间
23 小时
 楼主| 发表于 2018-3-10 11:45:01 | 显示全部楼层
正点原子 发表于 2018-3-10 01:51
你可以设置一定大小的buf,adc通过dma读取到buf,到了一定程度再去cpu处理即可。

多谢原子!
疑虑的是:多次SPI读,每次SPI操作是否需要CPU去显式的拉低拉高NSS吗?如果需要,那只能通过CPU中断或查询了。
回复

使用道具 举报

35

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2016-10-12
在线时间
53 小时
发表于 2018-3-10 12:52:43 | 显示全部楼层
你这个想法,有点像想实现DMA的外设到外设模式,实际上,这种方案并不可行,我有文章解释过这个问题,就在原子论坛.《关于DMA的外设到外设问题》
回复

使用道具 举报

24

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2014-3-6
在线时间
23 小时
 楼主| 发表于 2018-3-10 15:19:02 | 显示全部楼层
kmmyk 发表于 2018-3-10 12:52
你这个想法,有点像想实现DMA的外设到外设模式,实际上,这种方案并不可行,我有文章解释过这个问题,就在 ...

多谢原子和kmmyk:
是我没说太清楚,实际的需求是F4透过SPI以32KHz的频率操作一个ADC(SPI接口),因为F4的SPI接口不能自动的拉高NSS(必须用SPI_NSS_SOFT),如果使用中断就太频繁了。
看到有人这么做:
1、使能定时器的PWM输出 - 使用PWM的输出模拟SPI之CS;
2、通过该PWM信号(CS)的下降沿触发一个DMA_stream进行SPI操作;
3、SPI读入的数据通过另一个DMA_stream放到一个缓冲区;
4、CPU可以在其需要的时候去读这个缓冲区;

数据流: TIMER -> PWM ->  DMA1 -> SPI -> DMA2 -> memory

你们觉得这样可行不?

谢谢!
回复

使用道具 举报

1

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
490
金钱
490
注册时间
2018-5-28
在线时间
126 小时
发表于 2018-6-15 14:02:45 | 显示全部楼层
twodiamond 发表于 2018-3-10 15:19
多谢原子和kmmyk:
是我没说太清楚,实际的需求是F4透过SPI以32KHz的频率操作一个ADC(SPI接口),因为F4的 ...

哥们,试通了么
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 05:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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