61typedef enum : uint8_t {
84typedef enum : uint8_t {
111typedef enum : uint8_t {
517 uint8_t* out_dma_channel);
552 uint8_t* out_dma_channel);
Generic DMA transfer substrate (DMAC engine).
void(* ra8_dma_complete_fn_t)(void *ctx)
Caller-supplied completion callback.
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
ra8_spi_bit_width_t
Per-frame bit width for multi-byte transfers.
@ k_ra8_spi_width_16
16-bit frame -> SPCMDn.SPB = 0b01111.
@ k_ra8_spi_width_32
32-bit frame -> SPCMDn.SPB = 0b11111.
@ k_ra8_spi_width_8
8-bit frame -> SPCMDn.SPB = 0b00111.
ra8_err_t ra8_spi_b_target_xfer(uint8_t channel, uint8_t tx, uint8_t *rx)
Exchange one byte as the SPI target in a polled blocking call.
ra8_err_t ra8_spi_write(uint8_t channel, const void *tx, uint32_t len, ra8_spi_bit_width_t bit_width)
Multi-frame TX-only polling transfer.
ra8_err_t ra8_spi_write_read(uint8_t channel, const void *tx, void *rx, uint32_t len, ra8_spi_bit_width_t bit_width)
Multi-frame full-duplex polling transfer.
ra8_err_t ra8_spi_read_dma(uint8_t channel, uint8_t *out_buf, uint16_t len, ra8_dma_complete_fn_t on_complete, void *ctx, uint8_t *out_dma_channel)
Kick off a DMA-backed RX transfer on an SPI channel.
ra8_err_t ra8_spi_attach_transfer_handler(uint8_t channel, ra8_spi_complete_fn_t fn, void *ctx)
Attach a transfer-complete callback for a channel.
void(* ra8_spi_complete_fn_t)(void *ctx, uint8_t err_mask)
Transfer-complete callback signature.
ra8_err_t ra8_spi_clear_errors(uint8_t channel)
Clear the SPSR error flags.
void ra8_spi_dispatch_spei(uint8_t channel)
Dispatch SPEI – collect + clear errors, fire callback.
ra8_err_t ra8_spi_enter_stop(uint8_t channel)
Put the channel into MSTP-gated stop state.
void ra8_spi_dispatch_spti(uint8_t channel)
Dispatch SPTI – advance TX state.
ra8_err_t ra8_spi_controller_init(uint8_t channel)
Legacy init (1.9 MHz at PCLKA = 125 MHz, mode 0).
ra8_err_t ra8_spi_get_errors(uint8_t channel, uint8_t *out_mask)
Read the SPSR error bits (OVRF, MODERF, PERF, UDRF).
ra8_err_t ra8_spi_b_target_init(uint8_t channel, const ra8_spi_cfg_t *cfg)
Initialise an SPI_B channel in target (peripheral) mode.
ra8_err_t ra8_spi_xfer8(uint8_t channel, uint8_t tx, uint8_t *rx)
Full-duplex 8-bit exchange.
ra8_err_t ra8_spi_read(uint8_t channel, void *rx, uint32_t len, ra8_spi_bit_width_t bit_width)
Multi-frame RX-only polling transfer.
ra8_err_t ra8_spi_exit_stop(uint8_t channel)
Exit MSTP-gated stop state.
void ra8_spi_dispatch_spri(uint8_t channel)
Dispatch SPRI – advance RX state.
ra8_spi_mode_t
CPOL / CPHA combinations.
@ k_ra8_spi_mode_0
CPOL=0, CPHA=0.
@ k_ra8_spi_mode_3
CPOL=1, CPHA=1.
@ k_ra8_spi_mode_1
CPOL=0, CPHA=1.
@ k_ra8_spi_mode_2
CPOL=1, CPHA=0.
ra8_err_t ra8_spi_set_clock(uint8_t channel, uint32_t baud_hz, uint32_t pclka_hz)
Change the SPI clock without tearing down the channel.
ra8_err_t ra8_spi_init(uint8_t channel, const ra8_spi_cfg_t *cfg)
Initialise an SPI channel with a full config descriptor.
ra8_err_t ra8_spi_write_dma(uint8_t channel, const uint8_t *data, uint16_t len, ra8_dma_complete_fn_t on_complete, void *ctx, uint8_t *out_dma_channel)
Kick off a DMA-backed TX transfer on an SPI channel.
ra8_spi_err_mask_t
Bit mask of SPI error flags.
@ k_ra8_spi_err_none
RA8 SPI error none.
@ k_ra8_spi_err_mode
SPSR.MODERF set.
@ k_ra8_spi_err_parity
SPSR.PERF set.
@ k_ra8_spi_err_underrun
SPSR.UDRF set.
@ k_ra8_spi_err_overrun
SPSR.OVRF set.
ra8_err_t ra8_spi_deinit(uint8_t channel)
Tear down a channel.
Configuration descriptor for ra8_spi_init.
bool lsb_first
True for LSB-first transfers.
bool loopback
SPCR2.SPLP=1: internal COPI->CIPO tie (no pins).
uint32_t pclka_hz
Current PCLKA in Hz (for SPBR calc).
uint32_t baud_hz
Target SPI clock in Hz.
ra8_spi_mode_t mode
CPOL / CPHA combination.