标题: 如何用STM32的SPI读取16个传感器的数据 [打印本页]

作者: qwe2156349    时间: 2021-3-26 09:22
标题: 如何用STM32的SPI读取16个传感器的数据
计划实现用SPI读取由16个传感器组成的陀螺阵列的陀螺仪的数据,用SPI读取,必须得拉高拉低片选信号,时间上数据不能保证同时性,请问该怎么实现?用四组SPI同时读取可以吗?望路过的大佬指教指教

作者: daemondong    时间: 2021-3-26 10:49
SPI本身是串行数据,要想保证时间一致性,只有16个SPI+DMA一起读,多个CPU用外部中断启动读写,保证时间一致性。
作者: szb314    时间: 2021-3-26 10:56
要比较好的“同时”性,可以考虑用多个IO脚模拟SPI驱动
作者: mvwtest    时间: 2021-3-26 11:13
mcu的同時並不表示一般人所理解的同時
不管你接多少組傳感器,對mcu而言,也是一組一組讀。
對程序而言,也是一行一行的走。
先確認當前硬件系統的數據處理時效是否可以滿足設計要求。
作者: qwe2156349    时间: 2021-3-26 11:40
daemondong 发表于 2021-3-26 10:49
SPI本身是串行数据,要想保证时间一致性,只有16个SPI+DMA一起读,多个CPU用外部中断启动读写,保证时间一 ...

谢谢回复。16个CPU的成本太高了,是否能用一条时钟线上的四组SPI同时读取,一组读取四个传感器的数据,
作者: qwe2156349    时间: 2021-3-26 11:40
szb314 发表于 2021-3-26 10:56
要比较好的“同时”性,可以考虑用多个IO脚模拟SPI驱动

谢谢回复,用IO口模拟,是不是IO占用太多了,是不是用I2C更好点,
作者: qwe2156349    时间: 2021-3-26 11:42
mvwtest 发表于 2021-3-26 11:13
mcu的同時並不表示一般人所理解的同時
不管你接多少組傳感器,對mcu而言,也是一組一組讀。
對程序而言, ...

谢谢回复,我用的是STM32F429,因为要对比相差时间不大的陀螺仪数据,然后进行融合,请问有什么好的方法吗
作者: 黄youhui    时间: 2021-3-26 13:13
qwe2156349 发表于 2021-3-26 11:42
谢谢回复,我用的是STM32F429,因为要对比相差时间不大的陀螺仪数据,然后进行融合,请问有什么好的方法吗

拜托STM32F4最高168M时钟,读一个传感器零点几微妙的事,你差这几微秒吗
作者: mvwtest    时间: 2021-3-26 14:00
qwe2156349 发表于 2021-3-26 11:42
谢谢回复,我用的是STM32F429,因为要对比相差时间不大的陀螺仪数据,然后进行融合,请问有什么好的方法吗

如對數據實時性有超常要求,建議考慮RTOS。
作者: szb314    时间: 2021-3-27 08:50
qwe2156349 发表于 2021-3-26 11:40
谢谢回复,用IO口模拟,是不是IO占用太多了,是不是用I2C更好点,

I2C模拟的话占用的IO脚16+1时钟, SPI 需要16个片选IO脚+1时钟+1数据,SPI需要16次,I2C 或许16个器件可以“同时”读




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1