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);
60 explicit UnitDDS(
const uint8_t addr = DEFAULT_ADDRESS) : Component(addr)
62 auto ccfg = component_config();
63 ccfg.clock = 400 * 1000U;
64 component_config(ccfg);
70 virtual bool begin()
override;
154 bool writePhase(
const bool select,
const uint16_t deg);
193 bool writeCurrent(
const bool select_freq,
const bool select_phase);
221 bool writeOutput(
const dds::Mode mode,
const bool select,
const uint32_t freq,
const uint16_t deg);
228 bool sleep(
const bool mclk =
true,
const bool DAC =
true);
252 bool read_control(uint8_t& ctrl);
253 bool write_register8(
const uint8_t reg,
const uint8_t v);
264constexpr uint8_t READ_DESCRIPTION_REG{0x10};
265constexpr uint8_t MODE_REG{0x20};
266constexpr uint8_t CONTROL_REG{0x21};
267constexpr uint8_t FREQUENCY_REG{0x30};
268constexpr uint8_t PHASE_REG{0x34};
bool writeCurrentFrequency(const bool select)
Write which bank frequency setting to use.
Definition unit_DDS.cpp:184
bool writeFrequency1(const uint32_t freq)
Write the frequency to bank 1.
Definition unit_DDS.hpp:143
bool writeCurrentPhase(const bool select)
Write which bank phase setting to use.
Definition unit_DDS.cpp:195
bool writePhase(const bool select, const uint16_t deg)
Write the phase.
Definition unit_DDS.cpp:136
void config(const config_t &cfg)
Set the configration.
Definition unit_DDS.hpp:80
bool wakeup()
Wake up.
Definition unit_DDS.cpp:232
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:145
bool writePhase0(const uint16_t deg)
Write the phase to bank 0.
Definition unit_DDS.hpp:161
bool sleep(const bool mclk=true, const bool DAC=true)
Sleep.
Definition unit_DDS.cpp:215
config_t config()
Gets the configration.
Definition unit_DDS.hpp:75
bool readMode(dds::Mode &mode)
Read the mode.
Definition unit_DDS.cpp:87
uint16_t frequency1() const
Gets written frequency 1 (Hz)
Definition unit_DDS.hpp:94
uint16_t frequency0() const
Gets written frequency 0 (Hz)
Definition unit_DDS.hpp:89
bool writePhase1(const uint16_t deg)
Write the phase to bank 1.
Definition unit_DDS.hpp:171
bool readDescription(char str[7])
Read the description.
Definition unit_DDS.cpp:71
bool writeMode(const dds::Mode mode)
Write the mode.
Definition unit_DDS.cpp:98
bool writeFrequency(const bool select, const uint32_t freq)
Write the frequency.
Definition unit_DDS.cpp:115
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:206
bool writeCurrent(const bool select_freq, const bool select_phase)
Write which bank setting to use.
Definition unit_DDS.cpp:172
bool reset()
Reset.
Definition unit_DDS.cpp:247
bool writeFrequency0(const uint32_t freq)
Write the frequency to bank 0.
Definition unit_DDS.hpp:133
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