10#ifndef M5_UNIT_DDS_UNIT_DDS_HPP
11#define M5_UNIT_DDS_UNIT_DDS_HPP
13#include <M5UnitComponent.hpp>
44class UnitDDS :
public Component {
45 M5_UNIT_COMPONENT_HPP_BUILDER(
UnitDDS, 0x31);
62 explicit UnitDDS(
const uint8_t addr = DEFAULT_ADDRESS) : Component(addr)
64 auto ccfg = component_config();
65 ccfg.clock = 400 * 1000U;
66 component_config(ccfg);
74 virtual bool begin()
override;
158 bool writePhase(
const bool select,
const uint16_t deg);
197 bool writeCurrent(
const bool select_freq,
const bool select_phase);
225 bool writeOutput(
const dds::Mode mode,
const bool select,
const uint32_t freq,
const uint16_t deg);
232 bool sleep(
const bool mclk =
true,
const bool DAC =
true);
256 bool read_control(uint8_t& ctrl);
257 bool write_register8(
const uint8_t reg,
const uint8_t v);
268constexpr uint8_t READ_DESCRIPTION_REG{0x10};
269constexpr uint8_t MODE_REG{0x20};
270constexpr uint8_t CONTROL_REG{0x21};
271constexpr uint8_t FREQUENCY_REG{0x30};
272constexpr uint8_t PHASE_REG{0x34};
bool writeCurrentFrequency(const bool select)
Write which bank frequency setting to use.
Definition unit_DDS.cpp:183
bool writeFrequency1(const uint32_t freq)
Write the frequency to bank 1.
Definition unit_DDS.hpp:147
bool writeCurrentPhase(const bool select)
Write which bank phase setting to use.
Definition unit_DDS.cpp:194
bool writePhase(const bool select, const uint16_t deg)
Write the phase.
Definition unit_DDS.cpp:137
void config(const config_t &cfg)
Set the configuration.
Definition unit_DDS.hpp:84
bool wakeup()
Wake up.
Definition unit_DDS.cpp:231
bool writeFrequencyAndPhase(const bool select_freq, const uint32_t freq, const bool select_phase, const uint16_t deg)
Write the frequency and phase.
Definition unit_DDS.cpp:146
bool writePhase0(const uint16_t deg)
Write the phase to bank 0.
Definition unit_DDS.hpp:165
bool sleep(const bool mclk=true, const bool DAC=true)
Sleep.
Definition unit_DDS.cpp:214
config_t config()
Gets the configuration.
Definition unit_DDS.hpp:79
bool readMode(dds::Mode &mode)
Read the mode.
Definition unit_DDS.cpp:88
uint32_t frequency0() const
Gets written frequency 0 (Hz)
Definition unit_DDS.hpp:93
uint32_t frequency1() const
Gets written frequency 1 (Hz)
Definition unit_DDS.hpp:98
bool writePhase1(const uint16_t deg)
Write the phase to bank 1.
Definition unit_DDS.hpp:175
UnitDDS(const uint8_t addr=DEFAULT_ADDRESS)
Constructor.
Definition unit_DDS.hpp:62
bool readDescription(char str[7])
Read the description.
Definition unit_DDS.cpp:72
bool writeMode(const dds::Mode mode)
Write the mode.
Definition unit_DDS.cpp:99
bool writeFrequency(const bool select, const uint32_t freq)
Write the frequency.
Definition unit_DDS.cpp:116
bool writeOutput(const dds::Mode mode, const bool select, const uint32_t freq, const uint16_t deg)
Write mode and settings.
Definition unit_DDS.cpp:205
bool writeCurrent(const bool select_freq, const bool select_phase)
Write which bank setting to use.
Definition unit_DDS.cpp:171
bool reset()
Reset.
Definition unit_DDS.cpp:246
bool writeFrequency0(const uint32_t freq)
Write the frequency to bank 0.
Definition unit_DDS.hpp:137
virtual bool begin() override
Begin unit.
Definition unit_DDS.cpp:58
Top level namespace of M5stack.
Settings for begin.
Definition unit_DDS.hpp:52
bool select
Using bank if start output on begin.
Definition unit_DDS.hpp:55
uint16_t deg
Phase if start output on begin.
Definition unit_DDS.hpp:57
bool start_output
Start output on begin if true.
Definition unit_DDS.hpp:53
uint32_t freq
Frequency if start output on begin.
Definition unit_DDS.hpp:56
dds::Mode mode
Output mode if start output on begin.
Definition unit_DDS.hpp:54
Mode
Output mode.
Definition unit_DDS.hpp:28