硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5040|回复: 5
收起左侧

[有问必答] STM32F407 通过SPI口外接ADC

[复制链接]

59

主题

90

回帖

267

积分

高级会员

积分
267
发表于 2018-3-9 14:33:37 | 显示全部楼层 |阅读模式
大家好:
      类似于STM32-V5与AD7606的连接,通过SPI口实现ADC采样。
      采样速率:32KHz,即每1ms采样32次
      SPI设置: SPI 主 + DMA

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

      问题:由于SPI作为主时其NSS只能使用软模式,需要CPU显式的操作NSS,CPU要么查询要么中断来控制NSS。
                有什么方法可以不用中断或查询呢?

谢谢!

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2018-3-9 16:17:44 | 显示全部楼层
暂时还没有,帮顶下。
回复

使用道具 举报

59

主题

90

回帖

267

积分

高级会员

积分
267
 楼主| 发表于 2018-3-9 16:54:35 | 显示全部楼层
eric2013 发表于 2018-3-9 16:17
暂时还没有,帮顶下。

Eirc2013:
这么说是必须中断CPU(或CPU查询),由CPU显式的拉高NSS吗?
这样的话如果通过SPI外接ADC,很难实现高速率采样呀,是吧?

谢谢!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2018-3-10 02:15:59 | 显示全部楼层
twodiamond 发表于 2018-3-9 16:54
Eirc2013:
这么说是必须中断CPU(或CPU查询),由CPU显式的拉高NSS吗?
这样的话如果通过SPI外接ADC, ...

是的,所以高速得用FSMC接口。
回复

使用道具 举报

59

主题

90

回帖

267

积分

高级会员

积分
267
 楼主| 发表于 2018-3-10 15:22:29 | 显示全部楼层
eric2013 发表于 2018-3-10 02:15
是的,所以高速得用FSMC接口。

Eric:
是我没说太清楚,具体的需求是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万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2018-3-10 15:23:55 | 显示全部楼层
twodiamond 发表于 2018-3-10 15:22
Eric:
是我没说太清楚,具体的需求是F4透过SPI以32KHz的频率操作一个ADC(SPI接口),因为F4的SPI接口不能 ...

你可以尝试下。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-17 06:49 , Processed in 0.037884 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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