I²C Bus Communication with Sensortechnics` Digital

I²C Bus Communication with Sensortechnics’ Digital
HDI, HCLA, HCA and SSI Pressure Sensors
1
INTRODUCTION
Sensortechnics’ digital pressure sensors are
calibrated and temperature compensated with
an on-board ASIC, which provides a corrected
digital pressure value with up to 15 bit
resolution. Additionally an analog voltage output
is available at the same time. The response
time of the sensor depends on the adjusted
internal resolution. For 12 bit it is typ. 0.5 ms.
Sensortechnics’ digital sensors can be
configured to comply with I²C or SPI bus
protocol.
The I²C bus is a simple, serial 8-bit oriented
computer bus for efficient Inter-IC (acronym I²C)
control. It provides good support for
communication between different IC’s across
short circuit-board distances, such as
interfacing microcontrollers with various lowspeed peripheral devices. Each device
connected to the bus is software addressable
by a unique address and a simple master-slave
relationship exists at all times. The I²C bus
requires only two bi-directional bus lines, a
serial data line (SDA) and a serial clock line
(SCL). The data transfer rate is freely selectable
and can be max. 400 kbit/s.
2
NOTE:
This application note only refers to I²C
bus communication and specifically
discusses Sensortechnics’ HDI, HCLA,
HCA-Baro and SSI pressure sensors
with I²C bus compatible protocol.
I²C BUS PROTOCOL
2.1 General characteristics
Two lines, a serial data line (SDA) and a serial
clock line (SCL), carry information between the
devices connected to the bus (see Fig. 1). Any
device with I²C compatible protocol can be
attached to the bus. Both SDA and SCL are
bidirectional lines, connected to a positive
supply voltage via pull-up resistors (see section 4
Application Circuit). When the bus is free, both
lines are HIGH. They can only be pulled LOW by
the devices connected to the bus.
SCL
SDA
Master
Slave
Fig. 1:
Slave
Slave
Example of an I²C bus configuration
E / 11155 / C
1/10
www.sensortechnics.com
I²C Bus Communication with Sensortechnics’ Digital
HDI, HCLA, HCA and SSI Pressure Sensors
SDA
Master-Transmitter
Slave-Receiver
SCL
SDA
Master-Receiver
Slave-Transmitter
SCL
Fig. 2:
I²C master-slave concept
2.2 Master-slave concept
2.3 Data validity
The I²C bus uses a simple master-slave
concept. The master initialises a data transfer
(START command), generates the clock (SCL)
signal and terminates the transfer (STOP
command). Any device addressed by the
master is considered a slave.
Data is only valid during the HIGH period of the
clock. During this HIGH period the data on the
SDA line must be stable HIGH to transmit a “1”
or stable LOW for a “0”. The HIGH or LOW
state of the data line is only allowed to change
when the clock signal on the SCL line is LOW
(see Fig. 3).
Masters and slaves can operate as either
transmitters or receivers, depending on their
function (see Fig. 2). The transmitter is the
device that sends data to the bus. A transmitter
can either put data on the bus on its own
accord (master-transmitter), or in response to a
request from the master (slave-transmitter).
The receiver is the device that receives data
from the bus. A receiver can either receive data
on its own request (master-receiver) or in
response to a request from the master (slavereceiver).
NOTE:
Sensortechnics’ digital pressure
sensors are designed to work as
slave-transmitters and will therefore
only respond to requests from a
master device.
E / 11155 / C
SDA
SCL
Data Data
valid allowed
to change
Fig. 3:
I²C bus data validity
2/10
www.sensortechnics.com
I²C Bus Communication with Sensortechnics’ Digital
HDI, HCLA, HCA and SSI Pressure Sensors
2.4 START (S) and STOP (P) conditions
2.5 Byte format
Prior to any transaction on the bus, a START
condition needs to be issued. The START
condition acts as a signal to all connected IC’s
that something is about to be transmitted on the
bus. As a result, all connected devices will listen
to the bus and the bus is considered to be busy.
After a message has been completed, a STOP
condition is sent by the master. In this way the
master can notify that no further data will be
received or sent. This is the signal for all
devices that the bus is idle again. START and
STOP conditions are always generated by the
master.
Every byte put on the SDA line must be 8-bits
long. Data is transferred with the most
significant bit (MSB) first and the other bits
following down to bit 8, the least significant bit
(LSB). As you can see in Fig. 5, the bit
representing decimal number 128 will be
transmitted first (MSB).
The START condition is defined as a HIGH to
LOW transition on the SDA line while SCL is
HIGH. The STOP condition is defined as a
LOW to HIGH transition on the SDA line while
SCL is HIGH (see Fig. 4).
SDA
SCL
START
condition
Fig. 4:
STOP
condition
MSB
D u al
0
Decimal
Fig. 5:
1
1
0
1
1
0
1
128 64
32
16
8
4
2
1
I²C bus byte format
2.6 Addressing and data direction
The first byte after the START condition
determines which slave will be selected by the
master. Each slave has a unique address to
identify it on the bus. This address is 7 bits long
followed by bit 8 which is the data direction bit
(R/W) (see Fig. 6). A ‘0’ for the R/W bit
indicates that the master wants to transmit
information to a selected slave (WRITE), a ‘1’
indicates that the master requests information
from the slave (READ).
MSB
LS B
7 bit address
I²C bus START and STOP conditions
b7
Fig. 6:
E / 11155 / C
LS B
b6
b5
b4
b3
R/W
b2
b1
b0
I²C bus address byte
3/10
www.sensortechnics.com
I²C Bus Communication with Sensortechnics’ Digital
HDI, HCLA, HCA and SSI Pressure Sensors
When an address is sent, each device in the
system compares the first seven bits after the
START condition with its own address. If they
match, the device considers itself addressed by
the master as a slave-receiver or slavetransmitter, depending on the R/W bit.
The 7-bit addressing allows 128 (27) different
addresses on the same bus. Since 16
addresses are reserved (in the Phillips
specification), in practice 112 addresses remain
for communication on the bus. However, the
total number of devices connected to the bus is
limited by the maximum bus capacitance
CSDA=400 pF.
A slave address can be made-up of a fixed and
a programmable part. Typically, the four most
significant bits are fixed and assigned to
specific categories of devices. The three least
significant bits are programmable through
hardware address pins allowing up to eight (23)
devices of identical categories on the same I²C
bus.
2.7 Acknowledge (ACK or A)
Each byte sent on the bus has to be followed by
an acknowledge bit issued from the receiver for
correct receipt of data. The acknowledge also
means that the device is ready to continue the
data transfer.
The master must generate an extra clock pulse
for this purpose. The transmitter releases the
SDA line (HIGH) during the acknowledge clock
pulse. The receiver must pull down the SDA line
so that it is stable LOW from the beginning
(rising edge) of the acknowledge clock pulse
until its end (LOW level after falling edge) (see
Fig. 7).
If the receiver does not want to receive a further
byte it leaves the SDA line HIGH and a not
acknowledge (NACK or A) will be sent. Now the
master can terminate the transfer with a STOP
condition.
NOTE:
Sensortechnics’ digital I²C pressure
sensors have a general preconfigured
slave address (0x1111000b). By factory
programming it is possible to define an
additional secondary slave address for
each individual device. According to I²C
bus specification 127 different
addresses are available. The sensor
will then listen to both slave addresses.
E / 11155 / C
4/10
www.sensortechnics.com
I²C Bus Communication with Sensortechnics’ Digital
HDI, HCLA, HCA and SSI Pressure Sensors
Data from
transmitter
Data from
receiver
SCL
1
2-8
START
condition
Fig. 7:
9
ACK
Acknowledge (ACK) on the I²C bus
2.8 Data transfer overview
A complete data transfer is shown in Fig. 8.
After the START condition, the slave address is
sent. The data direction bit (R/W) determines
whether it is a READ or WRITE transfer. The
addressed slave acknowledges (ACK) the
correct receipt of the first byte. Now an
unrestricted number of data bytes can be
transmitted, always followed by an
acknowledgement.
The data transfer is always terminated by a
STOP condition generated by the master. If the
master afterwards wishes to continue the
communication, it has to generate a new
START condition and initiate a new data
transfer.
SDA
1-7
8
Address
R/W
9
1-8
9
1-8
9
ACK
Data
ACK
Data
NACK
l
SCL
START
condition
Fig. 8:
STOP
condition
Complete I²C bus data transfer
E / 11155 / C
5/10
www.sensortechnics.com
I²C Bus Communication with Sensortechnics’ Digital
HDI, HCLA, HCA and SSI Pressure Sensors
3
DATA TRANSFER WITH HDI, HCLA,
HCA AND SSI PRESSURE SENSORS
Data Byte 1
Data Byte 2
X P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0
Sensortechnics’ digital HDI, HCLA, HCA and SSI
pressure sensors are designed to work as
slave-transmitters and will therefore only
respond to requests from a master device.
Relevant data
Fig. 10: Two data bytes containing the pressure
value as a 15 bit information
NOTE:
With a SCL clock frequency of 400 kHz
the exchange of the 2 data bytes
containing the current pressure value
takes about 40 µs. However, the internal
sensor conversion cycle to obtain a
new pressure value is 250 µs for 12 bit
resolution. Therefore, if the sensors are
not deactivated they will send up to 7
times the same digital pressure value.
For further information please contact
Sensortechnics.
3.1 Pressure reading
To read out a pressure value the master
generates a START condition and sends the
sensors slave address (either the hard codeded
addess 0x1111000bin or the secondary factory
programmed address) followed by a READ
command (R/W=1) (see Fig. 9). At the moment
of the first acknowledge (A) from the sensor,
the master-transmitter becomes a masterreceiver. The sensor starts to send two data
bytes containing the current pressure value as
a 15 bit information placed in the output
registers of its ASIC (see Fig. 10). The master
must acknowledge the reception of the first
data byte. To terminate the pressure reading
from the sensor the master sends a STOP
condition. The sensor is also able to send
pressure values “online”. That means if the
master does not send a STOP condition but an
acknowledge after the third exchanged byte the
sensor-slave will go on sending the last
available pressure value when it is clocked.
1
S Slave Address R/W A
Data Byte 1
3.2 Optional temperature reading
As an option the sensors can be factory
configured to deliver an additional 15 bit
temperature reading. This will then be
transmitted as a 3rd and 4th byte after the
pressure value. If there is an acknowledge sent
after these two additional bytes the sensor will
continue sending alternating pressure and
temperature values until it is deactivated by a
STOP condition.
A
Data Byte 2
generated by slave
n Data Bytes
A P
Read out of n
pressure values
Read out of first pressure value
generated by master
A
S = START condition
Data Byte 1 = High Byte (MSB first)
A = Acknowledge
Data Byte 2 = Low Byte (LSB last)
A = Not Acknowledge
P = STOP condition
Fig. 9:
Readout of digital pressure information using I²C bus protocol
E / 11155 / C
6/10
www.sensortechnics.com
I²C Bus Communication with Sensortechnics’ Digital
HDI, HCLA, HCA and SSI Pressure Sensors
3.3 Calculation of the actual pressure
value from the digital pressure word
For an actual digital pressure reading of
Pcounts
The following formulas show how to calculate
the actual pressure value from the digital
sensor output:
Definitions:
S
= Sensitivity [counts/mbar]
Outmax = Output @ max. pressure [counts]
Outmin = Output @ min. pressure [counts]
Pmax
= Max. value of pressure range [mbar]
Pmin
= Min. value of pressure range [mbar]
P
= Pressure reading [mbar]
Pcounts = Digital pressure reading [counts]
Out max − Out min
S=
Pmax − Pmin
P=
Pcounts − Out min
+ Pmin
S
= 0508 counts hex = 20608 counts dec
the actual pressure in mbar can be calculated
from equation (2) to be
P=
20608 counts − 1638 counts
+ 0 mbar = 36,18 mbar
524,28 counts / mbar
This pressure reading is calculated with the
typical calibration values, not taking into
account that the individual sensor calibrations
might differ within the tolerances specified in
the HCLA data sheet.
3.4 Resolution of data
(1)
(2)
The following example shows the calculation for
a HCLA0050…U device (pressure range 0…50
mbar unidirectional). Please refer to the HCLA
data sheet for the specified calibration values.
Outmin = 0666 counts hex = 1638 counts dec
Outmax = 6CCC counts hex = 27852 counts dec
Each temperature and pressure value will be
transmitted as a 15 bit word. However, the
actual resolution can be less than this
depending upon how the internal A/D-converter
is configured. Also internal calculations and
signal windowing will reduce the effective
resolution. The standard resolution for pressure
measurement is set at 12 bits, which results in
an effective resolution of 11 to 12 bits. For
temperature measurement the limiting factor is
the sensitivity of the sensing element. For
further information please contact
Sensortechnics.
With equation (1) the sensitivity of the sensor
gives
S=
27852 counts − 1638 counts
= 524,28 counts/mbar
50 mbar − 0 mbar
E / 11155 / C
7/10
www.sensortechnics.com
I²C Bus Communication with Sensortechnics’ Digital
HDI, HCLA, HCA and SSI Pressure Sensors
3.5 Timing Parameters
Parameter
Symbol
Min.
tBUF
1.3
tHD.STA
0.8
LOW period of SCL
tLOW
1.3
HIGH period of SCL
tHIGH
0.6
Setup time repeated START condition
tSU.STA
1
Data hold time
tHD.DAT
0
Data setup time
tSU.DAT
0.2
Bus free time between STOP and START condition
Hold time (repeated) START condition, to first clock pulse
Typ.
Max.
Unit
µs
Rise time of both SDA and SCL
tR
0.3
Fall time of both SDA and SCL
tF
0.3
Setup time for STOP condition
tSU.STO
0.6
Table 1: Timing parameters for I²C bus communication with Sensortechnics’ digital pressure sensors
tSU;DAT
tHD;DAT
tSU;STA tHD;STA
tR
tSU;STO tBUF
tHD;STA
tF
SCL
SDA
tHIGH
tLOW
SCL
SDA
Fig. 11: I²C bus timing characteristics
E / 11155 / C
8/10
www.sensortechnics.com
I²C Bus Communication with Sensortechnics’ Digital
HDI, HCLA, HCA and SSI Pressure Sensors
Parameter
Symbol
Min.
Typ.
Max.
Input high level
90
100
Input low level
0
10
Output low level
Unit
% of V s
10
Pull-up resistor
Ω
500
Load capacitance @ SDA
C SD A
400
Input capacitance @ SDA/SCL
CI2C_IN
10
FSC L
SCL clock frequency
100*
pF
400
kHz
* recommended
Table 2: I²C bus communication parameters for Sensortechnics’ digital pressure sensors
3.6 Communication Parameters
The maximum allowed communication speed
on the bus depends on the configured internal
clock frequency of the HDI, HCLA, HCA and SSI
pressure sensors. It is 400 kHz in the standard
configuration.
If both digital and analog interfaces are used in
parallel it is recommended to separate these
lines as far as possible from each other.
Further, decoupling capacitors of 220 nF
between supply and ground and 15 nF between
the analog output and ground are beneficial. It
is important to place the capacitors as close to
the pins as possible.
3.7 Signal Noise due to Communication
4
As the pulses transmitted on the two bus lines
have very sharp edges, this can cause some
electromagnetic interference. Especially for
very low pressure values and small PCB
designs, these spikes can influence the analog
millivolt measurement of the sensor bridge and
downgrade signal quality.
NOTE:
To prevent signal noise Sensortechnics
recommends a min. clock frequency of
100 kHz (max. 400 kHz) and transmission
breaks of min. 500 µs between two
pressure readings. This is especially
valid for low pressure devices up to
25 mbar. Please contact Sensortechnics
for more information.
APPLICATION CIRCUIT
Both SCL and SDA lines have to be connected
to a 5 V supply voltage via pull-up resistors RP
as shown in Fig. 12. Sensortechnics
recommends to use 1.5 kΩ resistors.
Additionally, serial resistors RS of max. 240 Ω
should be used in each communication line.
+VS
R
P
SCL
SDA
R
P
R
S
Sensor
R
S
Fig. 12: I²C bus application circuit for
Sensortechnics’ digital pressure sensors
E / 11155 / C
9/10
www.sensortechnics.com
I²C Bus Communication with Sensortechnics’ Digital
HDI, HCLA, HCA and SSI Pressure Sensors
5
SAMPLE PROGRAM CODE
byte byte_msb, byte_lsb;
int16 pressure;
// 8bit values
// 16bit value
// Set I2C unit to I2C master mode, clock speed 100 kHz and 7 bit addressing
configureI2C (I2C_MASTER | CLK_SPEED_100KHZ | ADDRESSING_7BIT);
// Set the target address of the sensor (0x78 = 120dec)
I2C_set_target(0x78);
// Send start condition for reading from sensor (slave)
I2C_send_start_read();
// Read first (MSB) data byte and answer with ACK (continue communication)
I2C_read (&byte_msb, SEND_ACK);
// Read second (LSB) data byte and answer with NACK (end communication)
I2C_read (&byte_lsb, SEND_NACK);
// Send Stop condition
I2C_send_stop();
// Put both values together
pressure = ((int16)byte_msb << 8) | byte_lsb;
E / 11155 / C
10/10
www.sensortechnics.com