API do dispositivo SPI
Para criar um dispositivo SPI, primeiro chame spi_init
, passando uma estrutura spi_config_t
. Essa estrutura define o relógio e os pinos MOSI/MISO, o modo SPI e o callback done
.
spi_dev_t spi_init(spi_config_t *config)
Inicializa uma interface de dispositivo SPI. O argumento config
define os pinos, modo e callbacks para o dispositivo SPI. Contém os seguintes campos:
Campo | Tipo | Descrição |
---|---|---|
sck | pin_t | O pino de clock |
mosi | pin_t | O pino de dados MOSI (ou NO_PIN para desabilitar o MOSI) |
miso | pin_t | O pino de dados MISO (ou NO_PIN para desabilitar o MISO) |
mode | uint32_t | Modo SPI: 0 , 1 , 2 ou 3 (padrão: 0 ) |
done | callback | Chamado quando uma transação SPI termina (veja abaixo) |
user_data | void \* | Dados que serão passados no primeiro argumento do callback done |
A API não suporta um pino CS/SS: cabe ao usuário selecionar/desmarcar a interface SPI chamando spi_start()
e spi_stop()
.
AVISO
Nota: spi_init
só pode ser chamado de chip_init()
. Não ligue mais tarde.
Exemplo:
const spi_config_t spi1 {
.sck = pin_init("SCK", INPUT),
.mosi = pin_init("MOSI", INPUT),
.miso = pin_init("MISO", INPUT),
.mode = 0,
.write_done = chip_spi_done, // Veja o exemplo abaixo
.user_data = chip,
};