Hackaday.io上的示波器项目-PIC32 示波器,1 兆样本/秒
收藏
分享
脑图
Hackaday.io上的示波器项目-PIC32 示波器,1 兆样本/秒
关于项目
项目描述:直接内存访问 (DMA) NTSC 电视发生器和来自 ADC 的快速 DMA 录制组合,以大约 4 美元的速度制作良好的音频速率示波器。如果你必须买电视,请加上18美元。DMA 刷新电视屏幕时 CPU 开销不到 7%。
项目图片
项目详情
NTSC视频合成和输出
-NTSC视频是一个古老的标准,但在北美仍然用于闭路电视。生成黑白NTSC信号相当简单。此外,1 位 256x200 像素图像的帧缓冲区只有 1600 字(6400 字节)的 RAM。C 中的编程32 位微控制器的第 13 章:Lucio Di Jasio 的 PIC32 探索非常有用。我使用 Di Jasio 使用一个输出比较单元生成同步脉冲的方法。视频使用来自内存的 DMA 突发发送到 SPI 控制器(也类似于 Di Jasio),但 DMA 计时启动控制是使用另一个输出比较单元实现的,而不是链接两个 DMA 通道。这便于控制视频内容的计时。Timer2 的匹配时间等于一个视频线路时间。Ouput-比较 2 从属到计时器 2,以线速率生成一系列脉冲。OC2 脉冲(用于垂直同步)的持续时间由 Timer2 匹配 ISR 控制,其中一个简单的状态机正在运行,但脉冲持续时间不依赖于 ISR 执行时间。输出比较 3 也从属到计时器 2,并设置为在 NTSC 后门廊的末尾适当的时间生成中断,此时 DMA 突发到 SPI 端口启动。当内核以 60 MHz 运行,外设总线以 30 MHz 运行时,我获得最佳的视频稳定性。
第一个示例只是一个带一些文本的界球。该示例要求 ascii字符头文件在项目文件夹中。将 SYNC 和视频信号结合并调整到标准视频级别的 DAC 是:
-- 第二个示例是粒子系统爆炸。无需做任何空间优化 1500 个粒子(以及屏幕缓冲区)会消耗内存。所有位置都可以在每个帧中更新。给每个粒子一个高的初始速度,和高拖动使一个很好的云。
--第三个例子是粒子系统喷泉,这是爆炸的轻微修改。我优化了点绘制和一个 ISR,以实现更高效的执行。帧更新现在需要 7.2 mSec。视频.NTSC 电视信号的开销约为每 63.5 微秒线路 5 微秒,约为 8%。您应该使用此优化版本进行密集动画。一个小的变化使粒子系统火到一边。视频.
--第四个示例打开ADC以制作示波器。ADC 设置为从计时器 3 触发比较匹配信号,但没有打开 ISR。然后,ADC 完成信号触发 DMA 通道传输,以高达 900 Ksamples/sec 将 ADC 结果转储到内存中。此 ADC 硬件过程与视频更新硬件进程同时运行,因此视频不会受到干扰。CPU 负载很小,因此有时间将 ADC 波形绘制到屏幕上。添加用于范围控制和 FFT 的按钮状态机非常简单。下图从 NTSC 屏幕捕获,并显示以 900 Ksamples/秒运行的范围,并显示频率估计值。视频以 500 Ksamples/秒 ADC 速率运行。
-- 第五个示例是作用域的矢量变化。视频以 900 Ksamples/秒运行。下图仍然。
评论
0 / 100
查看更多
Sen
2020-08-20
1143
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号