将STM32 MCU与外部ADC连接并通过SPI读取数据

2019-07-14 17:18发布

我想使用STM32微控制器从多通道ADC读取数据。我打算使用的微控制器很可能来自F7系列(例如STM32F746ZGT),而我目前关注的ADC是ADI公司的LTC2358-18。我正在进行的项目要求我同时读取6个模拟通道(具有合理的数据速率)。据我所知,特定的ADC芯片可以在不同的串行数据输出(SDO)通道上输出其转换结果,这些通道可以并行读出(所有串行时钟都相同): 1.png 我想知道是否可以使用单个STM32 MCU通过SPI读取6通道输出数据(我真的不需要剩下的两个通道)。一般来说,我认为我需要配置STM32F746ZGT上可用的6个SPI接口,如下所示:
  • 其中一个SPI充当主设备,为所有从设备(STM32芯片和ADC上的5个剩余SPI)和ADC配置的串行数据输出(SDO)提供串行时钟(SCK)。主人(我猜)会拉下所有SPI从设备的CS。
  • STM32F746ZGT上剩余的5个SPI共用一条公共SCK线,每条线都连接到ADC上的SDO通道。
或者,换句话说,它看起来像这样: 2.png 这种配置是否真的有用,还是我哪个步骤出错了,劳烦大家指点一下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
asgfafa
1楼-- · 2019-07-15 21:42
DMA +管理良好的DMA中断
阿兵888824
2楼-- · 2019-07-16 02:54
 精彩回答 2  元偷偷看……
ZXH22770
3楼-- · 2019-07-16 06:42
ADC有一个缓冲区,因此它将为您保存数据,只需告诉ADC运行并从您想要的所有行获取DATA,然后一旦完成转换,逐个读取所有行,逐个。您的数据线输入将足够快,足以在每个转换周期之间输入6 - 18位输入。
qiangqzuo
4楼-- · 2019-07-16 11:34
我不是STM的专家,但对于我曾经使用过的每一个控制器,由于以下原因,这不起作用:

可能(我没有检查)由于引脚映射限制,你不能同时访问所有6个SPI接口,即使你每个只使用一个MISO引脚; 我猜它没有用。
这六个接口都是相互独立的,无法将时钟从接口0同步到接口n。这通常是这种情况,因为SPI外设通常作为IP购买,然后实例化6次; 但这些之间没有相互联系; 它们是具有自己的寄存器/存储区域的独立实例。
你应该做的是按顺序读取它们(通常这是通过DMA读取完成的)。由于内部只有一个ADC,根据数据表的最大采样率为200k(8ch),假设24位传输(不确定STM的DMA是否可以处理)导致大约40 MBit数据速率/ spi速度。这应该是可能的,不考虑后期处理。
7545wfs
5楼-- · 2019-07-16 16:39
1)在物理上可以利用STM32F746ZGT上的所有SPI(它是一个相对较大的144引脚芯片)。2)SPI之间的SCK同步不是内部的。所有SPIn_SCK引脚都将在外部(与ADC一起)连接在一起,主SPI(SPI1)将为整个总线提供时钟。我认为SPI从设备应该遵循特定的时钟信号。

一周热门 更多>