Linduino  1.3.0
Linear Technology Arduino-Compatible Demonstration Board
DC2675A.ino
Go to the documentation of this file.
1 /*!
2 Linear Technology DC2675A + DC2363A Demonstration Board
3 LTC2972 + LTM4644: Power Management Solution for Application Processors
4 
5 @verbatim
6 
7 NOTES
8  Setup:
9  Set the terminal baud rate to 115200 and select the newline terminator.
10 
11 @endverbatim
12 
13 http://www.linear.com/product/LTC2972
14 
15 http://www.linear.com/demo/DC2675A
16 
17 
18 Copyright 2018(c) Analog Devices, Inc.
19 
20 All rights reserved.
21 
22 Redistribution and use in source and binary forms, with or without
23 modification, are permitted provided that the following conditions are met:
24  - Redistributions of source code must retain the above copyright
25  notice, this list of conditions and the following disclaimer.
26  - Redistributions in binary form must reproduce the above copyright
27  notice, this list of conditions and the following disclaimer in
28  the documentation and/or other materials provided with the
29  distribution.
30  - Neither the name of Analog Devices, Inc. nor the names of its
31  contributors may be used to endorse or promote products derived
32  from this software without specific prior written permission.
33  - The use of this software may or may not infringe the patent rights
34  of one or more patent holders. This license does not release you
35  from the requirement that you obtain separate licenses from these
36  patent holders to use this software.
37  - Use of the software either in source or binary form, must be run
38  on or directly connected to an Analog Devices Inc. component.
39 
40 THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR
41 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
42 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
43 IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,
44 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
45 LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR
46 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
47 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
48 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
49 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
50 */
51 
52 /*! @file
53  @ingroup LTC2972
54 */
55 
56 #include <Arduino.h>
57 #include <stdint.h>
58 #include "Linduino.h"
59 #include "UserInterface.h"
60 #include "LT_I2CBus.h"
61 #include "LT_SMBusNoPec.h"
62 #include "LT_SMBusPec.h"
63 #include "LT_PMBusMath.h"
64 #include "LT_PMBus.h"
65 
66 #define LTC2972_0_I2C_ADDRESS 0x5C
67 #define LTC2972_1_I2C_ADDRESS 0x5D
68 #define MFR_PG_CONFIG_ORIGINAL 0xC046
69 #define MFR_PG_CONFIG_WRITE_PG 0xC044
70 
71 // Global variables
72 static uint8_t ltc2972_0_i2c_address;
73 static uint8_t ltc2972_1_i2c_address;
74 
75 static LT_PMBusMath *math = new LT_PMBusMath();
76 static LT_SMBus *smbus = new LT_SMBusPec();
77 static LT_PMBus *pmbus = new LT_PMBus(smbus);
78 
79 //! Initialize Linduino
80 //! @return void
81 void setup()
82 {
83  Serial.begin(115200); //! Initialize the serial port to the PC
84  print_title();
87 
88  print_prompt();
89 }
90 
91 //! Repeats Linduino loop
92 //! @return void
93 void loop()
94 {
95  uint8_t user_command;
96  uint8_t res;
97  uint8_t model[7];
98  uint8_t revision[10];
99  uint8_t *addresses = NULL;
100 
101  if (Serial.available()) //! Checks for user input
102  {
103  user_command = read_int(); //! Reads the user command
104  if (user_command != 'm')
105  Serial.println(user_command);
106 
107  switch (user_command) //! Prints the appropriate submenu
108  {
109  case 1:
110  menu_1_input_telemetry(); // Print single-ended voltage menu
111  break;
112  case 2:
114  break;
115  case 3:
117  break;
118  case 4:
120  break;
121  case 5:
123  break;
124  case 6:
126  break;
127  case 7:
128  sequence_off_on();
129  break;
130  case 8:
131  addresses = smbus->probe(0);
132  while (*addresses != 0)
133  {
134  Serial.print(F("ADDR 0x"));
135  Serial.println(*addresses++, HEX);
136  }
137  break;
138  case 9 :
139  pmbus->startGroupProtocol();
142  pmbus->executeGroupProtocol();
143  break;
144  default:
145  Serial.println(F("Incorrect Option"));
146  break;
147  }
148  print_prompt();
149  }
150 
151 }
152 
153 // Function Definitions
154 
155 //! Prints the title block when program first starts.
156 //! @return void
158 {
159  Serial.print(F("\n*****************************************************************\n"));
160  Serial.print(F("* DC2675A Hello World Demonstration Program *\n"));
161  Serial.print(F("* *\n"));
162  Serial.print(F("* This program demonstrates how to send and receive data from *\n"));
163  Serial.print(F("* the LTC2675A demo board. *\n"));
164  Serial.print(F("* *\n"));
165  Serial.print(F("* Set the baud rate to 115200 and select the newline terminator.*\n"));
166  Serial.print(F("* *\n"));
167  Serial.print(F("*****************************************************************\n"));
168 }
169 
170 //! Prints main menu.
171 //! @return void
173 {
174  Serial.println();
175  Serial.print(F(" 1-Read Input Telemetry\n"));
176  Serial.print(F(" 2-Read Output Telemetry\n"));
177  Serial.print(F(" 3-Read All Status\n"));
178  Serial.print(F(" 4-PG Commands\n"));
179  Serial.print(F(" 5-Margin Commands\n"));
180  Serial.print(F(" 6-PEC Options\n"));
181  Serial.print(F(" 7-Sequence Off/On\n"));
182  Serial.print(F(" 8-Bus Probe\n"));
183  Serial.print(F(" 9-Reset\n"));
184  Serial.print(F("\nEnter a command:"));
185 }
186 
187 //! Prints a warning if the demo board is not detected.
188 //! @return void
190 {
191  Serial.println(F("\nWarning: Demo board not detected. Linduino will attempt to proceed."));
192 }
193 
194 //! Print all output voltages
195 //! @return void
197 {
198  float voltage;
199  uint8_t page;
200 
201  for (page = 0; page < 2; page++)
202  {
203  pmbus->setPage(ltc2972_0_i2c_address, page);
204  voltage = pmbus->readVout(ltc2972_0_i2c_address, false);
205  Serial.print(F(" LTC2972:U0:CH"));
206  Serial.print(page, DEC);
207  Serial.print(F(" VOUT = "));
208  Serial.println(voltage, DEC);
209 
210  }
211 
212  for (page = 0; page < 2; page++)
213  {
214  pmbus->setPage(ltc2972_1_i2c_address, page);
215  voltage = pmbus->readVout(ltc2972_1_i2c_address, false);
216  Serial.print(F(" LTC2972:U1:CH"));
217  Serial.print(page, DEC);
218  Serial.print(F(" VOUT = "));
219  Serial.println(voltage, DEC);
220  }
221 }
222 
223 //! Print all input voltages
224 //! @return void
226 {
227  float voltage;
228 
229  voltage = pmbus->readVin(ltc2972_0_i2c_address, false);
230  Serial.print(F(" LTC2972:U0 VIN = "));
231  Serial.println(voltage, DEC);
232  voltage = pmbus->readVin(ltc2972_1_i2c_address, false);
233  Serial.print(F(" LTC2972:U1 VIN = "));
234  Serial.println(voltage, DEC);
235 
236 }
237 
238 //! Print all output currents
239 //! @return void
241 {
242  float current;
243  uint8_t page;
244 
245  for (page = 0; page < 2; page++)
246  {
247  pmbus->setPage(ltc2972_0_i2c_address, page);
248  current = pmbus->readIout(ltc2972_0_i2c_address, false);
249  Serial.print(F(" LTC2972:U0:CH"));
250  Serial.print(page, DEC);
251  Serial.print(F(" IOUT = "));
252  Serial.println(current, DEC);
253  }
254 
255  for (page = 0; page < 2; page++)
256  {
257  pmbus->setPage(ltc2972_1_i2c_address, page);
258  current = pmbus->readIout(ltc2972_1_i2c_address, false);
259  Serial.print(F(" LTC2972:U1:CH"));
260  Serial.print(page, DEC);
261  Serial.print(F(" IOUT = "));
262  Serial.println(current, DEC);
263  }
264 }
265 
266 //! Print all input currents
267 //! @return void
269 {
270  float current;
271 
272  current = pmbus->readIin(ltc2972_0_i2c_address, false);
273  Serial.print(F(" LTC2972:U0 Iin = "));
274  Serial.println(current, DEC);
275  current = pmbus->readIin(ltc2972_1_i2c_address, false);
276  Serial.print(F(" LTC2972:U1 Iin = "));
277  Serial.println(current, DEC);
278 
279 }
280 
281 //! Print all output power
282 //! @return void
284 {
285  float power;
286  uint8_t page;
287 
288  for (page = 0; page < 2; page++)
289  {
290  pmbus->setPage(ltc2972_0_i2c_address, page);
291  power = pmbus->readPout(ltc2972_0_i2c_address, false);
292  Serial.print(F(" LTC2972:U0:CH"));
293  Serial.print(page, DEC);
294  Serial.print(F(" POUT = "));
295  Serial.println(power, DEC);
296  }
297 
298  for (page = 0; page < 2; page++)
299  {
300  pmbus->setPage(ltc2972_1_i2c_address, page);
301  power = pmbus->readPout(ltc2972_1_i2c_address, false);
302  Serial.print(F(" LTC2972:U1:CH"));
303  Serial.print(page, DEC);
304  Serial.print(F(" POUT = "));
305  Serial.println(power, DEC);
306  }
307 }
308 
309 //! Print all input power
310 //! @return void
312 {
313  float power;
314 
315  power = pmbus->readPin(ltc2972_0_i2c_address, false);
316  Serial.print(F(" LTC2972:U0 Pin = "));
317  Serial.println(power, DEC);
318  power = pmbus->readPin(ltc2972_1_i2c_address, false);
319  Serial.print(F(" LTC2972:U1 Pin = "));
320  Serial.println(power, DEC);
321 
322 }
323 
324 //! Print all status bytes and words
325 //! @return void
327 {
328  uint8_t b;
329  uint16_t w;
330  uint8_t page;
331 
332  for (page = 0; page < 2; page++)
333  {
334  Serial.print(F("U0:CH"));
335  Serial.println(page, DEC);
336  pmbus->setPage(ltc2972_0_i2c_address, page);
338  Serial.print(F(" LTC2972 STATUS BYTE 0x"));
339  Serial.println(b, HEX);
341  Serial.print(F(" LTC2972 STATUS WORD 0x"));
342  Serial.println(w, HEX);
343  }
344 
345  for (page = 0; page < 2; page++)
346  {
347  Serial.print(F("U1:CH"));
348  Serial.println(page, DEC);
349  pmbus->setPage(ltc2972_1_i2c_address, page);
351  Serial.print(F(" LTC2972 STATUS BYTE 0x"));
352  Serial.println(b, HEX);
354  Serial.print(F(" LTC2972 STATUS WORD 0x"));
355  Serial.println(w, HEX);
356  }
357 }
358 
359 //! Print all PG states
360 //! @return void
362 {
363  uint16_t pg_status;
364 
365  pg_status = smbus->readWord(ltc2972_0_i2c_address, 0xE5);
366  pg_status &= 0x03;
367  Serial.print(F(" PG0 = LOGIC"));
368  if (pg_status & 0x01)
369  {
370  Serial.print(F(" HIGH\n"));
371  }
372  else
373  {
374  Serial.print(F(" LOW\n"));
375  }
376  Serial.print(F(" PG1 = LOGIC"));
377  if (pg_status & 0x02)
378  {
379  Serial.print(F(" HIGH\n"));
380  }
381  else
382  {
383  Serial.print(F(" LOW\n"));
384  }
385 
386  pg_status = smbus->readWord(ltc2972_1_i2c_address, 0xE5);
387  pg_status &= 0x03;
388  Serial.print(F(" PG2 = LOGIC"));
389  if (pg_status & 0x01)
390  {
391  Serial.print(F(" HIGH\n"));
392  }
393  else
394  {
395  Serial.print(F(" LOW\n"));
396  }
397  Serial.print(F(" PG3 = LOGIC"));
398  if (pg_status & 0x02)
399  {
400  Serial.print(F(" HIGH\n"));
401  }
402  else
403  {
404  Serial.print(F(" LOW\n"));
405  }
406 }
407 
408 
409 //! Toggle PG0
410 //! @return void
412 {
413 
414  pmbus->setPage(ltc2972_0_i2c_address, 0);
415  smbus->writeWord(ltc2972_0_i2c_address, 0xCB, MFR_PG_CONFIG_WRITE_PG); //! enable writing to pg register
416  smbus->writeByte(ltc2972_0_i2c_address, 0xCE, 0x00); //! force pg low
417  delay(1000);
418  smbus->writeByte(ltc2972_0_i2c_address, 0xCE, 0x01); //! return pg to hi-z
419  smbus->writeWord(ltc2972_0_i2c_address, 0xCB, MFR_PG_CONFIG_ORIGINAL); //! return register to original state
420 }
421 
422 //! Toggle PG0
423 //! @return void
425 {
426  pmbus->setPage(ltc2972_0_i2c_address, 1);
428  smbus->writeByte(ltc2972_0_i2c_address, 0xCE, 0x00);
429  delay(1000);
430  smbus->writeByte(ltc2972_0_i2c_address, 0xCE, 0x01);
432 }
433 
434 //! Toggle PG2
435 //! @return void
437 {
438  pmbus->setPage(ltc2972_1_i2c_address, 0);
440  smbus->writeByte(ltc2972_1_i2c_address, 0xCE, 0x00);
441  delay(1000);
442  smbus->writeByte(ltc2972_1_i2c_address, 0xCE, 0x01);
444 }
445 
446 //! Toggle PG3
447 //! @return void
449 {
450  pmbus->setPage(ltc2972_1_i2c_address, 1);
452  smbus->writeByte(ltc2972_1_i2c_address, 0xCE, 0x00);
453  delay(1000);
454  smbus->writeByte(ltc2972_1_i2c_address, 0xCE, 0x01);
456 }
457 
458 //! Sequence off then on
459 //! @return void
461 {
462  pmbus->sequenceOffGlobal();
463  delay (2000);
464  pmbus->sequenceOnGlobal();
465 }
466 
467 //! Margin high
468 //! @return void
470 {
471  pmbus->marginHighGlobal();
472 }
473 
474 //! Margin low
475 //! @return void
477 {
478  pmbus->marginLowGlobal();
479 }
480 
481 //! Go to nominal
482 //! @return void
484 {
485  pmbus->sequenceOnGlobal();
486 }
487 
488 //! Display menu 1
489 //! @return void
491 {
492  uint8_t user_command;
493 
494  do
495  {
496  //! Displays the Input Telemetry menu
497  Serial.println();
498  Serial.print(F(" 1-Read Input Voltages\n"));
499  Serial.print(F(" 2-Read Input Currents\n"));
500  Serial.print(F(" 3-Read Input Power\n"));
501  Serial.print(F(" 4-Read All Input Telemetry\n"));
502  Serial.print(F(" m-Main Menu\n"));
503  Serial.print(F("\nEnter a command: "));
504 
505  user_command = read_int(); //! Reads the user command
506  if (user_command == 'm') // Print m if it is entered
507  {
508  Serial.print(F("m\n"));
509  }
510  else
511  Serial.println(user_command); // Print user command
512 
513  switch (user_command)
514  {
515  case 1:
517  break;
518  case 2:
520  break;
521  case 3:
523  break;
524  case 4:
525  Serial.println();
527  Serial.println();
529  Serial.println();
531  break;
532  default:
533  if (user_command != 'm')
534  Serial.println(F("Invalid Selection"));
535  break;
536  }
537  }
538  while (user_command != 'm');
539 }
540 
541 //! Display menu 2
542 //! @return void
544 {
545  uint8_t user_command;
546 
547  do
548  {
549  //! Displays the Ouput Telemetry menu
550  Serial.println();
551  Serial.print(F(" 1-Read Output Voltages\n"));
552  Serial.print(F(" 2-Read Output Currents\n"));
553  Serial.print(F(" 3-Read Output Power\n"));
554  Serial.print(F(" 4-Read All Output Telemetry\n"));
555  Serial.print(F(" m-Main Menu\n"));
556  Serial.print(F("\nEnter a command: "));
557 
558  user_command = read_int(); //! Reads the user command
559  if (user_command == 'm') // Print m if it is entered
560  {
561  Serial.print(F("m\n"));
562  }
563  else
564  Serial.println(user_command); // Print user command
565 
566  switch (user_command)
567  {
568  case 1:
570  break;
571  case 2:
573  break;
574  case 3:
576  break;
577  case 4:
578  Serial.println();
580  Serial.println();
582  Serial.println();
584  break;
585  default:
586  if (user_command != 'm')
587 
588  Serial.println(F("Invalid Selection"));
589  break;
590  }
591  }
592  while (user_command != 'm');
593 }
594 
595 //! Display menu 3
596 //! @return void
598 {
599  uint8_t user_command;
600 
601  do
602  {
603  //! Displays the PG Command menu
604  Serial.println();
605  Serial.print(F(" 1-Read All PG States\n"));
606  Serial.print(F(" 2-Force PG0 Low (1 sec)\n"));
607  Serial.print(F(" 3-Force PG1 Low (1 sec)\n"));
608  Serial.print(F(" 4-Force PG2 Low (1 sec)\n"));
609  Serial.print(F(" 5-Force PG3 Low (1 sec)\n"));
610  Serial.print(F(" m-Main Menu\n"));
611  Serial.print(F("\nEnter a command: "));
612 
613  user_command = read_int(); //! Reads the user command
614  if (user_command == 'm') // Print m if it is entered
615  {
616  Serial.print(F("m\n"));
617  }
618  else
619  Serial.println(user_command); // Print user command
620 
621  switch (user_command)
622  {
623  case 1:
624  print_all_pg();
625  break;
626  case 2:
627  toggle_pg0();
628  break;
629  case 3:
630  toggle_pg1();
631  break;
632  case 4:
633  toggle_pg2();
634  break;
635  case 5:
636  toggle_pg3();
637  break;
638  default:
639  if (user_command != 'm')
640  Serial.println(F("Invalid Selection"));
641  break;
642  }
643  }
644  while (user_command != 'm');
645 }
646 
647 
648 //! Display menu 4
649 //! @return void
651 {
652  uint8_t user_command;
653 
654  do
655  {
656  //! Displays the Margin menu
657  Serial.println();
658  Serial.print(F(" 1-Margin High\n"));
659  Serial.print(F(" 2-Margin Low\n"));
660  Serial.print(F(" 3-Margin Off\n"));
661  Serial.print(F(" m-Main Menu\n"));
662  Serial.print(F("\nEnter a command: "));
663 
664  user_command = read_int(); //! Reads the user command
665  if (user_command == 'm') // Print m if it is entered
666  {
667  Serial.print(F("m\n"));
668  }
669  else
670  Serial.println(user_command); // Print user command
671 
672  switch (user_command)
673  {
674  case 1:
675  margin_high();
676  delay(500);
678  break;
679  case 2:
680  margin_low();
681  delay(500);
683  break;
684  case 3:
685  margin_off();
686  delay(500);
688  break;
689  default:
690  if (user_command != 'm')
691  Serial.println(F("Invalid Selection"));
692  break;
693  }
694  }
695  while (user_command != 'm');
696 }
697 
698 //! Display menu 5
699 //! @return void
701 {
702  uint8_t user_command;
703 
704  do
705  {
706  //! Displays the PEC menu
707  Serial.println();
708  Serial.print(F(" 1-PEC On\n"));
709  Serial.print(F(" 2-PEC Off\n"));
710  Serial.print(F(" m-Main Menu\n"));
711  Serial.print(F("\nEnter a command: "));
712 
713  user_command = read_int(); //! Reads the user command
714  if (user_command == 'm') // Print m if it is entered
715  {
716  Serial.print(F("m\n"));
717  }
718  else
719  Serial.println(user_command); // Print user command
720 
721  switch (user_command)
722  {
723  case 1:
726  delete smbus;
727  delete pmbus;
728  smbus = new LT_SMBusPec();
729  pmbus = new LT_PMBus(smbus);
730  Serial.print(F("\n PEC Enabled"));
731  break;
732  case 2:
735  delete smbus;
736  delete pmbus;
737  smbus = new LT_SMBusNoPec();
738  pmbus = new LT_PMBus(smbus);
739  Serial.print(F("\n PEC Disabled"));
740  break;
741  default:
742  if (user_command != 'm')
743  Serial.println(F("Invalid Selection"));
744  break;
745  }
746  }
747  while (user_command != 'm');
748 }
749 
static void print_all_output_power()
Print all output power.
Definition: DC2675A.ino:283
static void toggle_pg3()
Toggle PG3.
Definition: DC2675A.ino:448
float readPout(uint8_t address, bool polling)
Get the measured output power.
Definition: LT_PMBus.cpp:1963
unsigned char user_command
static uint8_t ltc2972_1_i2c_address
Definition: DC2675A.ino:73
#define LTC2972_0_I2C_ADDRESS
Definition: DC2675A.ino:66
static void menu_4_margin_commands()
Display menu 4.
Definition: DC2675A.ino:650
static void setup()
Initialize Linduino.
Definition: DC2675A.ino:81
static void menu_5_pec_commands()
Display menu 5.
Definition: DC2675A.ino:700
static void margin_low()
Margin low.
Definition: DC2675A.ino:476
LTC SMBus Support: Implementation for a shared SMBus layer.
uint8_t readStatusByte(uint8_t address)
Get the status byte.
Definition: LT_PMBus.cpp:2423
static void toggle_pg1()
Toggle PG0.
Definition: DC2675A.ino:424
Header File for Linduino Libraries and Demo Code.
void enablePec(uint8_t address)
Enable pec for all transactions.
Definition: LT_PMBus.cpp:3173
#define LTC2972_1_I2C_ADDRESS
Definition: DC2675A.ino:67
uint16_t readStatusWord(uint8_t address)
Get the status word.
Definition: LT_PMBus.cpp:2470
float readIout(uint8_t address, bool polling)
Get the measured output current.
Definition: LT_PMBus.cpp:1898
static void toggle_pg0()
Toggle PG0.
Definition: DC2675A.ino:411
#define MFR_PG_CONFIG_WRITE_PG
Definition: DC2675A.ino:69
virtual void writeWord(uint8_t address, uint8_t command, uint16_t data)=0
SMBus write word command.
static void print_all_input_currents()
Print all input currents.
Definition: DC2675A.ino:268
static void menu_2_output_telemetry()
Display menu 2.
Definition: DC2675A.ino:543
static void loop()
Repeats Linduino loop.
Definition: DC2675A.ino:93
static void menu_3_pg_commands()
Display menu 3.
Definition: DC2675A.ino:597
float readPin(uint8_t address, bool polling)
Get the measured input power.
Definition: LT_PMBus.cpp:2027
void startGroupProtocol(void)
starts group protocol
Definition: LT_PMBus.cpp:3350
float readVout(uint8_t address, bool polling)
Get the measured output voltage.
Definition: LT_PMBus.cpp:1598
LT_I2CBus: Routines to communicate to I2C by Wire Library.
static void margin_high()
Margin high.
Definition: DC2675A.ino:469
static uint8_t ltc2972_0_i2c_address
Definition: DC2675A.ino:72
static void print_all_input_voltages()
Print all input voltages.
Definition: DC2675A.ino:225
virtual void writeByte(uint8_t address, uint8_t command, uint8_t data)=0
SMBus write byte command.
void setPage(uint8_t address, uint8_t page)
Set the page.
Definition: LT_PMBus.cpp:3156
void marginLowGlobal(void)
Margin all rails low.
Definition: LT_PMBus.cpp:3078
static void menu_1_input_telemetry()
Display menu 1.
Definition: DC2675A.ino:490
void sequenceOnGlobal(void)
Sequence on all rails.
Definition: LT_PMBus.cpp:2896
virtual uint8_t * probe(uint8_t command)=0
SMBus bus probe.
static void print_title()
Prints the title block when program first starts.
Definition: DC2675A.ino:157
static void print_all_pg()
Print all PG states.
Definition: DC2675A.ino:361
float readIin(uint8_t address, bool polling)
Get the input current.
Definition: LT_PMBus.cpp:1805
LTC SMBus Support: Implementation for a shared SMBus layer.
#define MFR_PG_CONFIG_ORIGINAL
Definition: DC2675A.ino:68
static void toggle_pg2()
Toggle PG2.
Definition: DC2675A.ino:436
int32_t read_int()
static void sequence_off_on()
Sequence off then on.
Definition: DC2675A.ino:460
void sequenceOffGlobal(void)
Sequence off all rails.
Definition: LT_PMBus.cpp:2876
float readVin(uint8_t address, bool polling)
Get the input voltage.
Definition: LT_PMBus.cpp:1487
void executeGroupProtocol(void)
ends group protocol
Definition: LT_PMBus.cpp:3356
static void print_all_input_power()
Print all input power.
Definition: DC2675A.ino:311
static LT_PMBusMath * math
Definition: DC2675A.ino:75
void restoreFromNvm(uint8_t address)
Restore device from NVM.
Definition: LT_PMBus.cpp:2663
LTC PMBus Support.
static void print_all_status()
Print all status bytes and words.
Definition: DC2675A.ino:326
static float voltage
Definition: DC2289AA.ino:71
static LT_PMBus * pmbus
Definition: DC2675A.ino:77
static uint16_t current
the current measurement from the LTC3335&#39;s counter test mode.
Definition: DC2343A.ino:114
void marginHighGlobal(void)
Margin all rails high.
Definition: LT_PMBus.cpp:3068
LTC PMBus Support: Math conversion routines.
static void margin_off()
Go to nominal.
Definition: DC2675A.ino:483
static void print_prompt()
Prints main menu.
Definition: DC2675A.ino:172
static void print_all_output_currents()
Print all output currents.
Definition: DC2675A.ino:240
static LT_SMBus * smbus
Definition: DC2675A.ino:76
virtual uint16_t readWord(uint8_t address, uint8_t command)=0
SMBus read word command.
static void print_all_output_voltages()
Print all output voltages.
Definition: DC2675A.ino:196
PMBus communication.
Definition: LT_PMBus.h:370
static void print_warning_prompt()
Prints a warning if the demo board is not detected.
Definition: DC2675A.ino:189