| 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
345 enum PsmDeviceType
346 {
347 LTC3880,
348 LTC3882,
349 LTC3882_1,
350 LTC3883,
351 LTC3884,
352 LTC3886,
353 LTC3887,
354 LTM4675,
355 LTM4676,
356 LTM4676A,
357 LTM4677,
358 LTC2974,
359 LTC2975,
360 LTC2977,
361 LTC2978,
362 LTC2980,
363 LTM2987,
364 LTCUnknown
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
401 LT_SMBus *smbus()
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
LT_PMBus::storeToNvmAll
void storeToNvmAll(uint8_t *addresses, uint8_t no_addresses)
Store RAM to NVM for list of devices.
Definition: LT_PMBus.cpp:2693
LT_PMBus::setCmlStatusMask
void setCmlStatusMask(uint8_t address, uint8_t mask)
Get the CML status mask.
Definition: LT_PMBus.cpp:2222
LT_PMBus::waitForNvmDone
uint8_t waitForNvmDone(uint8_t address)
Read MFR_EEPROM_STATUS until done (LTC388X only)
Definition: LT_PMBus.cpp:3278
LT_PMBus::readIoutWithPagePlus
float readIoutWithPagePlus(uint8_t address, uint8_t page)
Get the measured output current.
Definition: LT_PMBus.cpp:1938
LT_PMBus::sequenceOff
void sequenceOff(uint8_t *addresses, uint8_t no_addresses)
Sequence off a list of addresses.
Definition: LT_PMBus.cpp:2850
LT_PMBus::setMfrStatusMask
void setMfrStatusMask(uint8_t address, uint8_t mask)
Get the MFR status mask.
Definition: LT_PMBus.cpp:2230
LT_PMBus::sequenceOn
void sequenceOn(uint8_t *addresses, uint8_t no_addresses)
Sequence on a list of devices.
Definition: LT_PMBus.cpp:2794
LT_PMBus::setPageWithPolling
void setPageWithPolling(uint8_t address, uint8_t page)
Set the page and poll the busy bit.
Definition: LT_PMBus.cpp:3144
LT_PMBus::getOtWarnLimitWithPagePlus
float getOtWarnLimitWithPagePlus(uint8_t address, uint8_t page)
Get the over temperature warning limit.
Definition: LT_PMBus.cpp:1463
LT_PMBus::getOtWarnLimitWithPage
float getOtWarnLimitWithPage(uint8_t address, uint8_t page)
Get the over temperature warning limit.
Definition: LT_PMBus.cpp:1451
LT_PMBus::readPout
float readPout(uint8_t address, bool polling)
Get the measured output power.
Definition: LT_PMBus.cpp:1963
LT_PMBus::getPage
uint8_t getPage(uint8_t address)
Get the page.
Definition: LT_PMBus.cpp:3167
LT_PMBus::getInputStatusMask
uint8_t getInputStatusMask(uint8_t address)
Get the input status mask.
Definition: LT_PMBus.cpp:2262
LT_PMBus::readIoutStatusByte
uint8_t readIoutStatusByte(uint8_t address)
Get the output current status byte.
Definition: LT_PMBus.cpp:2318
LT_SMBus.h
LTC SMBus Support: API for a shared SMBus layer.
LT_PMBus::compareRamWithNvm
bool compareRamWithNvm(uint8_t address)
Compare RAM to NVM for device.
Definition: LT_PMBus.cpp:2750
LT_PMBus::getOtWarnLimit
float getOtWarnLimit(uint8_t address)
Get the over temperature warning limit.
Definition: LT_PMBus.cpp:1432
LT_PMBus::readOtemp
float readOtemp(uint8_t address)
Get the external measured temperature.
Definition: LT_PMBus.cpp:2175
LT_PMBus::isLtc2974
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
LT_PMBus::marginOff
void marginOff(uint8_t address)
Margin rails off.
Definition: LT_PMBus.cpp:3059
LT_PMBus::readVoutWithPagePlus
float readVoutWithPagePlus(uint8_t address, uint8_t page)
Get the measured output voltage.
Definition: LT_PMBus.cpp:1692
LT_PMBus::marginOffAll
void marginOffAll(uint8_t *addresses, uint8_t *pages, uint8_t no_addresses)
Margin off a list of rails low.
Definition: LT_PMBus.cpp:3001
LT_PMBus::setIoutOcWarnLimit
void setIoutOcWarnLimit(uint8_t address, float current)
Set the over current warning limit.
Definition: LT_PMBus.cpp:991
LT_SMBusGroup.h
LTC SMBus Support: Implementation for a shared SMBus layer.
LT_PMBus::setOtWarnLimit
void setOtWarnLimit(uint8_t address, float temperature)
Set the over temperature warning limit.
Definition: LT_PMBus.cpp:1163
LT_PMBus::setVoutMarginHigh
void setVoutMarginHigh(uint8_t address, float voltage)
Set the margin high.
Definition: LT_PMBus.cpp:694
LT_PMBus::reset
void reset(uint8_t address)
Issue reset to one device.
Definition: LT_PMBus.cpp:2912
LT_PMBus::setVinUvFaultLimit
void setVinUvFaultLimit(uint8_t address, float voltage)
Set the input under voltage fault limit.
Definition: LT_PMBus.cpp:1086
LT_PMBus::readStatusByte
uint8_t readStatusByte(uint8_t address)
Get the status byte.
Definition: LT_PMBus.cpp:2423
LT_PMBus::setVoutOvWarnLimit
void setVoutOvWarnLimit(uint8_t address, float voltage)
Set the over voltage supervisor warning limit.
Definition: LT_PMBus.cpp:634
LT_PMBus::bricks
uint8_t * bricks(uint8_t *addresses, uint8_t no_addresses)
Find bricked devices.
Definition: LT_PMBus.cpp:3295
LT_PMBus::disableWriteProtectGlobal
void disableWriteProtectGlobal(void)
Disable the write protect.
Definition: LT_PMBus.cpp:2556
LT_PMBus::getVoutUvWithPagePlus
float getVoutUvWithPagePlus(uint8_t address, uint8_t page)
Get the under voltage limit.
Definition: LT_PMBus.cpp:1777
LTC3887
Definition: LT_PMBus.h:353
LT_PMBus::setVoutUvFaultLimitWithPagePlus
void setVoutUvFaultLimitWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the under voltage fault limit.
Definition: LT_PMBus.cpp:908
LT_PMBus::setVoutUvWarnLimitWithPagePlus
void setVoutUvWarnLimitWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the under voltage supervisor warning limit.
Definition: LT_PMBus.cpp:848
LT_PMBus::setVoutMax
void setVoutMax(uint8_t address, float voltage)
Set the maximum output voltage.
Definition: LT_PMBus.cpp:398
LT_PMBus::~LT_PMBus
~LT_PMBus()
Definition: LT_PMBus.cpp:91
LT_PMBus::storeToNvmGlobal
void storeToNvmGlobal(void)
Store RAM to NVM for all devices.
Definition: LT_PMBus.cpp:2700
LT_PMBus::storeToNvm
void storeToNvm(uint8_t address)
Store RAM to NVM.
Definition: LT_PMBus.cpp:2688
LT_PMBus::setVoutWithPage
void setVoutWithPage(uint8_t address, float voltage, uint8_t page)
Set output voltage.
Definition: LT_PMBus.cpp:260
LT_PMBus::setIoutStatusMask
void setIoutStatusMask(uint8_t address, uint8_t mask)
Get the output current status mask.
Definition: LT_PMBus.cpp:2198
LT_PMBus::enablePec
void enablePec(uint8_t address)
Enable pec for all transactions.
Definition: LT_PMBus.cpp:3173
LT_PMBus::setOtWarnLimitWithPage
void setOtWarnLimitWithPage(uint8_t address, float temperature, uint8_t page)
Set the over temperature warning limit.
Definition: LT_PMBus.cpp:1239
LT_PMBus::readItemp
float readItemp(uint8_t address)
Get the internal measured temperature.
Definition: LT_PMBus.cpp:2127
LT_PMBus::setVoutWithSupervisionWithPagePlus
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
LT_PMBus::getTemperatureStatusMask
uint8_t getTemperatureStatusMask(uint8_t address)
Get the temperature status mask.
Definition: LT_PMBus.cpp:2274
LT_PMBus::setMfrWatchdogFirst
void setMfrWatchdogFirst(uint8_t address, float delay)
Set the first watchdog timer.
Definition: LT_PMBus.cpp:2626
LT_PMBus::disableWriteProtect
void disableWriteProtect(uint8_t address)
Disable the write protect.
Definition: LT_PMBus.cpp:2548
LT_PMBus::setUtFaultLimit
void setUtFaultLimit(uint8_t address, float temperature)
Set the under temperature fault limit.
Definition: LT_PMBus.cpp:1220
LT_PMBus::setTonDelay
void setTonDelay(uint8_t address, float delay)
Set delay before rail turns on.
Definition: LT_PMBus.cpp:460
LTM4676A
Definition: LT_PMBus.h:356
LT_PMBus::setUtWarnLimitWithPagePlus
void setUtWarnLimitWithPagePlus(uint8_t address, float temperature, uint8_t page)
Set the under temperature warning limit.
Definition: LT_PMBus.cpp:1344
LTM4675
Definition: LT_PMBus.h:354
LT_PMBus::readStatusWord
uint16_t readStatusWord(uint8_t address)
Get the status word.
Definition: LT_PMBus.cpp:2470
LTC2977
Definition: LT_PMBus.h:360
LT_PMBus::readIout
float readIout(uint8_t address, bool polling)
Get the measured output current.
Definition: LT_PMBus.cpp:1898
LT_PMBus::readModel
void readModel(uint8_t address, uint8_t *model)
Get the model.
Definition: LT_PMBus.cpp:2409
LTC3886
Definition: LT_PMBus.h:352
LT_PMBus::setVoutWithSupervisionWithPage
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
LT_PMBus::clearFaults
void clearFaults(uint8_t address)
Clear the faults of the existing page.
Definition: LT_PMBus.cpp:2566
LT_PMBus::setVoutWithSupervision
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
LT_PMBus::readOtempWithPagePlus
float readOtempWithPagePlus(uint8_t address, uint8_t page)
Get the external measured temperature.
LT_PMBus::setVoutOvFaultLimitWithPage
void setVoutOvFaultLimitWithPage(uint8_t address, float voltage, uint8_t page)
Set the over voltage supervisor fault limit.
Definition: LT_PMBus.cpp:595
LT_PMBus::disablePec
void disablePec(uint8_t address)
Disable pec for all transactions.
Definition: LT_PMBus.cpp:3210
LT_PMBus::setVoutOvWarnLimitWithPage
void setVoutOvWarnLimitWithPage(uint8_t address, float voltage, uint8_t page)
Set the over voltage supervisor warning limit.
Definition: LT_PMBus.cpp:655
LTC2980
Definition: LT_PMBus.h:362
LTC2978
Definition: LT_PMBus.h:361
LT_PMBus::getVoutOvWithPagePlus
float getVoutOvWithPagePlus(uint8_t address, uint8_t page)
Get the output over voltage limit.
Definition: LT_PMBus.cpp:1570
LT_PMBus::setVoutMarginHighWithPagePlus
void setVoutMarginHighWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the margin high.
Definition: LT_PMBus.cpp:728
LT_PMBus::getVoutUvWithPage
float getVoutUvWithPage(uint8_t address, uint8_t page)
Get the under voltage limit.
Definition: LT_PMBus.cpp:1763
LT_PMBus::setIoutOcFaultLimitWithPage
void setIoutOcFaultLimitWithPage(uint8_t address, float current, uint8_t page)
Set the over current fault limit.
Definition: LT_PMBus.cpp:954
LT_PMBus::getTemp1Gain
uint16_t getTemp1Gain(uint8_t address)
Get the temperature 1 gain.
Definition: LT_PMBus.cpp:1380
pages
static uint8_t pages[2]
Definition: DC1989A.ino:87
LT_PMBus::readPmbusRevision
uint8_t readPmbusRevision(uint8_t address)
Get the pmbus revision.
Definition: LT_PMBus.cpp:2380
LT_PMBus::marginOffGlobal
void marginOffGlobal(void)
Margin all rails off.
Definition: LT_PMBus.cpp:3088
LT_PMBus::getVoutStatusMask
uint8_t getVoutStatusMask(uint8_t address)
Get the output voltage status mask.
Definition: LT_PMBus.cpp:2238
LT_PMBus::marginHigh
void marginHigh(uint8_t address)
Margin rail high.
Definition: LT_PMBus.cpp:3041
address
static uint8_t address
Definition: DC2091A.ino:83
LT_PMBus::setVoutUvFaultLimit
void setVoutUvFaultLimit(uint8_t address, float voltage)
Set the under voltage fault limit.
Definition: LT_PMBus.cpp:874
data
union LT_union_int32_4bytes data
Definition: DC2094A.ino:138
LT_PMBus::waitForNotBusy
uint8_t waitForNotBusy(uint8_t address)
Read MFR_COMMON until not Busy.
Definition: LT_PMBus.cpp:3254
LT_PMBus::setVoutUvWarnLimit
void setVoutUvWarnLimit(uint8_t address, float voltage)
Set the under voltage supervisor warning limit.
Definition: LT_PMBus.cpp:814
LT_SMBus
Definition: LT_SMBus.h:61
LT_PMBus::setOtFaultLimitWithPage
void setOtFaultLimitWithPage(uint8_t address, float temperature, uint8_t page)
Set the over temperature fault limit.
Definition: LT_PMBus.cpp:1181
LTC3882_1
Definition: LT_PMBus.h:349
LT_PMBus::setUtWarnLimitWithPage
void setUtWarnLimitWithPage(uint8_t address, float temperature, uint8_t page)
Set the under temperature warning limit.
Definition: LT_PMBus.cpp:1332
LT_PMBus::getMfrStatusMask
uint8_t getMfrStatusMask(uint8_t address)
Get the MFR status mask.
Definition: LT_PMBus.cpp:2298
LT_PMBus::readStatusByteWithPagePlus
uint8_t readStatusByteWithPagePlus(uint8_t address, uint8_t page)
Get the status byte.
Definition: LT_PMBus.cpp:2451
LT_PMBus::readPin
float readPin(uint8_t address, bool polling)
Get the measured input power.
Definition: LT_PMBus.cpp:2027
LT_PMBus::startGroupProtocol
void startGroupProtocol(void)
starts group protocol
Definition: LT_PMBus.cpp:3350
LT_PMBus::setVoutMarginLowWithPage
void setVoutMarginLowWithPage(uint8_t address, float voltage, uint8_t page)
Set the margin low.
Definition: LT_PMBus.cpp:775
LT_PMBus::enableWriteProtect
void enableWriteProtect(uint8_t address)
Enable the write protect.
Definition: LT_PMBus.cpp:2530
LT_PMBus::readVout
float readVout(uint8_t address, bool polling)
Get the measured output voltage.
Definition: LT_PMBus.cpp:1598
LT_PMBus::setVoutOvWarnLimitWithPagePlus
void setVoutOvWarnLimitWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the over voltage supervisor warning limit.
Definition: LT_PMBus.cpp:668
LT_PMBus::setVinUvWarnLimit
void setVinUvWarnLimit(uint8_t address, float voltage)
Set the input under voltage warning limit.
Definition: LT_PMBus.cpp:1105
LT_PMBus::setToffMaxWarnLimit
void setToffMaxWarnLimit(uint8_t address, float max)
Set the maximum time allow to turn off.
Definition: LT_PMBus.cpp:555
LT_PMBus::getVoutOvWithPage
float getVoutOvWithPage(uint8_t address, uint8_t page)
Get the output over voltage limit.
Definition: LT_PMBus.cpp:1556
LT_PMBus::readMfrStatusByte
uint8_t readMfrStatusByte(uint8_t address)
Get the MFR status byte.
Definition: LT_PMBus.cpp:2350
LT_PMBus::getVoutOv
float getVoutOv(uint8_t address, bool polling)
Get the output over voltage limit.
Definition: LT_PMBus.cpp:1512
LT_PMBus::readTemperatureStatusByte
uint8_t readTemperatureStatusByte(uint8_t address)
Get the temperature status byte.
Definition: LT_PMBus.cpp:2334
LT_PMBus::setVoutStatusMask
void setVoutStatusMask(uint8_t address, uint8_t mask)
Get the output voltage status mask.
Definition: LT_PMBus.cpp:2190
LT_PMBus::immediateOffGlobal
void immediateOffGlobal(void)
Turn off all rails immediately.
Definition: LT_PMBus.cpp:2886
LT_PMBus::readInputStatusByte
uint8_t readInputStatusByte(uint8_t address)
Get the input status byte.
Definition: LT_PMBus.cpp:2326
LT_PMBus::readOtempWithPage
float readOtempWithPage(uint8_t address, uint8_t page)
Get the external measured temperature.
Definition: LT_PMBus.cpp:2150
LT_SMBusGroup
Definition: LT_SMBusGroup.h:60
LTC2975
Definition: LT_PMBus.h:359
LT_PMBus::readPoutWithPage
float readPoutWithPage(uint8_t address, uint8_t page)
Get the measured output power.
Definition: LT_PMBus.cpp:1988
LT_PMBus::getUserData04
uint16_t getUserData04(uint8_t address)
Get user data 4.
Definition: LT_PMBus.cpp:3109
LT_PMBus::resetGlobal
void resetGlobal(void)
Issue reset to all devices.
Definition: LT_PMBus.cpp:2906
LT_PMBus::getIoutOcWithPage
float getIoutOcWithPage(uint8_t address, uint8_t page)
Get the over current limit.
Definition: LT_PMBus.cpp:1860
LT_PMBus::setVoutMinWithPage
void setVoutMinWithPage(uint8_t address, float voltage, uint8_t page)
Set the minimum output voltage.
LT_PMBus::setVoutMaxWithPage
void setVoutMaxWithPage(uint8_t address, float voltage, uint8_t page)
Set the maximum output voltage.
Definition: LT_PMBus.cpp:420
LT_PMBus::setVoutMaxWithPagePlus
void setVoutMaxWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the maximum output voltage.
Definition: LT_PMBus.cpp:433
LTCUnknown
Definition: LT_PMBus.h:364
LT_PMBus::unlockNVM
bool unlockNVM(uint8_t address)
Unlock NVM.
Definition: LT_PMBus.cpp:2705
LT_PMBus::setOtFaultLimit
void setOtFaultLimit(uint8_t address, float temperature)
Set the over temperature fault limit.
Definition: LT_PMBus.cpp:1143
LT_PMBus::readVoutStatusByte
uint8_t readVoutStatusByte(uint8_t address)
Get the output voltage status byte.
Definition: LT_PMBus.cpp:2310
LT_PMBus::setVoutMarginLowWithPagePlus
void setVoutMarginLowWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the margin low.
Definition: LT_PMBus.cpp:788
PsmDeviceType
PsmDeviceType
Definition: LT_PMBus.h:345
LT_PMBus::setIoutOcFaultLimit
void setIoutOcFaultLimit(uint8_t address, float current)
Set the over current fault limit.
Definition: LT_PMBus.cpp:934
LT_PMBus::isLtc297x
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
LT_PMBus::setVoutUvWarnLimitWithPage
void setVoutUvWarnLimitWithPage(uint8_t address, float voltage, uint8_t page)
Set the under voltage supervisor warning limit.
Definition: LT_PMBus.cpp:835
LT_PMBus::setPage
void setPage(uint8_t address, uint8_t page)
Set the page.
Definition: LT_PMBus.cpp:3156
LT_PMBus::lockNVM
bool lockNVM(uint8_t address)
Lock NVM.
Definition: LT_PMBus.cpp:2729
LT_PMBus::getIoutOc
float getIoutOc(uint8_t address, bool polling)
Get the over current limit.
Definition: LT_PMBus.cpp:1834
LT_PMBus::marginLowGlobal
void marginLowGlobal(void)
Margin all rails low.
Definition: LT_PMBus.cpp:3078
LT_PMBus::readExternalTemperature
float readExternalTemperature(uint8_t address, bool polling)
Get the measured external temperature.
Definition: LT_PMBus.cpp:2052
LT_PMBus::setInputStatusMask
void setInputStatusMask(uint8_t address, uint8_t mask)
Get the input status mask.
Definition: LT_PMBus.cpp:2206
LT_PMBus::readStatusCml
uint8_t readStatusCml(uint8_t address)
Get the status CML byte.
Definition: LT_PMBus.cpp:2517
LT_PMBus::setIoutOcFaultLimitWithPagePlus
void setIoutOcFaultLimitWithPagePlus(uint8_t address, float current, uint8_t page)
Set the over current fault limit.
Definition: LT_PMBus.cpp:967
LT_PMBus::restoreFromNvmAll
void restoreFromNvmAll(uint8_t *addresses, uint8_t no_addresses)
Restore list of devices from NVM.
Definition: LT_PMBus.cpp:2673
LT_PMBus::smbus
LT_SMBus * smbus()
Definition: LT_PMBus.h:401
LT_PMBus::setUserData03
void setUserData03(uint8_t address, uint16_t data)
Set user data 3.
Definition: LT_PMBus.cpp:3094
LT_PMBus::setVoutMin
void setVoutMin(uint8_t address, float voltage)
Set the minimum output voltage.
LT_PMBus::page
void page(uint8_t *addresses, uint8_t no_addresses)
Set the page.
Definition: LT_PMBus.cpp:2768
LT_PMBus::sequenceOnGlobal
void sequenceOnGlobal(void)
Sequence on all rails.
Definition: LT_PMBus.cpp:2896
LT_PMBus::marginLowAll
void marginLowAll(uint8_t *addresses, uint8_t *pages, uint8_t no_addresses)
Margin a list of rails low.
Definition: LT_PMBus.cpp:2965
LT_PMBus::clearAllFaults
void clearAllFaults(uint8_t address)
Clear all the faults for all pages.
Definition: LT_PMBus.cpp:2576
LT_PMBus::setVinOvFaultLimit
void setVinOvFaultLimit(uint8_t address, float voltage)
Set the input over voltage fault limit.
Definition: LT_PMBus.cpp:1048
LT_PMBus::LT_PMBus
LT_PMBus(LT_SMBus *smbus)
Construct a LT_PMBus.
Definition: LT_PMBus.cpp:86
LT_PMBus::setVoutOvFaultLimit
void setVoutOvFaultLimit(uint8_t address, float voltage)
Set the over voltage supervisor fault limit.
Definition: LT_PMBus.cpp:574
LT_PMBus::readStatusByteWithPage
uint8_t readStatusByteWithPage(uint8_t address, uint8_t page)
Get the status byte.
Definition: LT_PMBus.cpp:2438
LTM4676
Definition: LT_PMBus.h:355
LT_PMBus::getSpareData0
uint16_t getSpareData0(uint8_t address)
Get spare data 0.
Definition: LT_PMBus.cpp:3120
LT_PMBus::getIoutStatusMask
uint8_t getIoutStatusMask(uint8_t address)
Get the output current status mask.
Definition: LT_PMBus.cpp:2250
LT_PMBus::marginLow
void marginLow(uint8_t address)
Margin rails low.
Definition: LT_PMBus.cpp:3050
LT_PMBus::setToffFall
void setToffFall(uint8_t address, float fall)
Set the turn off fall time.
Definition: LT_PMBus.cpp:536
LT_PMBus::setVoutMarginHighWithPage
void setVoutMarginHighWithPage(uint8_t address, float voltage, uint8_t page)
Set the margin high.
Definition: LT_PMBus.cpp:715
LT_PMBus::readMfrFaultLogStatusByte
uint8_t readMfrFaultLogStatusByte(uint8_t address)
Get the fault log status byte.
Definition: LT_PMBus.cpp:2358
LT_PMBus::getVoutUv
float getVoutUv(uint8_t address, bool polling)
Get the under voltage limit.
Definition: LT_PMBus.cpp:1719
LT_PMBus::getIoutOcWithPagePlus
float getIoutOcWithPagePlus(uint8_t address, uint8_t page)
Get the over current limit.
Definition: LT_PMBus.cpp:1874
LT_PMBus::readInternalTemperature
float readInternalTemperature(uint8_t address, bool polling)
Get the measured internal temperature.
Definition: LT_PMBus.cpp:2077
LT_PMBus::setVoutOvFaultLimitWithPagePlus
void setVoutOvFaultLimitWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the over voltage supervisor fault limit.
Definition: LT_PMBus.cpp:608
LT_PMBus::readIin
float readIin(uint8_t address, bool polling)
Get the input current.
Definition: LT_PMBus.cpp:1805
LTC3884
Definition: LT_PMBus.h:351
LT_PMBus::setUserData04
void setUserData04(uint8_t address, uint16_t data)
Set user data 4.
Definition: LT_PMBus.cpp:3104
LT_SMBus::i2cbus
virtual LT_I2CBus * i2cbus(void)=0
LT_PMBus::setVoutWithPagePlus
void setVoutWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set output voltage.
Definition: LT_PMBus.cpp:273
LT_PMBus::setIoutOcWarnLimitWithPagePlus
void setIoutOcWarnLimitWithPagePlus(uint8_t address, float current, uint8_t page)
Set the over current warning limit.
Definition: LT_PMBus.cpp:1024
LT_PMBus::getTemp1Offset
float getTemp1Offset(uint8_t address)
Get the temperature 1 offset.
Definition: LT_PMBus.cpp:1413
LT_PMBus::setTemp1Offset
void setTemp1Offset(uint8_t address, float offset)
Set the temperature 1 offset.
Definition: LT_PMBus.cpp:1394
LT_PMBus::setIinOcWarnLimit
void setIinOcWarnLimit(uint8_t address, float current)
Set the input over current warning limit.
Definition: LT_PMBus.cpp:1124
LT_PMBus::setVinOvWarningLimit
void setVinOvWarningLimit(uint8_t address, float voltage)
Set the input over voltage warning limit.
Definition: LT_PMBus.cpp:1067
LTM4677
Definition: LT_PMBus.h:357
LTM2987
Definition: LT_PMBus.h:363
LTC3882
Definition: LT_PMBus.h:348
LT_PMBus::readCmlStatusByte
uint8_t readCmlStatusByte(uint8_t address)
Get the CML status byte.
Definition: LT_PMBus.cpp:2342
LTC3883
Definition: LT_PMBus.h:350
LT_PMBus::isLtc2978
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
LT_PMBus::sequenceOffGlobal
void sequenceOffGlobal(void)
Sequence off all rails.
Definition: LT_PMBus.cpp:2876
LT_PMBus::setOtWarnLimitWithPagePlus
void setOtWarnLimitWithPagePlus(uint8_t address, float temperature, uint8_t page)
Set the over temperature warning limit.
Definition: LT_PMBus.cpp:1251
LT_PMBus::setUtWarnLimit
void setUtWarnLimit(uint8_t address, float temperature)
Set the under temperature warning limit.
Definition: LT_PMBus.cpp:1276
LTC2974
Definition: LT_PMBus.h:358
LT_PMBus::readVin
float readVin(uint8_t address, bool polling)
Get the input voltage.
Definition: LT_PMBus.cpp:1487
LT_PMBus::setRailAddress
void setRailAddress(uint8_t address, uint8_t rail_address)
Set rail address of a Controller.
Definition: LT_PMBus.cpp:3126
LT_I2CBus::getSpeed
uint32_t getSpeed()
Get the speed of the bus.
Definition: LT_I2CBus.cpp:78
LT_PMBus::setToffDelay
void setToffDelay(uint8_t address, float delay)
Set the delay before the rail turns off.
Definition: LT_PMBus.cpp:517
LT_PMBus::clearFaultsGlobal
void clearFaultsGlobal(void)
Clear all the faults for all pages of all devices.
Definition: LT_PMBus.cpp:2606
LT_PMBus::setTemperatureStatusMask
void setTemperatureStatusMask(uint8_t address, uint8_t mask)
Get the temperature status mask.
Definition: LT_PMBus.cpp:2214
LT_PMBus::setVout
void setVout(uint8_t address, float voltage)
Set output voltage.
Definition: LT_PMBus.cpp:239
LT_PMBus::executeGroupProtocol
void executeGroupProtocol(void)
ends group protocol
Definition: LT_PMBus.cpp:3356
LT_PMBus::setOtFaultLimitWithPagePlus
void setOtFaultLimitWithPagePlus(uint8_t address, float temperature, uint8_t page)
Set the over temperature fault limit.
Definition: LT_PMBus.cpp:1193
LT_PMBus::setMfrWatchdog
void setMfrWatchdog(uint8_t address, float delay)
Set watchdog timer.
Definition: LT_PMBus.cpp:2645
LT_PMBus::smbus
void smbus(LT_SMBus *smbus)
Definition: LT_PMBus.h:406
LT_PMBus::restoreFromNvm
void restoreFromNvm(uint8_t address)
Restore device from NVM.
Definition: LT_PMBus.cpp:2663
LT_PMBus::setTonRise
void setTonRise(uint8_t address, float rise)
Set the turn on rise time.
Definition: LT_PMBus.cpp:479
LT_PMBus::setVoutMarginLow
void setVoutMarginLow(uint8_t address, float voltage)
Set the margin low.
Definition: LT_PMBus.cpp:754
LT_PMBus::readPoutWithPagePlus
float readPoutWithPagePlus(uint8_t address, uint8_t page)
Get the measured output power.
Definition: LT_PMBus.cpp:2001
LT_PMBus::readMfrSpecialId
uint16_t readMfrSpecialId(uint8_t address)
Get speical ID.
Definition: LT_PMBus.cpp:3361
LT_PMBus::setVoutMinWithPagePlus
void setVoutMinWithPagePlus(uint8_t address, float voltage, uint8_t page)
Set the minimum output voltage.
LT_PMBus::getCmlStatusMask
uint8_t getCmlStatusMask(uint8_t address)
Get the CML status mask.
Definition: LT_PMBus.cpp:2286
LT_PMBus::immediateOff
void immediateOff(uint8_t *addresses, uint8_t no_addresses)
Turn off all devices immediately.
Definition: LT_PMBus.cpp:2822
LT_PMBus::setUtFaultLimitWithPage
void setUtFaultLimitWithPage(uint8_t address, float temperature, uint8_t page)
Set the under temperature fault limit.
Definition: LT_PMBus.cpp:1295
LT_PMBus::deviceType
PsmDeviceType deviceType(uint8_t address)
Get the type of PSM device.
Definition: LT_PMBus.cpp:96
voltage
static float voltage
Definition: DC2289AA.ino:71
LT_PMBus::readStatusWordWithPage
uint16_t readStatusWordWithPage(uint8_t address, uint8_t page)
Get the status word.
Definition: LT_PMBus.cpp:2485
LT_PMBus::getVout
float getVout(uint8_t address, bool polling)
Get the set output voltage.
Definition: LT_PMBus.cpp:1634
LT_PMBus::restoreFromNvmGlobal
void restoreFromNvmGlobal(void)
Restore all devices from NVM.
Definition: LT_PMBus.cpp:2683
current
static uint16_t current
the current measurement from the LTC3335&#39;s counter test mode.
Definition: DC2343A.ino:114
LT_PMBus::marginHighGlobal
void marginHighGlobal(void)
Margin all rails high.
Definition: LT_PMBus.cpp:3068
LT_PMBus::setTonMaxFaultLimit
void setTonMaxFaultLimit(uint8_t address, float max)
Set the maximum time allow for turn on.
Definition: LT_PMBus.cpp:498
LT_PMBus::marginHighAll
void marginHighAll(uint8_t *addresses, uint8_t *pages, uint8_t no_addresses)
Margin a list of rails high.
Definition: LT_PMBus.cpp:2923
LT_PMBus::readVoutWithPage
float readVoutWithPage(uint8_t address, uint8_t page)
Get the measured output voltage.
Definition: LT_PMBus.cpp:1678
LT_PMBusMath.h
LTC PMBus Support: Math conversion routines.
LT_PMBus::readRevision
void readRevision(uint8_t address, uint8_t *revision)
Get the slave revision.
Definition: LT_PMBus.cpp:2393
LT_PMBus::eraseNVM
void eraseNVM(uint8_t address)
Definition: LT_PMBus.cpp:2743
LT_PMBus::getUserData03
uint16_t getUserData03(uint8_t address)
Get user data 3.
Definition: LT_PMBus.cpp:3099
LT_PMBus::setVoutUvFaultLimitWithPage
void setVoutUvFaultLimitWithPage(uint8_t address, float voltage, uint8_t page)
Set the under voltage fault limit.
Definition: LT_PMBus.cpp:895
LT_PMBus::isLtc2977
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
LT_PMBus::setIoutOcWarnLimitWithPage
void setIoutOcWarnLimitWithPage(uint8_t address, float current, uint8_t page)
Set the over current warning limit.
Definition: LT_PMBus.cpp:1011
LT_PMBus::setTemp1Gain
void setTemp1Gain(uint8_t address, uint16_t gain)
Set the temperature 1 gain.
Definition: LT_PMBus.cpp:1369
LT_PMBus::readStatusWordWithPagePlus
uint16_t readStatusWordWithPagePlus(uint8_t address, uint8_t page)
Get the status word.
Definition: LT_PMBus.cpp:2498
LT_PMBus::readIoutWithPage
float readIoutWithPage(uint8_t address, uint8_t page)
Get the measured output current.
Definition: LT_PMBus.cpp:1924
LT_PMBus::getRailAddress
uint8_t getRailAddress(uint8_t address)
Get the rail address of a Controller.
Definition: LT_PMBus.cpp:3131
LT_PMBus::setSpareData0
void setSpareData0(uint8_t address, uint16_t data)
Set spare data 0.
Definition: LT_PMBus.cpp:3114
LT_PMBus::readDutyCycle
float readDutyCycle(uint8_t address, bool polling)
Get the duty cycle.
Definition: LT_PMBus.cpp:2102
LT_PMBus::enableWriteProtectGlobal
void enableWriteProtectGlobal(void)
Enable the write protect.
Definition: LT_PMBus.cpp:2538
LT_PMBus::readMfrPads
uint16_t readMfrPads(uint8_t address)
Get the state of the pads.
Definition: LT_PMBus.cpp:2366
LT_PMBus::setVinOvWarnLimit
void setVinOvWarnLimit(uint8_t address, float voltage)
Set the input over voltage warnign limit.
LTC3880
Definition: LT_PMBus.h:347
LT_PMBus::setUtFaultLimitWithPagePlus
void setUtFaultLimitWithPagePlus(uint8_t address, float temperature, uint8_t page)
Set the under temperature fault limit.
Definition: LT_PMBus.cpp:1307
LT_PMBus
PMBus communication.
Definition: LT_PMBus.h:370