将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条回答
uvysdfydad
1楼-- · 2019-07-14 23:52
需要一个SPI总线和六个芯片选择,除非那个太慢了。然而,这些ADC的SPI时钟速度是合适的快速,所以除非我在ADC上遗漏了什么,否则我看不出这是一个问题。“合理的数据率”不是“合理的”规范
7545wfs
2楼-- · 2019-07-15 04:32
嗯,这不是太关键,但我通常希望提高这个数据采集系统的吞吐量。我有点想象在这种配置中,我能够(大致)在24个时钟周期内读取6通道数据。从单个SDO读取数据需要花费6倍的时间。关于数据速率 - 我宁愿达到ADC芯片可提供的200 kSps速率。
fhdgxfvx
3楼-- · 2019-07-15 08:40
 精彩回答 2  元偷偷看……
7545wfs
4楼-- · 2019-07-15 10:57
我想我应该说明我的主要关注点是我不知道1个主接口和5个从SPI接口如何处理来自ADC的时间重合输入数据。我可以期望在MCU上正确接收所有数据吗?
lingjianghui
5楼-- · 2019-07-15 16:18
您的STM处理器不是多线程的,不要忘记。您无法并行读取6行。一次只能使用一个通道ID,并将其全部连接到一行。ADC转换是过程中耗时最长的。命令ADC进行转换,然后单独读取输出。将所有这些放在同一行,然后说'第1行给我数据',现在'第2行给我数据',一个接一个。这就是Channel ID存在的原因,否则它们会浪费宝贵的比特。
7545wfs
6楼-- · 2019-07-15 19:11
我知道STM MCU不是多线程的。通过单个SDO线读出8个通道数据并不太难(如上面评论中提及的那样)或者逐个读出它们。我最感兴趣的是这种SPI安排如何运作?MCU是否只从一个SPI通道接收数据而其他SPI通道会被忽略?

一周热门 更多>