106 Serial.begin(115200);
114 Serial.print(
"Initialized, ");
133 Serial.println(F(
"AD5686R not found! :("));
148 static uint8_t selected_dac = 0;
149 static float ref_voltage = 2.5;
155 Serial.println(user_command);
157 switch (user_command)
208 Serial.println(
"Incorrect Option");
220 Serial.println(F(
"*****************************************************************"));
221 Serial.println(F(
"* EVAL-5686RSDZ Demonstration Program *"));
222 Serial.println(F(
"* *"));
223 Serial.println(F(
"* This program demonstrates communication with the AD5686R *"));
224 Serial.println(F(
"* 16-Bit Quad Rail-to-Rail DAC with SPI Interface. *"));
225 Serial.println(F(
"* *"));
226 Serial.println(F(
"* Set the baud rate to 115200 select the newline terminator. *"));
227 Serial.println(F(
"*****************************************************************"));
233 Serial.println(F(
"\nCommand Summary:"));
235 Serial.println(F(
" 1 -Select DAC"));
236 Serial.println(F(
" 2 -Write to input register (no update)"));
237 Serial.println(F(
" 3 -Update DAC from input"));
238 Serial.println(F(
" 4 -Write and update DAC"));
239 Serial.println(F(
" 5 -Power down mode"));
240 Serial.println(F(
" 6 -Select reference voltage"));
241 Serial.println(F(
" 7 -Read back all registers"));
242 Serial.println(F(
" 8 -Set LDAC# mask"));
243 Serial.println(F(
" 9 -Assert LDAC#"));
244 Serial.println(F(
" 10-Set gain"));
245 Serial.println(F(
" 11-Assert Software Reset"));
246 Serial.println(F(
" 12-Assert Hardware Reset"));
249 Serial.print(F(
" Selected DAC: "));
250 Serial.print(selected_dac, DEC);
251 Serial.print(F(
" "));
254 Serial.print(F(
" Reference Voltage: "));
255 Serial.print(ref_voltage);
256 Serial.println(F(
"V"));
259 Serial.print(F(
"Enter a command: "));
276 Serial.print(F(
" Enter DAC to select (0 - 3, corresponding to DAC A - D)"));
278 *selected_dac = (uint8_t)
read_int();
280 if (*selected_dac > 3)
282 if (*selected_dac < 0)
285 Serial.println(*selected_dac, BIN);
286 Serial.print(F(
" You selected DAC(s): "));
298 ad5686_write_register(
device, selected_dac, vdata);
307 ad5686_update_register(
device, selected_dac);
308 Serial.println(F(
" Updated DAC(s)"));
320 Serial.print(
"Entered code: ");
321 Serial.println(vdata, HEX);
323 ad5686_write_update_register(
device, selected_dac, vdata);
332 if (selected_dac == 0)
334 Serial.println(F(
" No DAC selected, no changes made"));
339 Serial.println(F(
"\n Power Modes:"));
340 Serial.println(F(
" 1-Normal Operation"));
341 Serial.println(F(
" 2-1kOhm to GND Power-Down"));
342 Serial.println(F(
" 3-100kOhm to GND Power-Down"));
343 Serial.println(F(
" 4-Three-State Power-Down"));
345 Serial.print(F(
" Select a power mode: "));
349 uint8_t selected_mode = 0;
352 if (mode_input > 4) mode_input = 4;
353 if (mode_input < 1) mode_input = 1;
356 Serial.println(mode_input);
362 selected_mode = AD5686_PWRM_NORMAL;
366 selected_mode = AD5686_PWRM_1K;
370 selected_mode = AD5686_PWRM_100K;
374 selected_mode = AD5686_PWRM_THREESTATE;
382 uint8_t dac1 = (selected_dac >> 0) & 1;
383 uint8_t dac2 = (selected_dac >> 1) & 1;
384 uint8_t dac3 = (selected_dac >> 2) & 1;
385 uint8_t dac4 = (selected_dac >> 3) & 1;
390 Serial.println(F(
" Applying power mode to DAC A..."));
391 ad5686_power_mode(
device, AD5686_CH_0, selected_mode);
395 Serial.println(F(
" Applying power mode to DAC B..."));
396 ad5686_power_mode(
device, AD5686_CH_1, selected_mode);
400 Serial.println(F(
" Applying power mode to DAC C..."));
401 ad5686_power_mode(
device, AD5686_CH_2, selected_mode);
405 Serial.println(F(
" Applying power mode to DAC D..."));
406 ad5686_power_mode(
device, AD5686_CH_3, selected_mode);
409 Serial.println(F(
" Done!"));
418 Serial.println(F(
" 1-Internal (2.5v)"));
419 Serial.println(F(
" 2-External"));
420 Serial.print(F(
" Select a reference voltage source: "));
423 Serial.println(vref_source);
435 Serial.println(F(
" Enter selected external reference voltage: "));
438 Serial.println(F(
"V"));
443 Serial.println(F(
" Incorrect entry"));
453 uint32_t reg1 = ad5686_read_back_register(
device, AD5686_CH_0);
454 uint32_t reg2 = ad5686_read_back_register(
device, AD5686_CH_1);
455 uint32_t reg3 = ad5686_read_back_register(
device, AD5686_CH_2);
456 uint32_t reg4 = ad5686_read_back_register(
device, AD5686_CH_3);
458 Serial.println(F(
"\n All DAC register values:"));
459 Serial.print(F(
" DAC A - "));
460 Serial.println(reg1, HEX);
461 Serial.print(F(
" DAC B - "));
462 Serial.println(reg2, HEX);
463 Serial.print(F(
" DAC C - "));
464 Serial.println(reg3, HEX);
465 Serial.print(F(
" DAC D - "));
466 Serial.println(reg4, HEX);
473 Serial.println(F(
" Enter LDAC mask (for binary, prefix with a B)"));
474 Serial.println(F(
" Masked channels will not be updated when LDAC is asserted"));
475 Serial.println(F(
" Example: B0101 masks A & C"));
476 Serial.print(F(
" Mask: "));
479 if (mask > 15) mask = 15;
480 Serial.println(mask, BIN);
482 ad5686_ldac_mask(
device, mask, 0x01);
484 Serial.println(F(
" Updated LDAC mask"));
494 Serial.println(F(
" Asserted LDAC"));
501 Serial.println(F(
" GAIN options: "));
502 Serial.println(F(
" 1-Low gain (1x)"));
503 Serial.println(F(
" 2-High gain (2x)"));
504 Serial.print(F(
" Make selection: "));
507 if (selected_gain > 2) selected_gain = 2;
508 if (selected_gain < 1) selected_gain = 1;
509 Serial.println(selected_gain);
511 switch (selected_gain)
518 Serial.println(F(
" Setting gain low"));
523 Serial.println(F(
" Setting gain high"));
535 Serial.println(F(
" Performing software reset"));
537 ad5686_software_reset(
device);
544 Serial.println(F(
" Performing hardware reset"));
560 Serial.print(
"GAIN STATE: ");
561 Serial.println(gain_state);
568 uint32_t max_code = ((uint32_t)1 << 16)-1;
569 return (
unsigned short)(voltage * (float)max_code / vRef);
584 Serial.print(F(
" Enter Desired DAC output voltage: "));
586 Serial.print(dac_voltage);
587 Serial.println(F(
" V"));
static uint8_t menu_1_select_dac(uint8_t *selected_dac)
const String dac_selection[4]
static void print_prompt(uint8_t selected_dac, float ref_voltage)
unsigned char user_command
Header File for Linduino Libraries and Demo Code.
static uint8_t menu_9_assert_ldac()
static uint8_t menu_11_assert_soft_reset()
static uint8_t menu_2_write_to_input_register(uint8_t selected_dac, float vref)
Menu 2: Write to input register only.
static float get_voltage_float()
static uint8_t menu_3_update_dac(uint8_t selected_dac)
i2c_init_param i2c_params
spi_init_param spi_params
static uint8_t menu_12_assert_hard_reset()
static uint8_t menu_8_set_ldac_mask()
static uint16_t get_voltage_code(float vRef)
char demo_name[]
Demo Board Name stored in QuikEval EEPROM.
static uint8_t menu_10_set_gain()
static uint16_t voltage_to_code(float voltage, float vRef)
static uint8_t menu_5_set_DAC_power_mode(uint8_t selected_dac)
ad5686_init_param init_params
static uint8_t menu_6_select_ref_voltage(float *vref)
static uint8_t menu_4_write_and_update_dac(uint8_t selected_dac, float vref)
#define QUIKEVAL_CS
QuikEval CS pin (SPI chip select on QuikEval connector pin 6) connects to Arduino SS pin...
static void print_title()
Prints the title block.
static uint8_t menu_7_read_back_registers()