29#define TR_HAL_NUM_SPI 2
116#define TR_HAL_SPI_TX_FIFO_SIZE 32
117#define TR_HAL_SPI_RX_FIFO_SIZE 32
120#define SPI0_CLK_BIT 20
121#define SPI1_CLK_BIT 21
122#define SPI0_CLK_ENABLE_VALUE 0x100000
123#define SPI1_CLK_ENABLE_VALUE 0x200000
145#define SPI_INVALID_PIN 0xFF
148#define SPI0_CLK_PIN_OPTION1 6
149#define SPI0_CLK_PIN_OPTION2 28
151#define SPI0_IO0_PIN_OPTION1 8
152#define SPI0_IO0_PIN_OPTION2 30
154#define SPI0_IO1_PIN_OPTION1 9
155#define SPI0_IO1_PIN_OPTION2 31
157#define SPI0_IO2_PIN_OPTION1 4
158#define SPI0_IO2_PIN_OPTION2 14
160#define SPI0_IO3_PIN_OPTION1 5
161#define SPI0_IO3_PIN_OPTION2 15
163#define SPI0_MAX_CHIP_SELECT_PINS 4
164#define SPI0_CS0_PIN_OPTION1 7
165#define SPI0_CS0_PIN_OPTION2 29
167#define SPI0_CS1_PIN_OPTION1 1
168#define SPI0_CS1_PIN_OPTION2 2
169#define SPI0_CS1_PIN_OPTION3 3
170#define SPI0_CS1_PIN_OPTION4 4
172#define SPI0_CS2_PIN_OPTION1 1
173#define SPI0_CS2_PIN_OPTION2 2
174#define SPI0_CS2_PIN_OPTION3 3
175#define SPI0_CS2_PIN_OPTION4 4
177#define SPI0_CS3_PIN_OPTION1 1
178#define SPI0_CS3_PIN_OPTION2 2
179#define SPI0_CS3_PIN_OPTION3 3
180#define SPI0_CS3_PIN_OPTION4 4
197#define SPI1_CLK_PIN_OPTION1 28
199#define SPI1_IO0_PIN_OPTION1 30
201#define SPI1_IO1_PIN_OPTION1 31
203#define SPI1_MAX_CHIP_SELECT_PINS 1
204#define SPI1_CS0_PIN_OPTION1 29
216#define CHIP_MEMORY_MAP_SPI0_BASE (0xB0000000UL)
217#define CHIP_MEMORY_MAP_SPI1_BASE (0x80000000UL)
258 __IO uint32_t reserved3[4];
263 __IO uint32_t reserved4[3];
289#define SPI0_REGISTERS ((SPI_REGISTERS_T *) CHIP_MEMORY_MAP_SPI0_BASE)
290#define SPI1_REGISTERS ((SPI_REGISTERS_T *) CHIP_MEMORY_MAP_SPI1_BASE)
294#define SPI_STATUS_TX_IN_PROGRESS 0x01
295#define SPI_STATUS_TX_FIFO_EMPTY 0x04
296#define SPI_STATUS_TX_FIFO_WMARK 0x08
297#define SPI_STATUS_TX_FIFO_FULL 0x10
298#define SPI_STATUS_RX_FIFO_EMPTY 0x20
299#define SPI_STATUS_RX_FIFO_WMARK 0x40
300#define SPI_STATUS_RX_FIFO_FULL 0x80
307#define SPI_CONTROL_REG_CONTINUOUS_TRANSFER 0x01
309#define SPI_CONTROL_REG_BYTE_SWAP 0x02
311#define SPI_CONTROL_REG_MSB_FIRST 0x04
313#define SPI_CONTROL_REG_CPHA_HIGH 0x08
314#define SPI_CONTROL_REG_CPHA_LOW 0x00
316#define SPI_CONTROL_REG_CPOL_HIGH 0x10
317#define SPI_CONTROL_REG_CPOL_LOW 0x00
319#define SPI_CONTROL_REG_SET_AS_CONTROLLER 0x20
320#define SPI_CONTROL_REG_SET_AS_PERIPHERAL 0x00
322#define SPI_CONTROL_REG_SDATA_FOR_CROSSED 0x40
324#define SPI_CONTROL_REG_ENABLE_CONTROLLER_DELAY 0x800
326#define SPI_CONTROL_REG_RX_WMARK_MASK 0x3000
328#define SPI_CONTROL_REG_TX_WMARK_MASK 0xC000
334#define SPI_AUX_CTRL_REG_MODE_MASK 0x03
337#define SPI_AUX_CTRL_REG_PREVENT_TX_BIT 0x04
342#define SPI_AUX_CTRL_REG_PREVENT_RX_BIT 0x08
345#define SPI_AUX_CTRL_REG_BITSIZE_MASK 0x70
349#define SPI_AUX_CTRL_REG_TRANSFER_EXTEND 0x80
356#define SPI_INTERRUPT_TX_EMPTY 0x01
357#define SPI_INTERRUPT_TX_WATERMARK 0x02
358#define SPI_INTERRUPT_RX_WATERMARK 0x04
359#define SPI_INTERRUPT_RX_FULL 0x08
360#define SPI_INTERRUPT_TRANSFER_DONE 0x10
361#define SPI_INTERRUPT_RX_NOT_EMPTY 0x20
363#define SPI_INTERRUPT_ALL 0x3F
364#define SPI_INTERRUPT_NONE 0x00
368#define SPI_PERIPH_SELECT_NONE 0x00
369#define SPI_PERIPH_SELECT_0 0x01
370#define SPI_PERIPH_SELECT_1 0x02
371#define SPI_PERIPH_SELECT_2 0x04
372#define SPI_PERIPH_SELECT_3 0x08
376#define SPI_PERIPH_SELECT_CONTROLLER_ACTIVE_LOW 0x00
377#define SPI_PERIPH_SELECT_CONTROLLER_ACTIVE_HIGH 0x0F
381#define SPI_ENABLE 0x01
382#define SPI_DISABLE 0x00
422#define SPI_DMA_INTERRUPTS_DISABLE 0x00
423#define SPI_DMA_RX_INTERRUPT_ENABLE 0x01
424#define SPI_DMA_TX_INTERRUPT_ENABLE 0x02
428#define SPI_DMA_RX_INTERRUPT_ACTIVE 0x01
429#define SPI_DMA_TX_INTERRUPT_ACTIVE 0x02
433#define SPI_DMA_ENABLE 0x01
434#define SPI_DMA_DISABLE 0x00
437#define SPI_DMA_RX_BUFF_MINIMUM_SIZE 16
453#define TR_HAL_SPI_EVENT_TX_EMPTY 0x00000001
454#define TR_HAL_SPI_EVENT_TX_WMARK 0x00000002
455#define TR_HAL_SPI_EVENT_RX_WMARK 0x00000004
456#define TR_HAL_SPI_EVENT_RX_FULL 0x00000008
457#define TR_HAL_SPI_EVENT_RX_HAS_MORE_DATA 0x00000010
458#define TR_HAL_SPI_EVENT_TRANSFER_DONE 0x00000020
459#define TR_HAL_SPI_EVENT_RX_TO_USER_FX 0x00000040
460#define TR_HAL_SPI_EVENT_RX_READY 0x00000080
461#define TR_HAL_SPI_EVENT_DMA_RX_TO_USER_FX 0x00000100
462#define TR_HAL_SPI_EVENT_DMA_RX_READY 0x00000200
463#define TR_HAL_SPI_EVENT_DMA_TX_COMPLETE 0x00000400
633#define SPI_CONFIG_CONTROLLER_NORMAL_MODE \
635 .run_as_controller = true, \
636 .spi_mode = TR_HAL_SPI_MODE_NORMAL, \
637 .clock_pin = (tr_hal_gpio_pin_t) { SPI0_CLK_PIN_OPTION1 }, \
638 .io_0_pin = (tr_hal_gpio_pin_t) { SPI0_IO0_PIN_OPTION1 }, \
639 .io_1_pin = (tr_hal_gpio_pin_t) { SPI0_IO1_PIN_OPTION1 }, \
640 .io_2_pin = (tr_hal_gpio_pin_t) { SPI_INVALID_PIN }, \
641 .io_3_pin = (tr_hal_gpio_pin_t) { SPI_INVALID_PIN }, \
642 .num_chip_select_pins = 1, \
643 .chip_select_0 = (tr_hal_gpio_pin_t) { SPI0_CS0_PIN_OPTION1 },\
644 .chip_select_1 = (tr_hal_gpio_pin_t) { SPI_INVALID_PIN }, \
645 .chip_select_2 = (tr_hal_gpio_pin_t) { SPI_INVALID_PIN }, \
646 .chip_select_3 = (tr_hal_gpio_pin_t) { SPI_INVALID_PIN }, \
647 .sdo_sdi_pins_crossed = false, \
650 .controller_clock_rate = SPI_CTRL_CLOCK_1_MHZ, \
651 .bit_size = TR_HAL_SPI_BIT_SIZE_8, \
652 .continuous_transfer = true, \
653 .byte_swap = false, \
654 .most_significant_bit_first = true, \
655 .enable_inter_transfer_delay = false, \
656 .delay_in_clock_cycles = 0, \
657 .rx_dma_enabled = false, \
658 .tx_dma_enabled = false, \
659 .rx_dma_buffer = NULL, \
660 .rx_dma_buff_length = 0, \
661 .raw_tx_buffer = NULL, \
662 .raw_tx_buff_length = 0, \
663 .rx_handler_function = NULL, \
664 .event_handler_fx = NULL, \
665 .enable_chip_interrupts = true, \
666 .interrupt_priority = TR_HAL_INTERRUPT_PRIORITY_5, \
667 .wake_on_interrupt = false, \
668 .transmit_watermark = TR_HAL_SPI_TX_WATERMARK_LEVEL_8, \
669 .receive_watermark = TR_HAL_SPI_RX_WATERMARK_LEVEL_8, \
712 uint8_t num_chip_select,
724 uint32_t* transmit_started,
725 uint32_t* transmit_completed,
726 uint32_t* bytes_received);
tr_hal_status_t
Definition tr_hal_common.h:25
tr_hal_status_t tr_hal_spi_clear_tx_busy(tr_hal_spi_id_t spi_id)
tr_hal_spi_bit_size_t
Definition T32CM11_spi.h:89
tr_hal_status_t tr_hal_spi_set_standard_pins(tr_hal_spi_id_t spi_id, tr_hal_gpio_pin_t clk_pin, tr_hal_gpio_pin_t chip_select_0_pin, tr_hal_gpio_pin_t sdo_pin, tr_hal_gpio_pin_t sdi_pin)
tr_hal_status_t tr_hal_spi_read_stats(tr_hal_spi_id_t spi_id, uint32_t *transmit_started, uint32_t *transmit_completed, uint32_t *bytes_received)
tr_hal_status_t tr_hal_spi_power_off(tr_hal_spi_id_t spi_id)
void(* tr_hal_spi_receive_callback_t)(uint8_t num_received_bytes, uint8_t *byte_buffer)
Definition T32CM11_spi.h:471
tr_hal_spi_mode_t
Normal SPI vs Dual SPI vs Quad SPI modes.
Definition T32CM11_spi.h:78
tr_hal_spi_tx_watermark_level_t
Definition T32CM11_spi.h:108
tr_hal_spi_id_t
Definition T32CM11_spi.h:33
tr_hal_status_t tr_hal_spi_power_on(tr_hal_spi_id_t spi_id)
void(* tr_hal_spi_event_callback_t)(tr_hal_spi_id_t spi_id, uint32_t event_bitmask)
Definition T32CM11_spi.h:474
SPI_REGISTERS_T * tr_hal_spi_get_register_address(tr_hal_spi_id_t spi_id)
tr_hal_spi_clock_rate_t
Definition T32CM11_spi.h:406
tr_hal_status_t tr_hal_spi_set_addl_cs_pins(tr_hal_spi_id_t spi_id, uint8_t num_chip_select, tr_hal_gpio_pin_t chip_select_1_pin, tr_hal_gpio_pin_t chip_select_2_pin, tr_hal_gpio_pin_t chip_select_3_pin)
tr_hal_spi_rx_watermark_level_t
Definition T32CM11_spi.h:98
@ TR_HAL_SPI_BIT_SIZE_32
Definition T32CM11_spi.h:91
@ TR_HAL_SPI_BIT_SIZE_8
Definition T32CM11_spi.h:90
@ TR_HAL_SPI_MODE_NORMAL
Definition T32CM11_spi.h:79
@ TR_HAL_SPI_MODE_DUAL
Definition T32CM11_spi.h:80
@ TR_HAL_SPI_MODE_QUAD
Definition T32CM11_spi.h:81
@ TR_HAL_SPI_TX_WATERMARK_LEVEL_16
Definition T32CM11_spi.h:110
@ TR_HAL_SPI_TX_WATERMARK_LEVEL_8
Definition T32CM11_spi.h:109
@ TR_HAL_SPI_TX_WATERMARK_LEVEL_24
Definition T32CM11_spi.h:111
@ SPI_1_ID
Definition T32CM11_spi.h:35
@ SPI_0_ID
Definition T32CM11_spi.h:34
@ SPI_CTRL_CLOCK_250_KHZ
Definition T32CM11_spi.h:414
@ SPI_CTRL_CLOCK_32_MHZ
Definition T32CM11_spi.h:407
@ SPI_CTRL_CLOCK_16_MHZ
Definition T32CM11_spi.h:408
@ SPI_CTRL_CLOCK_125_KHZ
Definition T32CM11_spi.h:415
@ SPI_CTRL_CLOCK_4_MHZ
Definition T32CM11_spi.h:410
@ SPI_CTRL_CLOCK_8_MHZ
Definition T32CM11_spi.h:409
@ SPI_CTRL_CLOCK_500_KHZ
Definition T32CM11_spi.h:413
@ SPI_CTRL_CLOCK_2_MHZ
Definition T32CM11_spi.h:411
@ SPI_CTRL_CLOCK_1_MHZ
Definition T32CM11_spi.h:412
@ TR_HAL_SPI_RX_WATERMARK_LEVEL_16
Definition T32CM11_spi.h:100
@ TR_HAL_SPI_RX_WATERMARK_LEVEL_8
Definition T32CM11_spi.h:99
@ TR_HAL_SPI_RX_WATERMARK_LEVEL_24
Definition T32CM11_spi.h:101
tr_hal_spi_bit_size_t
Definition T32CZ20_spi.h:90
tr_hal_spi_mode_t
Normal SPI vs Dual SPI vs Quad SPI modes.
Definition T32CZ20_spi.h:79
tr_hal_spi_clock_rate_t
Definition T32CZ20_spi.h:353
the struct we use so we can address registers using field names
Definition T32CM11_spi.h:224
__IO uint32_t DMA_tx_buffer_addr
Definition T32CM11_spi.h:270
__IO uint32_t DMA_rx_buffer_len
Definition T32CM11_spi.h:267
__I uint32_t tx_fifo_current_level
Definition T32CM11_spi.h:249
__IO uint32_t DMA_interrupt_enable
Definition T32CM11_spi.h:277
__IO uint32_t spi_control
Definition T32CM11_spi.h:233
__I uint32_t rx_fifo_current_level
Definition T32CM11_spi.h:250
__I uint32_t spi_status
Definition T32CM11_spi.h:237
__IO uint32_t spi_aux_control
Definition T32CM11_spi.h:234
__IO uint32_t DMA_rx_buffer_addr
Definition T32CM11_spi.h:266
__I uint32_t interrupt_status
Definition T32CM11_spi.h:245
__IO uint32_t controller_clock_divider
Definition T32CM11_spi.h:262
__IO uint32_t DMA_interrupt_status
Definition T32CM11_spi.h:278
__IO uint32_t peripheral_select
Definition T32CM11_spi.h:240
__IO uint32_t interrupt_enable
Definition T32CM11_spi.h:244
__IO uint32_t DMA_tx_buffer_len
Definition T32CM11_spi.h:271
__IO uint32_t spi_tx_data
Definition T32CM11_spi.h:226
__IO uint32_t DMA_rx_enable
Definition T32CM11_spi.h:279
__IO int32_t interrupt_clear
Definition T32CM11_spi.h:246
__IO uint32_t spi_enable_disable
Definition T32CM11_spi.h:257
__IO uint32_t peripheral_select_polarity
Definition T32CM11_spi.h:241
__IO uint32_t controller_delay_setting
Definition T32CM11_spi.h:254
__I uint32_t DMA_rx_xfer_len_remaining
Definition T32CM11_spi.h:273
__IO uint32_t DMA_tx_enable
Definition T32CM11_spi.h:280
__I uint32_t spi_rx_data
Definition T32CM11_spi.h:229
__I uint32_t DMA_tx_xfer_len_remaining
Definition T32CM11_spi.h:274
__I uint32_t reserved2
Definition T32CM11_spi.h:251
__I uint32_t reserved1
Definition T32CM11_spi.h:230
pin type
Definition tr_hal_platform.h:23
Definition T32CM11_spi.h:484
tr_hal_gpio_pin_t chip_select_1
Definition T32CM11_spi.h:510
tr_hal_spi_mode_t spi_mode
Definition T32CM11_spi.h:492
bool sdo_sdi_pins_crossed
Definition T32CM11_spi.h:520
bool cpha_bit
Definition T32CM11_spi.h:535
bool tx_dma_enabled
Definition T32CM11_spi.h:569
bool cpol_bit
Definition T32CM11_spi.h:531
tr_hal_gpio_pin_t clock_pin
Definition T32CM11_spi.h:498
tr_hal_spi_tx_watermark_level_t transmit_watermark
Definition T32CM11_spi.h:610
bool byte_swap
Definition T32CM11_spi.h:553
uint8_t * rx_dma_buffer
Definition T32CM11_spi.h:571
bool rx_dma_enabled
Definition T32CM11_spi.h:568
bool continuous_transfer
Definition T32CM11_spi.h:550
uint16_t rx_dma_buff_length
Definition T32CM11_spi.h:572
tr_hal_gpio_pin_t chip_select_0
Definition T32CM11_spi.h:509
bool enable_inter_transfer_delay
Definition T32CM11_spi.h:560
tr_hal_spi_rx_watermark_level_t receive_watermark
Definition T32CM11_spi.h:611
bool run_as_controller
Definition T32CM11_spi.h:489
uint16_t raw_tx_buff_length
Definition T32CM11_spi.h:581
uint16_t delay_in_clock_cycles
Definition T32CM11_spi.h:563
tr_hal_spi_clock_rate_t controller_clock_rate
Definition T32CM11_spi.h:538
bool wake_on_interrupt
Definition T32CM11_spi.h:607
tr_hal_int_pri_t interrupt_priority
Definition T32CM11_spi.h:602
tr_hal_gpio_pin_t io_0_pin
Definition T32CM11_spi.h:500
bool enable_chip_interrupts
Definition T32CM11_spi.h:599
tr_hal_gpio_pin_t io_2_pin
Definition T32CM11_spi.h:504
bool most_significant_bit_first
Definition T32CM11_spi.h:556
tr_hal_gpio_pin_t io_3_pin
Definition T32CM11_spi.h:505
tr_hal_spi_event_callback_t event_handler_fx
Definition T32CM11_spi.h:592
tr_hal_gpio_pin_t io_1_pin
Definition T32CM11_spi.h:502
tr_hal_spi_receive_callback_t rx_handler_function
Definition T32CM11_spi.h:588
tr_hal_gpio_pin_t chip_select_3
Definition T32CM11_spi.h:512
uint8_t num_chip_select_pins
Definition T32CM11_spi.h:508
uint8_t * raw_tx_buffer
Definition T32CM11_spi.h:580
tr_hal_gpio_pin_t chip_select_2
Definition T32CM11_spi.h:511
tr_hal_spi_bit_size_t bit_size
Definition T32CM11_spi.h:544