#generator #waveform #dds #嵌入式-hal-driver

无std ad983x

适用于AD9833、AD9834、AD9837和AD9838低功耗可编程波形发生器/直接数字合成器(DDS)的平台无关Rust驱动程序

5个版本 (1个稳定版)

1.0.0 2024年5月4日
0.3.0 2021年9月24日
0.2.0 2019年11月10日
0.1.1 2019年5月30日
0.1.0 2019年5月29日

#1598 in 嵌入式开发

MIT/Apache

32KB
339

Rust AD983x低功耗可编程波形发生器/直接数字合成器(DDS)驱动程序

crates.io Docs Minimum Supported Rust Version Build Status Coverage Status

这是一个使用embedded-hal traits的平台无关Rust驱动程序,用于AD9833、AD9834、AD9837和AD9838低功耗可编程波形发生器/直接数字合成器(DDS)。

此驱动程序允许您

  • 启用/禁用/重置设备。请参阅enable()
  • 设置频率寄存器。请参阅:set_frequency()
  • 选择输出频率寄存器。请参阅:select_frequency()
  • 设置相位寄存器。请参阅:set_phase()
  • 选择输出相位寄存器。请参阅:select_phase()
  • 分别设置频率寄存器的MSB/LSB。请参阅:set_frequency_msb()
  • 设置输出波形。请参阅:set_output_waveform()
  • 关闭/开启设备部分电源。请参阅:set_powered_down()
  • 在AD9834/AD9838上选择控制源。请参阅:set_control_source()

介绍性博客文章

设备

AD9833、AD9834、AD9837和AD9838是低功耗、可编程波形发生器,能够产生正弦波、三角波和方波输出。波形生成在各种类型的传感、驱动和时间域反射(TDR)应用中是必需的。输出频率和相位可由软件编程,便于调节。无需外部组件。频率寄存器宽度为28位:在25 MHz时钟速率下,可实现0.1 Hz的分辨率;在1 MHz时钟速率下,AD9833可调节到0.004 Hz的分辨率。

设备通过3线串行接口(SPI)进行写入。该串行接口在高达40 MHz的时钟速率下运行,并与DSP和微控制器标准兼容。设备工作电压为2.3 V至5.5 V。

数据手册

应用笔记

使用AD9833解释DDS的文章

用法

要使用此驱动程序,请导入此crate和embedded_hal实现,然后实例化适当的设备。

我编写了一个示例MIDI播放器,可以在硬件中播放贝多芬的第九交响曲 :)。见:driver-examples

use ad983x::{Ad983x, FrequencyRegister};
use embedded_hal_bus::spi::ExclusiveDevice;
use linux_embedded_hal::{Delay, SpidevBus, SysfsPin};

fn main() {
    let spi = SpidevBus::open("/dev/spidev0.0").unwrap();
    let chip_select = SysfsPin::new(25);
    let dev = ExclusiveDevice::new(spi, chip_select, Delay);
    let mut dds = Ad983x::new_ad9833(dev);
    dds.reset().unwrap(); // reset is necessary before operation
    dds.set_frequency(FrequencyRegister::F0, 4724).unwrap();
    dds.enable().unwrap();
    // Given a 25 MHz clock, this now outputs a sine wave
    // with a frequency of 440 Hz, which is a standard
    // A4 tone.

    // Get device back
    let _dev = dds.destroy();
}

状态

  • 兼容AD9833/AD9837
  • 兼容AD9834/AD9838
  • 兼容AD9832/AD9835

支持

有关问题、问题、功能请求(如与类似设备的兼容性以及其他更改),请在github项目中提交问题。

许可

许可为以下之一

由您选择。

贡献

除非您明确表示,否则任何有意提交以包含在您的工作中的贡献,如Apache-2.0许可证中定义的,将根据上述内容双重许可,无需任何额外条款或条件。

依赖项

~56KB