使用ADC生成正弦波

时间:2014-12-03 12:17:48

标签: linux embedded wave adc

我的主板上有一个adc模块。我在信号发生器上创建一个正弦波。我将这个发生器的输出提供给一个adc引脚。最后我定期读取该引脚的值。我尝试在我的软件上创建一个正弦波。

x = t,
y = Asin(wt),
A : amptitute value of the generator, 
w : 2πf, f : I set its value on my software.(difference time between two read operation)
t : time

而且我没有使用adc pin的值。这个价值不是创造波浪的重要因素吗?

1 个答案:

答案 0 :(得分:1)

我会尝试根据您对帖子的理解为您提供一些提示。

ADC应该采样以定义的频率产生的模拟信号,以产生数字信号。在您的情况下,您需要两个信息来跟踪您的曲线:

  1. 数据:
  2. 要跟踪的数据(样本),其表示整个采样时间(在每个采样时刻)的信号幅度。

    1. 时间:
    2. 您需要知道ADC对信号进行采样的时间段,然后将每个数据与其对应的瞬间相关联。可以从ADC采样信号T = 1 / f的频率推导出周期。

      ADC将每个采样数据存储在寄存器中,并生成中断以通知处理器有关新的数据。您的中断服务程序(如果您正在进行中断)必须能够在下一个样本替换之前提取该数据。作为建议,您可以在应用程序中创建一个缓冲区,您的中断例程可以在其中存储数据。然后,您的应用程序可以从缓冲区中提取数据,并在系统具有显示输出时将其用于绘制曲线,或将其发送到将执行此任务的桌面应用程序。

      你不需要坚持你的帖子中的等式;这是为了模拟。相反,您可以将数字化曲线视为f(t)= Data(t)。

      当您使用Linux时,如果您不想处理中断,可以继续使用/ sysfs接口读取数据。请注意,根据您的应用程序要求,打开文件以读取每个样本的数据可能会很慢。