我对微控制器很新。所以我对他们的潜力一无所知。
我想使用微控制器制作示波器,该微控制器将通过ADC捕获数据并通过USB传输到计算机进行处理和显示。
我想讨论这个项目。我拥有的资源如下:
1)我的dsPIC MCU的ADC能够提供1.1 Msps,其中每个样本的分辨率为10位。它能够同时对多达4个通道进行同步采样。
2)MCU具有USB支持和DMA通道,用于将数据从ADC传输到直接USB。
我的问题是:
1)使用这些规格可以实现最快的采样率是什么?
2)这个项目可行吗?它是否足够快以与标准示波器竞争?
3)如何优化MCU以提供最佳性能?
4)你将如何制作这个项目? (你的方法)
5)我将使用JavaFx使计算机应用程序能够显示该示波器的结果。这是正确的做法吗?
答案 0 :(得分:1)
我使用dsPIC系列MCU做了很多工作。我会尝试按顺序回答你的问题。
1)使用这些规格,我能获得的最快采样率是多少?
您的采样率正如您所说,1.1 Msps(每秒采样数为兆次),假设您只想从一个通道读取。如果您想从多个频道读取,每个频道的最大采样率将会降低。
2)这个项目可行吗?它是否足够快以与标准示波器竞争?
鉴于您对微控制器编程和基本电路原理有基本的了解,这绝对是一个可行的项目。您的示波器应该与提供1.1 Msps采样率的任何其他示波器相当,减去一些功能,例如支持10x探头(除非您为该功能构建电路)。该项目的大多数高级功能都将内置到您的Java程序中,而不是微控制器本身。
3)如何优化MCU以提供最佳性能?
为了尽可能快地获得MCU的性能,请按照规范支持的速度运行时钟,并尝试使用最少的指令找到在程序中实现相同结果的方法。这可能意味着避免在MCU端进行数据格式化,以便允许客户端程序进行这些计算。
4)你将如何制作这个项目? (你的方法)
这些MCU上的ADC操作并不是特别复杂。内置模块使项目非常易于管理。这个项目中程序最困难的部分(在我看来)将通过USB传输和接收数据。我首先要处理项目的这一部分(即使用PIC工作在PIC上,并能够从Java中实时接收和处理该数据)。如果您使用PIC24或dsPIC33系列或类似的16位MCU与Microchip编译器,我建议使用如下的C库:http://www.reesemicro.com/Home/pic24-software-library-collection
5)我将使用JavaFx使计算机应用程序能够显示该示波器的结果。这是正确的做法吗?
我从未使用过JavaFx,因此我不确定它的功能,但我确信某些Java用户界面库能够做到这一点。或许更了解JavaFx的人可以回答这部分问题吗?