spi-master
SPI Master bindings for ESP32 Provides SPI (Serial Peripheral Interface) master functionality for communication with SPI devices
- AssemblyScript
- Zig
- Rust
- TinyGo
- C
- C++
export enum SpiHost {
Spi1 = 0,
Spi2 = 1,
Spi3 = 2
}
export enum SpiDmaChan {
Disabled = 0,
Auto = 1,
Chan1 = 2,
Chan2 = 3
}
export enum SpiError {
Ok = 0,
InvalidArg = 1,
InvalidState = 2,
NotSupported = 3,
Timeout = 4,
NoMemory = 5
}
// @ts-ignore
@external("spi_master", "spi_bus_config_create")
export declare function spiBusConfigCreate(): u32;
// @ts-ignore
@external("spi_master", "spi_bus_config_destroy")
export declare function spiBusConfigDestroy(config: u32): void;
// @ts-ignore
@external("spi_master", "spi_bus_config_set_mosi_io_num")
export declare function spiBusConfigSetMosiIoNum(config: u32, mosiIoNum: i32): void;
// @ts-ignore
@external("spi_master", "spi_bus_config_set_sclk_io_num")
export declare function spiBusConfigSetSclkIoNum(config: u32, sclkIoNum: i32): void;
// @ts-ignore
@external("spi_master", "spi_bus_initialize")
export declare function spiBusInitialize(hostId: i32, busConfig: u32, dmaChan: i32): SpiError;
// @ts-ignore
@external("spi_master", "spi_device_interface_config_create")
export declare function spiDeviceInterfaceConfigCreate(): u32;
// @ts-ignore
@external("spi_master", "spi_device_interface_config_set_spics_io_num")
export declare function spiDeviceInterfaceConfigSetSpicsIoNum(config: u32, spicsIoNum: i32): void;
// @ts-ignore
@external("spi_master", "spi_device_interface_config_destroy")
export declare function spiDeviceInterfaceConfigDestroy(config: u32): void;
// @ts-ignore
@external("spi_master", "spi_bus_add_device")
export declare function spiBusAddDevice(hostId: i32, devConfig: u32, handle: u32): SpiError;
// @ts-ignore
@external("spi_master", "spi_transaction_create")
export declare function spiTransactionCreate(): u32;
// @ts-ignore
@external("spi_master", "spi_transaction_set_length")
export declare function spiTransactionSetLength(transaction: u32, length: i32): void;
// @ts-ignore
@external("spi_master", "spi_transaction_set_tx_buffer")
export declare function spiTransactionSetTxBuffer(transaction: u32, txBuffer: u32): SpiError;
// @ts-ignore
@external("spi_master", "spi_transaction_destroy")
export declare function spiTransactionDestroy(transaction: u32): void;
// @ts-ignore
@external("spi_master", "spi_device_transmit")
export declare function spiDeviceTransmit(handle: u32, transaction: u32): SpiError;
pub const SpiHost = enum(u32) {
spi1 = 0,
spi2 = 1,
spi3 = 2
};
pub const SpiDmaChan = enum(u32) {
disabled = 0,
auto = 1,
chan1 = 2,
chan2 = 3
};
pub const SpiError = enum(u32) {
ok = 0,
invalidArg = 1,
invalidState = 2,
notSupported = 3,
timeout = 4,
noMemory = 5
};
pub extern "spi_master" fn spi_bus_config_create() u32;
pub extern "spi_master" fn spi_bus_config_destroy(config: u32) void;
pub extern "spi_master" fn spi_bus_config_set_mosi_io_num(config: u32, mosi_io_num: i32) void;
pub extern "spi_master" fn spi_bus_config_set_sclk_io_num(config: u32, sclk_io_num: i32) void;
pub extern "spi_master" fn spi_bus_initialize(host_id: i32, bus_config: u32, dma_chan: i32) SpiError;
pub extern "spi_master" fn spi_device_interface_config_create() u32;
pub extern "spi_master" fn spi_device_interface_config_set_spics_io_num(config: u32, spics_io_num: i32) void;
pub extern "spi_master" fn spi_device_interface_config_destroy(config: u32) void;
pub extern "spi_master" fn spi_bus_add_device(host_id: i32, dev_config: u32, handle: u32) SpiError;
pub extern "spi_master" fn spi_transaction_create() u32;
pub extern "spi_master" fn spi_transaction_set_length(transaction: u32, length: i32) void;
pub extern "spi_master" fn spi_transaction_set_tx_buffer(transaction: u32, tx_buffer: u32) SpiError;
pub extern "spi_master" fn spi_transaction_destroy(transaction: u32) void;
pub extern "spi_master" fn spi_device_transmit(handle: u32, transaction: u32) SpiError;
#[derive(Debug, Clone, Copy)]
#[repr(u32)]
pub enum SpiHost {
Spi1 = 0,
Spi2 = 1,
Spi3 = 2
}
#[derive(Debug, Clone, Copy)]
#[repr(u32)]
pub enum SpiDmaChan {
Disabled = 0,
Auto = 1,
Chan1 = 2,
Chan2 = 3
}
#[derive(Debug, Clone, Copy)]
#[repr(u32)]
pub enum SpiError {
Ok = 0,
InvalidArg = 1,
InvalidState = 2,
NotSupported = 3,
Timeout = 4,
NoMemory = 5
}
#[link(wasm_import_module = "spi_master")]
extern "C" {
#[link_name = "spi_bus_config_create"]
fn unsafe_spi_bus_config_create() -> u32;
#[link_name = "spi_bus_config_destroy"]
fn unsafe_spi_bus_config_destroy(config: u32);
#[link_name = "spi_bus_config_set_mosi_io_num"]
fn unsafe_spi_bus_config_set_mosi_io_num(config: u32, mosi_io_num: i32);
#[link_name = "spi_bus_config_set_sclk_io_num"]
fn unsafe_spi_bus_config_set_sclk_io_num(config: u32, sclk_io_num: i32);
#[link_name = "spi_bus_initialize"]
fn unsafe_spi_bus_initialize(host_id: i32, bus_config: u32, dma_chan: i32) -> SpiError;
#[link_name = "spi_device_interface_config_create"]
fn unsafe_spi_device_interface_config_create() -> u32;
#[link_name = "spi_device_interface_config_set_spics_io_num"]
fn unsafe_spi_device_interface_config_set_spics_io_num(config: u32, spics_io_num: i32);
#[link_name = "spi_device_interface_config_destroy"]
fn unsafe_spi_device_interface_config_destroy(config: u32);
#[link_name = "spi_bus_add_device"]
fn unsafe_spi_bus_add_device(host_id: i32, dev_config: u32, handle: u32) -> SpiError;
#[link_name = "spi_transaction_create"]
fn unsafe_spi_transaction_create() -> u32;
#[link_name = "spi_transaction_set_length"]
fn unsafe_spi_transaction_set_length(transaction: u32, length: i32);
#[link_name = "spi_transaction_set_tx_buffer"]
fn unsafe_spi_transaction_set_tx_buffer(transaction: u32, tx_buffer: u32) -> SpiError;
#[link_name = "spi_transaction_destroy"]
fn unsafe_spi_transaction_destroy(transaction: u32);
#[link_name = "spi_device_transmit"]
fn unsafe_spi_device_transmit(handle: u32, transaction: u32) -> SpiError;
}
pub fn spi_bus_config_create() -> u32 {
unsafe {
return unsafe_spi_bus_config_create();
}
}
pub fn spi_bus_config_destroy(config: u32) {
unsafe {
unsafe_spi_bus_config_destroy(config);
}
}
pub fn spi_bus_config_set_mosi_io_num(config: u32, mosi_io_num: i32) {
unsafe {
unsafe_spi_bus_config_set_mosi_io_num(config, mosi_io_num);
}
}
pub fn spi_bus_config_set_sclk_io_num(config: u32, sclk_io_num: i32) {
unsafe {
unsafe_spi_bus_config_set_sclk_io_num(config, sclk_io_num);
}
}
pub fn spi_bus_initialize(host_id: i32, bus_config: u32, dma_chan: i32) -> SpiError {
unsafe {
return unsafe_spi_bus_initialize(host_id, bus_config, dma_chan);
}
}
pub fn spi_device_interface_config_create() -> u32 {
unsafe {
return unsafe_spi_device_interface_config_create();
}
}
pub fn spi_device_interface_config_set_spics_io_num(config: u32, spics_io_num: i32) {
unsafe {
unsafe_spi_device_interface_config_set_spics_io_num(config, spics_io_num);
}
}
pub fn spi_device_interface_config_destroy(config: u32) {
unsafe {
unsafe_spi_device_interface_config_destroy(config);
}
}
pub fn spi_bus_add_device(host_id: i32, dev_config: u32, handle: u32) -> SpiError {
unsafe {
return unsafe_spi_bus_add_device(host_id, dev_config, handle);
}
}
pub fn spi_transaction_create() -> u32 {
unsafe {
return unsafe_spi_transaction_create();
}
}
pub fn spi_transaction_set_length(transaction: u32, length: i32) {
unsafe {
unsafe_spi_transaction_set_length(transaction, length);
}
}
pub fn spi_transaction_set_tx_buffer(transaction: u32, tx_buffer: u32) -> SpiError {
unsafe {
return unsafe_spi_transaction_set_tx_buffer(transaction, tx_buffer);
}
}
pub fn spi_transaction_destroy(transaction: u32) {
unsafe {
unsafe_spi_transaction_destroy(transaction);
}
}
pub fn spi_device_transmit(handle: u32, transaction: u32) -> SpiError {
unsafe {
return unsafe_spi_device_transmit(handle, transaction);
}
}
package spi-master
type SpiHost uint32
const (
Spi1 SpiHost = 0
Spi2 SpiHost = 1
Spi3 SpiHost = 2
)
type SpiDmaChan uint32
const (
Disabled SpiDmaChan = 0
Auto SpiDmaChan = 1
Chan1 SpiDmaChan = 2
Chan2 SpiDmaChan = 3
)
type SpiError uint32
const (
Ok SpiError = 0
InvalidArg SpiError = 1
InvalidState SpiError = 2
NotSupported SpiError = 3
Timeout SpiError = 4
NoMemory SpiError = 5
)
//go:wasmimport spi_master spi_bus_config_create
func SpiBusConfigCreate() uint32;
//go:wasmimport spi_master spi_bus_config_destroy
func SpiBusConfigDestroy(Config uint32);
//go:wasmimport spi_master spi_bus_config_set_mosi_io_num
func SpiBusConfigSetMosiIoNum(Config uint32, MosiIoNum int32);
//go:wasmimport spi_master spi_bus_config_set_sclk_io_num
func SpiBusConfigSetSclkIoNum(Config uint32, SclkIoNum int32);
//go:wasmimport spi_master spi_bus_initialize
func SpiBusInitialize(HostId int32, BusConfig uint32, DmaChan int32) uint32;
//go:wasmimport spi_master spi_device_interface_config_create
func SpiDeviceInterfaceConfigCreate() uint32;
//go:wasmimport spi_master spi_device_interface_config_set_spics_io_num
func SpiDeviceInterfaceConfigSetSpicsIoNum(Config uint32, SpicsIoNum int32);
//go:wasmimport spi_master spi_device_interface_config_destroy
func SpiDeviceInterfaceConfigDestroy(Config uint32);
//go:wasmimport spi_master spi_bus_add_device
func SpiBusAddDevice(HostId int32, DevConfig uint32, Handle uint32) uint32;
//go:wasmimport spi_master spi_transaction_create
func SpiTransactionCreate() uint32;
//go:wasmimport spi_master spi_transaction_set_length
func SpiTransactionSetLength(Transaction uint32, Length int32);
//go:wasmimport spi_master spi_transaction_set_tx_buffer
func SpiTransactionSetTxBuffer(Transaction uint32, TxBuffer uint32) uint32;
//go:wasmimport spi_master spi_transaction_destroy
func SpiTransactionDestroy(Transaction uint32);
//go:wasmimport spi_master spi_device_transmit
func SpiDeviceTransmit(Handle uint32, Transaction uint32) uint32;
typedef enum {
SPI_HOST_SPI1,
SPI_HOST_SPI2,
SPI_HOST_SPI3
} spi_host_t;
typedef enum {
SPI_DMA_CHAN_DISABLED,
SPI_DMA_CHAN_AUTO,
SPI_DMA_CHAN_CHAN1,
SPI_DMA_CHAN_CHAN2
} spi_dma_chan_t;
typedef enum {
SPI_ERROR_OK,
SPI_ERROR_INVALID_ARG,
SPI_ERROR_INVALID_STATE,
SPI_ERROR_NOT_SUPPORTED,
SPI_ERROR_TIMEOUT,
SPI_ERROR_NO_MEMORY
} spi_error_t;
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_bus_config_create")))
extern unsigned int spi_bus_config_create();
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_bus_config_destroy")))
extern void spi_bus_config_destroy(unsigned int config);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_bus_config_set_mosi_io_num")))
extern void spi_bus_config_set_mosi_io_num(unsigned int config, int mosi_io_num);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_bus_config_set_sclk_io_num")))
extern void spi_bus_config_set_sclk_io_num(unsigned int config, int sclk_io_num);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_bus_initialize")))
extern spi_error_t spi_bus_initialize(int host_id, unsigned int bus_config, int dma_chan);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_device_interface_config_create")))
extern unsigned int spi_device_interface_config_create();
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_device_interface_config_set_spics_io_num")))
extern void spi_device_interface_config_set_spics_io_num(unsigned int config, int spics_io_num);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_device_interface_config_destroy")))
extern void spi_device_interface_config_destroy(unsigned int config);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_bus_add_device")))
extern spi_error_t spi_bus_add_device(int host_id, unsigned int dev_config, unsigned int handle);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_transaction_create")))
extern unsigned int spi_transaction_create();
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_transaction_set_length")))
extern void spi_transaction_set_length(unsigned int transaction, int length);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_transaction_set_tx_buffer")))
extern spi_error_t spi_transaction_set_tx_buffer(unsigned int transaction, unsigned int tx_buffer);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_transaction_destroy")))
extern void spi_transaction_destroy(unsigned int transaction);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_device_transmit")))
extern spi_error_t spi_device_transmit(unsigned int handle, unsigned int transaction);
typedef enum {
SPI_HOST_SPI1,
SPI_HOST_SPI2,
SPI_HOST_SPI3
} spi_host_t;
typedef enum {
SPI_DMA_CHAN_DISABLED,
SPI_DMA_CHAN_AUTO,
SPI_DMA_CHAN_CHAN1,
SPI_DMA_CHAN_CHAN2
} spi_dma_chan_t;
typedef enum {
SPI_ERROR_OK,
SPI_ERROR_INVALID_ARG,
SPI_ERROR_INVALID_STATE,
SPI_ERROR_NOT_SUPPORTED,
SPI_ERROR_TIMEOUT,
SPI_ERROR_NO_MEMORY
} spi_error_t;
extern "C" {
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_bus_config_create")))
extern unsigned int spi_bus_config_create();
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_bus_config_destroy")))
extern void spi_bus_config_destroy(unsigned int config);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_bus_config_set_mosi_io_num")))
extern void spi_bus_config_set_mosi_io_num(unsigned int config, int mosi_io_num);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_bus_config_set_sclk_io_num")))
extern void spi_bus_config_set_sclk_io_num(unsigned int config, int sclk_io_num);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_bus_initialize")))
extern spi_error_t spi_bus_initialize(int host_id, unsigned int bus_config, int dma_chan);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_device_interface_config_create")))
extern unsigned int spi_device_interface_config_create();
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_device_interface_config_set_spics_io_num")))
extern void spi_device_interface_config_set_spics_io_num(unsigned int config, int spics_io_num);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_device_interface_config_destroy")))
extern void spi_device_interface_config_destroy(unsigned int config);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_bus_add_device")))
extern spi_error_t spi_bus_add_device(int host_id, unsigned int dev_config, unsigned int handle);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_transaction_create")))
extern unsigned int spi_transaction_create();
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_transaction_set_length")))
extern void spi_transaction_set_length(unsigned int transaction, int length);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_transaction_set_tx_buffer")))
extern spi_error_t spi_transaction_set_tx_buffer(unsigned int transaction, unsigned int tx_buffer);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_transaction_destroy")))
extern void spi_transaction_destroy(unsigned int transaction);
__attribute__((import_module("spi_master")))
__attribute__((import_name("spi_device_transmit")))
extern spi_error_t spi_device_transmit(unsigned int handle, unsigned int transaction);
}