SPI Driver
Overview
SPI (Serial Peripheral Interface) is a synchronous serial bus widely used for high-speed device communications.
Functional Description
Multiple SPI instances
Modes 0-3, 3/4-wire, configurable bit width and order
Interrupts for RX/TX, DMA support
Synchronous/async transfers, full-duplex
Development Guide
Init: bk_spi_driver_init(), then bk_spi_init(id, &cfg)
Sync I/O: bk_spi_transmit()
Async I/O: bk_spi_write() / bk_spi_read() and ISR
DMA: bk_spi_dma_read/write/transmit
Notes
Match CPOL/CPHA with the device
Tune clock for signal integrity
API Reference
bk_spi_driver_init/deinit, bk_spi_init/deinit
bk_spi_set_mode/bit_width/wire_mode/baud_rate/bit_order
bk_spi_enable_*_interrupt, bk_spi_register_*_isr
bk_spi_transmit, bk_spi_write, bk_spi_read, bk_spi_duplex_transfer
bk_spi_dma_read, bk_spi_dma_write, bk_spi_dma_transmit
Examples
Synchronous transfer to read JEDEC ID:
uint8_t tx[2] = {0x9F, 0x00}, rx[2] = {0};
bk_spi_transmit(SPI_ID_0, tx, sizeof(tx), rx, sizeof(rx));
Error Codes
BK_ERR_SPI_NOT_INIT, BK_ERR_SPI_INVALID_ID, BK_ERR_SPI_ID_NOT_INIT