English
Language : 

ISL28023 Datasheet, PDF (30/55 Pages) Intersil Corporation – Bidirectional current sensing
ISL28023
Communication Protocol
The DPM chip communicates with the host using PMBus
commands. PMBus command structure is an industry SMBus
standard for communicating with power supplies and converters.
All communications to and from the chip use the SMBCLK and
SMBDAT to communicate to the DPM master. The SMB pins
require a pull-up resistor to enable proper operation. The default
logic state of the communication pins are high when the bus is in
an idle state.
The SMBus standard is a variant of the I2C communication
standard with minor differences with timing and DC parameters.
SMBus supports Packet Error Corrections (PEC) for data integrity
certainty. The PMBus is the standardization of the SMBus
register designation. The standardization is specific to power and
converter devices.
The DPM employs the following command structures from the
I2C communication standard;
1. Send Byte
2. Write Byte/Word
3. Read Byte/Word
4. Read Block
5. Write Block
Packet Error Correction (PEC)
Packet Error Correction is often used in environments where data
being transferred to and from the device can be compromised.
Applications where the device is connected by way of a cable is
common use of PEC. The cable’s integrity may be compromised
resulting in error transactions between the master and the
device. The ISL28023 uses an 8-bit cyclic redundance check
(CRC-8). Figure 95 is an example of a flow algorithm for CRC-8
protocol.
Public Function crc8Decode(binStr As String) As Byte
Declaration of variables
Dim crc8(0 To 7) As Byte, index As Byte, doInvert As Byte
The input to the subroutine is a binary string consisting of
the slave address, the register address and data inputted to or received
from the part. Anything input into or received from the device is part of the
binary string (binStr) to be calculated by this routine.
Clear the crc8 variable. This variable is used to return the PEC value.
For index = 0 To UBound(crc8)
crc8(index) = 0
Next index
index = 0
While index <> (Len(binStr))
index = index + 1
The If statement below reads the binary value of each bit in the binary
string (binStr).
If Mid(binStr, index, 1) = "1" Then
doInvert = 1 Xor crc8(7)
Else
doInvert = 0 Xor crc8(7)
End If
crc8(7) = crc8(6)
crc8(6) = crc8(5)
crc8(5) = crc8(4)
crc8(4) = crc8(3)
crc8(3) = crc8(2)
crc8(2) = crc8(1) Xor doInvert
crc8(1) = crc8(0) Xor doInvert
crc8(0) = doInvert
Wend
crc8Decode = 0
For index = 0 To 7 'This assembles the crc8 value in byte form.
crc8Decode = crc8(index) * 2 ^ index + crc8Decode
Next index ‘crc8Decode is returned from this routine.
End Function
FIGURE 95. AN ALGORITHM TO CALCULATE A CRC8 (PEC) BYTE VALUE.
FIGURE 96. READ/WRITE SMBUS PROTOCOLS WITH AND WITHOUT PEC. DIAGRAMS COPIED FROM A SMBUS SPECIFICATION DOCUMENT. THE
DOCUMENT CAN BE UPLOADED AT http://smbus.org/specs/
Submit Document Feedback 30
FN8389.5
March 18, 2016