pdf-icon

Unit DDS

Example

DDS functional test

from m5stack import *
from m5ui import *
from uiflow import *
import unit

setScreenColor(0x222222)
dds_0 = unit.get(unit.DDS, unit.PORTA)

mode = None
freq = None
phase = None

label0 = M5TextBox(39, 41, "MODE:", lcd.FONT_Ubuntu, 0xFFFFFF, rotate=0)
label1 = M5TextBox(97, 41, "Text", lcd.FONT_Ubuntu, 0xFFFFFF, rotate=0)
title0 = M5Title(title="UNIT DDS", x=120, fgcolor=0xFFFFFF, bgcolor=0x830269)
label2 = M5TextBox(39, 93, "FREQ:", lcd.FONT_Ubuntu, 0xFFFFFF, rotate=0)
label3 = M5TextBox(97, 93, "Text", lcd.FONT_Ubuntu, 0xFFFFFF, rotate=0)
label4 = M5TextBox(39, 142, "PHASE:", lcd.FONT_Ubuntu, 0xFFFFFF, rotate=0)
label5 = M5TextBox(104, 142, "Text", lcd.FONT_Ubuntu, 0xFFFFFF, rotate=0)
label6 = M5TextBox(44, 219, "MODE", lcd.FONT_Ubuntu, 0xFFFFFF, rotate=0)
label7 = M5TextBox(139, 219, "FREQ", lcd.FONT_Ubuntu, 0xFFFFFF, rotate=0)
label8 = M5TextBox(224, 219, "PHASE", lcd.FONT_Ubuntu, 0xFFFFFF, rotate=0)

from numbers import Number

def buttonA_wasPressed():
  global mode, freq, phase
  mode = (mode if isinstance(mode, Number) else 0) + 1
  if mode >= 5:
    mode = 1
  if mode == 1:
    label1.setText('SINE')
    dds_0.set_mode(dds_0.SINE)
  elif mode == 2:
    dds_0.set_mode(dds_0.TRIANGLE)
    label1.setText('TRIANGLE')
  elif mode == 3:
    dds_0.set_mode(dds_0.SQUARE)
    label1.setText('SQUARE')
  elif mode == 4:
    dds_0.set_mode(dds_0.SAWTOOTH)
    label1.setText('SAWTOOTH')
  dds_0.set_freq_phase(0, freq, 0, phase)
  dds_0.output(0, 0)
  pass
btnA.wasPressed(buttonA_wasPressed)

def buttonB_wasPressed():
  global mode, freq, phase
  freq = (freq if isinstance(freq, Number) else 0) + 100
  label3.setText(str(freq))
  dds_0.set_freq_phase(0, freq, 0, phase)
  dds_0.output(0, 0)
  pass
btnB.wasPressed(buttonB_wasPressed)

def buttonC_wasPressed():
  global mode, freq, phase
  phase = (phase if isinstance(phase, Number) else 0) + 5
  if phase >= 360:
    phase = 0
  label5.setText(str(phase))
  dds_0.set_freq_phase(0, freq, 0, phase)
  dds_0.output(0, 0)
  pass
btnC.wasPressed(buttonC_wasPressed)

mode = 0
freq = 100
phase = 0
dds_0.set_mode(dds_0.DC)
dds_0.set_freq_phase(0, freq, 0, phase)
dds_0.output(0, 0)

API

dds_0.quick_output(dds_0.SINE, 0, 0)
  • Device fast output mode
    • SINE
      • sine
      • freq
      • phase
    • TRIANGLE
    • SQUARE
    • SAWTOOTH
    • DC
dds_0.reset()
  • Reset Device
dds_0.set_sleep(1)
  • Set control sleep
    • Disable MCLK
    • Disable DAC
    • Enable ALL
dds_0.set_freq_phase(0, 0, 0, 0)
  • Set frequency/phase
dds_0.set_mode(dds_0.SINE)
  • Set operating mode
    • SINE
    • TRIANGLE
    • SQUARE
    • SAWTOOTH
    • DC
dds_0.output(0, 0)
  • Set output frequency/phase