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 嵌入式开发
32KB
339 行
Rust AD983x低功耗可编程波形发生器/直接数字合成器(DDS)驱动程序
这是一个使用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 License,版本2.0(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确表示,否则任何有意提交以包含在您的工作中的贡献,如Apache-2.0许可证中定义的,将根据上述内容双重许可,无需任何额外条款或条件。
依赖项
~56KB