Library
Documentation for BaremetalPi.jl
.
BaremetalPi.Objects
— TypeObjects
This structure stores global objects, such as the IO file and the memory mappings.
BaremetalPi.close_i2c
— Methodclose_i2c()
Close all I2C connections.
BaremetalPi.close_spi
— Methodclose_spi()
Close all SPI connections.
BaremetalPi.gpio_clear
— Methodgpio_clear(gpio::Int)
Clear GPIO gpio
.
BaremetalPi.gpio_get_mode
— Methodgpio_get_mode(gpio::Int)
Return the state of the GPIO gpio
.
BaremetalPi.gpio_read
— Methodgpio_read(gpio::Int)
Read the GPIO gpio
. The returned value is boolean.
BaremetalPi.gpio_set
— Methodgpio_set(gpio::Int)
Set GPIO gpio
.
BaremetalPi.gpio_set_mode
— Methodgpio_set_mode(gpio, mode::Symbol)
Set the mode of the GPIO gpio
to mode
. gpio
can be an integer of an AbstractVector
with the list of GPIOs that will be set.
mode
can be:
:out
: GPIO direction will be set to out.:in
: GPIO direction will be set to in.:alt0
: GPIO will be set to alternate function 0.:alt1
: GPIO will be set to alternate function 1.:alt2
: GPIO will be set to alternate function 2.:alt3
: GPIO will be set to alternate function 3.:alt4
: GPIO will be set to alternate function 4.:alt5
: GPIO will be set to alternate function 5.
BaremetalPi.gpio_value
— Methodgpio_value(v::Integer)
Apply the value v
to all GPIOs. The bits that are 0
will be cleared, and the bits that are 1
will be set.
gpio_value(v::BitVector)
Convert the bit array v
to Int
and call gpio_value(::Int)
.
BaremetalPi.i2c_get_funcs
— Methodi2c_get_funcs(devid::Int)
Return a vector with the available I2C functions in the device devid
.
devid
is the ID of the I2C device considering the initialization order when the function init_i2c
was called.
BaremetalPi.i2c_slave
— Methodi2c_slave(devid::Integer, address::Integer)
Select the slave device in address address
using I2C device devid
.
devid
is the ID of the I2C device considering the initialization order when the function init_i2c
was called.
BaremetalPi.i2c_slave_force
— Methodi2c_slave_force(devid::Integer, address::Integer)
Force selection of slave device in address address
using I2C device devid
.
devid
is the ID of the I2C device considering the initialization order when the function init_i2c
was called.
BaremetalPi.i2c_smbus_read_byte
— Methodi2c_smbus_read_byte(devid::Integer)
Perform a SMBUS read byte using the I2C device devid
. This functions returns the read byte.
devid
is the ID of the I2C device considering the initialization order when the function init_i2c
was called.
BaremetalPi.i2c_smbus_read_byte_data
— Methodi2c_smbus_read_byte_data(devid::Integer, command::Integer)
Perform a SMBUS read byte with command command
using the I2C device devid
. This function return the read byte.
devid
is the ID of the I2C device considering the initialization order when the function init_i2c
was called.
BaremetalPi.i2c_smbus_read_i2c_block_data!
— Methodi2c_smbus_read_i2c_block_data!(devid::Integer, command::Integer, data::Vector{UInt8})
Perform a SMBUS read block with command command
using the I2C device devid
. The read data will be written to data
. Notice that the first element of the array is always size
. Hence, the number of read bytes will be equal to the length of data
minus 1.
devid
is the ID of the I2C device considering the initialization order when the function init_i2c
was called.
BaremetalPi.i2c_smbus_read_i2c_block_data
— Methodi2c_smbus_read_i2c_block_data(devid::Integer, command::Integer, size::Integer)
Perform a SMBUS read block with command command
and length length
using the I2C device devid
. The read data will be returned in an array of UInt8
with size size + 1
. This array is a view of the buffer that was allocated at the initialization of the I2C device. Notice that the first element of the array is always size
.
devid
is the ID of the I2C device considering the initialization order when the function init_i2c
was called.
The returned array is a view of the buffer bblock
created for each I2C device. This buffer is modified by other functions like i2c_smbus_write_i2c_block_data
. Hence, before performing another I2C transfer that will modify this buffer, be sure to copy the returned value to another place.
Due to the view returned by this functions, it performs one allocation. If this is not wanted, then use the in-place version i2c_smbus_read_i2c_block_data!
.
BaremetalPi.i2c_smbus_read_word_data
— Methodi2c_smbus_read_word_data(devid::Integer, command::Integer)
Perform a SMBUS read word with command command
using the I2C device devid
. This function return the read word.
devid
is the ID of the I2C device considering the initialization order when the function init_i2c
was called.
BaremetalPi.i2c_smbus_write_byte
— Methodi2c_smbus_write_byte(devid::Integer, value::Integer)
Perform a SMBUS write byte with value value
using the I2C device devid
.
devid
is the ID of the I2C device considering the initialization order when the function init_i2c
was called.
BaremetalPi.i2c_smbus_write_byte_data
— Methodi2c_smbus_write_byte_data(devid::Integer, command::Integer, value::Integer)
Perform a SMBUS write byte with command command
and value value
using the I2C device devid
.
devid
is the ID of the I2C device considering the initialization order when the function init_i2c
was called.
BaremetalPi.i2c_smbus_write_i2c_block_data
— Methodi2c_smbus_write_i2c_block_data(devid::Integer, command::Integer, values::Vector{UInt8})
Perform a SMBUS write I2C block data with command command
and data in values
using the I2C device devid
.
devid
is the ID of the I2C device considering the initialization order when the function init_i2c
was called.
BaremetalPi.i2c_smbus_write_word_data
— Methodi2c_smbus_write_word_data(devid::Integer, command::Integer, value::Integer)
Perform a SMBUS write word with command command
and value value
using the I2C device devid
.
devid
is the ID of the I2C device considering the initialization order when the function init_i2c
was called.
BaremetalPi.init_gpio
— Methodinit_gpio()
Initialize the GPIO.
BaremetalPi.init_i2c
— Methodinit_i2c(devices)
Initialize the I2C devices. devices
can be a string with the path to i2cdev
or a vector of strings with a set of I2C devices that will be initialized.
BaremetalPi.init_spi
— Methodinit_spi(devices; mode = 0, max_speed_hz = 4_000_000, bits_per_word = 8)
Initialize the SPI devices. devices
can be a string with the path to spidev
or a vector of strings with a set of SPI devices that will be initialized.
Keywords
mode
: Set the mode of the SPI. (Default = 0)max_speed_hz
: Maximum allowed speed in SPI communication [Hz]. (Default = 4000000)bits_per_word
: Number of bits per word in SPI communication. (Default = 8)
Notice that all keywords can be a Integer
, when the configuration will be applied to all SPI devices, or a Vector
of Integers
, when different configurations can be applied to the initialized devices.
BaremetalPi.spi_transfer!
— Methodspi_transfer!(devid, tx_buf, rx_buf; kwargs...)
Execute a full duplex transfer to SPI device devid
. devid
is the ID of the SPI device considering the initialization order when the function init_spi
was called.
tx_buf
can be a vector of Integer
, in which only one message will be sent, or a vector of vectors of Integer
, in which multiple messages will be sent.
The received data will be stored in rx_buf
that must have the same type of tx_buf
and enough size.
This function returns the number of bytes received.
This function will not allocate only if the number of messages sent is lower than the constant BaremetalPi._SPI_BUFFER_SIZE
. Otherwise, it will perform an allocation because it must allocate a vector of struct_spi_ioc_transfer
.
Keywords
max_speed_hz
: If > 0, then override the default maximum transfer speed with this value [Hz]. (Default = 0)delay_usecs
: If ≥ 0, then override the default delay with this value. (Default = -1)bits_per_word
: If > 0, then override the number of bits per word with this value. (Default = 0)cs_change
: Iffalse
, the deselect the device at the end of the transfer.
BaremetalPi.spi_transfer
— Methodspi_transfer(devid, tx_buf; kwargs...)
Execute a full duplex transfer to SPI device devid
. devid
is the ID of the SPI device considering the initialization order when the function init_spi
was called.
tx_buf
can be a vector of Integer
, in which only one message will be sent, or a vector of vectors of Integer
, in which multiple messages will be sent.
The result is returned in an object with the same type of tx_buf
together with the number of words received.
This function will perform allocations because they create the vector that will be returned. If this is not desired, then use the in-place version spi_transfer!
.
Keywords
The same keywords of spi_transfer!
can be used.