打印
[PIC®/AVR®/dsPIC®产品]

使用 DAC 和 DMA 的任意波形发生器

[复制链接]
386|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
使用 DAC 和 DMA 的任意波形发生器.pdf (1.56 MB)
本应用笔记介绍了如何使用直接存储器访问(Direct Memory Access,DMA)和 8 位缓冲数模转换器(Digital-toAnalog Converter,DAC)来实现任意波形发生器(Arbitrary Waveform Generator,AWG)。此应用可生成最长 255个采样的波形,波形使用 RAM 中的查找表(Look-up Table,LUT)来创建,数据来自于加载到 SD 卡上的用户生成文件。从 SD 卡读取波形后,AWG 将独立于内核运行,无需额外的 CPU 干预。波形的生成方法如下:使用 DMA 以定时器决定的间隔将来自 RAM 中 LUT 的值自动加载到 DAC 输出寄存器中。

波形生成
任意波形发生器是能够生成模拟波形的系统,可提供任意波形。这种发生器通常用作测试设备,用于测试电路对特定输入的响应。通过连续调整数模转换器(DAC)的输出,可生成由一组离散步阶构成的模拟信号,进而生成波形。这些值可通过编程方式实时生成,也可以从查询表中加载。任意波形发生器的限制在于输入电压范围、用于生成信号的 DAC 的特性以及将数据馈送到 DAC 的器件的性能特性。所生成波形的质量与所用 DAC 模块的采样率和分辨率直接相关。



DMA直接存储器访问(DMA)是一个无需 CPU 干预即可在不同存储区(包括寄存器存储器)之间传输数据的子系统。与不使用 DMA 传输数据相比,此功能允许以较低的 CPU 开销在外设之间传输数据。如果应用要求传输数据的速率必须接近器件时钟的频率(例如此任意波形发生器应用),则使用 DMA 会有很好的效果。DMA 模块由 DMA 控制器和多个接口通道组成,允许在器件存储区之间进行数据传输。系统仲裁器用于为不同的系统事件分配优先级,并且可用于为 DMA 提供比主代码执行甚至是 ISR 执行更高的优先级。DMA 子系统基于独立的数据和地址总线运行,能够在不影响 CPU 运行的情况下传输数据(前提是通过系统仲裁器使 DMA 的优先级低于 CPU)。可以将传输过程配置为由各种系统事件触发。例如,可以将 DMA 配置为在触发 UART 接收中断时将 UART 接收到的消息自动传输给用户定义的存储缓冲区。每个 DMA 通道都有其自己的可配置优先级,可以使用系统仲裁器设置该优先级。默认情况下,DMA 的优先级低于CPU 的最低优先级,并且由于双周期指令(例如 GOTO),DMA 将仅在 CPU 执行期间出现的间隙内执行。DMA 可配置为在触发时暂停 CPU 执行,甚至暂停中断执行,具体取决于使用系统仲裁器设置的优先级。

使用特权

评论回复
沙发
玛尼玛尼哄|  楼主 | 2023-8-13 17:09 | 只看该作者

自己做板子,烧录接口可以这么做。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

3053

帖子

2

粉丝