Skip to content

Latest commit

 

History

History
54 lines (38 loc) · 2.03 KB

README.md

File metadata and controls

54 lines (38 loc) · 2.03 KB

ad9850 - Embedded driver for the AD9850 DDS synthesizer chip

Crates.io LICENSE-MIT

The AD9850 is a DDS Synthesizer chip sold by Analog Devices. Check the datasheet for general information about it.

This Rust crate implements an interface for embedded devices to control such an AD9850 chip.

Supported features

  • Reset the device
  • Program in Serial mode
  • Program in Parallel mode
  • Power down / wakeup

Usage example

This example uses the arduino-hal. The ad9850 library is not device specific though, so it should be easy to adapt the example to other devices. The only requirement is that the device's pins have an implementation of the OutputPin trait from embedded_hal.

#[arduino_hal::entry]
fn main() -> ! {
    let dp = arduino_hal::Peripherals::take().unwrap();
    let pins = arduino_hal::pins!(dp);

    // Initialize the device
    let ad9850 = ad9850::Ad9850::new(
        pins.d4.into_output(), // Connect D4 (Arduino) to RESET (AD9850)
        pins.d5.into_output(), // Connect D5 (Arduino) to DATA (AD9850)
        pins.d6.into_output(), // Connect D6 (Arduino) to FQ_UD (AD9850)
        pins.d7.into_output(), // Connect D7 (Arduino) to W_CLK (AD9850)
    ).into_serial_mode().unwrap();
    //                   ^^^^ unwrap is ok here, since `set_low`/`set_high`
    //                        are infallible in the arduino-hal.

    // Set the output frequency to 1 MHz
    ad9850.set_frequency(1000000.0);
}

Documentation

For further information, please refer to the generated documentation at https://docs.rs/ad9850/latest/ad9850/

Contribution

Contributions are welcome!

For feature requests, issues or anything else, please open an issue on github.