首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >STM32F4传感器数据处理. ADC -> USB /以太网-> PC .USB示波器

STM32F4传感器数据处理. ADC -> USB /以太网-> PC .USB示波器
EN

Stack Overflow用户
提问于 2022-06-13 21:38:01
回答 1查看 200关注 0票数 0

我目前正在从事一个关于“传感器信号数字化”的项目。传感器信号将与ADC数字化,并通过接口(例如USB或以太网)传递给PC。理想情况下,ADC以2兆采样/秒和12位的连续模式工作。持续数字化过程中发生的数据量很可能只能通过以太网来管理。或者,间断记录,每记录5毫秒,暂停45毫秒。

目前我使用的是Nucleo-F429ZI。编程可以通过HAL或Matlab/Simulink完成。Matlab为编程提供了一个合适的GUI,其中包括以太网。然而,GUI并不适用于所有的Nucleo板。不幸的是,不支持F429ZI。

我目前正在考虑如何最好地执行该项目。我想以后也用Matlab来处理数字化的数据。在这方面,在Simulink中进行程序设计是有意义的。为此,我也愿意转到另一个董事会。

我已经有使用Matlab的经验,但在HAL编程方面的经验较少。你能给我什么建议?你还有其他窍门吗?

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2022-06-14 11:47:03

如果您的ADC以12位分辨率以2MSa/s工作,如果您使用uint16_t存储数据样本,则需要与PC连接4MB/s (或32 12bit /s)。STM32F429有一个用于USB高速的硬件外设,理论上可以达到480 much /s,远远超出了所需的范围。

就我个人而言,我会尝试在VCP (Virtual )模式下使用USB,这是作为一个简单的COM端口在PC中检测到的,就像Arduino或任何具有串口的设备一样,但是速度要快得多。然后可以将数据实时读取到Matlab脚本中,或者将其保存在日志文件中以供进一步处理。

最有效的方法是在双缓冲的DMA模式下启动ADC。当一个缓冲器被ADC+DMA填充时,第二个缓冲器通过USB传输。这给CPU留下了足够的时间来处理数据传输,但是它必须等到整个缓冲区被填满。您可以触发模数转换器转换与定时器,因此采样时间将是一致的,只有数据传输将发生块。

如果你有可能得到的董事会,是兼容的环境,你有经验-绝对去做它。启动USB、ADC、DMA和计时器对那些缺乏低层次编程经验的人来说并不简单。

这一切都取决于你在嵌入式编程方面的个人技能,以及你可以在这个项目上花费的时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72609339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档