Alcor6L/PicoLisp/i2c

From Wikibooks, open books for an open world
Jump to: navigation, search

Overview[edit]

This module contains functions for accessing the I2C interfaces of the Alcor6L CPU.

Only master I2C mode is implemented in eLua (and Alcor6L).

Functions[edit]

i2c-setup[edit]

Setup the I2C interface.

(i2c-setup id speed)
  • id - the ID of the I2C interface.
  • speed - the clock frequency of the I2C interface. It can be *i2c-fast* (400KHz), *i2c-slow* (100KHz) or a number giving the required I2C bus clock speed in Hz.

Returns:

  • speed - the actual speed of the I2C interface.

i2c-start[edit]

Send a START on the specified I2C interface.

(i2c-start id)
  • id - the ID of the I2C interface.

Returns: NIL.

i2c-stop[edit]

Send a STOP on the specified I2C interface.

(i2c-stop id)
  • id - the ID of the I2C interface.

Returns: NIL.

i2c-address[edit]

Send an address on the I2C interface.

(i2c-address id address direction)
  • id - the ID of the I2C interface.
  • address - the address.
  • direction - *i2c.transmitter* if the master wants to send data, or *i2c-receiver* if the master wants to receive data.

Returns:

  • acked - true if the address was acknowledged by an I2C slave, false otherwise.

i2c-write[edit]

Writes data to a slave that has already acknowledged an i2c-address call.

(i2c-write id any1 [any2] ... [anyn] )
  • id - the ID of the I2C interface.
  • any1 - the data to send. It can be either a number between 0 and 255, a symbol or a list.
  • any2 (optional) - the second data to send.
  • anyn (optional) - the n-th data to send.

Returns:

  • wrote - the number of bytes actually written.

i2c-read[edit]

(i2c-read id numbytes)

Reads a number of bytes from a slave that has already acknowledged an i2c-address call. It acknowledges all the bytes received except for the last one.

  • id - the ID of the I2C interface.
  • numbytes - the number of bytes to read.

Returns:

  • data - a string with all the data read from the I2C interface.