HPM SDK
HPMicro Software Development Kit
hpm_spi_drv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_SPI_DRV_H
9 #define HPM_SPI_DRV_H
10 #include "hpm_spi_regs.h"
11 #include "hpm_soc_feature.h"
12 
23 typedef enum {
27 
31 typedef enum {
39 
43 typedef enum {
47 
51 typedef enum {
55 
59 typedef enum {
63 
67 typedef enum {
73 
77 typedef enum {
95 
99 typedef enum {
103 
107 typedef enum {
119 
123 typedef enum {
128 
132 typedef enum {
136 
140 typedef enum {
146 
150 typedef struct {
152  uint32_t sclk_freq_in_hz;
153  uint8_t cs2sclk;
154  uint8_t csht;
156 
160 typedef struct {
163 
167 typedef struct {
170 
174 typedef struct {
178  bool lsb;
179  uint8_t mode;
180  uint8_t cpol;
181  uint8_t cpha;
183 
187 typedef struct {
191 
195 typedef struct {
198  uint8_t addr_phase_fmt;
200  uint8_t token_value;
202 
206 typedef struct {
209 
213 typedef struct {
216  uint8_t trans_mode;
217  uint8_t data_phase_fmt;
218  uint8_t dummy_cnt;
219 #if defined(HPM_IP_FEATURE_SPI_CS_SELECT) && (HPM_IP_FEATURE_SPI_CS_SELECT == 1)
220  uint8_t cs_index;
221 #endif
227 typedef struct {
232 
233 #if defined(HPM_IP_FEATURE_SPI_CS_SELECT) && (HPM_IP_FEATURE_SPI_CS_SELECT == 1)
234 typedef enum {
235  spi_cs_0 = 1,
236  spi_cs_1 = 2,
237  spi_cs_2 = 4,
238  spi_cs_3 = 8,
240 #endif
241 
242 typedef enum {
248 
249 #if defined(HPM_IP_FEATURE_SPI_SUPPORT_DIRECTIO) && (HPM_IP_FEATURE_SPI_SUPPORT_DIRECTIO == 1)
250 typedef enum {
251  hold_pin = 0,
256  cs_pin
258 #endif
259 
260 #if defined(__cplusplus)
261 extern "C" {
262 #endif /* __cplusplus */
263 
270 
277 
284 
291 
298 
307 
314 void spi_format_init(SPI_Type *ptr, spi_format_config_t *config);
315 
330  spi_control_config_t *config,
331  uint8_t *cmd, uint32_t *addr,
332  uint8_t *wbuff, uint32_t wcount, uint8_t *rbuff, uint32_t rcount);
333 
346  spi_control_config_t *config,
347  uint8_t *cmd, uint32_t *addr,
348  uint32_t wcount, uint32_t rcount);
349 
359 
369 
378 static inline void spi_set_tx_fifo_threshold(SPI_Type *ptr, uint32_t threshold)
379 {
380  ptr->CTRL = (ptr->CTRL & ~SPI_CTRL_TXTHRES_MASK) | SPI_CTRL_TXTHRES_SET(threshold);
381 }
382 
391 static inline void spi_set_rx_fifo_threshold(SPI_Type *ptr, uint32_t threshold)
392 {
393  ptr->CTRL = (ptr->CTRL & ~SPI_CTRL_RXTHRES_MASK) | SPI_CTRL_RXTHRES_SET(threshold);
394 }
395 
404 static inline void spi_enable_dma(SPI_Type *ptr, uint32_t mask)
405 {
406  ptr->CTRL |= mask;
407 }
408 
417 static inline void spi_disable_dma(SPI_Type *ptr, uint32_t mask)
418 {
419  ptr->CTRL &= ~mask;
420 }
421 
430 static inline uint32_t spi_get_interrupt_status(SPI_Type *ptr)
431 {
432  return ptr->INTRST;
433 }
434 
444 static inline void spi_clear_interrupt_status(SPI_Type *ptr, uint32_t mask)
445 {
446  /* write 1 to clear */
447  ptr->INTRST = mask;
448 }
449 
458 static inline void spi_enable_interrupt(SPI_Type *ptr, uint32_t mask)
459 {
460  ptr->INTREN |= mask;
461 }
462 
471 static inline void spi_disable_interrupt(SPI_Type *ptr, uint32_t mask)
472 {
473  ptr->INTREN &= ~mask;
474 }
475 
490 hpm_stat_t spi_write_read_data(SPI_Type *ptr, uint8_t data_len_in_bytes, uint8_t *wbuff, uint32_t wcount, uint8_t *rbuff, uint32_t rcount);
491 
503 hpm_stat_t spi_read_data(SPI_Type *ptr, uint8_t data_len_in_bytes, uint8_t *buff, uint32_t count);
504 
516 hpm_stat_t spi_write_data(SPI_Type *ptr, uint8_t data_len_in_bytes, uint8_t *buff, uint32_t count);
517 
530 
543 
556 
566 hpm_stat_t spi_control_init(SPI_Type *ptr, spi_control_config_t *config, uint32_t wcount, uint32_t rcount);
567 
574 static inline uint8_t spi_get_data_length_in_bits(SPI_Type *ptr)
575 {
577 }
578 
585 static inline uint8_t spi_get_data_length_in_bytes(SPI_Type *ptr)
586 {
587  return ((spi_get_data_length_in_bits(ptr) + 7U) / 8U);
588 }
589 
596 static inline bool spi_is_active(SPI_Type *ptr)
597 {
598  return ((ptr->STATUS & SPI_STATUS_SPIACTIVE_MASK) == SPI_STATUS_SPIACTIVE_MASK) ? true : false;
599 }
600 
606 static inline void spi_enable_tx_dma(SPI_Type *ptr)
607 {
608  ptr->CTRL |= SPI_CTRL_TXDMAEN_MASK;
609 }
610 
616 static inline void spi_disable_tx_dma(SPI_Type *ptr)
617 {
618  ptr->CTRL &= ~SPI_CTRL_TXDMAEN_MASK;
619 }
620 
626 static inline void spi_enable_rx_dma(SPI_Type *ptr)
627 {
628  ptr->CTRL |= SPI_CTRL_RXDMAEN_MASK;
629 }
630 
636 static inline void spi_disable_rx_dma(SPI_Type *ptr)
637 {
638  ptr->CTRL &= ~SPI_CTRL_RXDMAEN_MASK;
639 }
640 
647 static inline uint32_t spi_slave_get_sent_data_count(SPI_Type *ptr)
648 {
649 #if defined(HPM_IP_FEATURE_SPI_NEW_TRANS_COUNT) && (HPM_IP_FEATURE_SPI_NEW_TRANS_COUNT == 1)
650  return ptr->SLVDATAWCNT;
651 #else
652  return SPI_SLVDATACNT_WCNT_GET(ptr->SLVDATACNT);
653 #endif
654 }
655 
662 static inline uint32_t spi_slave_get_received_data_count(SPI_Type *ptr)
663 {
664 #if defined(HPM_IP_FEATURE_SPI_NEW_TRANS_COUNT) && (HPM_IP_FEATURE_SPI_NEW_TRANS_COUNT == 1)
665  return ptr->SLVDATARCNT;
666 #else
667  return SPI_SLVDATACNT_RCNT_GET(ptr->SLVDATACNT);
668 #endif
669 }
670 
677 static inline void spi_set_clock_phase(SPI_Type *ptr, spi_sclk_sampling_clk_edges_t clock_phase)
678 {
679  ptr->TRANSCTRL |= SPI_TRANSFMT_CPHA_SET(clock_phase);
680 }
681 
689 {
690  return SPI_TRANSFMT_CPHA_GET(ptr->TRANSCTRL);
691 }
692 
699 static inline void spi_set_clock_polarity(SPI_Type *ptr, spi_sclk_idle_state_t clock_polarity)
700 {
701  ptr->TRANSCTRL |= SPI_TRANSFMT_CPOL_SET(clock_polarity);
702 }
703 
711 {
712  return SPI_TRANSFMT_CPOL_GET(ptr->TRANSCTRL);
713 }
714 
722 static inline hpm_stat_t spi_set_data_bits(SPI_Type *ptr, uint8_t nbits)
723 {
724  if (nbits > 32) {
726  } else {
728  return status_success;
729  }
730 }
731 
737 static inline void spi_transmit_fifo_reset(SPI_Type *ptr)
738 {
740 }
741 
747 static inline void spi_receive_fifo_reset(SPI_Type *ptr)
748 {
750 }
751 
757 static inline void spi_reset(SPI_Type *ptr)
758 {
759  ptr->CTRL |= SPI_CTRL_SPIRST_MASK;
760 }
761 
768 static inline void spi_set_address_len(SPI_Type *ptr, spi_address_len_t addrlen)
769 {
771 }
772 
778 static inline void spi_enable_data_merge(SPI_Type *ptr)
779 {
781 }
782 
788 static inline void spi_disable_data_merge(SPI_Type *ptr)
789 {
791 }
792 
793 #if defined(HPM_IP_FEATURE_SPI_SUPPORT_DIRECTIO) && (HPM_IP_FEATURE_SPI_SUPPORT_DIRECTIO == 1)
803 
811 
820 
830 
838 static inline void spi_enable_directio(SPI_Type *ptr)
839 {
841 }
842 
848 static inline void spi_disable_directio(SPI_Type *ptr)
849 {
851 }
852 
860 static inline uint8_t spi_get_directio_enable_status(SPI_Type *ptr)
861 {
863 }
864 
865 #endif
866 
874 static inline uint8_t spi_get_rx_fifo_valid_data_size(SPI_Type *ptr)
875 {
876  return ((SPI_STATUS_RXNUM_7_6_GET(ptr->STATUS) << 5) | SPI_STATUS_RXNUM_5_0_GET(ptr->STATUS));
877 }
878 
886 static inline uint8_t spi_get_tx_fifo_valid_data_size(SPI_Type *ptr)
887 {
888  return ((SPI_STATUS_TXNUM_7_6_GET(ptr->STATUS) << 5) | SPI_STATUS_TXNUM_5_0_GET(ptr->STATUS));
889 }
894 #if defined(__cplusplus)
895 }
896 #endif /* __cplusplus */
897 #endif /* HPM_SPI_DRV_H */
uint32_t hpm_stat_t
Definition: hpm_common.h:119
@ status_invalid_argument
Definition: hpm_common.h:172
@ status_success
Definition: hpm_common.h:170
static bool spi_is_active(SPI_Type *ptr)
SPI get active status.
Definition: hpm_spi_drv.h:596
spi_addr_phase_format_t
spi address phase format
Definition: hpm_spi_drv.h:99
void spi_slave_get_default_control_config(spi_control_config_t *config)
spi slave get default control config
Definition: hpm_spi_drv.c:313
static uint8_t spi_get_tx_fifo_valid_data_size(SPI_Type *ptr)
Get valid data size in transmit FIFO.
Definition: hpm_spi_drv.h:886
static void spi_set_address_len(SPI_Type *ptr, spi_address_len_t addrlen)
set spi the length of address
Definition: hpm_spi_drv.h:768
hpm_stat_t spi_wait_for_idle_status(SPI_Type *ptr)
spi wait for idle status
Definition: hpm_spi_drv.c:16
static void spi_set_clock_polarity(SPI_Type *ptr, spi_sclk_idle_state_t clock_polarity)
set spi clock polarity
Definition: hpm_spi_drv.h:699
static uint8_t spi_get_directio_enable_status(SPI_Type *ptr)
get whether spi directio function is enabled
Definition: hpm_spi_drv.h:860
void spi_master_get_default_control_config(spi_control_config_t *config)
spi master get default control config
Definition: hpm_spi_drv.c:296
static spi_sclk_idle_state_t spi_get_clock_polarity(SPI_Type *ptr)
get spi clock phase
Definition: hpm_spi_drv.h:710
spi_dma_enable_t
spi dma enable
Definition: hpm_spi_drv.h:23
spi_address_len_t
Definition: hpm_spi_drv.h:242
hpm_stat_t spi_setup_dma_transfer(SPI_Type *ptr, spi_control_config_t *config, uint8_t *cmd, uint32_t *addr, uint32_t wcount, uint32_t rcount)
spi setup dma transfer
Definition: hpm_spi_drv.c:469
void spi_master_get_default_format_config(spi_format_config_t *config)
spi master get default format config
Definition: hpm_spi_drv.c:273
hpm_stat_t spi_wait_for_busy_status(SPI_Type *ptr)
spi wait for busy status
Definition: hpm_spi_drv.c:36
void spi_master_get_default_timing_config(spi_timing_config_t *config)
spi master get default timing config
Definition: hpm_spi_drv.c:267
spi_cs2sclk_duration_t
spi cs to sclk edge duration
Definition: hpm_spi_drv.h:67
static void spi_enable_directio(SPI_Type *ptr)
Enable SPI directIO control function.
Definition: hpm_spi_drv.h:838
spi_csht_duration_t
spi cs high level duration
Definition: hpm_spi_drv.h:77
static void spi_disable_tx_dma(SPI_Type *ptr)
SPI disable tx dma.
Definition: hpm_spi_drv.h:616
static void spi_disable_dma(SPI_Type *ptr, uint32_t mask)
Disables the SPI DMA request.
Definition: hpm_spi_drv.h:417
uint8_t spi_directio_read(SPI_Type *ptr, spi_directio_pin_t pin)
Read specified pin level for spi directio.
Definition: hpm_spi_drv.c:596
static uint32_t spi_slave_get_received_data_count(SPI_Type *ptr)
SPI slave get received data count.
Definition: hpm_spi_drv.h:662
hpm_stat_t spi_write_data(SPI_Type *ptr, uint8_t data_len_in_bytes, uint8_t *buff, uint32_t count)
spi write data
Definition: hpm_spi_drv.c:100
spi_cs_index_t
Definition: hpm_spi_drv.h:234
hpm_stat_t spi_directio_enable_output(SPI_Type *ptr, spi_directio_pin_t pin)
enable specific pin output for spi directio
Definition: hpm_spi_drv.c:509
void spi_slave_get_default_format_config(spi_format_config_t *config)
spi slave get default format config
Definition: hpm_spi_drv.c:285
static void spi_transmit_fifo_reset(SPI_Type *ptr)
SPI transmit fifo reset.
Definition: hpm_spi_drv.h:737
hpm_stat_t spi_master_timing_init(SPI_Type *ptr, spi_timing_config_t *config)
spi master timing initialization
Definition: hpm_spi_drv.c:326
static void spi_reset(SPI_Type *ptr)
SPI reset.
Definition: hpm_spi_drv.h:757
hpm_stat_t spi_directio_write(SPI_Type *ptr, spi_directio_pin_t pin, bool high)
write specified pin level for spi directio
Definition: hpm_spi_drv.c:567
hpm_stat_t spi_transfer(SPI_Type *ptr, spi_control_config_t *config, uint8_t *cmd, uint32_t *addr, uint8_t *wbuff, uint32_t wcount, uint8_t *rbuff, uint32_t rcount)
spi transfer
Definition: hpm_spi_drv.c:404
static void spi_enable_rx_dma(SPI_Type *ptr)
SPI enable rx dma.
Definition: hpm_spi_drv.h:626
static void spi_set_clock_phase(SPI_Type *ptr, spi_sclk_sampling_clk_edges_t clock_phase)
set spi clock phase
Definition: hpm_spi_drv.h:677
static void spi_enable_dma(SPI_Type *ptr, uint32_t mask)
Enables the SPI DMA request.
Definition: hpm_spi_drv.h:404
void spi_format_init(SPI_Type *ptr, spi_format_config_t *config)
spi format initialization
Definition: hpm_spi_drv.c:353
spi_directio_pin_t
Definition: hpm_spi_drv.h:250
static uint32_t spi_get_interrupt_status(SPI_Type *ptr)
Get the SPI interrupt status.
Definition: hpm_spi_drv.h:430
static spi_sclk_sampling_clk_edges_t spi_get_clock_phase(SPI_Type *ptr)
get spi clock phase
Definition: hpm_spi_drv.h:688
static uint8_t spi_get_rx_fifo_valid_data_size(SPI_Type *ptr)
Get valid data size in receive FIFO.
Definition: hpm_spi_drv.h:874
spi_interrupt_t
spi interrupt mask
Definition: hpm_spi_drv.h:31
hpm_stat_t spi_read_data(SPI_Type *ptr, uint8_t data_len_in_bytes, uint8_t *buff, uint32_t count)
spi read data
Definition: hpm_spi_drv.c:145
hpm_stat_t spi_read_command(SPI_Type *ptr, spi_mode_selection_t mode, spi_control_config_t *config, uint8_t *cmd)
spi read command
Definition: hpm_spi_drv.c:72
static void spi_enable_data_merge(SPI_Type *ptr)
Enable SPI data merge.
Definition: hpm_spi_drv.h:778
static void spi_clear_interrupt_status(SPI_Type *ptr, uint32_t mask)
Clear the SPI interrupt status.
Definition: hpm_spi_drv.h:444
static uint32_t spi_slave_get_sent_data_count(SPI_Type *ptr)
SPI slave get sent data count.
Definition: hpm_spi_drv.h:647
spi_mode_selection_t
spi mode selection
Definition: hpm_spi_drv.h:43
static void spi_receive_fifo_reset(SPI_Type *ptr)
SPI receive fifo reset.
Definition: hpm_spi_drv.h:747
spi_sclk_idle_state_t
spi clock polarity
Definition: hpm_spi_drv.h:51
static hpm_stat_t spi_set_data_bits(SPI_Type *ptr, uint8_t nbits)
set spi the length of each data unit in bits
Definition: hpm_spi_drv.h:722
spi_sclk_sampling_clk_edges_t
spi clock phase
Definition: hpm_spi_drv.h:59
hpm_stat_t spi_write_read_data(SPI_Type *ptr, uint8_t data_len_in_bytes, uint8_t *wbuff, uint32_t wcount, uint8_t *rbuff, uint32_t rcount)
spi write and read data
Definition: hpm_spi_drv.c:189
spi_token_value_t
spi token value
Definition: hpm_spi_drv.h:132
spi_dummy_count_t
spi dummy count
Definition: hpm_spi_drv.h:140
static void spi_enable_tx_dma(SPI_Type *ptr)
SPI enable tx dma.
Definition: hpm_spi_drv.h:606
static void spi_set_rx_fifo_threshold(SPI_Type *ptr, uint32_t threshold)
SPI set RX FIFO threshold.
Definition: hpm_spi_drv.h:391
static void spi_disable_directio(SPI_Type *ptr)
Disable SPI directIO control function.
Definition: hpm_spi_drv.h:848
static void spi_enable_interrupt(SPI_Type *ptr, uint32_t mask)
Enables the SPI interrupt.
Definition: hpm_spi_drv.h:458
static uint8_t spi_get_data_length_in_bytes(SPI_Type *ptr)
Get the SPI data length in bytes.
Definition: hpm_spi_drv.h:585
hpm_stat_t spi_write_command(SPI_Type *ptr, spi_mode_selection_t mode, spi_control_config_t *config, uint8_t *cmd)
spi write command
Definition: hpm_spi_drv.c:56
static void spi_disable_data_merge(SPI_Type *ptr)
Disable SPI data merge.
Definition: hpm_spi_drv.h:788
hpm_stat_t spi_write_address(SPI_Type *ptr, spi_mode_selection_t mode, spi_control_config_t *config, uint32_t *addr)
spi write address
Definition: hpm_spi_drv.c:86
hpm_stat_t spi_control_init(SPI_Type *ptr, spi_control_config_t *config, uint32_t wcount, uint32_t rcount)
spi control initialization
Definition: hpm_spi_drv.c:365
spi_trans_mode_t
spi transfer mode
Definition: hpm_spi_drv.h:107
hpm_stat_t spi_directio_disable_output(SPI_Type *ptr, spi_directio_pin_t pin)
disable specific pin output for spi directio
Definition: hpm_spi_drv.c:538
static uint8_t spi_get_data_length_in_bits(SPI_Type *ptr)
Get the SPI data length in bits.
Definition: hpm_spi_drv.h:574
static void spi_disable_rx_dma(SPI_Type *ptr)
SPI disable rx dma.
Definition: hpm_spi_drv.h:636
static void spi_set_tx_fifo_threshold(SPI_Type *ptr, uint32_t threshold)
SPI set TX FIFO threshold.
Definition: hpm_spi_drv.h:378
static void spi_disable_interrupt(SPI_Type *ptr, uint32_t mask)
Disables the SPI interrupt.
Definition: hpm_spi_drv.h:471
spi_data_phase_format_t
spi data phase format
Definition: hpm_spi_drv.h:123
@ spi_address_phase_format_single_io_mode
Definition: hpm_spi_drv.h:100
@ spi_address_phase_format_dualquad_io_mode
Definition: hpm_spi_drv.h:101
@ spi_tx_dma_enable
Definition: hpm_spi_drv.h:24
@ spi_rx_dma_enable
Definition: hpm_spi_drv.h:25
@ addrlen_24bit
Definition: hpm_spi_drv.h:245
@ addrlen_8bit
Definition: hpm_spi_drv.h:243
@ addrlen_16bit
Definition: hpm_spi_drv.h:244
@ addrlen_32bit
Definition: hpm_spi_drv.h:246
@ spi_cs2sclk_half_sclk_3
Definition: hpm_spi_drv.h:70
@ spi_cs2sclk_half_sclk_4
Definition: hpm_spi_drv.h:71
@ spi_cs2sclk_half_sclk_2
Definition: hpm_spi_drv.h:69
@ spi_cs2sclk_half_sclk_1
Definition: hpm_spi_drv.h:68
@ spi_csht_half_sclk_7
Definition: hpm_spi_drv.h:84
@ spi_csht_half_sclk_12
Definition: hpm_spi_drv.h:89
@ spi_csht_half_sclk_16
Definition: hpm_spi_drv.h:93
@ spi_csht_half_sclk_13
Definition: hpm_spi_drv.h:90
@ spi_csht_half_sclk_3
Definition: hpm_spi_drv.h:80
@ spi_csht_half_sclk_14
Definition: hpm_spi_drv.h:91
@ spi_csht_half_sclk_2
Definition: hpm_spi_drv.h:79
@ spi_csht_half_sclk_11
Definition: hpm_spi_drv.h:88
@ spi_csht_half_sclk_9
Definition: hpm_spi_drv.h:86
@ spi_csht_half_sclk_10
Definition: hpm_spi_drv.h:87
@ spi_csht_half_sclk_15
Definition: hpm_spi_drv.h:92
@ spi_csht_half_sclk_8
Definition: hpm_spi_drv.h:85
@ spi_csht_half_sclk_1
Definition: hpm_spi_drv.h:78
@ spi_csht_half_sclk_6
Definition: hpm_spi_drv.h:83
@ spi_csht_half_sclk_5
Definition: hpm_spi_drv.h:82
@ spi_csht_half_sclk_4
Definition: hpm_spi_drv.h:81
@ spi_cs_0
Definition: hpm_spi_drv.h:235
@ spi_cs_2
Definition: hpm_spi_drv.h:237
@ spi_cs_3
Definition: hpm_spi_drv.h:238
@ spi_cs_1
Definition: hpm_spi_drv.h:236
@ mosi_pin
Definition: hpm_spi_drv.h:254
@ sclk_pin
Definition: hpm_spi_drv.h:255
@ cs_pin
Definition: hpm_spi_drv.h:256
@ hold_pin
Definition: hpm_spi_drv.h:251
@ miso_pin
Definition: hpm_spi_drv.h:253
@ wp_pin
Definition: hpm_spi_drv.h:252
@ spi_tx_fifo_threshold_int
Definition: hpm_spi_drv.h:35
@ spi_tx_fifo_underflow_int
Definition: hpm_spi_drv.h:33
@ spi_rx_fifo_overflow_int
Definition: hpm_spi_drv.h:32
@ spi_rx_fifo_threshold_int
Definition: hpm_spi_drv.h:34
@ spi_slave_cmd_int
Definition: hpm_spi_drv.h:37
@ spi_end_int
Definition: hpm_spi_drv.h:36
@ spi_slave_mode
Definition: hpm_spi_drv.h:45
@ spi_master_mode
Definition: hpm_spi_drv.h:44
@ spi_sclk_low_idle
Definition: hpm_spi_drv.h:52
@ spi_sclk_high_idle
Definition: hpm_spi_drv.h:53
@ spi_sclk_sampling_odd_clk_edges
Definition: hpm_spi_drv.h:60
@ spi_sclk_sampling_even_clk_edges
Definition: hpm_spi_drv.h:61
@ spi_token_value_0x00
Definition: hpm_spi_drv.h:133
@ spi_token_value_0x69
Definition: hpm_spi_drv.h:134
@ spi_dummy_count_3
Definition: hpm_spi_drv.h:143
@ spi_dummy_count_2
Definition: hpm_spi_drv.h:142
@ spi_dummy_count_1
Definition: hpm_spi_drv.h:141
@ spi_dummy_count_4
Definition: hpm_spi_drv.h:144
@ spi_trans_dummy_write
Definition: hpm_spi_drv.h:116
@ spi_trans_read_only
Definition: hpm_spi_drv.h:110
@ spi_trans_write_dummy_read
Definition: hpm_spi_drv.h:113
@ spi_trans_write_only
Definition: hpm_spi_drv.h:109
@ spi_trans_write_read
Definition: hpm_spi_drv.h:111
@ spi_trans_read_write
Definition: hpm_spi_drv.h:112
@ spi_trans_dummy_read
Definition: hpm_spi_drv.h:117
@ spi_trans_read_dummy_write
Definition: hpm_spi_drv.h:114
@ spi_trans_no_data
Definition: hpm_spi_drv.h:115
@ spi_trans_write_read_together
Definition: hpm_spi_drv.h:108
@ spi_quad_io_mode
Definition: hpm_spi_drv.h:126
@ spi_dual_io_mode
Definition: hpm_spi_drv.h:125
@ spi_single_io_mode
Definition: hpm_spi_drv.h:124
#define SPI_STATUS_SPIACTIVE_MASK
Definition: hpm_spi_regs.h:712
#define SPI_CTRL_RXDMAEN_MASK
Definition: hpm_spi_regs.h:592
#define SPI_STATUS_TXNUM_7_6_GET(x)
Definition: hpm_spi_regs.h:638
#define SPI_INTREN_RXFIFOORINTEN_MASK
Definition: hpm_spi_regs.h:782
#define SPI_STATUS_RXNUM_7_6_GET(x)
Definition: hpm_spi_regs.h:647
#define SPI_CTRL_RXFIFORST_MASK
Definition: hpm_spi_regs.h:614
#define SPI_CTRL_TXFIFORST_MASK
Definition: hpm_spi_regs.h:603
#define SPI_SLVDATACNT_RCNT_GET(x)
Definition: hpm_spi_regs.h:951
#define SPI_INTREN_RXFIFOINTEN_MASK
Definition: hpm_spi_regs.h:758
#define SPI_INTREN_SLVCMDEN_MASK
Definition: hpm_spi_regs.h:724
#define SPI_INTREN_ENDINTEN_MASK
Definition: hpm_spi_regs.h:736
#define SPI_STATUS_RXNUM_5_0_GET(x)
Definition: hpm_spi_regs.h:701
#define SPI_CTRL_RXTHRES_SET(x)
Definition: hpm_spi_regs.h:574
#define SPI_STATUS_TXNUM_5_0_GET(x)
Definition: hpm_spi_regs.h:674
#define SPI_TRANSFMT_ADDRLEN_SET(x)
Definition: hpm_spi_regs.h:81
#define SPI_TRANSFMT_DATALEN_SET(x)
Definition: hpm_spi_regs.h:92
#define SPI_INTREN_TXFIFOINTEN_MASK
Definition: hpm_spi_regs.h:747
#define SPI_CTRL_TXDMAEN_MASK
Definition: hpm_spi_regs.h:582
#define SPI_SLVDATACNT_WCNT_GET(x)
Definition: hpm_spi_regs.h:942
#define SPI_DIRECTIO_DIRECTIOEN_MASK
Definition: hpm_spi_regs.h:175
#define SPI_TRANSFMT_ADDRLEN_MASK
Definition: hpm_spi_regs.h:79
#define SPI_CTRL_TXTHRES_MASK
Definition: hpm_spi_regs.h:561
#define SPI_CTRL_SPIRST_MASK
Definition: hpm_spi_regs.h:625
#define SPI_TRANSFMT_CPOL_GET(x)
Definition: hpm_spi_regs.h:153
#define SPI_TRANSFMT_CPOL_SET(x)
Definition: hpm_spi_regs.h:152
#define SPI_CTRL_TXTHRES_SET(x)
Definition: hpm_spi_regs.h:563
#define SPI_TRANSFMT_DATAMERGE_MASK
Definition: hpm_spi_regs.h:102
#define SPI_DIRECTIO_DIRECTIOEN_GET(x)
Definition: hpm_spi_regs.h:178
#define SPI_TRANSFMT_CPHA_SET(x)
Definition: hpm_spi_regs.h:164
#define SPI_INTREN_TXFIFOURINTEN_MASK
Definition: hpm_spi_regs.h:770
#define SPI_TRANSFMT_CPHA_GET(x)
Definition: hpm_spi_regs.h:165
#define SPI_TRANSFMT_DATALEN_SHIFT
Definition: hpm_spi_regs.h:91
#define SPI_TRANSFMT_DATALEN_MASK
Definition: hpm_spi_regs.h:90
#define SPI_CTRL_RXTHRES_MASK
Definition: hpm_spi_regs.h:572
Definition: hpm_spi_regs.h:12
__RW uint32_t TRANSCTRL
Definition: hpm_spi_regs.h:20
__R uint32_t SLVDATACNT
Definition: hpm_spi_regs.h:31
__RW uint32_t TRANSFMT
Definition: hpm_spi_regs.h:17
__RW uint32_t CTRL
Definition: hpm_spi_regs.h:24
__RW uint32_t INTREN
Definition: hpm_spi_regs.h:26
__W uint32_t INTRST
Definition: hpm_spi_regs.h:27
__R uint32_t SLVDATAWCNT
Definition: hpm_spi_regs.h:32
__R uint32_t STATUS
Definition: hpm_spi_regs.h:25
__R uint32_t SLVDATARCNT
Definition: hpm_spi_regs.h:33
__RW uint32_t DIRECTIO
Definition: hpm_spi_regs.h:18
spi common transfer control config structure
Definition: hpm_spi_drv.h:213
uint8_t dummy_cnt
Definition: hpm_spi_drv.h:218
bool tx_dma_enable
Definition: hpm_spi_drv.h:214
uint8_t cs_index
Definition: hpm_spi_drv.h:220
bool rx_dma_enable
Definition: hpm_spi_drv.h:215
uint8_t data_phase_fmt
Definition: hpm_spi_drv.h:217
uint8_t trans_mode
Definition: hpm_spi_drv.h:216
spi common format config structure
Definition: hpm_spi_drv.h:174
uint8_t mode
Definition: hpm_spi_drv.h:179
uint8_t cpol
Definition: hpm_spi_drv.h:180
uint8_t cpha
Definition: hpm_spi_drv.h:181
bool lsb
Definition: hpm_spi_drv.h:178
bool mosi_bidir
Definition: hpm_spi_drv.h:177
uint8_t data_len_in_bits
Definition: hpm_spi_drv.h:175
bool data_merge
Definition: hpm_spi_drv.h:176
spi control config structure
Definition: hpm_spi_drv.h:227
spi_slave_control_config_t slave_config
Definition: hpm_spi_drv.h:229
spi_master_control_config_t master_config
Definition: hpm_spi_drv.h:228
spi_common_control_config_t common_config
Definition: hpm_spi_drv.h:230
spi format config structure
Definition: hpm_spi_drv.h:187
spi_master_format_config_t master_config
Definition: hpm_spi_drv.h:188
spi_common_format_config_t common_config
Definition: hpm_spi_drv.h:189
spi master transfer control config structure
Definition: hpm_spi_drv.h:195
uint8_t token_value
Definition: hpm_spi_drv.h:200
uint8_t addr_phase_fmt
Definition: hpm_spi_drv.h:198
bool token_enable
Definition: hpm_spi_drv.h:199
bool addr_enable
Definition: hpm_spi_drv.h:197
bool cmd_enable
Definition: hpm_spi_drv.h:196
spi master transfer format config structure
Definition: hpm_spi_drv.h:167
uint8_t addr_len_in_bytes
Definition: hpm_spi_drv.h:168
spi master interface timing config structure
Definition: hpm_spi_drv.h:150
uint32_t sclk_freq_in_hz
Definition: hpm_spi_drv.h:152
uint8_t csht
Definition: hpm_spi_drv.h:154
uint8_t cs2sclk
Definition: hpm_spi_drv.h:153
uint32_t clk_src_freq_in_hz
Definition: hpm_spi_drv.h:151
spi slave transfer control config structure
Definition: hpm_spi_drv.h:206
bool slave_data_only
Definition: hpm_spi_drv.h:207
spi interface timing config structure
Definition: hpm_spi_drv.h:160
spi_master_timing_config_t master_config
Definition: hpm_spi_drv.h:161