I²C Module¶
Since | Origin / Contributor | Maintainer | Source |
---|---|---|---|
2014-12-22 | Zeroday | Zeroday | i2c.c |
i2c.address()¶
Setup I²C address and read/write mode for the next transfer.
Syntax¶
i2c.address(id, device_addr, direction)
Parameters¶
id
always 0device_addr
device addressdirection
i2c.TRANSMITTER
for writing mode ,i2c. RECEIVER
for reading mode
Returns¶
true
if ack received, false
if no ack received.
See also¶
i2c.read()¶
Read data for variable number of bytes.
Syntax¶
i2c.read(id, len)
Parameters¶
id
always 0len
number of data bytes
Returns¶
string
of received data
Example¶
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.setup()¶
Initialize the I²C module.
Syntax¶
i2c.setup(id, pinSDA, pinSCL, speed)
Parameters¶
id
always 0pinSDA
1~12, IO indexpinSCL
1~12, IO indexspeed
onlyi2c.SLOW
supported
Returns¶
speed
the selected speed
See also¶
i2c.start()¶
Send an I²C start condition.
Syntax¶
i2c.start(id)
Parameters¶
id
always 0
Returns¶
nil
See also¶
i2c.stop()¶
Send an I²C stop condition.
Syntax¶
i2c.stop(id)
Parameters¶
id
always 0
Returns¶
nil
See also¶
i2c.write()¶
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.
Returns¶
number
number of bytes written
Example¶
i2c.write(0, "hello", "world")