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¶
idalways 0device_addrdevice addressdirectioni2c.TRANSMITTERfor writing mode ,i2c. RECEIVERfor 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¶
idalways 0lennumber 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¶
idalways 0pinSDA1~12, IO indexpinSCL1~12, IO indexspeedonlyi2c.SLOWsupported
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¶
idalways 0datadata can be numbers, string or lua table.
Returns¶
number number of bytes written
Example¶
i2c.write(0, "hello", "world")