109 Serial.begin(115200);
117 Serial.print(
"Initialized, ");
133 Serial.println(F(
"AD5696R 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-569xRSDZ Demonstration Program *"));
222 Serial.println(F(
"* *"));
223 Serial.println(F(
"* This program demonstrates communication with the AD5696R *"));
224 Serial.println(F(
"* 16-Bit Quad Rail-to-Rail DAC with I2C 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 register"));
238 Serial.println(F(
" 4 -Write and update DAC"));
239 Serial.println(F(
" 5 -Set DAC power-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;
409 Serial.print(F(
" Applying power mode to DAC "));
410 Serial.println(selected_dac);
411 ad5686_power_mode(
device, selected_dac, selected_mode);
413 Serial.println(F(
" Done!"));
422 Serial.println(F(
" 1-Internal (2.5v)"));
423 Serial.println(F(
" 2-External"));
424 Serial.print(F(
" Select a reference voltage source: "));
427 Serial.println(vref_source);
439 Serial.println(F(
" Enter selected external reference voltage: "));
442 Serial.println(F(
"V"));
447 Serial.println(F(
" Incorrect entry"));
457 uint32_t reg1 = ad5686_read_back_register(
device, AD5686_CH_0);
458 uint32_t reg2 = ad5686_read_back_register(
device, AD5686_CH_1);
459 uint32_t reg3 = ad5686_read_back_register(
device, AD5686_CH_2);
460 uint32_t reg4 = ad5686_read_back_register(
device, AD5686_CH_3);
462 Serial.println(F(
"\n All DAC-input register values:"));
463 Serial.print(F(
" DAC A - "));
464 Serial.println(reg1, HEX);
465 Serial.print(F(
" DAC B - "));
466 Serial.println(reg2, HEX);
467 Serial.print(F(
" DAC C - "));
468 Serial.println(reg3, HEX);
469 Serial.print(F(
" DAC D - "));
470 Serial.println(reg4, HEX);
508 Serial.println(F(
" Enter LDAC mask (for binary, prefix with a B)"));
509 Serial.println(F(
" Masked channels will not be updated when LDAC is asserted"));
510 Serial.println(F(
" Example: B0101 masks A & C"));
511 Serial.print(F(
" Mask: "));
514 if (mask > 15) mask = 15;
515 Serial.println(mask, BIN);
517 ad5686_ldac_mask(
device, mask, 0x01);
519 Serial.println(F(
" Updated LDAC mask"));
529 Serial.println(F(
" Asserted LDAC"));
536 Serial.println(F(
" GAIN options: "));
537 Serial.println(F(
" 1-Low gain (1x)"));
538 Serial.println(F(
" 2-High gain (2x)"));
539 Serial.print(F(
" Make selection: "));
542 if (selected_gain > 2) selected_gain = 2;
543 if (selected_gain < 1) selected_gain = 1;
544 Serial.println(selected_gain);
546 switch (selected_gain)
553 Serial.println(F(
" Setting gain low"));
558 Serial.println(F(
" Setting gain high"));
570 Serial.println(F(
" Performing software reset"));
572 ad5686_software_reset(
device);
579 Serial.println(F(
" Performing hardware reset"));
595 Serial.print(
"GAIN STATE: ");
596 Serial.println(gain_state);
603 uint32_t max_code = ((uint32_t)1 << 16)-1;
604 return (
unsigned short)(voltage * (float)max_code / vRef);
619 Serial.print(F(
" Enter Desired DAC output voltage: "));
621 Serial.print(dac_voltage);
622 Serial.println(F(
" V"));
static uint8_t menu_10_set_gain()
unsigned char user_command
static uint8_t menu_7_read_back_dac_input_registers()
static uint8_t menu_6_select_ref_voltage(float *vref)
static void print_title()
Prints the title block.
Header File for Linduino Libraries and Demo Code.
const String dac_selection[4]
static uint8_t menu_11_assert_soft_reset()
static void print_prompt(uint8_t selected_dac, float ref_voltage)
static uint8_t menu_2_write_to_input_register(uint8_t selected_dac, float vref)
Menu 2: Write to input register only.
static uint8_t menu_9_assert_ldac()
static float get_voltage_float()
spi_init_param spi_params
i2c_init_param i2c_params
static uint8_t menu_8_set_ldac_mask()
static uint8_t menu_3_update_dac(uint8_t selected_dac)
static uint8_t menu_12_assert_hard_reset()
ad5686_init_param init_params
char demo_name[]
Demo Board Name stored in QuikEval EEPROM.
static uint8_t menu_5_set_DAC_power_mode(uint8_t selected_dac)
static uint16_t get_voltage_code(float vRef)
static uint8_t menu_1_select_dac(uint8_t *selected_dac)
static uint8_t menu_4_write_and_update_dac(uint8_t selected_dac, float vref)
static uint16_t voltage_to_code(float voltage, float vRef)