Function esp_idf_svc::sys::spi_bus_add_device

source ·
pub unsafe extern "C" fn spi_bus_add_device(
    host_id: u32,
    dev_config: *const spi_device_interface_config_t,
    handle: *mut *mut spi_device_t,
) -> i32
Expand description

@brief Allocate a device on a SPI bus

This initializes the internal structures for a device, plus allocates a CS pin on the indicated SPI master peripheral and routes it to the indicated GPIO. All SPI master devices have three CS pins and can thus control up to three devices.

@note While in general, speeds up to 80MHz on the dedicated SPI pins and 40MHz on GPIO-matrix-routed pins are supported, full-duplex transfers routed over the GPIO matrix only support speeds up to 26MHz.

@param host_id SPI peripheral to allocate device on @param dev_config SPI interface protocol config for the device @param handle Pointer to variable to hold the device handle @return - ESP_ERR_INVALID_ARG if parameter is invalid or configuration combination is not supported (e.g. dev_config->post_cb isn’t set while flag SPI_DEVICE_NO_RETURN_RESULT is enabled) - ESP_ERR_INVALID_STATE if selected clock source is unavailable or spi bus not initialized - ESP_ERR_NOT_FOUND if host doesn’t have any free CS slots - ESP_ERR_NO_MEM if out of memory - ESP_OK on success