Linduino  1.3.0
Linear Technology Arduino-Compatible Demonstration Board
LT_PMBus.h
Go to the documentation of this file.
1 /*!
2 LTC PMBus Support
3 
4 @verbatim
5 
6 This PMBus code does not cover the entire PMBus command set. The intention
7 is to cover the common commands. It was written for LTC PMBus devices,
8 and may not perform properly with other PMBus devices.
9 
10 @endverbatim
11 
12 
13 Copyright 2018(c) Analog Devices, Inc.
14 
15 All rights reserved.
16 
17 Redistribution and use in source and binary forms, with or without
18 modification, are permitted provided that the following conditions are met:
19  - Redistributions of source code must retain the above copyright
20  notice, this list of conditions and the following disclaimer.
21  - Redistributions in binary form must reproduce the above copyright
22  notice, this list of conditions and the following disclaimer in
23  the documentation and/or other materials provided with the
24  distribution.
25  - Neither the name of Analog Devices, Inc. nor the names of its
26  contributors may be used to endorse or promote products derived
27  from this software without specific prior written permission.
28  - The use of this software may or may not infringe the patent rights
29  of one or more patent holders. This license does not release you
30  from the requirement that you obtain separate licenses from these
31  patent holders to use this software.
32  - Use of the software either in source or binary form, must be run
33  on or directly connected to an Analog Devices Inc. component.
34 
35 THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR
36 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
37 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
38 IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,
39 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
40 LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR
41 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
42 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
43 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
44 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
45 */
46 
47 /*! @file
48  @ingroup LT_PMBus
49  Library Header File for LT_PMBus
50 */
51 
52 #ifndef PMBUS_H_
53 #define PMBUS_H_
54 
55 #include <stdint.h>
56 #include <string.h>
57 #include <math.h>
58 #include "LT_SMBus.h"
59 #include "LT_SMBusGroup.h"
60 #include "LT_PMBusMath.h"
61 
62 #define SUCCESS 1
63 #define FAILURE 0
64 
65 #define PAGE 0x00
66 #define OPERATION 0x01
67 #define ON_OFF_CONFIG 0x02
68 #define CLEAR_FAULTS 0x03
69 #define PAGE_PLUS_WRITE 0x05
70 #define PAGE_PLUS_READ 0x06
71 #define WRITE_PROTECT 0x10
72 #define STORE_USER_ALL 0x15
73 #define RESTORE_USER_ALL 0x16
74 #define MFR_COMPARE_USER_ALL 0xF0
75 #define SMBALERT_MASK 0x1B
76 #define VOUT_MODE 0x20
77 #define VOUT_COMMAND 0x21
78 #define VOUT_MAX 0x24
79 #define VOUT_MARGIN_HIGH 0x25
80 #define VOUT_MARGIN_LOW 0x26
81 #define VOUT_OV_FAULT_LIMIT 0x40
82 #define VOUT_OV_FAULT_RESPONSE 0x41
83 #define VOUT_OV_WARN_LIMIT 0x42
84 #define VOUT_UV_WARN_LIMIT 0x43
85 #define VOUT_UV_FAULT_LIMIT 0x44
86 #define VOUT_UV_FAULT_RESPONSE 0x45
87 #define IOUT_OC_FAULT_LIMIT 0x46
88 #define IOUT_OC_WARN_LIMIT 0x4A
89 #define OT_FAULT_LIMIT 0x4F
90 #define OT_WARN_LIMIT 0x51
91 #define UT_FAULT_LIMIT 0x53
92 #define UT_WARN_LIMIT 0x52
93 #define VIN_OV_FAULT_LIMIT 0x55
94 #define VIN_OV_WARN_LIMIT 0x57
95 #define VIN_UV_WARN_LIMIT 0x58
96 #define VIN_UV_FAULT_LIMIT 0x59
97 #define TON_DELAY 0x60
98 #define TON_RISE 0x61
99 #define TON_MAX_FAULT_LIMIT 0x62
100 #define TON_MAX_FAULT_RESPONSE 0x63
101 #define TOFF_DELAY 0x64
102 #define TOFF_FALL 0x65
103 #define TOFF_MAX_WARN_LIMIT 0x66
104 #define IIN_OC_WARN_LIMIT 0x5D
105 #define STATUS_BYTE 0x78
106 #define STATUS_WORD 0x79
107 #define STATUS_VOUT 0x7A
108 #define STATUS_IOUT 0x7B
109 #define STATUS_INPUT 0x7C
110 #define STATUS_TEMP 0X7D
111 #define STATUS_CML 0x7E
112 #define STATUS_MFR_SPECIFIC 0x80
113 #define READ_VIN 0x88
114 #define READ_IIN 0x89
115 #define READ_VOUT 0x8B
116 #define READ_IOUT 0x8C
117 #define READ_OTEMP 0x8D // This is internal for LTC297X
118 #define READ_ITEMP 0x8E
119 #define READ_DUTY_CYCLE 0x94 // Controllers only, sans LTC3884
120 #define READ_POUT 0x96
121 #define READ_PIN 0x97
122 #define MFR_MODEL 0x9A // LTC388X only
123 #define USER_DATA_03 0xB3 // Not LTC2978/A
124 #define USER_DATA_04 0xB4 // Not LTC2978/A
125 #define MFR_EE_UNLOCK 0xBD
126 #define MFR_EE_ERASE 0xBE
127 #define MFR_EE_DATA 0xBF
128 #define MFR_CONFIG_LTC2974 0xD0
129 #define MFR_CONFIG_ALL 0xD1
130 #define MFR_WATCHDOG_T_FIRST 0xE2
131 #define MFR_WATCHDOG_T 0xE3
132 #define MFR_PADS 0xE5
133 #define MFR_ADDRESS 0xE6
134 #define MFR_SPECIAL_ID 0xE7
135 #define MFR_FAULT_LOG_STORE 0xEA
136 #define MFR_FAULT_LOG_RESTORE 0xEB
137 #define MFR_FAULT_LOG_CLEAR 0xEC
138 #define MFR_READ_IIN 0xED // LTC3880
139 #define MFR_FAULT_LOG_STATUS 0xED // LTC297X only
140 #define MFR_FAULT_LOG 0xEE
141 #define MFR_COMMON 0xEF
142 #define MFR_SPARE_0 0xF7 // LTC2978/A
143 #define MFR_SPARE_1 0xF8 // LTC2978A
144 #define MFR_SPARE_2 0xF9 // LTC2978/A
145 #define MFR_SPARE_3 0xFA // LTC2978A
146 #define MFR_TEMP_1_GAIN 0xF8
147 #define MFR_TEMP_1_OFFSET 0xF9
148 #define MFR_EEPROM_STATUS 0xF1 // LTC388X only
149 #define MFR_RAIL_ADDRESS 0xFA // Controllers only
150 #define MFR_RESET 0xFD
151 
152 #define LTC3880_SW_NONE 0x0001
153 #define LTC3880_SW_CML 0x0002
154 #define LTC3880_SW_TEMP 0x0004
155 #define LTC3880_SW_IOUT_OC 0x0010
156 #define LTC3880_SW_VOUT_OV 0x0020
157 #define LTC3880_SW_OFF 0x0040
158 #define LTC3880_SW_BUSY 0x0080
159 #define LTC3880_SW_PGOODB 0x0800
160 #define LTC3880_SW_MFR 0x1000
161 #define LTC3880_SW_INPUT 0x2000
162 #define LTC3880_SW_IOUT_POUT 0x4000
163 #define LTC3880_SW_VOUT 0x8000
164 
165 #define CFGALL_EFL 0x0080 // Generic version
166 
167 #define LTC3880_CFGALL_RUN_CLR 0x0001
168 #define LTC3880_CFGALL_CLK_STR 0x0002
169 #define LTC3880_CFGALL_MASK_PLL_FLT 0x0004
170 #define LTC3880_CFGALL_IGNORE_RCFG 0x0040
171 #define LTC3880_CFGALL_EFL 0x0080
172 
173 #define LTC3880_SMFR_EXT_GPIO 0x0001
174 #define LTC3880_SMFR_VDD_UV_OV 0x0004
175 #define LTC3880_SMFR_FAULT_LOG 0x0008
176 #define LTC3880_SMFR_PLL_UNLOCK 0x0010
177 #define LTC3880_SMFR_NVM_CRC 0x0020
178 #define LTC3880_SMFR_TEMP_WARN 0x0040
179 #define LTC3880_SMFR_TEMP_FAULT 0x0080
180 
181 #define LTC3882_CFGALL_RUN_CLR_RISE 0x0001
182 #define LTC3882_CFGALL_CLK_STR 0x0002
183 #define LTC3882_CFGALL_PEC 0x0004
184 #define LTC3882_CFGALL_255MS_TMO 0x0008
185 #define LTC3882_CFGALL_DISABLE_SYNC 0x0010
186 #define LTC3882_CFGALL_IGNORE_RCFG 0x0040
187 #define LTC3882_CFGALL_EFL 0x0080
188 
189 #define LTC3882_SMFR_EXT_GPIO 0x0001
190 #define LTC3882_SMFR_SHORT_CYCLE 0x0002
191 #define LTC3882_SMFR_FAULT_LOG 0x0008
192 #define LTC3882_SMFR_PLL_UNLOCK 0x0010
193 #define LTC3882_SMFR_NVM_CRC 0x0020
194 #define LTC3882_SMFR_TEMP_WARN 0x0040
195 #define LTC3882_SMFR_TEMP_FAULT 0x0080
196 
197 #define LTC3883_CFGALL_CLK_STR 0x0002
198 #define LTC3883_CFGALL_PEC 0x0004
199 #define LTC3883_CFGALL_MASK_PLL_ULOCK 0x0008
200 #define LTC3883_CFGALL_IGNORE_RCFG 0x0040
201 #define LTC3883_CFGALL_EFL 0x0080
202 
203 #define LTC3887_CFGALL_RUN_CLR_RISE 0x0001
204 #define LTC3887_CFGALL_CLK_STR 0x0002
205 #define LTC3887_CFGALL_PEC 0x0004
206 #define LTC3887_CFGALL_255MS_TMO 0x0008
207 #define LTC3887_CFGALL_DISABLE_SYNC 0x0010
208 #define LTC3887_CFGALL_IGNORE_RCFG 0x0040
209 #define LTC3887_CFGALL_EFL 0x0080
210 
211 #define LTC3887_SMFR_EXT_GPIO 0x0001
212 #define LTC3887_SMFR_SHORT_CYCLE 0x0002
213 #define LTC3887_SMFR_FAULT_LOG 0x0008
214 #define LTC3887_SMFR_PLL_UNLOCK 0x0010
215 #define LTC3887_SMFR_NVM_CRC 0x0020
216 #define LTC3887_SMFR_TEMP_WARN 0x0040
217 #define LTC3887_SMFR_TEMP_FAULT 0x0080
218 
219 #define LTC3883_SMFR_EXT_GPIO 0x0001
220 #define LTC3883_SMFR_VDD_UV_OV 0x0004
221 #define LTC3883_SMFR_FAULT_LOG 0x0008
222 #define LTC3883_SMFR_PLL_UNLOCK 0x0010
223 #define LTC3883_SMFR_NVM_CRC 0x0020
224 #define LTC3883_SMFR_TEMP_WARN 0x0040
225 #define LTC3883_SMFR_TEMP_FAULT 0x0080
226 
227 #define LTC2972_SFL_EEPROM 0x0001
228 
229 #define LTC2974_SW_HIGH_BYTE 0x0001
230 #define LTC2974_SW_CML 0x0002
231 #define LTC2974_SW_TEMP 0x0004
232 #define LTC2974_SW_VIN_UV 0x0008
233 #define LTC2974_SW_IOUT_OC 0x0010
234 #define LTC2974_SW_VOUT_OV 0x0020
235 #define LTC2974_SW_OFF 0x0040
236 #define LTC2974_SW_BUSY 0x0080
237 #define LTC2974_SW_FANS 0x0400
238 #define LTC2974_SW_PGOODB 0x0800
239 #define LTC2974_SW_MFR 0x1000
240 #define LTC2974_SW_INPUT 0x2000
241 #define LTC2974_SW_IOUT 0x4000
242 #define LTC2974_SW_VOUT 0x8000
243 
244 #define LTC2974_CFGALL_AUX_FB_WPU 0x0001
245 #define LTC2974_CFGALL_PMBUS_TIMO 0x0002
246 #define LTC2974_CFGALL_PEC 0x0004
247 #define LTC2974_CFGALL_VIN_SHARE 0x0008
248 #define LTC2974_CFGALL_CRTL0_POL 0x0010
249 #define LTC2974_CFGALL_CTRL1_POL 0x0020
250 #define LTC2974_CFGALL_VIN_ON_CLR_FLT 0x0040
251 #define LTC2974_CFGALL_EFL 0x0080
252 #define LTC2974_CFGALL_CNTL2_POL 0x0100
253 #define LTC2974_CFGALL_CNTL3_POL 0x0200
254 #define LTC2974_CFGALL_FAST_FLAG 0x0400
255 #define LTC2974_CFGALL_PGOOD_OFF_UV 0x0800
256 
257 #define LTC2974_CFG_DAC_POL 0x0001
258 #define LTC2974_CFG_DAC_GAIN 0x0002
259 #define LTC2974_CFG_VO_EN_WPD 0x0004
260 #define LTC2974_CFG_VO_EN_WPU 0x0008
261 #define LTC2974_CFG_SRVO_ON_WARN 0x0040
262 #define LTC2974_CFG_SVRO_CONT 0x0080
263 #define LTC2974_CFG_SUP_RES 0x0400
264 #define LTC2974_CFG_FAST_SERVO 0x0800
265 #define LTC2974_CFG_CASCADE_ON 0x4000
266 
267 #define LTC2974_SMFR_WATCH_DOG 0x0001
268 #define LTC2974_SMFR_AUX_FAULT 0x0002
269 #define LTC2974_CFG_ALL_DAC_MODE 0x0030
270 #define LTC2974_SMFR_DAC_SAT 0x0004
271 #define LTC2974_SMFR_DAC_CON 0x0008
272 #define LTC2974_SMFR_SERVO_TGT 0x0010
273 #define LTC2974_SMFR_FAULT0_IN 0x0020
274 #define LTC2974_SMFR_FAULT1_IN 0x0040
275 #define LTC2974_SMFR_DISCHARGE 0x0080
276 
277 #define LTC2974_SFL_EEPROM 0x0001
278 #define LTC2974_SFL_RAM 0x0002
279 
280 #define LTC2975_SFL_EEPROM 0x0001
281 
282 #define LTC2977_SFL_EEPROM 0x0001
283 #define LTC2977_SFL_RAM 0x0002
284 
285 #define LTC2978_SW_HIGH_BYTE 0x0001
286 #define LTC2978_SW_CML 0x0002
287 #define LTC2978_SW_TEMP 0x0004
288 #define LTC2978_SW_VIN_UV 0x0008
289 #define LTC2978_SW_IOUT_OC 0x0010
290 #define LTC2978_SW_VOUT_OV 0x0020
291 #define LTC2978_SW_OFF 0x0040
292 #define LTC2978_SW_BUSY 0x0080
293 #define LTC2978_SW_FANS 0x0400
294 #define LTC2978_SW_PGOODB 0x0800
295 #define LTC2978_SW_MFR 0x1000
296 #define LTC2978_SW_INPUT 0x2000
297 #define LTC2978_SW_IOUT 0x4000
298 #define LTC2978_SW_VOUT 0x8000
299 
300 #define LTC2978_CFGALL_AUX_FB_WPU 0x0001
301 #define LTC2978_CFGALL_PMBUS_TIMO 0x0002
302 #define LTC2978_CFGALL_PEC 0x0004
303 #define LTC2978_CFGALL_VIN_SHARE 0x0008
304 #define LTC2978_CFGALL_CRTL0_POL 0x0010
305 #define LTC2978_CFGALL_CTRL1_POL 0x0020
306 #define LTC2978_CFGALL_VIN_ON_CLR_FLT 0x0040
307 #define LTC2978_CFGALL_EFL 0x0080
308 #define LTC2978_CFGALL_FAST_FLAG 0x0400
309 #define LTC2978_CFGALL_PGOOD_OFF_UV 0x0800
310 #define LTC2978_CFGALL_SHORT_CYC_FAULT 0x1000
311 
312 #define LTC2978_CFG_DAC_POL 0x0001
313 #define LTC2978_CFG_DAC_GAIN 0x0002
314 #define LTC2978_CFG_VO_EN_WPD 0x0004
315 #define LTC2978_CFG_VO_EN_WPU 0x0008
316 #define LTC2978_CFG_DAC_MODE 0x0030
317 #define LTC2978_CFG_SRVO_ON_WARN 0x0040
318 #define LTC2978_CFG_SVRO_CONT 0x0080
319 #define LTC2978_CFG_CNTL_IN_SEL 0x0100
320 #define LTC2978_CFG_ADC_RES 0x0200
321 #define LTC2978_CFG_SUP_RES 0x0400
322 #define LTC2978_CFG_FAST_SERVO 0x0800
323 #define LTC2978_CFG_CHAN_MODE 0xC000
324 
325 #define LTC2978_SMFR_WATCH_DOG 0x0001
326 #define LTC2978_SMFR_VIN_EN 0x0002
327 #define LTC2978_SMFR_DAC_SAT 0x0004
328 #define LTC2978_SMFR_DAC_CON 0x0008
329 #define LTC2978_SMFR_SERVO_TGT 0x0010
330 #define LTC2978_SMFR_FAULT0_IN 0x0020
331 #define LTC2978_SMFR_FAULT1_IN 0x0040
332 #define LTC2978_SMFR_DISCHARGE 0x0080
333 
334 #define LTC2978_SFL_EEPROM 0x0001
335 #define LTC2978_SFL_RAM 0x0002
336 
337 #define STATUS_CML_CMD_FAULT 0x80
338 #define STATUS_CML_DATA_FAULT 0x40
339 #define STATUS_CML_PEC_FAULT 0x20
340 #define STATUS_CML_MEM_FAULT 0x10
341 #define STATUS_CML_PROC_FAULT 0x04
342 #define STATUS_CML_PMBUS_FAULT 0x02
343 #define STATUS_CML_UNKNOWN_FAULT 0x01
344 
346 {
365 };
366 
367 //! PMBus communication. Do not use polled commands with LTC2978 or LTC2977.
368 //! Commands that end in WithPage use PAGE_PLUS. This is reserved for future
369 //! products.
370 class LT_PMBus
371 {
372  private:
373 
374  /*
375  consider changing this smbus_ variable to public. At the moment, only commands in this pmbus library
376  can be used in group protocol. If this variable is made public, users can use it to add arbitrary commands
377  to the set they're sending in the group protocol.
378  */
379  LT_SMBusGroup *smbus_;
380 
381  void pmbusWriteByteWithPolling(uint8_t address, uint8_t command, uint8_t data);
382  uint8_t pmbusReadByteWithPolling(uint8_t address, uint8_t command);
383  uint16_t pmbusReadWordWithPolling(uint8_t address, uint8_t command);
384 
385  float L11_to_Float(uint16_t input_val);
386  float L16_to_Float_with_polling(uint8_t address, uint16_t input_val);
387  float L16_to_Float(uint8_t address, uint16_t input_val);
388  float L16_to_Float_mode(uint8_t vout_mode, uint16_t input_val);
389  uint16_t Float_to_L16(uint8_t address, float input_val);
390  uint16_t Float_to_L16_mode(uint8_t vout_mode, float input_val);
391  uint16_t Float_to_L11(float input_val);
392 
393  public:
394 
395  //! Construct a LT_PMBus.
396  LT_PMBus(LT_SMBus *smbus //!< SMBus for communication. Use the PEC or non-PEC version.
397  );
398 
399  ~LT_PMBus();
400 
402  {
403  return (LT_SMBus *) smbus_;
404  }
405 
406  void smbus(LT_SMBus *smbus)
407  {
408  smbus_ = new LT_SMBusGroup(smbus, smbus->i2cbus()->getSpeed());
409  }
410 
411  //! Get the type of PSM device
412  //! @return the type
413  PsmDeviceType deviceType(uint8_t address //!> Slave address
414  );
415 
416  //! Determine if the device is from the LTC297X family, by using the product id in MFR_SPECIAL_ID.
417  //! @return true if is
418  bool isLtc297x(uint8_t address //!< Slave address
419  );
420 
421  //! Determine if the device is from the LTC2977 family, by using the product id in MFR_SPECIAL_ID.
422  //! @return true if is
423  bool isLtc2977(uint8_t address //!< Slave address
424  );
425 
426  //! Determine if the device is from the LTC2974 family, by using the product id in MFR_SPECIAL_ID.
427  //! @return true if is
428  bool isLtc2974(uint8_t address //!< Slave address
429  );
430 
431  //! Determine if the device is a LTC2978/A by looking at bit 2 (RESERVED2) in the MFR_COMMON. This bit is high on all devices except LTC2978/A. Therfore, if the bit is low, the device is a LTC2987/A. This work around a LTC2978/A eratta whereby the MFR_SPECIAL_ID can be overwritten with incorrect data. MFR_SPECIAL_ID cannot be modified in the other devices.
432  //! @return true if is
433  bool isLtc2978(uint8_t address //!< Slave address
434  );
435 
436  //! Set output voltage
437  //! @return void
438  void setVout(uint8_t address, //!< Slave address
439  float voltage
440  );
441 
442  //! Set output voltage
443  //! @return void
444  void setVoutWithPage(uint8_t address, //!< Slave address
445  float voltage, //!< Voltage
446  uint8_t page //!< PAGE
447  );
448 
449  //! Set output voltage
450  //! @return void
451  void setVoutWithPagePlus(uint8_t address, //!< Slave address
452  float voltage, //!< Voltage
453  uint8_t page //!< PAGE PLUS PAGE
454  );
455 
456  //! Set output voltage and supervisors
457  //! @return void
458  void setVoutWithSupervision(uint8_t address, //!< Slave address
459  float voltage, //!< Voltage
460  float margin_percent, //!< Amount to margin
461  float warn_percent, //!< Amount of warning limit
462  float fault_percent //!< Amount of fault limit
463  );
464 
465  //! Set output voltage and supervisors
466  //! @return void
467  void setVoutWithSupervisionWithPage(uint8_t address, //!< Slave address
468  float voltage, //!< Voltage
469  float margin_percent, //!< Amount to margin
470  float warn_percent, //!< Amount of warning limit
471  float fault_percent, //!< Amount of fault limit
472  uint8_t page //!< PAGE
473  );
474 
475  //! Set output voltage and supervisors
476  //! @return void
477  void setVoutWithSupervisionWithPagePlus(uint8_t address, //!< Slave address
478  float voltage, //!< Voltage
479  float margin_percent, //!< Amount to margin
480  float warn_percent, //!< Amount of warning limit
481  float fault_percent, //!< Amount of fault limit
482  uint8_t page //!< PAGE PLUS PAGE
483  );
484 
485  //! Set the maximum output voltage
486  //! @return void
487  void setVoutMaxWithPage(uint8_t address, //!< Slave address
488  float voltage, //!< Voltage
489  uint8_t page //!< PAGE
490  );
491 
492  //! Set the maximum output voltage
493  //! @return void
494  void setVoutMaxWithPagePlus(uint8_t address, //!< Slave address
495  float voltage, //!< Voltage
496  uint8_t page //!< PAGE PLUS PAGE
497  );
498 
499  //! Set the maximum output voltage
500  //! @return void
501  void setVoutMax(uint8_t address, //!< Slave address
502  float voltage //!< Voltage
503  );
504 
505  //! Set delay before rail turns on
506  //! @return void
507  void setTonDelay(uint8_t address, //!< Slave address
508  float delay //!< Delay time
509  );
510 
511  //! Set the turn on rise time
512  //! @return void
513  void setTonRise(uint8_t address, //!< Slave address
514  float rise //!< Rise time
515  );
516 
517  //! Set the maximum time allow for turn on
518  //! @return void
519  void setTonMaxFaultLimit(uint8_t address, //!< Slave address
520  float max //!< Max time
521  );
522 
523  //! Set the delay before the rail turns off
524  //! @return void
525  void setToffDelay(uint8_t address, //!< Slave address
526  float delay //!< Max time
527  );
528 
529  //! Set the turn off fall time
530  //! @return void
531  void setToffFall(uint8_t address, //!< Slave address
532  float fall //!< Fall time
533  );
534 
535  //! Set the maximum time allow to turn off
536  //! @return void
537  void setToffMaxWarnLimit(uint8_t address, //!< Slave address
538  float max //!< Max time
539  );
540 
541  //! Set the minimum output voltage
542  //! @return void
543  void setVoutMin(uint8_t address, //!< Slave address
544  float voltage //!< Voltage
545  );
546 
547  //! Set the minimum output voltage
548  //! @return void
549  void setVoutMinWithPage(uint8_t address, //!< Slave address
550  float voltage, //!< Voltage
551  uint8_t page //!< PAGE
552  );
553 
554  //! Set the minimum output voltage
555  //! @return void
556  void setVoutMinWithPagePlus(uint8_t address, //!< Slave address
557  float voltage, //!< Voltage
558  uint8_t page); //!< PAGE PLUS PAGE
559 
560  //! Set the over voltage supervisor fault limit
561  //! @return void
562  void setVoutOvFaultLimit(uint8_t address, //!< Slave address
563  float voltage //!< Voltage
564  );
565 
566  //! Set the over voltage supervisor fault limit
567  //! @return void
568  void setVoutOvFaultLimitWithPage(uint8_t address, //!< Slave address
569  float voltage, //!< Voltage
570  uint8_t page //!< PAGE
571  );
572 
573  //! Set the over voltage supervisor fault limit
574  //! @return void
575  void setVoutOvFaultLimitWithPagePlus(uint8_t address, //!< Slave address
576  float voltage, //!< Voltage
577  uint8_t page //!< PAGE PLUS PAGE
578  );
579 
580  //! Set the over voltage supervisor warning limit
581  //! @return void
582  void setVoutOvWarnLimit(uint8_t address, //!< Slave address
583  float voltage //!< Voltage
584  );
585 
586  //! Set the over voltage supervisor warning limit
587  //! @return void
588  void setVoutOvWarnLimitWithPage(uint8_t address, //!< Slave address
589  float voltage, //!< Voltage
590  uint8_t page //!< PAGE
591  );
592 
593  //! Set the over voltage supervisor warning limit
594  //! @return void
595  void setVoutOvWarnLimitWithPagePlus(uint8_t address, //!< Slave address
596  float voltage, //!< Voltage
597  uint8_t page //!< PAGE PLUS PAGE
598  );
599 
600  //! Set the under voltage supervisor warning limit
601  //! @return void
602  void setVoutUvWarnLimit(uint8_t address, //!< Slave address
603  float voltage //!< Voltage
604  );
605 
606  //! Set the under voltage supervisor warning limit
607  //! @return void
608  void setVoutUvWarnLimitWithPage(uint8_t address, //!< Slave address
609  float voltage, //!< Voltage
610  uint8_t page //!< PAGE
611  );
612 
613  //! Set the under voltage supervisor warning limit
614  //! @return void
615  void setVoutUvWarnLimitWithPagePlus(uint8_t address, //!< Slave address
616  float voltage, //!< Voltage
617  uint8_t page //!< PAGE PLUS PAGE
618  );
619 
620  //! Set the margin high
621  //! @return void
622  void setVoutMarginHigh(uint8_t address, //!< Slave address
623  float voltage //!< Voltage
624  );
625 
626  //! Set the margin high
627  //! @return void
628  void setVoutMarginHighWithPage(uint8_t address, //!< Slave address
629  float voltage, //!< Voltage
630  uint8_t page //!< PAGE
631  );
632 
633  //! Set the margin high
634  //! @return void
635  void setVoutMarginHighWithPagePlus(uint8_t address, //!< Slave address
636  float voltage, //!< Voltage
637  uint8_t page //!< PAGE PLUS PAGE
638  );
639 
640  //! Set the margin low
641  //! @return void
642  void setVoutMarginLow(uint8_t address, //!< Slave address
643  float voltage //!< Voltage
644  );
645 
646  //! Set the margin low
647  //! @return void
648  void setVoutMarginLowWithPage(uint8_t address, //!< Slave address
649  float voltage, //!< Voltage
650  uint8_t page //!< PAGE
651  );
652 
653  //! Set the margin low
654  //! @return void
655  void setVoutMarginLowWithPagePlus(uint8_t address, //!< Slave address
656  float voltage, //!< Voltage
657  uint8_t page //!< PAGE PLUS PAGE
658  );
659 
660  //! Set the input over voltage warning limit
661  //! @return void
662  void setVinOvWarningLimit(uint8_t address, //!< Slave address
663  float voltage //!< Voltage
664  );
665 
666  //! Set the under voltage fault limit
667  //! @return void
668  void setVoutUvFaultLimit(uint8_t address, //!< Slave address
669  float voltage //!< Voltage
670  );
671 
672  //! Set the under voltage fault limit
673  //! @return void
674  void setVoutUvFaultLimitWithPage(uint8_t address, //!< Slave address
675  float voltage, //!< Voltage
676  uint8_t page //!< PAGE
677  );
678 
679  //! Set the under voltage fault limit
680  //! @return void
681  void setVoutUvFaultLimitWithPagePlus(uint8_t address, //!< Slave address
682  float voltage, //!< Voltage
683  uint8_t page //!< PAGE PLUS PAGE
684  );
685 
686  //! Set the over current fault limit
687  //! @return void
688  void setIoutOcFaultLimit(uint8_t address, //!< Slave address
689  float current //!< Current
690  );
691 
692  //! Set the over current fault limit
693  //! @return void
694  void setIoutOcFaultLimitWithPage(uint8_t address, //!< Slave address
695  float current,
696  uint8_t page //!< PAGE
697  );
698 
699  //! Set the over current fault limit
700  //! @return void
701  void setIoutOcFaultLimitWithPagePlus(uint8_t address, //!< Slave address
702  float current,
703  uint8_t page //!< PAGE PLUS PAGE
704  );
705 
706  //! Set the over current warning limit
707  //! @return void
708  void setIoutOcWarnLimit(uint8_t address, //!< Slave address
709  float current //!< Current
710  );
711 
712  //! Set the over current warning limit
713  //! @return void
714  void setIoutOcWarnLimitWithPage(uint8_t address, //!< Slave address
715  float current, //!< Current
716  uint8_t page //!< PAGE
717  );
718 
719  //! Set the over current warning limit
720  //! @return void
721  void setIoutOcWarnLimitWithPagePlus(uint8_t address, //!< Slave address
722  float current, //!< Current
723  uint8_t page //!< PAGE PLUS PAGE
724  );
725 
726  //! Set the input over voltage fault limit
727  //! @return void
728  void setVinOvFaultLimit(uint8_t address, //!< Slave address
729  float voltage //!< Voltage
730  );
731 
732  //! Set the input over voltage warnign limit
733  //! @return void
734  void setVinOvWarnLimit(uint8_t address, //!< Slave address
735  float voltage //!< Voltage
736  );
737 
738  //! Set the input under voltage fault limit
739  //! @return void
740  void setVinUvFaultLimit(uint8_t address, //!< Slave address
741  float voltage //!< Voltage
742  );
743 
744  //! Set the input under voltage warning limit
745  //! @return void
746  void setVinUvWarnLimit(uint8_t address, //!< Slave address
747  float voltage //!< Voltage
748  );
749 
750  //! Set the input over current warning limit
751  //! @return void
752  void setIinOcWarnLimit(uint8_t address, //!< Slave address
753  float current //!< DCurrent
754  );
755 
756  //! Set the over temperature fault limit
757  //! @return void
758  void setOtFaultLimit(uint8_t address, //!< Slave address
759  float temperature //!< Temperature
760  );
761 
762  //! Set the over temperature fault limit
763  //! @return void
764  void setOtFaultLimitWithPage(uint8_t address, //!< Slave address
765  float temperature, //!< Temperature
766  uint8_t page //!< PAGE
767  );
768 
769  //! Set the over temperature fault limit
770  //! @return void
771  void setOtFaultLimitWithPagePlus(uint8_t address, //!< Slave address
772  float temperature, //!< Temperature
773  uint8_t page //!< PAGE PLUS PAGE
774  );
775 
776  //! Set the over temperature warning limit
777  //! @return void
778  void setOtWarnLimit(uint8_t address, //!< Slave address
779  float temperature //!< Temperature
780  );
781 
782  //! Set the over temperature warning limit
783  //! @return void
784  void setOtWarnLimitWithPage(uint8_t address, //!< Slave address
785  float temperature, //!< Temperature
786  uint8_t page //!< PAGE
787  );
788 
789  //! Set the over temperature warning limit
790  //! @return void
791  void setOtWarnLimitWithPagePlus(uint8_t address, //!< Slave address
792  float temperature, //!< Temperature
793  uint8_t page //!< PAGE PLUS PAGE
794  );
795 
796  //! Set the under temperature fault limit
797  //! @return void
798  void setUtFaultLimit(uint8_t address, //!< Slave address
799  float temperature //!< Temperature
800  );
801 
802  //! Set the under temperature fault limit
803  //! @return void
804  void setUtFaultLimitWithPage(uint8_t address, //!< Slave address
805  float temperature, //!< Temperature
806  uint8_t page //!< PAGE
807  );
808 
809  //! Set the under temperature fault limit
810  //! @return void
811  void setUtFaultLimitWithPagePlus(uint8_t address, //!< Slave address
812  float temperature, //!< Temperature
813  uint8_t page //!< PAGE PLUS PAGE
814  );
815 
816  //! Set the under temperature warning limit
817  //! @return void
818  void setUtWarnLimit(uint8_t address, //!< Slave address
819  float temperature //!< Temperature
820  );
821 
822  //! Set the under temperature warning limit
823  //! @return void
824  void setUtWarnLimitWithPage(uint8_t address, //!< Slave address
825  float temperature, //!< Temperature
826  uint8_t page //!< PAGE
827  );
828 
829  //! Set the under temperature warning limit
830  //! @return void
831  void setUtWarnLimitWithPagePlus(uint8_t address, //!< Slave address
832  float temperature, //!< Temperature
833  uint8_t page //!< PAGE PLUS PAGE
834  );
835 
836  //! Get the over temperature warning limit
837  //! @return limit
838  float getOtWarnLimit(uint8_t address //!< Slave address
839  );
840 
841  //! Get the over temperature warning limit
842  //! @return limit
843  float getOtWarnLimitWithPage(uint8_t address, //!< Slave address
844  uint8_t page //!< PAGE
845  );
846 
847  //! Get the over temperature warning limit
848  //! @return limit
849  float getOtWarnLimitWithPagePlus(uint8_t address, //!< Slave address
850  uint8_t page //!< PAGE PLUS PAGE
851  );
852 
853  //! Set the temperature 1 gain
854  //! @return void
855  void setTemp1Gain(uint8_t address, //!< Slave address
856  uint16_t gain //!< gain
857  );
858 
859  //! Get the temperature 1 gain
860  //! @return gain
861  uint16_t getTemp1Gain(uint8_t address //!< Slave address
862  );
863 
864  //! Set the temperature 1 offset
865  //! @return void
866  void setTemp1Offset(uint8_t address, //!< Slave address
867  float offset //!< Offset
868  );
869 
870  //! Get the temperature 1 offset
871  //! @return offset
872  float getTemp1Offset(uint8_t address //!< Slave address
873  );
874 
875  //! Get the input voltage
876  //! @return voltage
877  float readVin(uint8_t address, //!< Slave address
878  bool polling //!< true for polling
879  );
880 
881  //! Get the output over voltage limit
882  //! @return limit
883  float getVoutOv(uint8_t address, //!< Slave address
884  bool polling //!< true for polling
885  );
886 
887  //! Get the output over voltage limit
888  //! @return limit
889  float getVoutOvWithPage(uint8_t address, //!< Slave address
890  uint8_t page //!< PAGE
891  );
892 
893  //! Get the output over voltage limit
894  //! @return limit
895  float getVoutOvWithPagePlus(uint8_t address, //!< Slave address
896  uint8_t page //!< PAGE PLUS PAGE
897  );
898 
899  //! Get the measured output voltage
900  //! @return voltage
901  float readVout(uint8_t address, //!< Slave address
902  bool polling //!< true for polling
903  );
904 
905  //! Get the set output voltage
906  //! @return voltage
907  float getVout(uint8_t address, //!< Slave address
908  bool polling //!< true for polling
909  );
910 
911  //! Get the measured output voltage
912  //! @return voltage
913  float readVoutWithPage(uint8_t address, //!< Slave address
914  uint8_t page //!< PAGE
915  );
916 
917  //! Get the measured output voltage
918  //! @return voltage
919  float readVoutWithPagePlus(uint8_t address, //!< Slave address
920  uint8_t page //!< PAGE PLUS PAGE
921  );
922 
923  //! Get the under voltage limit
924  //! @return limit
925  float getVoutUv(uint8_t address, //!< Slave address
926  bool polling //!< true for polling
927  );
928 
929  //! Get the under voltage limit
930  //! @return limit
931  float getVoutUvWithPage(uint8_t address, //!< Slave address
932  uint8_t page //!< PAGE
933  );
934 
935  //! Get the under voltage limit
936  //! @return limit
937  float getVoutUvWithPagePlus(uint8_t address, //!< Slave address
938  uint8_t page //!< PAGE PLUS PAGE
939  );
940 
941  //! Get the input current
942  //! @return current
943  float readIin(uint8_t address, //!< Slave address
944  bool polling //!< true for polling
945  );
946 
947  //! Get the over current limit
948  //! @return limit
949  float getIoutOc(uint8_t address, //!< Slave address
950  bool polling //!< true for polling
951  );
952 
953  //! Get the over current limit
954  //! @return limit
955  float getIoutOcWithPage(uint8_t address, //!< Slave address
956  uint8_t page //!< PAGE
957  );
958 
959  //! Get the over current limit
960  //! @return limit
961  float getIoutOcWithPagePlus(uint8_t address, //!< Slave address
962  uint8_t page //!< PAGE PLUS PAGE
963  );
964 
965  //! Get the measured output current
966  //! @return current
967  float readIout(uint8_t address, //!< Slave address
968  bool polling //!< true for polling
969  );
970 
971  //! Get the measured output current
972  //! @return current
973  float readIoutWithPage(uint8_t address, //!< Slave address
974  uint8_t page //!< PAGE
975  );
976 
977  //! Get the measured output current
978  //! @return current
979  float readIoutWithPagePlus(uint8_t address, //!< Slave address
980  uint8_t page //!< PAGE PLUS PAGE
981  ) ;
982 
983  //! Get the measured input power
984  //! @return current
985  float readPin(uint8_t address, //!< Slave address
986  bool polling //!< true for polling
987  );
988 
989  //! Get the measured output power
990  //! @return current
991  float readPout(uint8_t address, //!< Slave address
992  bool polling //!< true for polling
993  );
994 
995  //! Get the measured output power
996  //! @return current
997  float readPoutWithPage(uint8_t address, //!< Slave address
998  uint8_t page //!< PAGE
999  );
1000 
1001  //! Get the measured output power
1002  //! @return current
1003  float readPoutWithPagePlus(uint8_t address, //!< Slave address
1004  uint8_t page //!< PAGE PLUS PAGE
1005  );
1006 
1007  //! Get the measured external temperature
1008  //! @return temperature
1009  float readExternalTemperature(uint8_t address, //!< Slave address
1010  bool polling //!< true for polling
1011  );
1012 
1013  //! Get the measured internal temperature
1014  //! @return temperature
1015  float readInternalTemperature(uint8_t address, //!< Slave address
1016  bool polling //!< true for polling
1017  );
1018 
1019  //! Get the duty cycle
1020  //! @return duty cycle
1021  float readDutyCycle(uint8_t address, //!< Slave address
1022  bool polling //!< true for polling
1023  );
1024 
1025  //! Get the internal measured temperature
1026  //! @return temperature
1027  float readItemp(uint8_t address //!< Slave address
1028  );
1029 
1030  //! Get the external measured temperature
1031  //! @return temperature
1032  float readOtemp(uint8_t address //!< Slave address
1033  );
1034 
1035  //! Get the external measured temperature
1036  //! @return temperature
1037  float readOtempWithPage(uint8_t address, //!< Slave address
1038  uint8_t page //!< PAGE
1039  );
1040 
1041  //! Get the external measured temperature
1042  //! @return temperature
1043  float readOtempWithPagePlus(uint8_t address, //!< Slave address
1044  uint8_t page //!< PAGE PLUS PAGE
1045  );
1046 
1047  //! Get the output voltage status mask
1048  //! @return mask
1049  void setVoutStatusMask(uint8_t address, //!< Slave address
1050  uint8_t mask //!< The status mask
1051  );
1052 
1053  //! Get the output current status mask
1054  //! @return mask
1055  void setIoutStatusMask(uint8_t address, //!< Slave address
1056  uint8_t mask //!< The status mask
1057  );
1058 
1059  //! Get the input status mask
1060  //! @return mask
1061  void setInputStatusMask(uint8_t address, //!< Slave address
1062  uint8_t mask //!< The status mask
1063  );
1064 
1065  //! Get the temperature status mask
1066  //! @return mask
1067  void setTemperatureStatusMask(uint8_t address, //!< Slave address
1068  uint8_t mask //!< The status mask
1069  );
1070 
1071  //! Get the CML status mask
1072  //! @return mask
1073  void setCmlStatusMask(uint8_t address, //!< Slave address
1074  uint8_t mask //!< The status mask
1075  );
1076 
1077  //! Get the MFR status mask
1078  //! @return mask
1079  void setMfrStatusMask(uint8_t address, //!< Slave address
1080  uint8_t mask //!< The status mask
1081  );
1082 
1083  //! Get the output voltage status mask
1084  //! @return mask
1085  uint8_t getVoutStatusMask(uint8_t address //!< Slave address
1086  );
1087 
1088  //! Get the output current status mask
1089  //! @return mask
1090  uint8_t getIoutStatusMask(uint8_t address //!< Slave address
1091  );
1092 
1093  //! Get the input status mask
1094  //! @return mask
1095  uint8_t getInputStatusMask(uint8_t address //!< Slave address
1096  );
1097 
1098  //! Get the temperature status mask
1099  //! @return mask
1100  uint8_t getTemperatureStatusMask(uint8_t address //!< Slave address
1101  );
1102 
1103  //! Get the CML status mask
1104  //! @return mask
1105  uint8_t getCmlStatusMask(uint8_t address //!< Slave address
1106  );
1107 
1108  //! Get the MFR status mask
1109  //! @return mask
1110  uint8_t getMfrStatusMask(uint8_t address //!< Slave address
1111  );
1112 
1113 
1114  //! Get the output voltage status byte
1115  //! @return byte
1116  uint8_t readVoutStatusByte(uint8_t address //!< Slave address
1117  );
1118 
1119  //! Get the output current status byte
1120  //! @return byte
1121  uint8_t readIoutStatusByte(uint8_t address //!< Slave address
1122  );
1123 
1124  //! Get the input status byte
1125  //! @return byte
1126  uint8_t readInputStatusByte(uint8_t address //!< Slave address
1127  );
1128 
1129  //! Get the temperature status byte
1130  //! @return byte
1131  uint8_t readTemperatureStatusByte(uint8_t address //!< Slave address
1132  );
1133 
1134  //! Get the CML status byte
1135  //! @return byte
1136  uint8_t readCmlStatusByte(uint8_t address //!< Slave address
1137  );
1138 
1139  //! Get the MFR status byte
1140  //! @return byte
1141  uint8_t readMfrStatusByte(uint8_t address //!< Slave address
1142  );
1143 
1144  //! Get the fault log status byte
1145  //! @return byte
1146  uint8_t readMfrFaultLogStatusByte(uint8_t address //!< Slave address
1147  );
1148 
1149  //! Get the state of the pads
1150  //! @return state
1151  uint16_t readMfrPads(uint8_t address //!< Slave address
1152  );
1153 
1154 
1155  //! Get the pmbus revision
1156  //! @return revision
1157  uint8_t readPmbusRevision(uint8_t address //!< Slave address
1158  );
1159 
1160  //! Get the slave revision
1161  //! @return model
1162  void readRevision(uint8_t address, //!< Slave address
1163  uint8_t *revision //!< Place to store the revision
1164  );
1165  //! Get the model
1166  //! @return model
1167  void readModel(uint8_t address, //!< Slave address
1168  uint8_t *model //!< Place to store the model string
1169  );
1170 
1171  //! Get the status byte
1172  //! @return byte
1173  uint8_t readStatusByte(uint8_t address //!< Slave address
1174  );
1175 
1176  //! Get the status byte
1177  //! @return byte
1178  uint8_t readStatusByteWithPage(uint8_t address, //!< Slave address
1179  uint8_t page //!< PAGE
1180  );
1181 
1182  //! Get the status byte
1183  //! @return byte
1184  uint8_t readStatusByteWithPagePlus(uint8_t address, //!< Slave address
1185  uint8_t page //!< PAGE PLUS PAGE
1186  );
1187 
1188  //! Get the status word
1189  //! @return byte
1190  uint16_t readStatusWord(uint8_t address //!< Slave address
1191  );
1192 
1193  //! Get the status word
1194  //! @return byte
1195  uint16_t readStatusWordWithPage(uint8_t address, //!< Slave address
1196  uint8_t page //!< PAGE
1197  );
1198 
1199  //! Get the status word
1200  //! @return byte
1201  uint16_t readStatusWordWithPagePlus(uint8_t address, //!< Slave address
1202  uint8_t page //!< PAGE PLUS PAGE
1203  );
1204 
1205  //! Get the status CML byte
1206  //! @return byte
1207  uint8_t readStatusCml(uint8_t address //!< Slave address
1208  );
1209 
1210  //! Enable the write protect
1211  //! @return void
1212  void enableWriteProtect(uint8_t address //!< Slave address
1213  );
1214 
1215  //! Enable the write protect
1216  //! @return void
1217  void enableWriteProtectGlobal(void);
1218 
1219  //! Disable the write protect
1220  //! @return void
1221  void disableWriteProtect(uint8_t address //!< Slave address
1222  );
1223 
1224  //! Disable the write protect
1225  //! @return void
1226  void disableWriteProtectGlobal(void);
1227 
1228  //! Clear the faults of the existing page
1229  //! @return void
1230  void clearFaults(uint8_t address //!< Slave address
1231  );
1232 
1233  //! Clear all the faults for all pages
1234  //! @return void
1235  void clearAllFaults(uint8_t address //!< Slave address
1236  );
1237 
1238 
1239  //! Clear all the faults for all pages of all devices
1240  //! @return void
1241  void clearFaultsGlobal(void);
1242 
1243  //! Set the first watchdog timer
1244  //! @return void
1245  void setMfrWatchdogFirst(uint8_t address, //!< Slave address
1246  float delay //!< First delay
1247  );
1248 
1249  //! Set watchdog timer
1250  //! @return void
1251  void setMfrWatchdog(uint8_t address, //!< Slave address
1252  float delay //!< Normal delay
1253  );
1254 
1255  //! Restore device from NVM
1256  //! @return void
1257  void restoreFromNvm(uint8_t address //!< Slave address
1258  );
1259 
1260  //! Restore list of devices from NVM
1261  //! @return void
1262  void restoreFromNvmAll(uint8_t *addresses, //!< Slave addresses
1263  uint8_t no_addresses //!< Number of slave addresses
1264  );
1265 
1266  //! Restore all devices from NVM
1267  //! @return void
1268  void restoreFromNvmGlobal(void);
1269 
1270  //! Store RAM to NVM
1271  //! @return void
1272  void storeToNvm(uint8_t address //!< Slave address
1273  );
1274 
1275  //! Store RAM to NVM for list of devices
1276  //! @return void
1277  void storeToNvmAll(uint8_t *addresses, //!< Slave addresses
1278  uint8_t no_addresses //!< Number of slave addresses
1279  );
1280 
1281  //! Store RAM to NVM for all devices
1282  //! @return void
1283  void storeToNvmGlobal(void);
1284 
1285  //! Unlock NVM
1286  bool unlockNVM(uint8_t address //!< Slave address
1287  );
1288 
1289  //! Lock NVM
1290  bool lockNVM(uint8_t address //!< Slave address
1291  );
1292 
1293  void eraseNVM(uint8_t address //< Slave address
1294  );
1295 
1296  //! Compare RAM to NVM for device
1297  //! @return status (true = mismatch)
1298  bool compareRamWithNvm(uint8_t address); //!< Slave address
1299 
1300  //! Set the page
1301  //! @return void
1302  void page(uint8_t *addresses, //!< Slave addresses
1303  uint8_t no_addresses //!< Number of slave addresses
1304  );
1305 
1306  //! Sequence on a list of devices
1307  //! @return void
1308  void sequenceOn(uint8_t *addresses, //!< Slave addresses
1309  uint8_t no_addresses //!< Number of slave addresses
1310  );
1311 
1312  //! Turn off all devices immediately
1313  //! @return void
1314  void immediateOff(uint8_t *addresses, //!< Slave addresses
1315  uint8_t no_addresses //!< Number of slave addresses
1316  );
1317 
1318  //! Sequence off a list of addresses
1319  //! @return void
1320  void sequenceOff(uint8_t *addresses, //!< Slave addresses
1321  uint8_t no_addresses //!< Number of slave addresses
1322  );
1323 
1324  //! Sequence off all rails
1325  //! @return void
1326  void sequenceOffGlobal(void);
1327 
1328  //! Sequence on all rails
1329  //! @return void
1330  void sequenceOnGlobal(void);
1331 
1332  //! Turn off all rails immediately
1333  //! @return void
1334  void immediateOffGlobal(void);
1335 
1336  //! Issue reset to all devices
1337  //! @return void
1338  void resetGlobal(void);
1339 
1340  //! Issue reset to one device
1341  //! @return void
1342  void reset(uint8_t address);
1343 
1344  //! Margin a list of rails high
1345  //! @return void
1346  void marginHighAll(uint8_t *addresses, //!< Slave addresses
1347  uint8_t *pages, //!< The page used for setPage
1348  uint8_t no_addresses //!< Number of slave addresses
1349  );
1350 
1351  //! Margin a list of rails low
1352  //! @return void
1353  void marginLowAll(uint8_t *addresses, //!< Slave addresses
1354  uint8_t *pages, //!< The page used for setPage
1355  uint8_t no_addresses //!< Number of slave addresses
1356  );
1357 
1358  //! Margin off a list of rails low
1359  //! @return void
1360  void marginOffAll(uint8_t *addresses, //!< Slave addresses
1361  uint8_t *pages, //!< The page used for setPage
1362  uint8_t no_addresses //!< Number of slave addresses
1363  );
1364 
1365  //! Margin rail high
1366  //! @return void
1367  void marginHigh(uint8_t address); //!< Slave address
1368 
1369  //! Margin rails low
1370  //! @return void
1371  void marginLow(uint8_t address); //!< Slave address
1372 
1373  //! Margin rails off
1374  //! @return void
1375  void marginOff(uint8_t address); //!< Slave address
1376 
1377  //! Margin all rails high
1378  //! @return void
1379  void marginHighGlobal(void);
1380 
1381  //! Margin all rails low
1382  //! @return void
1383  void marginLowGlobal(void);
1384 
1385  //! Margin all rails off
1386  //! @return void
1387  void marginOffGlobal(void);
1388 
1389  //! Set user data 3
1390  //! @return void
1391  void setUserData03(uint8_t address, //!< Slave address
1392  uint16_t data //!< User data
1393  );
1394 
1395  //! Get user data 3
1396  //! @return data
1397  uint16_t getUserData03(uint8_t address //!< Slave address
1398  );
1399 
1400  //! Set user data 4
1401  //! @return void
1402  void setUserData04(uint8_t address, //!< Slave address
1403  uint16_t data //!< User data
1404  );
1405 
1406  //! Get user data 4
1407  //! @return data
1408  uint16_t getUserData04(uint8_t address //!< Slave address
1409  );
1410 
1411  //! Set spare data 0
1412  //! @return void
1413  void setSpareData0(uint8_t address, //!< Slave address
1414  uint16_t data //!< Spare data
1415  );
1416 
1417  //! Get spare data 0
1418  //! @return data
1419  uint16_t getSpareData0(uint8_t address //!< Slave address
1420  );
1421 
1422  //! Set rail address of a Controller
1423  //! @return void
1424  void setRailAddress(uint8_t address, //!< Slave address
1425  uint8_t rail_address //!< Rail Address
1426  );
1427 
1428  //! Get the rail address of a Controller
1429  //! @return rail address
1430  uint8_t getRailAddress(uint8_t address //!< Slave address
1431  );
1432 
1433  //! Set the page and poll the busy bit
1434  //! @return void
1435  void setPageWithPolling(uint8_t address, //!< Slave address
1436  uint8_t page //!< PAGE PLUS PAGE
1437  );
1438 
1439  //! Set the page
1440  //! @return void
1441  void setPage(uint8_t address, //!< Slave address
1442  uint8_t page //!< PAGE PLUS PAGE
1443  );
1444 
1445  //! Get the page
1446  //! @return page
1447  uint8_t getPage(uint8_t address //!< Slave address
1448  );
1449 
1450  //! Enable pec for all transactions
1451  //! @return void
1452  void enablePec(uint8_t address //!< Slave address
1453  );
1454 
1455  //! Disable pec for all transactions
1456  //! @return void
1457  void disablePec(uint8_t address //!< Slave address
1458  );
1459 
1460  //! Read MFR_COMMON until not Busy
1461  //! @return success or failure
1462  uint8_t waitForNotBusy(uint8_t address //!< Slave Address
1463  );
1464 
1465  //! Read MFR_EEPROM_STATUS until done (LTC388X only)
1466  //! @return success or failure
1467  uint8_t waitForNvmDone(uint8_t address //!< Slave Address
1468  );
1469 
1470  //! Find bricked devices
1471  //! @return a list of bricks
1472  uint8_t *bricks(uint8_t *addresses, //!< Addresses to test
1473  uint8_t no_addresses); //!< Number of addresses
1474 
1475  //! starts group protocol
1476  void startGroupProtocol(void);
1477 
1478  //! ends group protocol
1479  void executeGroupProtocol(void);
1480 
1481  //! Get speical ID
1482  uint16_t readMfrSpecialId(uint8_t address //!< Address
1483  );
1484 };
1485 
1486 #endif /* PMBUS_H_ */
1487 
void storeToNvmAll(uint8_t *addresses, uint8_t no_addresses)
Store RAM to NVM for list of devices.
Definition: LT_PMBus.cpp:2693
void setCmlStatusMask(uint8_t address, uint8_t mask)
Get the CML status mask.
Definition: LT_PMBus.cpp:2222
uint8_t waitForNvmDone(uint8_t address)
Read MFR_EEPROM_STATUS until done (LTC388X only)
Definition: LT_PMBus.cpp:3278
float readIoutWithPagePlus(uint8_t address, uint8_t page)
Get the measured output current.
Definition: LT_PMBus.cpp:1938
void sequenceOff(uint8_t *addresses, uint8_t no_addresses)
Sequence off a list of addresses.
Definition: LT_PMBus.cpp:2850
void setMfrStatusMask(uint8_t address, uint8_t mask)
Get the MFR status mask.
Definition: LT_PMBus.cpp:2230
void sequenceOn(uint8_t *addresses, uint8_t no_addresses)
Sequence on a list of devices.
Definition: LT_PMBus.cpp:2794
void setPageWithPolling(uint8_t address, uint8_t page)
Set the page and poll the busy bit.
Definition: LT_PMBus.cpp:3144
float getOtWarnLimitWithPagePlus(uint8_t address, uint8_t page)
Get the over temperature warning limit.
Definition: LT_PMBus.cpp:1463
float getOtWarnLimitWithPage(uint8_t address, uint8_t page)
Get the over temperature warning limit.
Definition: LT_PMBus.cpp:1451
float readPout(uint8_t address, bool polling)
Get the measured output power.
Definition: LT_PMBus.cpp:1963
uint8_t getPage(uint8_t address)
Get the page.
Definition: LT_PMBus.cpp:3167
uint8_t getInputStatusMask(uint8_t address)
Get the input status mask.
Definition: LT_PMBus.cpp:2262
uint8_t readIoutStatusByte(uint8_t address)
Get the output current status byte.
Definition: LT_PMBus.cpp:2318
LTC SMBus Support: API for a shared SMBus layer.
bool compareRamWithNvm(uint8_t address)
Compare RAM to NVM for device.
Definition: LT_PMBus.cpp:2750
float getOtWarnLimit(uint8_t address)
Get the over temperature warning limit.
Definition: LT_PMBus.cpp:1432
float readOtemp(uint8_t address)
Get the external measured temperature.
Definition: LT_PMBus.cpp:2175
bool isLtc2974(uint8_t address)
Determine if the device is from the LTC2974 family, by using the product id in MFR_SPECIAL_ID.
Definition: LT_PMBus.cpp:158
void marginOff(uint8_t address)
Margin rails off.
Definition: LT_PMBus.cpp:3059
float readVoutWithPagePlus(uint8_t address, uint8_t page)
Get the measured output voltage.
Definition: LT_PMBus.cpp:1692
void marginOffAll(uint8_t *addresses, uint8_t *pages, uint8_t no_addresses)
Margin off a list of rails low.
Definition: LT_PMBus.cpp:3001
void setIoutOcWarnLimit(uint8_t address, float current)
Set the over current warning limit.
Definition: LT_PMBus.cpp:991
LTC SMBus Support: Implementation for a shared SMBus layer.
void setOtWarnLimit(uint8_t address, float temperature)
Set the over temperature warning limit.
Definition: LT_PMBus.cpp:1163
void setVoutMarginHigh(uint8_t address, float voltage)
Set the margin high.
Definition: LT_PMBus.cpp:694
void reset(uint8_t address)
Issue reset to one device.
Definition: LT_PMBus.cpp:2912
void setVinUvFaultLimit(uint8_t address, float voltage)
Set the input under voltage fault limit.
Definition: LT_PMBus.cpp:1086
uint8_t readStatusByte(uint8_t address)
Get the status byte.
Definition: LT_PMBus.cpp:2423
void setVoutOvWarnLimit(uint8_t address, float voltage)
Set the over voltage supervisor warning limit.
Definition: LT_PMBus.cpp:634
uint8_t * bricks(uint8_t *addresses, uint8_t no_addresses)
Find bricked devices.
Definition: LT_PMBus.cpp:3295
void disableWriteProtectGlobal(void)
Disable the write protect.
Definition: LT_PMBus.cpp:2556
float getVoutUvWithPagePlus(uint8_t address, uint8_t page)
Get the under voltage limit.
Definition: LT_PMBus.cpp:1777
void setVoutUvFaultLimitWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the under voltage fault limit.
Definition: LT_PMBus.cpp:908
void setVoutUvWarnLimitWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the under voltage supervisor warning limit.
Definition: LT_PMBus.cpp:848
void setVoutMax(uint8_t address, float voltage)
Set the maximum output voltage.
Definition: LT_PMBus.cpp:398
~LT_PMBus()
Definition: LT_PMBus.cpp:91
void storeToNvmGlobal(void)
Store RAM to NVM for all devices.
Definition: LT_PMBus.cpp:2700
void storeToNvm(uint8_t address)
Store RAM to NVM.
Definition: LT_PMBus.cpp:2688
void setVoutWithPage(uint8_t address, float voltage, uint8_t page)
Set output voltage.
Definition: LT_PMBus.cpp:260
void setIoutStatusMask(uint8_t address, uint8_t mask)
Get the output current status mask.
Definition: LT_PMBus.cpp:2198
void enablePec(uint8_t address)
Enable pec for all transactions.
Definition: LT_PMBus.cpp:3173
void setOtWarnLimitWithPage(uint8_t address, float temperature, uint8_t page)
Set the over temperature warning limit.
Definition: LT_PMBus.cpp:1239
float readItemp(uint8_t address)
Get the internal measured temperature.
Definition: LT_PMBus.cpp:2127
void setVoutWithSupervisionWithPagePlus(uint8_t address, float voltage, float margin_percent, float warn_percent, float fault_percent, uint8_t page)
Set output voltage and supervisors.
Definition: LT_PMBus.cpp:363
uint8_t getTemperatureStatusMask(uint8_t address)
Get the temperature status mask.
Definition: LT_PMBus.cpp:2274
void setMfrWatchdogFirst(uint8_t address, float delay)
Set the first watchdog timer.
Definition: LT_PMBus.cpp:2626
void disableWriteProtect(uint8_t address)
Disable the write protect.
Definition: LT_PMBus.cpp:2548
void setUtFaultLimit(uint8_t address, float temperature)
Set the under temperature fault limit.
Definition: LT_PMBus.cpp:1220
void setTonDelay(uint8_t address, float delay)
Set delay before rail turns on.
Definition: LT_PMBus.cpp:460
void setUtWarnLimitWithPagePlus(uint8_t address, float temperature, uint8_t page)
Set the under temperature warning limit.
Definition: LT_PMBus.cpp:1344
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
void readModel(uint8_t address, uint8_t *model)
Get the model.
Definition: LT_PMBus.cpp:2409
void setVoutWithSupervisionWithPage(uint8_t address, float voltage, float margin_percent, float warn_percent, float fault_percent, uint8_t page)
Set output voltage and supervisors.
Definition: LT_PMBus.cpp:344
void clearFaults(uint8_t address)
Clear the faults of the existing page.
Definition: LT_PMBus.cpp:2566
void setVoutWithSupervision(uint8_t address, float voltage, float margin_percent, float warn_percent, float fault_percent)
Set output voltage and supervisors.
Definition: LT_PMBus.cpp:304
float readOtempWithPagePlus(uint8_t address, uint8_t page)
Get the external measured temperature.
void setVoutOvFaultLimitWithPage(uint8_t address, float voltage, uint8_t page)
Set the over voltage supervisor fault limit.
Definition: LT_PMBus.cpp:595
void disablePec(uint8_t address)
Disable pec for all transactions.
Definition: LT_PMBus.cpp:3210
void setVoutOvWarnLimitWithPage(uint8_t address, float voltage, uint8_t page)
Set the over voltage supervisor warning limit.
Definition: LT_PMBus.cpp:655
float getVoutOvWithPagePlus(uint8_t address, uint8_t page)
Get the output over voltage limit.
Definition: LT_PMBus.cpp:1570
void setVoutMarginHighWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the margin high.
Definition: LT_PMBus.cpp:728
float getVoutUvWithPage(uint8_t address, uint8_t page)
Get the under voltage limit.
Definition: LT_PMBus.cpp:1763
void setIoutOcFaultLimitWithPage(uint8_t address, float current, uint8_t page)
Set the over current fault limit.
Definition: LT_PMBus.cpp:954
uint16_t getTemp1Gain(uint8_t address)
Get the temperature 1 gain.
Definition: LT_PMBus.cpp:1380
static uint8_t pages[2]
Definition: DC1989A.ino:87
uint8_t readPmbusRevision(uint8_t address)
Get the pmbus revision.
Definition: LT_PMBus.cpp:2380
void marginOffGlobal(void)
Margin all rails off.
Definition: LT_PMBus.cpp:3088
uint8_t getVoutStatusMask(uint8_t address)
Get the output voltage status mask.
Definition: LT_PMBus.cpp:2238
void marginHigh(uint8_t address)
Margin rail high.
Definition: LT_PMBus.cpp:3041
static uint8_t address
Definition: DC2091A.ino:83
void setVoutUvFaultLimit(uint8_t address, float voltage)
Set the under voltage fault limit.
Definition: LT_PMBus.cpp:874
union LT_union_int32_4bytes data
Definition: DC2094A.ino:138
uint8_t waitForNotBusy(uint8_t address)
Read MFR_COMMON until not Busy.
Definition: LT_PMBus.cpp:3254
void setVoutUvWarnLimit(uint8_t address, float voltage)
Set the under voltage supervisor warning limit.
Definition: LT_PMBus.cpp:814
void setOtFaultLimitWithPage(uint8_t address, float temperature, uint8_t page)
Set the over temperature fault limit.
Definition: LT_PMBus.cpp:1181
void setUtWarnLimitWithPage(uint8_t address, float temperature, uint8_t page)
Set the under temperature warning limit.
Definition: LT_PMBus.cpp:1332
uint8_t getMfrStatusMask(uint8_t address)
Get the MFR status mask.
Definition: LT_PMBus.cpp:2298
uint8_t readStatusByteWithPagePlus(uint8_t address, uint8_t page)
Get the status byte.
Definition: LT_PMBus.cpp:2451
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
void setVoutMarginLowWithPage(uint8_t address, float voltage, uint8_t page)
Set the margin low.
Definition: LT_PMBus.cpp:775
void enableWriteProtect(uint8_t address)
Enable the write protect.
Definition: LT_PMBus.cpp:2530
float readVout(uint8_t address, bool polling)
Get the measured output voltage.
Definition: LT_PMBus.cpp:1598
void setVoutOvWarnLimitWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the over voltage supervisor warning limit.
Definition: LT_PMBus.cpp:668
void setVinUvWarnLimit(uint8_t address, float voltage)
Set the input under voltage warning limit.
Definition: LT_PMBus.cpp:1105
void setToffMaxWarnLimit(uint8_t address, float max)
Set the maximum time allow to turn off.
Definition: LT_PMBus.cpp:555
float getVoutOvWithPage(uint8_t address, uint8_t page)
Get the output over voltage limit.
Definition: LT_PMBus.cpp:1556
uint8_t readMfrStatusByte(uint8_t address)
Get the MFR status byte.
Definition: LT_PMBus.cpp:2350
float getVoutOv(uint8_t address, bool polling)
Get the output over voltage limit.
Definition: LT_PMBus.cpp:1512
uint8_t readTemperatureStatusByte(uint8_t address)
Get the temperature status byte.
Definition: LT_PMBus.cpp:2334
void setVoutStatusMask(uint8_t address, uint8_t mask)
Get the output voltage status mask.
Definition: LT_PMBus.cpp:2190
void immediateOffGlobal(void)
Turn off all rails immediately.
Definition: LT_PMBus.cpp:2886
uint8_t readInputStatusByte(uint8_t address)
Get the input status byte.
Definition: LT_PMBus.cpp:2326
float readOtempWithPage(uint8_t address, uint8_t page)
Get the external measured temperature.
Definition: LT_PMBus.cpp:2150
float readPoutWithPage(uint8_t address, uint8_t page)
Get the measured output power.
Definition: LT_PMBus.cpp:1988
uint16_t getUserData04(uint8_t address)
Get user data 4.
Definition: LT_PMBus.cpp:3109
void resetGlobal(void)
Issue reset to all devices.
Definition: LT_PMBus.cpp:2906
float getIoutOcWithPage(uint8_t address, uint8_t page)
Get the over current limit.
Definition: LT_PMBus.cpp:1860
void setVoutMinWithPage(uint8_t address, float voltage, uint8_t page)
Set the minimum output voltage.
void setVoutMaxWithPage(uint8_t address, float voltage, uint8_t page)
Set the maximum output voltage.
Definition: LT_PMBus.cpp:420
void setVoutMaxWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the maximum output voltage.
Definition: LT_PMBus.cpp:433
bool unlockNVM(uint8_t address)
Unlock NVM.
Definition: LT_PMBus.cpp:2705
void setOtFaultLimit(uint8_t address, float temperature)
Set the over temperature fault limit.
Definition: LT_PMBus.cpp:1143
uint8_t readVoutStatusByte(uint8_t address)
Get the output voltage status byte.
Definition: LT_PMBus.cpp:2310
void setVoutMarginLowWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the margin low.
Definition: LT_PMBus.cpp:788
PsmDeviceType
Definition: LT_PMBus.h:345
void setIoutOcFaultLimit(uint8_t address, float current)
Set the over current fault limit.
Definition: LT_PMBus.cpp:934
bool isLtc297x(uint8_t address)
Determine if the device is from the LTC297X family, by using the product id in MFR_SPECIAL_ID.
Definition: LT_PMBus.cpp:146
void setVoutUvWarnLimitWithPage(uint8_t address, float voltage, uint8_t page)
Set the under voltage supervisor warning limit.
Definition: LT_PMBus.cpp:835
void setPage(uint8_t address, uint8_t page)
Set the page.
Definition: LT_PMBus.cpp:3156
bool lockNVM(uint8_t address)
Lock NVM.
Definition: LT_PMBus.cpp:2729
float getIoutOc(uint8_t address, bool polling)
Get the over current limit.
Definition: LT_PMBus.cpp:1834
void marginLowGlobal(void)
Margin all rails low.
Definition: LT_PMBus.cpp:3078
float readExternalTemperature(uint8_t address, bool polling)
Get the measured external temperature.
Definition: LT_PMBus.cpp:2052
void setInputStatusMask(uint8_t address, uint8_t mask)
Get the input status mask.
Definition: LT_PMBus.cpp:2206
uint8_t readStatusCml(uint8_t address)
Get the status CML byte.
Definition: LT_PMBus.cpp:2517
void setIoutOcFaultLimitWithPagePlus(uint8_t address, float current, uint8_t page)
Set the over current fault limit.
Definition: LT_PMBus.cpp:967
void restoreFromNvmAll(uint8_t *addresses, uint8_t no_addresses)
Restore list of devices from NVM.
Definition: LT_PMBus.cpp:2673
LT_SMBus * smbus()
Definition: LT_PMBus.h:401
void setUserData03(uint8_t address, uint16_t data)
Set user data 3.
Definition: LT_PMBus.cpp:3094
void setVoutMin(uint8_t address, float voltage)
Set the minimum output voltage.
void page(uint8_t *addresses, uint8_t no_addresses)
Set the page.
Definition: LT_PMBus.cpp:2768
void sequenceOnGlobal(void)
Sequence on all rails.
Definition: LT_PMBus.cpp:2896
void marginLowAll(uint8_t *addresses, uint8_t *pages, uint8_t no_addresses)
Margin a list of rails low.
Definition: LT_PMBus.cpp:2965
void clearAllFaults(uint8_t address)
Clear all the faults for all pages.
Definition: LT_PMBus.cpp:2576
void setVinOvFaultLimit(uint8_t address, float voltage)
Set the input over voltage fault limit.
Definition: LT_PMBus.cpp:1048
LT_PMBus(LT_SMBus *smbus)
Construct a LT_PMBus.
Definition: LT_PMBus.cpp:86
void setVoutOvFaultLimit(uint8_t address, float voltage)
Set the over voltage supervisor fault limit.
Definition: LT_PMBus.cpp:574
uint8_t readStatusByteWithPage(uint8_t address, uint8_t page)
Get the status byte.
Definition: LT_PMBus.cpp:2438
uint16_t getSpareData0(uint8_t address)
Get spare data 0.
Definition: LT_PMBus.cpp:3120
uint8_t getIoutStatusMask(uint8_t address)
Get the output current status mask.
Definition: LT_PMBus.cpp:2250
void marginLow(uint8_t address)
Margin rails low.
Definition: LT_PMBus.cpp:3050
void setToffFall(uint8_t address, float fall)
Set the turn off fall time.
Definition: LT_PMBus.cpp:536
void setVoutMarginHighWithPage(uint8_t address, float voltage, uint8_t page)
Set the margin high.
Definition: LT_PMBus.cpp:715
uint8_t readMfrFaultLogStatusByte(uint8_t address)
Get the fault log status byte.
Definition: LT_PMBus.cpp:2358
float getVoutUv(uint8_t address, bool polling)
Get the under voltage limit.
Definition: LT_PMBus.cpp:1719
float getIoutOcWithPagePlus(uint8_t address, uint8_t page)
Get the over current limit.
Definition: LT_PMBus.cpp:1874
float readInternalTemperature(uint8_t address, bool polling)
Get the measured internal temperature.
Definition: LT_PMBus.cpp:2077
void setVoutOvFaultLimitWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the over voltage supervisor fault limit.
Definition: LT_PMBus.cpp:608
float readIin(uint8_t address, bool polling)
Get the input current.
Definition: LT_PMBus.cpp:1805
void setUserData04(uint8_t address, uint16_t data)
Set user data 4.
Definition: LT_PMBus.cpp:3104
virtual LT_I2CBus * i2cbus(void)=0
void setVoutWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set output voltage.
Definition: LT_PMBus.cpp:273
void setIoutOcWarnLimitWithPagePlus(uint8_t address, float current, uint8_t page)
Set the over current warning limit.
Definition: LT_PMBus.cpp:1024
float getTemp1Offset(uint8_t address)
Get the temperature 1 offset.
Definition: LT_PMBus.cpp:1413
void setTemp1Offset(uint8_t address, float offset)
Set the temperature 1 offset.
Definition: LT_PMBus.cpp:1394
void setIinOcWarnLimit(uint8_t address, float current)
Set the input over current warning limit.
Definition: LT_PMBus.cpp:1124
void setVinOvWarningLimit(uint8_t address, float voltage)
Set the input over voltage warning limit.
Definition: LT_PMBus.cpp:1067
uint8_t readCmlStatusByte(uint8_t address)
Get the CML status byte.
Definition: LT_PMBus.cpp:2342
bool isLtc2978(uint8_t address)
Determine if the device is a LTC2978/A by looking at bit 2 (RESERVED2) in the MFR_COMMON.
Definition: LT_PMBus.cpp:164
void sequenceOffGlobal(void)
Sequence off all rails.
Definition: LT_PMBus.cpp:2876
void setOtWarnLimitWithPagePlus(uint8_t address, float temperature, uint8_t page)
Set the over temperature warning limit.
Definition: LT_PMBus.cpp:1251
void setUtWarnLimit(uint8_t address, float temperature)
Set the under temperature warning limit.
Definition: LT_PMBus.cpp:1276
float readVin(uint8_t address, bool polling)
Get the input voltage.
Definition: LT_PMBus.cpp:1487
void setRailAddress(uint8_t address, uint8_t rail_address)
Set rail address of a Controller.
Definition: LT_PMBus.cpp:3126
uint32_t getSpeed()
Get the speed of the bus.
Definition: LT_I2CBus.cpp:78
void setToffDelay(uint8_t address, float delay)
Set the delay before the rail turns off.
Definition: LT_PMBus.cpp:517
void clearFaultsGlobal(void)
Clear all the faults for all pages of all devices.
Definition: LT_PMBus.cpp:2606
void setTemperatureStatusMask(uint8_t address, uint8_t mask)
Get the temperature status mask.
Definition: LT_PMBus.cpp:2214
void setVout(uint8_t address, float voltage)
Set output voltage.
Definition: LT_PMBus.cpp:239
void executeGroupProtocol(void)
ends group protocol
Definition: LT_PMBus.cpp:3356
void setOtFaultLimitWithPagePlus(uint8_t address, float temperature, uint8_t page)
Set the over temperature fault limit.
Definition: LT_PMBus.cpp:1193
void setMfrWatchdog(uint8_t address, float delay)
Set watchdog timer.
Definition: LT_PMBus.cpp:2645
void smbus(LT_SMBus *smbus)
Definition: LT_PMBus.h:406
void restoreFromNvm(uint8_t address)
Restore device from NVM.
Definition: LT_PMBus.cpp:2663
void setTonRise(uint8_t address, float rise)
Set the turn on rise time.
Definition: LT_PMBus.cpp:479
void setVoutMarginLow(uint8_t address, float voltage)
Set the margin low.
Definition: LT_PMBus.cpp:754
float readPoutWithPagePlus(uint8_t address, uint8_t page)
Get the measured output power.
Definition: LT_PMBus.cpp:2001
uint16_t readMfrSpecialId(uint8_t address)
Get speical ID.
Definition: LT_PMBus.cpp:3361
void setVoutMinWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the minimum output voltage.
uint8_t getCmlStatusMask(uint8_t address)
Get the CML status mask.
Definition: LT_PMBus.cpp:2286
void immediateOff(uint8_t *addresses, uint8_t no_addresses)
Turn off all devices immediately.
Definition: LT_PMBus.cpp:2822
void setUtFaultLimitWithPage(uint8_t address, float temperature, uint8_t page)
Set the under temperature fault limit.
Definition: LT_PMBus.cpp:1295
PsmDeviceType deviceType(uint8_t address)
Get the type of PSM device.
Definition: LT_PMBus.cpp:96
static float voltage
Definition: DC2289AA.ino:71
uint16_t readStatusWordWithPage(uint8_t address, uint8_t page)
Get the status word.
Definition: LT_PMBus.cpp:2485
float getVout(uint8_t address, bool polling)
Get the set output voltage.
Definition: LT_PMBus.cpp:1634
void restoreFromNvmGlobal(void)
Restore all devices from NVM.
Definition: LT_PMBus.cpp:2683
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
void setTonMaxFaultLimit(uint8_t address, float max)
Set the maximum time allow for turn on.
Definition: LT_PMBus.cpp:498
void marginHighAll(uint8_t *addresses, uint8_t *pages, uint8_t no_addresses)
Margin a list of rails high.
Definition: LT_PMBus.cpp:2923
float readVoutWithPage(uint8_t address, uint8_t page)
Get the measured output voltage.
Definition: LT_PMBus.cpp:1678
LTC PMBus Support: Math conversion routines.
void readRevision(uint8_t address, uint8_t *revision)
Get the slave revision.
Definition: LT_PMBus.cpp:2393
void eraseNVM(uint8_t address)
Definition: LT_PMBus.cpp:2743
uint16_t getUserData03(uint8_t address)
Get user data 3.
Definition: LT_PMBus.cpp:3099
void setVoutUvFaultLimitWithPage(uint8_t address, float voltage, uint8_t page)
Set the under voltage fault limit.
Definition: LT_PMBus.cpp:895
bool isLtc2977(uint8_t address)
Determine if the device is from the LTC2977 family, by using the product id in MFR_SPECIAL_ID.
Definition: LT_PMBus.cpp:152
void setIoutOcWarnLimitWithPage(uint8_t address, float current, uint8_t page)
Set the over current warning limit.
Definition: LT_PMBus.cpp:1011
void setTemp1Gain(uint8_t address, uint16_t gain)
Set the temperature 1 gain.
Definition: LT_PMBus.cpp:1369
uint16_t readStatusWordWithPagePlus(uint8_t address, uint8_t page)
Get the status word.
Definition: LT_PMBus.cpp:2498
float readIoutWithPage(uint8_t address, uint8_t page)
Get the measured output current.
Definition: LT_PMBus.cpp:1924
uint8_t getRailAddress(uint8_t address)
Get the rail address of a Controller.
Definition: LT_PMBus.cpp:3131
void setSpareData0(uint8_t address, uint16_t data)
Set spare data 0.
Definition: LT_PMBus.cpp:3114
float readDutyCycle(uint8_t address, bool polling)
Get the duty cycle.
Definition: LT_PMBus.cpp:2102
void enableWriteProtectGlobal(void)
Enable the write protect.
Definition: LT_PMBus.cpp:2538
uint16_t readMfrPads(uint8_t address)
Get the state of the pads.
Definition: LT_PMBus.cpp:2366
void setVinOvWarnLimit(uint8_t address, float voltage)
Set the input over voltage warnign limit.
void setUtFaultLimitWithPagePlus(uint8_t address, float temperature, uint8_t page)
Set the under temperature fault limit.
Definition: LT_PMBus.cpp:1307
PMBus communication.
Definition: LT_PMBus.h:370