Since | Origin / Contributor | Maintainer | Source |
---|---|---|---|
2014-12-22 | Zeroday | Zeroday | i2c.c |
Setup I²C address and read/write mode for the next transfer.
i2c.address(id, device_addr, direction)
id
always 0device_addr
7-bit device address, remember that in I²C device_addr
represents the upper 7 bits followed by a single direction
bitdirection
i2c.TRANSMITTER
for writing mode , i2c. RECEIVER
for reading modetrue
if ack received, false
if no ack received.
Read data for variable number of bytes.
i2c.read(id, len)
id
always 0len
number of data bytesstring
of received data
id = 0
sda = 1
scl = 2
-- initialize i2c, set pin1 as sda, set pin2 as scl
i2c.setup(id, sda, scl, i2c.SLOW)
-- user defined function: read from reg_addr content of dev_addr
function read_reg(dev_addr, reg_addr)
i2c.start(id)
i2c.address(id, dev_addr, i2c.TRANSMITTER)
i2c.write(id, reg_addr)
i2c.stop(id)
i2c.start(id)
i2c.address(id, dev_addr, i2c.RECEIVER)
c = i2c.read(id, 1)
i2c.stop(id)
return c
end
-- get content of register 0xAA of device 0x77
reg = read_reg(0x77, 0xAA)
print(string.byte(reg))
####See also i2c.write()
Initialize the I²C module.
i2c.setup(id, pinSDA, pinSCL, speed)
####Parameters
id
always 0pinSDA
1~12, IO indexpinSCL
1~12, IO indexspeed
only i2c.SLOW
supportedspeed
the selected speed
####See also i2c.read()
Send an I²C start condition.
i2c.start(id)
id
always 0
nil
####See also i2c.read()
Send an I²C stop condition.
i2c.stop(id)
####Parameters
id
always 0
nil
####See also i2c.read()
Write data to I²C bus. Data items can be multiple numbers, strings or Lua tables.
####Syntax
i2c.write(id, data1[, data2[, ..., datan]])
####Parameters
id
always 0data
data can be numbers, string or Lua table.number
number of bytes written
i2c.write(0, "hello", "world")