我对微控制器很陌生。所以我对他们的潜力知之甚少。
我想用单片机制作一个示波器,通过ADC采集数据,然后通过usb传输到计算机上进行处理和显示。
我想讨论一下这个项目。我所拥有的资源如下:
1)我的dsPIC单片机的模数转换器能够提供1.1个Msps,其中每个采样的分辨率为10位。它能够同时进行多达4个通道的一次采样。
2)单片机具有USB支持和DMA通道,可以将数据从ADC直接传输到USB。
我的问题是:
1)使用这些规格,我所能达到的最快抽样率是多少?
( 2)该项目可行吗?它的速度是否足以与标准示波器竞争?
3)如何对单片机进行优化,使其性能达到最佳水平?
4)你将如何完成这个项目?(你的方法)
( 5)我将使用JavaFx使计算机应用程序能够显示这个示波器的结果。这样做对吗?
发布于 2016-07-09 22:09:28
我在使用dsPIC家庭MCU时做了很多工作。我试着按顺序回答你的问题。
1)使用这些规格,我所能达到的最快抽样率是多少?
你的采样率和你说的一样,1.1MSPs(超级采样-每秒),假设你只想从一个通道读取。如果要从多个通道读取,则每个通道的最大采样率将降低。
( 2)该项目可行吗?它的速度是否足以与标准示波器竞争?
这绝对是一个可行的项目,因为你对微控制器编程和基本电路原理有基本的理解。您的示波器应该可以与提供1.1MSPS采样率的任何其他示波器相比,减去一些功能,例如支持10倍探针(除非您为该功能构建电路)。这个项目的大多数高级特性将被内置到您的Java程序中,而不是微控制器本身。
3)如何对单片机进行优化,使其性能达到最佳水平?
要想从MCU中获得最快的性能,请在规范支持的范围内尽快运行时钟,并设法用最少的指令在程序中实现相同的结果。这可能意味着避免在MCU端进行数据格式化,而倾向于允许客户端程序进行这些计算。
4)你将如何完成这个项目?(你的方法)
这些MCU上的ADC操作并不特别复杂。内置模块使项目非常易于管理。这个项目最困难的部分(在我看来)是通过USB传输和接收数据。我将首先处理项目的这一部分(即使USB在PIC上工作,并能够从Java内部实时接收和处理这些数据)。如果您使用的是PIC24或dsPIC33系列或类似的16位微控制器和微芯片编译器,我建议使用C库,例如:http://www.reesemicro.com/Home/pic24-software-library-collection。
( 5)我将使用JavaFx使计算机应用程序能够显示这个示波器的结果。这样做对吗?
我从来没有使用过JavaFx,所以我不确定它的功能,但我确信某些Java用户界面库能够做到这一点。也许一个更了解JavaFx的人可以回答这个问题的这一部分?
https://stackoverflow.com/questions/38286647
复制相似问题