Guidelines for the MAX34407/MAX34417 Hardware Design and Support Notes for the Windows 10 Driver for System Designers
IntroductionThe MAX34407/MAX34417 system monitoring ICs determine the power consumption of portable systems. The devices are configured and monitored with a standard I2C/SMBus (System Management Bus) serial interface. The devices automatically collect current and voltage samples and compute the accumulated power values. Upon a command from the host, the devices transfer the accumulated power samples and the accumulation count to a set of on-chip registers accessible by the host. Hardware IntegrationThis section provides the following:
Hardware Design GuidelinesPower Supply Lines (VDD and VIO) The MAX34407/MAX34417 can monitor multiple power rails including the system’s main power rail. In applications such as tablet systems, the system’s main power supply is off in standby/shutdown mode. To measure the system’s power consumption in this mode, it is recommended to connect the VDD and VIO pins to the power rails that are not shut down by the system standby or power down sequence. This allows the MAX34407/MAX34417 to accumulate power consumption data in the system’s standby/shutdown mode. Configure the MAX34407/MAX34417 in slow sampling mode to reduce the power consumption of the system. The typical current consumption of the device in slow sampling mode is 2.4µA for MAX34407 and 10µA for MAX34417. The system controller can drive the SLOW pin and reduce the sampling rate to 8 samples per second. This setting facilitates a longer period in the standby/shutdown mode, reducing the chances for accumulator register overflow. The MAX34407/MAX34417 enter power down mode when the PDNB pin is pulled down to GND. In power down mode, all the circuits in the device, including the I2C pins, are inactive, the device stays in a state of minimum power dissipation, and no data is retained in the IC. The typical current consumption of the device in power down mode is 0.7µA for MAX34407 and 2µA for MAX34417. In normal operation, this pin is connected to the VIO supply. I2C/SMBus The MAX34407/MAX34417 support the I2C/SMBus interface, whereas the Maxim® power meter Windows driver only supports the I2C interface. Thus, system designers must connect the MAX34407/MAX34417 ICs to the system controller (host), which supports I2C communication, as shown in Figure 1. This system controller (host) supports the standard Windows Simple Peripheral Bus Framework Extension (SPBCx). Recommended values for the I2C pull-up resistors are 2.2KΩ. A resistor tied to GND from the ADDR pin selects the I2C slave address. Refer to the Slave Address Setting section in the MAX34407/MAX34417 datasheet for further details. Note that the table in the datasheet indicates a 7-bit I2C slave address. System designers must update the MAX34407/MAX34417 device configuration tables with this slave address. For example, if the ADDR pin is directly connected to GND, then a 7-bit I2C slave address in the device configuration table is 0x10. Sense Resistor (RSENSE) The MAX34407/MAX34417 support RSENSE values from 100mΩ to 1Ω. The recommended value for sense resistor tolerance is 1%. The MAX34407 uses a 10mΩ, 1% tolerance sense resistor. For low power monitoring, a higher value of RSENSE is recommended to improve power measurement accuracy. The sense resistor value is expressed in milliohms and must be reflected in the MAX34407/MAX34417 device configuration tables for BIOS. This parameter setting is explained in Table 4. Layout Guidelines This section provides layout guidelines for MAX34407/MAX34417-based system designs. Figure 2 shows the PCB stack-up for the MAX34407/MAX34417 EV kits.
Recommendations for routing differential sense signals, I2C signals, and power supply are provided as follows: Differential Lines
Power
System IntegrationThis section provides guidance to integrate the MAX34407/MAX34417 into the system with the Maxim power meter driver and Windows 10 operating system.
In Windows 7 and prior versions of Windows, the power meter interface is available through the Advanced Configuration and Power Interface driver, ACPIPMI.sys. The ACPI power meter interface (PMI) exposes the power metering and budgeting capabilities of the hardware platform to the drivers that provide the Windows driver model (WDM) PMI. Starting with Windows 10, WDM drivers implement the energy metering interface. This interface consists of a set of standardized I/O controls (IOCTLs) for clients to get energy data as well as data about the metering hardware and the hardware being metered. The PMI provides support for various IOCTL request packets that are issued by user-mode services or applications. This IOCTL interface provides information about different configuration parameters such as sampling intervals and power thresholds, similar to the energy metering interface. More information on the energy meter interface can be found at the following MSDN link: The ACPI namespace is a hierarchical representation of ACPI devices in the system, and a valid ACPI BIOS reflects all integrated power management features supported by the Windows Operating Systems. Windows 10 OS BIOS supports EMI_VERSION_V1. Future operating system releases may introduce later versions. To support power management functionality through the MAX34407/MAX34417 in the system, designers must update the ACPI BIOS with the MAX34407/MAX34417 ACPI device definition table, as shown in Figure 3. Enumerating Power Accumulators Through the ACPIThis section describes the ACPI device definition, which is written in the ACPI Source Language (ASL). Dynamic Enumeration Channel Information in the Power Meter Driver Table 1 translates the resistor values into ASL code. Table 2 and Table 3 provide 7-bit I2C slave addresses for both the MAX34407 and MAX34417 respectively. Table 1. Transition of Sense Resistor Values in ASL Code
Table 2. Translation of 7-bit I2C Slave Address in ASL Code for MAX34407
Table 3. Translation of 7-bit I2C Slave Address in ASL Code for MAX34417
MAX34407/MAX34417 ACPI Integration Parameters Table 4. MAX34407/MAX34417 ACPI Device Configuration Table
Sample ASL Scope (_SB.PCI0.I2C1) { // MAX34407/17 ASL Device (PA01) { // The driver loads on this Hardware ID. Name (_HID, "MAX34407") Name (_CID, "MAX34417") Name (_UID, One) // Each device must have unique ID Method (_CRS, 0, NotSerialized) { Name (RBUF, ResourceTemplate () { I2cSerialBus (0x001C, //7 bit slave address ControllerInitiated, // I2C master or slave 0x000186A0, // I2C CLK Frequency AddressingMode7Bit, // 7-bit or 10-bit slave address "\\_SB.PCI0.I2C1", // I2C Controller Name 0x00, //Index of Resource ResourceConsumer //Consumer or Producer ) }) Return (RBUF) /* \_SB_.PCI0.I2C1.PA01._CRS.RBUF */ } // You may or may not need this section. You may want this section if // if the device presence is dynamic. If the device is always present, // you don’t need this section. Method (_STA) { // Detect if the power accumulator device is present and: // Return 0x0F if the device is present/responds. // Return 0x00 if the device is not present/failed to respond. // TODO: add implementation } Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { // The driver uses the DSM referenced by this GUID. If (LEqual (Arg0, ToUUID ("4993a436-e1ac-4dc7-b4f8-46a5008fb9e7"))) { // This example exposes 4 channels and provides information for all channels. // (The number of channels is below.) If (LEqual (Arg2, One)) { If (LEqual (Arg1, Zero)) { Name (PBUF, Package (0x08) { "Channel Name 1", 0x02, // ResistorMilliohms for Channel 1 " Channel Name 2", 0x08, // ResistorMilliohms for Channel 2 " Channel Name 3", 0x12, // ResistorMilliohms for Channel 3 " Channel Name 4", 0x05 // ResistorMilliohms for Channel 4 }) Return (PBUF) /* \_SB_.PCI0.I2C1.PA01._DSM.PBUF */ } Else { If(LEqual (Arg2, Zero)) // Arg2: Function number zero is a query function Return (Buffer (One) { 0x07 }) } } // This example exposes 4 channels. // This is the number of channels. If (LEqual (Arg2, 0x02)) { If (LEqual (Arg1, Zero)) { Name (CBUF, Package (0x01) { 0x04 // Number of Channels Above }) Return (CBUF) /* \_SB_.PCI0.I2C1.PA01._DSM.CBUF */ } Else { Return (Buffer (One) { 0x00 }) } } Return (Buffer (One) { 0x00 }) } Else { Return (Buffer (One) { 0x00 }) } } } } ASL Update Process ASL Update Procedure
Driver Installation
ConclusionSystem integrators can use these schematic and layout guidelines to design an accurate power monitoring system based on the MAX34407/MAX34417. Use the ASL sample code to integrate the power monitoring device, and update and test the ACPI BIOS with the ASL update procedure. This application note also instructs system integrators how to install Windows drivers for a Windows 10 operating system. TrademarksMaxim is a registered trademark of Maxim Integrated Products, Inc. |
|