I2C_class module

class I2C_class.I2C(H)[source]

Methods to interact with the I2C port. An instance of Packet_Handler must be passed to the init function

Example:: Read Values from an HMC5883L 3-axis Magnetometer(compass) [GY-273 sensor] connected to the I2C port
>>> ADDRESS = 0x1E
>>> from Labtools import interface
>>> I = interface.Interface() 
>>> # Alternately, you may skip using I2C as a child instance of Interface, 
>>> # and instead use I2C=Labtools.I2C_class.I2C(Labtools.packet_handler.Handler())
>>> I.I2C.start(self.ADDRESS,0) # writing to device mode
>>> I.I2C.send(0x01) # Set gain of the magnetometer
>>> I.I2C.send(0<<5) # Select the smallest range
>>> I.I2C.stop()     #Stop the transfer
>>> I.I2C.start(self.ADDRESS,0) # writing to device again
>>> I.I2C.send(0x02) # Select Mode configuration register to write to
>>> I.I2C.send(0)    # Select Continuous measurement mode
>>> I.I2C.stop()
>>> I.I2C.start(self.ADDRESS,0) # writing to device
>>> I.I2C.send(addr) # Write address to read raw values starting that location.
>>> I.I2C.restart(self.ADDRESS,1) #Re write ADDRESS to I2C port, but in reading mode.
>>> vals=I.I2C.read(6) #Read 6 bytes. 5 bytes with ack, and one with Nack (No acknowledge)
>>> I.I2C.stop()
>>> from numpy import int16
>>> x=int16((vals[0]<<8)|vals[1])       #conversion to signed datatype
>>> y=int16((vals[2]<<8)|vals[3])
>>> z=int16((vals[4]<<8)|vals[5])
>>> print x,y,z
config(freq)[source]

Sets frequency for I2C transactions

Arguments  
freq I2C frequency
start(address, rw)[source]

Initiates I2C transfer to address via the I2C port

Arguments  
address I2C slave address
rw Read/write. * 0 for writing * 1 for reading.
stop()[source]

stops I2C transfer

Returns:Nothing
wait()[source]

wait for I2C

Returns:Nothing
send(data)[source]

SENDS data over I2C. The I2C bus needs to be initialized and set to the correct slave address first. Use I2C.start(address) for this.

Arguments  
data Sends data byte over I2C bus
Returns:Nothing
send_burst(data)[source]

SENDS data over I2C. The function does not wait for the I2C to finish before returning. It is used for sending large packets quickly. The I2C bus needs to be initialized and set to the correct slave address first. Use start(address) for this.

Arguments  
data Sends data byte over I2C bus
Returns:Nothing
restart(address, rw)[source]

Initiates I2C transfer to address

Arguments  
address I2C slave address
rw Read/write. * 0 for writing * 1 for reading.
read(length)[source]

Reads a fixed number of data bytes from I2C device. Fetches length-1 bytes with acknowledge bits for each, +1 byte with Nack.

Arguments  
length number of bytes to read from I2C bus
read_repeat()[source]
read_end()[source]

Previous topic

SPI_class module

This Page