SmartSnippets DA1459x SDK
hw_qspi_v2.h
Go to the documentation of this file.
1 
42 #ifndef HW_QSPI_V2_H_
43 #define HW_QSPI_V2_H_
44 
45 
46 #if dg_configUSE_HW_QSPI
47 
48 #include <stdbool.h>
49 #include <stdint.h>
50 #include <sdk_defs.h>
51 
52 /*
53  * ENUMERATION DEFINITIONS
54  *****************************************************************************************
55  */
56 
60 typedef enum {
64 
68 typedef enum {
72 
76 typedef enum {
81 
85 typedef enum {
90 
94 typedef enum {
98 
102 typedef enum {
108 
112 typedef enum {
116 
120 typedef enum {
124 
129 typedef enum {
135 
139 typedef enum {
143 
149 typedef enum {
154 
163 typedef enum {
169 
177 typedef enum {
181 
188 typedef enum {
192 
199 typedef enum {
203 
211 typedef enum {
221 
226 typedef enum {
232 
237 typedef enum {
243 
247 typedef enum {
254 /*
255  * MACROS DEFINITIONS
256  *****************************************************************************************
257  */
258 #define IS_HW_QSPI_ACCESS_MODE(x) (((x) == HW_QSPI_ACCESS_MODE_MANUAL) || \
259  ((x) == HW_QSPI_ACCESS_MODE_AUTO))
260 
261 #define IS_HW_QSPI_ADDR_SIZE(x) (((x) == HW_QSPI_ADDR_SIZE_24) || \
262  ((x) == HW_QSPI_ADDR_SIZE_32))
263 
264 #define IS_HW_QSPI_BUSY_LEVEL(x) (((x) == HW_QSPI_BUSY_LEVEL_LOW) || \
265  ((x) == HW_QSPI_BUSY_LEVEL_HIGH))
266 
267 #define IS_HW_QSPI_BUS_MODE(x) (((x) >= HW_QSPI_BUS_MODE_SINGLE) && \
268  ((x) <= HW_QSPI_BUS_MODE_QUAD))
269 
270 #define IS_HW_QSPI_CLK_DIV(x) (((x) >= HW_QSPI_CLK_DIV_1) && \
271  ((x) <= HW_QSPI_CLK_DIV_8))
272 
273 #define IS_HW_QSPI_CLK_MODE(x) (((x) == HW_QSPI_CLK_MODE_LOW) || \
274  ((x) == HW_QSPI_CLK_MODE_HIGH))
275 
276 #define IS_HW_QSPI_CONTINUOUS_MODE(x) (((x) == HW_QSPI_CONTINUOUS_MODE_DISABLE) || \
277  ((x) == HW_QSPI_CONTINUOUS_MODE_ENABLE))
278 
279 #define IS_HW_QSPI_DRIVE_CURRENT(x) (((x) >= HW_QSPI_DRIVE_CURRENT_4) && \
280  ((x) <= HW_QSPI_DRIVE_CURRENT_16))
281 
282 #define IS_HW_QSPI_EXTRA_BYTE(x) (((x) == HW_QSPI_EXTRA_BYTE_DISABLE) || \
283  ((x) == HW_QSPI_EXTRA_BYTE_ENABLE))
284 
285 #define IS_HW_QSPI_EXTRA_BYTE_HALF(x) (((x) == HW_QSPI_EXTRA_BYTE_HALF_DISABLE) || \
286  ((x) == HW_QSPI_EXTRA_BYTE_HALF_ENABLE))
287 
288 #define IS_HW_QSPI_HREADY_MODE(x) (((x) == HW_QSPI_HREADY_MODE_WAIT) || \
289  ((x) == HW_QSPI_HREADY_MODE_NO_WAIT))
290 
291 #define IS_HW_QSPI_IO_DIR(x) (((x) == HW_QSPI_IO_DIR_AUTO_SEL) || \
292  ((x) == HW_QSPI_IO_DIR_OUTPUT))
293 
294 #define IS_HW_QSPI_IO_VALUE(x) (((x) == HW_QSPI_IO_VALUE_LOW) || \
295  ((x) == HW_QSPI_IO_VALUE_HIGH))
296 
297 #define IS_HW_QSPI_READ_PIPE(x) (((x) == HW_QSPI_READ_PIPE_DISABLE) || \
298  ((x) == HW_QSPI_READ_PIPE_ENABLE))
299 
300 #define IS_HW_QSPI_READ_PIPE_DELAY(x) (((x) >= HW_QSPI_READ_PIPE_DELAY_0) && \
301  ((x) <= HW_QSPI_READ_PIPE_DELAY_7))
302 
303 #define IS_HW_QSPI_SAMPLING_EDGE(x) (((x) == HW_QSPI_SAMPLING_EDGE_POS) || \
304  ((x) == HW_QSPI_SAMPLING_EDGE_NEG))
305 
306 #define IS_HW_QSPI_SLEW_RATE(x) (((x) >= HW_QSPI_SLEW_RATE_0) && \
307  ((x) <= HW_QSPI_SLEW_RATE_3))
308 
309 #define SUSPEND_RESUME_COUNTER_FREQ_HZ (288000)
310 /*
311  * STRUCTURE DEFINITIONS
312  *****************************************************************************************
313  */
318 typedef union {
319  __IO uint32_t data32;
320  __IO uint16_t data16;
321  __IO uint8_t data8;
323 
327 typedef struct {
338 
342 typedef struct {
351  uint8_t opcode;
356 
360 typedef struct {
363  uint32_t hclk_cycles : 4;
368  uint8_t opcode;
374 
378 typedef struct {
382  uint32_t busy_pos : 3;
384  uint8_t opcode;
385  uint16_t delay_nsec;
390 
394 typedef struct {
396  uint8_t opcode;
398 
402 typedef struct {
406  uint8_t opcode;
408 
412 typedef struct {
417  uint8_t suspend_opcode;
418  uint8_t resume_opcode;
434 
439 typedef void * HW_QSPIC_ID;
440 #define HW_QSPIC ((HW_QSPIC_ID) QSPIC_BASE)
441 
442 /* QSPI Base Address */
443 #define QSPIBA(id) ((QSPIC_Type *) id)
444 
455 #define HW_QSPIC_REG_GETF(id, reg, field) \
456  ((QSPIBA(id)->QSPIC_##reg##_REG & QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Msk) >> \
457  QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Pos)
458 
468 #define HW_QSPIC_REG_SETF(id, reg, field, new_val) \
469  QSPIBA(id)->QSPIC_##reg##_REG = ((QSPIBA(id)->QSPIC_##reg##_REG & \
470  ~QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Msk) | \
471  (QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Msk & \
472  ((new_val) << QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Pos)))
473 
482 #define HW_QSPIC_REG_SET_BIT(id, reg, field) \
483  QSPIBA(id)->QSPIC_##reg##_REG |= (1 << QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Pos)
484 
493 #define HW_QSPIC_REG_CLR_BIT(id, reg, field) \
494  QSPIBA(id)->QSPIC_##reg##_REG &= ~QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Msk
495 
501 __STATIC_FORCEINLINE void hw_qspi_clock_enable(HW_QSPIC_ID id)
502 {
504  REG_SET_BIT(CRG_TOP, CLK_AMBA_REG, QSPI_ENABLE);
506 }
507 
513 __STATIC_FORCEINLINE void hw_qspi_clock_disable(HW_QSPIC_ID id)
514 {
516  REG_CLR_BIT(CRG_TOP, CLK_AMBA_REG, QSPI_ENABLE);
518 }
519 
525 __STATIC_FORCEINLINE void hw_qspi_cs_enable(HW_QSPIC_ID id)
526 {
527  QSPIBA(id)->QSPIC_CTRLBUS_REG = REG_MSK(QSPIC, QSPIC_CTRLBUS_REG, QSPIC_EN_CS);
528 }
529 
535 __STATIC_FORCEINLINE void hw_qspi_cs_disable(HW_QSPIC_ID id)
536 {
537  QSPIBA(id)->QSPIC_CTRLBUS_REG = REG_MSK(QSPIC, QSPIC_CTRLBUS_REG, QSPIC_DIS_CS);
538 }
539 
548 {
549  return (HW_QSPI_BUS_STATUS) HW_QSPIC_REG_GETF(id, STATUS, BUSY);
550 }
551 
560 __STATIC_FORCEINLINE void hw_qspi_set_div(HW_QSPIC_ID id, HW_QSPI_CLK_DIV div)
561 {
562  ASSERT_WARNING(IS_HW_QSPI_CLK_DIV(div));
563 
565  REG_SETF(CRG_TOP, CLK_AMBA_REG, QSPI_DIV, div);
567 }
568 
579 {
580  return (HW_QSPI_CLK_DIV) REG_GETF(CRG_TOP, CLK_AMBA_REG, QSPI_DIV);
581 }
582 
591 __STATIC_FORCEINLINE void hw_qspi_set_manual_access_bus_mode(HW_QSPIC_ID id, HW_QSPI_BUS_MODE bus_mode)
592 {
593  ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(bus_mode));
594 
595  QSPIBA(id)->QSPIC_CTRLBUS_REG = 1 << bus_mode;
596 }
597 
606 __STATIC_FORCEINLINE void hw_qspi_set_access_mode(HW_QSPIC_ID id, HW_QSPI_ACCESS_MODE access_mode)
607 {
608  ASSERT_WARNING(IS_HW_QSPI_ACCESS_MODE(access_mode));
609  // During erasing where QSPIC_ERASE_EN = 1, QSPIC_AUTO_MD switches in read only mode
610  ASSERT_WARNING(HW_QSPIC_REG_GETF(id, ERASECTRL, ERASE_EN) == 0);
611 
612  HW_QSPIC_REG_SETF(id, CTRLMODE, AUTO_MD, access_mode);
613 }
614 
624 {
625  return (HW_QSPI_ACCESS_MODE) HW_QSPIC_REG_GETF(id, CTRLMODE, AUTO_MD);
626 }
627 
636 __STATIC_FORCEINLINE void hw_qspi_set_clock_mode(HW_QSPIC_ID id, HW_QSPI_CLK_MODE clk_mode)
637 {
638  ASSERT_WARNING(IS_HW_QSPI_CLK_MODE(clk_mode));
639 
640  HW_QSPIC_REG_SETF(id, CTRLMODE, CLK_MD, clk_mode);
641 }
642 
652 {
653  return (HW_QSPI_CLK_MODE) HW_QSPIC_REG_GETF(id, CTRLMODE, CLK_MD);
654 }
655 
668 __STATIC_FORCEINLINE void hw_qspi_set_io2_direction(HW_QSPIC_ID id, HW_QSPI_IO_DIR dir)
669 {
670  ASSERT_WARNING(IS_HW_QSPI_IO_DIR(dir));
671 
672  HW_QSPIC_REG_SETF(id, CTRLMODE, IO2_OEN, dir);
673 }
674 
685 {
686  return (HW_QSPI_IO_DIR) HW_QSPIC_REG_GETF(id, CTRLMODE, IO2_OEN);
687 }
688 
701 __STATIC_FORCEINLINE void hw_qspi_set_io3_direction(HW_QSPIC_ID id, HW_QSPI_IO_DIR dir)
702 {
703  ASSERT_WARNING(IS_HW_QSPI_IO_DIR(dir));
704 
705  HW_QSPIC_REG_SETF(id, CTRLMODE, IO3_OEN, dir);
706 }
707 
718 {
719  return (HW_QSPI_IO_DIR) HW_QSPIC_REG_GETF(id, CTRLMODE, IO3_OEN);
720 }
721 
730 __STATIC_FORCEINLINE void hw_qspi_set_io2_value(HW_QSPIC_ID id, HW_QSPI_IO_VALUE value)
731 {
732  ASSERT_WARNING(IS_HW_QSPI_IO_VALUE(value));
733 
734  HW_QSPIC_REG_SETF(id, CTRLMODE, IO2_DAT, (uint32_t) value);
735 }
736 
747 {
748  return (HW_QSPI_IO_VALUE) HW_QSPIC_REG_GETF(id, CTRLMODE, IO2_DAT);
749 }
750 
760 __STATIC_FORCEINLINE void hw_qspi_set_io3_value(HW_QSPIC_ID id, HW_QSPI_IO_VALUE value)
761 {
762  ASSERT_WARNING(IS_HW_QSPI_IO_VALUE(value));
763 
764  HW_QSPIC_REG_SETF(id, CTRLMODE, IO3_DAT, (uint32_t) value);
765 }
766 
777 {
778  return (HW_QSPI_IO_VALUE) HW_QSPIC_REG_GETF(id, CTRLMODE, IO3_DAT);
779 }
780 
789 __STATIC_FORCEINLINE void hw_qspi_set_io(HW_QSPIC_ID id, HW_QSPI_BUS_MODE bus_mode)
790 {
791  ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(bus_mode));
792 
793  uint32_t ctrlmode_reg = QSPIBA(id)->QSPIC_CTRLMODE_REG;
794 
795  if (bus_mode == HW_QSPI_BUS_MODE_SINGLE) {
796  REG_SET_FIELD(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_IO2_OEN, ctrlmode_reg, 1);
797  REG_SET_FIELD(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_IO2_DAT, ctrlmode_reg, 1);
798  REG_SET_FIELD(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_IO3_OEN, ctrlmode_reg, 1);
799  REG_SET_FIELD(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_IO3_DAT, ctrlmode_reg, 1);
800  } else {
801  REG_SET_FIELD(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_IO2_OEN, ctrlmode_reg, 0);
802  REG_SET_FIELD(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_IO2_DAT, ctrlmode_reg, 0);
803  REG_SET_FIELD(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_IO3_OEN, ctrlmode_reg, 0);
804  REG_SET_FIELD(QSPIC, QSPIC_CTRLMODE_REG, QSPIC_IO3_DAT, ctrlmode_reg, 0);
805  }
806 
807  QSPIBA(id)->QSPIC_CTRLMODE_REG = ctrlmode_reg;
808 }
809 
819 {
820  ASSERT_WARNING(IS_HW_QSPI_HREADY_MODE(mode));
821 
822  HW_QSPIC_REG_SETF(id, CTRLMODE, HRDY_MD, mode);
823 }
824 
835 {
836  return (HW_QSPI_HREADY_MODE) HW_QSPIC_REG_GETF(id, CTRLMODE, HRDY_MD);
837 }
838 
848 {
849  ASSERT_WARNING(IS_HW_QSPI_SAMPLING_EDGE(edge));
850 
851  HW_QSPIC_REG_SETF(id, CTRLMODE, RXD_NEG, edge);
852 }
853 
864 {
865  return (HW_QSPI_SAMPLING_EDGE) HW_QSPIC_REG_GETF(id, CTRLMODE, RXD_NEG);
866 }
867 
876 __STATIC_FORCEINLINE void hw_qspi_set_read_pipe(HW_QSPIC_ID id, HW_QSPI_READ_PIPE read_pipe)
877 {
878  ASSERT_WARNING(IS_HW_QSPI_READ_PIPE(read_pipe));
879 
880  HW_QSPIC_REG_SETF(id, CTRLMODE, RPIPE_EN, read_pipe);
881 }
882 
893 {
894  return (HW_QSPI_READ_PIPE) HW_QSPIC_REG_GETF(id, CTRLMODE, RPIPE_EN);
895 }
896 
906 {
907  ASSERT_WARNING(IS_HW_QSPI_READ_PIPE_DELAY(delay));
908 
909  HW_QSPIC_REG_SETF(id, CTRLMODE, PCLK_MD, delay);
910 }
911 
922 {
923  return (HW_QSPI_READ_PIPE_DELAY) HW_QSPIC_REG_GETF(id, CTRLMODE, PCLK_MD);
924 }
925 
935 __STATIC_FORCEINLINE void hw_qspi_set_address_size(HW_QSPIC_ID id, HW_QSPI_ADDR_SIZE addr_size)
936 {
937  ASSERT_WARNING(IS_HW_QSPI_ADDR_SIZE(addr_size));
938 
939  HW_QSPIC_REG_SETF(id, CTRLMODE, USE_32BA, addr_size);
940 }
941 
952 {
953  return (HW_QSPI_ADDR_SIZE) HW_QSPIC_REG_GETF(id, CTRLMODE, USE_32BA);
954 }
955 
964 __STATIC_FORCEINLINE void hw_qspi_set_slew_rate(HW_QSPIC_ID id, HW_QSPI_SLEW_RATE slew_rate)
965 {
966  ASSERT_WARNING(IS_HW_QSPI_SLEW_RATE(slew_rate));
967 
968  HW_QSPIC_REG_SETF(id, GP, PADS_SLEW , slew_rate);
969 }
970 
981 {
982  return (HW_QSPI_SLEW_RATE) HW_QSPIC_REG_GETF(id, GP, PADS_SLEW);
983 }
984 
993 __STATIC_FORCEINLINE void hw_qspi_set_drive_current(HW_QSPIC_ID id, HW_QSPI_DRIVE_CURRENT drive_current)
994 {
995  ASSERT_WARNING(IS_HW_QSPI_DRIVE_CURRENT(drive_current));
996 
997  HW_QSPIC_REG_SETF(id, GP, PADS_DRV, drive_current);
998 }
999 
1010 {
1011  return (HW_QSPI_DRIVE_CURRENT) HW_QSPIC_REG_GETF(id, GP, PADS_DRV);
1012 }
1013 
1020 __STATIC_FORCEINLINE void hw_qspi_set_dummy_bytes(HW_QSPIC_ID id, uint8_t dummy_bytes)
1021 {
1022  ASSERT_WARNING(dummy_bytes < 5);
1023 
1024  if (dummy_bytes == 3) {
1025  HW_QSPIC_REG_SET_BIT(id, BURSTCMDB, DMY_FORCE);
1026  } else {
1027  HW_QSPIC_REG_CLR_BIT(id, BURSTCMDB, DMY_FORCE);
1028  HW_QSPIC_REG_SETF(id, BURSTCMDB, DMY_NUM, ((dummy_bytes == 4) ? 3 : dummy_bytes));
1029  }
1030 }
1031 
1039 __STATIC_FORCEINLINE uint8_t hw_qspi_get_dummy_bytes(HW_QSPIC_ID id)
1040 {
1041  uint8_t dummy_bytes;
1042 
1043  if (HW_QSPIC_REG_GETF(id, BURSTCMDB, DMY_FORCE)) {
1044  return 3;
1045  }
1046 
1047  dummy_bytes = HW_QSPIC_REG_GETF(id, BURSTCMDB, DMY_NUM);
1048 
1049  return (dummy_bytes == 3) ? 4 : dummy_bytes;
1050 }
1051 
1061 __STATIC_FORCEINLINE void hw_qspi_set_read_cs_idle_delay(HW_QSPIC_ID id, uint16_t cs_idle_delay_nsec,
1062  uint32_t clk_freq_hz)
1063 {
1064  uint32_t cs_idle_delay_clk;
1065 
1066  cs_idle_delay_clk = NSEC_TO_CLK_CYCLES(cs_idle_delay_nsec, clk_freq_hz);
1067 
1068  ASSERT_WARNING(cs_idle_delay_clk < 8);
1069  HW_QSPIC_REG_SETF(id, BURSTCMDB, CS_HIGH_MIN, cs_idle_delay_clk);
1070 }
1071 
1081 __STATIC_FORCEINLINE void hw_qspi_set_erase_cs_idle_delay(HW_QSPIC_ID id, uint16_t cs_idle_delay_nsec,
1082  uint32_t clk_freq_hz)
1083 {
1084  uint32_t cs_idle_delay_clk;
1085 
1086  cs_idle_delay_clk = NSEC_TO_CLK_CYCLES(cs_idle_delay_nsec, clk_freq_hz);
1087 
1088  ASSERT_WARNING(cs_idle_delay_clk < 32);
1089  HW_QSPIC_REG_SETF(id, ERASECMDB, ERS_CS_HI, cs_idle_delay_clk);
1090 }
1091 
1099 __STATIC_FORCEINLINE uint32_t hw_qspi_read32(HW_QSPIC_ID id)
1100 {
1101  hw_qspi_data_t *tmp = (hw_qspi_data_t *) &(QSPIBA(id)->QSPIC_READDATA_REG);
1102 
1103  return tmp->data32;
1104 }
1105 
1113 __STATIC_FORCEINLINE uint16_t hw_qspi_read16(HW_QSPIC_ID id)
1114 {
1115  hw_qspi_data_t *tmp = (hw_qspi_data_t *) &(QSPIBA(id)->QSPIC_READDATA_REG);
1116 
1117  return tmp->data16;
1118 }
1119 
1127 __STATIC_FORCEINLINE uint8_t hw_qspi_read8(HW_QSPIC_ID id)
1128 {
1129  hw_qspi_data_t *tmp = (hw_qspi_data_t *) &(QSPIBA(id)->QSPIC_READDATA_REG);
1130 
1131  return tmp->data8;
1132 }
1133 
1141 __STATIC_FORCEINLINE void hw_qspi_write32(HW_QSPIC_ID id, uint32_t data)
1142 {
1143  hw_qspi_data_t *tmp = (hw_qspi_data_t *) &(QSPIBA(id)->QSPIC_WRITEDATA_REG);
1144 
1145  tmp->data32 = SWAP32(data);
1146 }
1147 
1154 __STATIC_FORCEINLINE void hw_qspi_write16(HW_QSPIC_ID id, uint16_t data)
1155 {
1156  hw_qspi_data_t *tmp = (hw_qspi_data_t *) &(QSPIBA(id)->QSPIC_WRITEDATA_REG);
1157 
1158  tmp->data16 = SWAP16(data);
1159 }
1160 
1167 __STATIC_FORCEINLINE void hw_qspi_write8(HW_QSPIC_ID id, uint8_t data)
1168 {
1169  hw_qspi_data_t *tmp = (hw_qspi_data_t *) &(QSPIBA(id)->QSPIC_WRITEDATA_REG);
1170 
1171  tmp->data8 = data;
1172 }
1173 
1184 __STATIC_FORCEINLINE void hw_qspi_dummy32(HW_QSPIC_ID id)
1185 {
1186  hw_qspi_data_t *tmp = (hw_qspi_data_t *) &(QSPIBA(id)->QSPIC_DUMMYDATA_REG);
1187 
1188  tmp->data32 = 0;
1189 }
1190 
1201 __STATIC_FORCEINLINE void hw_qspi_dummy16(HW_QSPIC_ID id)
1202 {
1203  hw_qspi_data_t *tmp = (hw_qspi_data_t *) &(QSPIBA(id)->QSPIC_DUMMYDATA_REG);
1204 
1205  tmp->data16 = 0;
1206 }
1207 
1218 __STATIC_FORCEINLINE void hw_qspi_dummy8(HW_QSPIC_ID id)
1219 {
1220  hw_qspi_data_t *tmp = (hw_qspi_data_t *) &(QSPIBA(id)->QSPIC_DUMMYDATA_REG);
1221 
1222  tmp->data8 = 0;
1223 }
1224 
1233 __RETAINED_CODE void hw_qspi_init(HW_QSPIC_ID id, const hw_qspi_config_t *cfg);
1234 
1247 __STATIC_FORCEINLINE void hw_qspi_read_instr_init(HW_QSPIC_ID id, const hw_qspi_read_instr_config_t *cfg,
1248  uint8_t dummy_bytes, uint32_t sys_clk_freq_hz)
1249 {
1250  uint32_t qspi_clk_freq_hz = sys_clk_freq_hz >> (uint32_t) hw_qspi_get_div(id);
1251  uint32_t delay_clk_cycles = NSEC_TO_CLK_CYCLES(cfg->cs_idle_delay_nsec, qspi_clk_freq_hz);
1252  uint32_t burstcmda_reg = QSPIBA(id)->QSPIC_BURSTCMDA_REG;
1253  uint32_t burstcmdb_reg = QSPIBA(id)->QSPIC_BURSTCMDB_REG;
1254 
1255  ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(cfg->opcode_bus_mode));
1256  ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(cfg->addr_bus_mode));
1257  ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(cfg->extra_byte_bus_mode));
1258  ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(cfg->dummy_bus_mode));
1259  ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(cfg->data_bus_mode));
1260  ASSERT_WARNING(IS_HW_QSPI_EXTRA_BYTE(cfg->extra_byte_cfg));
1261  ASSERT_WARNING(IS_HW_QSPI_EXTRA_BYTE_HALF(cfg->extra_byte_half_cfg));
1262  ASSERT_WARNING(IS_HW_QSPI_CONTINUOUS_MODE(cfg->continuous_mode));
1263  ASSERT_WARNING(dummy_bytes < 5);
1264  ASSERT_WARNING(delay_clk_cycles < 8);
1265 
1266  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDA_REG, QSPIC_INST, burstcmda_reg, cfg->opcode);
1267  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDA_REG, QSPIC_EXT_BYTE, burstcmda_reg, cfg->extra_byte_value);
1268  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDA_REG, QSPIC_INST_TX_MD, burstcmda_reg, cfg->opcode_bus_mode);
1269  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDA_REG, QSPIC_ADR_TX_MD, burstcmda_reg, cfg->addr_bus_mode);
1270  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDA_REG, QSPIC_EXT_TX_MD, burstcmda_reg, cfg->extra_byte_bus_mode);
1271  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDA_REG, QSPIC_DMY_TX_MD, burstcmda_reg, cfg->dummy_bus_mode);
1272 
1273  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DAT_RX_MD, burstcmdb_reg, cfg->data_bus_mode);
1274  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_EXT_BYTE_EN, burstcmdb_reg, cfg->extra_byte_cfg);
1275  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_EXT_HF_DS, burstcmdb_reg, cfg->extra_byte_half_cfg);
1276  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_INST_MD, burstcmdb_reg, cfg->continuous_mode);
1277 
1278  if (dummy_bytes == 3) {
1279  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_FORCE, burstcmdb_reg, 1);
1280  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_NUM, burstcmdb_reg, 0);
1281  } else {
1282  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_FORCE, burstcmdb_reg, 0);
1283  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_NUM, burstcmdb_reg,
1284  ((dummy_bytes == 4) ? 3 : dummy_bytes));
1285  }
1286 
1287  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_INST_MD, burstcmdb_reg, cfg->continuous_mode);
1288  REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_CS_HIGH_MIN, burstcmdb_reg, delay_clk_cycles);
1289 
1290  QSPIBA(id)->QSPIC_BURSTCMDA_REG = burstcmda_reg;
1291  QSPIBA(id)->QSPIC_BURSTCMDB_REG = burstcmdb_reg;
1292 }
1293 
1306 __STATIC_FORCEINLINE void hw_qspi_erase_instr_init(HW_QSPIC_ID id, const hw_qspi_erase_instr_config_t *cfg,
1307  uint32_t sys_clk_freq_hz)
1308 {
1309  uint32_t qspi_clk_freq_hz = sys_clk_freq_hz >> (uint32_t) hw_qspi_get_div(id);
1310  uint32_t delay_clk_cycles = NSEC_TO_CLK_CYCLES(cfg->cs_idle_delay_nsec, qspi_clk_freq_hz);
1311  uint32_t erasecmdb_reg = QSPIBA(id)->QSPIC_ERASECMDB_REG;
1312 
1313  ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(cfg->opcode_bus_mode));
1314  ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(cfg->addr_bus_mode));
1315  ASSERT_WARNING(cfg->hclk_cycles < 16);
1316  ASSERT_WARNING(delay_clk_cycles < 32);
1317 
1318  HW_QSPIC_REG_SETF(id, ERASECMDA, ERS_INST, cfg->opcode);
1319 
1320  REG_SET_FIELD(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_ERS_TX_MD, erasecmdb_reg, cfg->opcode_bus_mode);
1321  REG_SET_FIELD(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_EAD_TX_MD, erasecmdb_reg, cfg->addr_bus_mode);
1322  REG_SET_FIELD(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_ERSRES_HLD, erasecmdb_reg, cfg->hclk_cycles);
1323  REG_SET_FIELD(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_ERS_CS_HI, erasecmdb_reg, delay_clk_cycles);
1324 
1325  QSPIBA(id)->QSPIC_ERASECMDB_REG = erasecmdb_reg;
1326 }
1327 
1342  uint32_t sys_clk_freq_hz)
1343 {
1344  uint32_t qspi_clk_freq_hz = sys_clk_freq_hz >> (uint32_t) hw_qspi_get_div(id);
1345  uint32_t delay_clk_cycles = NSEC_TO_CLK_CYCLES(cfg->delay_nsec, qspi_clk_freq_hz);
1346  uint32_t statuscmd_reg = QSPIBA(id)->QSPIC_STATUSCMD_REG;
1347 
1348  ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(cfg->opcode_bus_mode));
1349  ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(cfg->receive_bus_mode));
1350  ASSERT_WARNING(IS_HW_QSPI_BUSY_LEVEL(cfg->busy_level));
1351  ASSERT_WARNING(cfg->busy_pos < 8);
1352  ASSERT_WARNING(delay_clk_cycles < 64);
1353 
1354  REG_SET_FIELD(QSPIC, QSPIC_STATUSCMD_REG, QSPIC_RSTAT_INST, statuscmd_reg, cfg->opcode);
1355  REG_SET_FIELD(QSPIC, QSPIC_STATUSCMD_REG, QSPIC_RSTAT_TX_MD, statuscmd_reg, cfg->opcode_bus_mode);
1356  REG_SET_FIELD(QSPIC, QSPIC_STATUSCMD_REG, QSPIC_RSTAT_RX_MD, statuscmd_reg, cfg->receive_bus_mode);
1357  REG_SET_FIELD(QSPIC, QSPIC_STATUSCMD_REG, QSPIC_BUSY_POS, statuscmd_reg, cfg->busy_pos);
1358  REG_SET_FIELD(QSPIC, QSPIC_STATUSCMD_REG, QSPIC_BUSY_VAL, statuscmd_reg, cfg->busy_level);
1359  REG_SET_FIELD(QSPIC, QSPIC_STATUSCMD_REG, QSPIC_RESSTS_DLY, statuscmd_reg, delay_clk_cycles);
1360  REG_SET_FIELD(QSPIC, QSPIC_STATUSCMD_REG, QSPIC_STSDLY_SEL, statuscmd_reg, 0);
1361 
1362  QSPIBA(id)->QSPIC_STATUSCMD_REG = statuscmd_reg;
1363 }
1364 
1374 {
1375  ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(cfg->opcode_bus_mode));
1376 
1377  HW_QSPIC_REG_SETF(id, ERASECMDA, WEN_INST, cfg->opcode);
1378  HW_QSPIC_REG_SETF(id, ERASECMDB, WEN_TX_MD, cfg->opcode_bus_mode);
1379 }
1380 
1391 {
1392  uint32_t res_sus_latency_clk_cycles = NSEC_TO_CLK_CYCLES((1000 * cfg->res_sus_latency_usec), SUSPEND_RESUME_COUNTER_FREQ_HZ);
1393 
1394  uint32_t erasecmda_reg = QSPIBA(id)->QSPIC_ERASECMDA_REG;
1395  uint32_t erasecmdb_reg = QSPIBA(id)->QSPIC_ERASECMDB_REG;
1396 
1397  ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(cfg->suspend_bus_mode));
1398  ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(cfg->resume_bus_mode));
1399  ASSERT_WARNING(res_sus_latency_clk_cycles < 64);
1400 
1401  REG_SET_FIELD(QSPIC, QSPIC_ERASECMDA_REG, QSPIC_SUS_INST, erasecmda_reg, cfg->suspend_opcode);
1402 
1403  REG_SET_FIELD(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_SUS_TX_MD, erasecmdb_reg, cfg->suspend_bus_mode);
1404  REG_SET_FIELD(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_RES_TX_MD, erasecmdb_reg, cfg->resume_bus_mode);
1405  REG_SET_FIELD(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_RESSUS_DLY, erasecmdb_reg, res_sus_latency_clk_cycles);
1406 
1407  QSPIBA(id)->QSPIC_ERASECMDA_REG = erasecmda_reg;
1408  QSPIBA(id)->QSPIC_ERASECMDB_REG = erasecmdb_reg;
1409 }
1410 
1425  HW_QSPI_ADDR_SIZE addr_size)
1426 {
1427  uint32_t burstbrk_reg = QSPIBA(id)->QSPIC_BURSTBRK_REG;
1428 
1429  REG_SET_FIELD(QSPIC, QSPIC_BURSTBRK_REG, QSPIC_BRK_WRD, burstbrk_reg, 0xFFFF);
1430  REG_SET_FIELD(QSPIC, QSPIC_BURSTBRK_REG, QSPIC_BRK_TX_MD, burstbrk_reg, HW_QSPI_BUS_MODE_SINGLE);
1431  REG_SET_FIELD(QSPIC, QSPIC_BURSTBRK_REG, QSPIC_SEC_HF_DS, burstbrk_reg, 0);
1432  REG_SET_FIELD(QSPIC, QSPIC_BURSTBRK_REG, QSPIC_BRK_EN, burstbrk_reg, mode);
1433  REG_SET_FIELD(QSPIC, QSPIC_BURSTBRK_REG, QSPIC_BRK_SZ, burstbrk_reg, ((addr_size == HW_QSPI_ADDR_SIZE_32) ? 1 : 0));
1434 
1435  QSPIBA(id)->QSPIC_BURSTBRK_REG = burstbrk_reg;
1436 }
1437 
1445 __STATIC_FORCEINLINE void hw_qspi_set_erase_address(HW_QSPIC_ID id, uint32_t erase_addr)
1446 {
1447  HW_QSPIC_REG_SETF(id, ERASECTRL, ERS_ADDR, erase_addr);
1448 }
1449 
1456 __STATIC_FORCEINLINE void hw_qspi_trigger_erase(HW_QSPIC_ID id)
1457 {
1458  HW_QSPIC_REG_SET_BIT(id, ERASECTRL, ERASE_EN);
1459 }
1460 
1471 {
1472  // Dummy access to QSPIC_CHCKERASE_REG in order to trigger a read status command
1473  HW_QSPIC_REG_SETF(id, CHCKERASE, CHCKERASE, 0);
1474  return (HW_QSPI_ERASE_STATUS) HW_QSPIC_REG_GETF(id, ERASECTRL, ERS_STATE);
1475 }
1476 
1494 __RETAINED_CODE void hw_qspi_erase_block(HW_QSPIC_ID id, uint32_t addr);
1495 
1511 __STATIC_FORCEINLINE void hw_qspi_set_extra_byte(HW_QSPIC_ID id, uint8_t extra_byte,
1512  HW_QSPI_BUS_MODE bus_mode, bool half_disable_out)
1513 {
1514  HW_QSPIC_REG_SETF(id, BURSTCMDA, EXT_BYTE, extra_byte);
1515  HW_QSPIC_REG_SETF(id, BURSTCMDA, EXT_TX_MD, bus_mode);
1516 
1517  HW_QSPIC_REG_SETF(id, BURSTCMDB, EXT_BYTE_EN, 1);
1518  HW_QSPIC_REG_SETF(id, BURSTCMDB, EXT_HF_DS, half_disable_out);
1519 }
1520 
1528 {
1529  HW_QSPIC_REG_SET_BIT(id, BURSTBRK, BRK_EN);
1530 }
1531 
1539 {
1540  HW_QSPIC_REG_CLR_BIT(id, BURSTBRK, BRK_EN);
1541 }
1542 #endif /* dg_configUSE_HW_QSPI */
1543 
1544 
1545 #endif /* HW_QSPI_V2_H_ */
1546 
HW_QSPI_READ_PIPE_DELAY_3
Definition: hw_qspi_v2.h:215
hw_qspi_set_access_mode
__STATIC_FORCEINLINE void hw_qspi_set_access_mode(HW_QSPIC_ID id, HW_QSPI_ACCESS_MODE access_mode)
Set QSPIC access mode.
Definition: hw_qspi_v2.h:606
hw_qspi_trigger_erase
__STATIC_FORCEINLINE void hw_qspi_trigger_erase(HW_QSPIC_ID id)
Trigger erase block/sector.
Definition: hw_qspi_v2.h:1456
hw_qspi_erase_instr_config_t::hclk_cycles
uint32_t hclk_cycles
Definition: hw_qspi_v2.h:363
HW_QSPI_EXTRA_BYTE
HW_QSPI_EXTRA_BYTE
QSPIC extra byte setting in auto access mode.
Definition: hw_qspi_v2.h:139
HW_QSPI_ADDR_SIZE_32
Definition: hw_qspi_v2.h:70
HW_QSPI_SLEW_RATE_0
Definition: hw_qspi_v2.h:238
hw_qspi_suspend_resume_instr_config_t::res_sus_latency_usec
uint16_t res_sus_latency_usec
Definition: hw_qspi_v2.h:429
hw_qspi_get_drive_current
__STATIC_FORCEINLINE HW_QSPI_DRIVE_CURRENT hw_qspi_get_drive_current(HW_QSPIC_ID id)
Get drive current of QSPIC pads.
Definition: hw_qspi_v2.h:1009
REG_SETF
#define REG_SETF(base, reg, field, new_val)
Set the value of a register field.
Definition: sdk_defs.h:738
HW_QSPI_ADDR_SIZE_24
Definition: hw_qspi_v2.h:69
hw_qspi_config_t::read_pipe_delay
HW_QSPI_READ_PIPE_DELAY read_pipe_delay
Definition: hw_qspi_v2.h:333
HW_QSPI_SLEW_RATE
HW_QSPI_SLEW_RATE
QSPIC pads slew rate.
Definition: hw_qspi_v2.h:237
REG_CLR_BIT
#define REG_CLR_BIT(base, reg, field)
Clear a bit of a register.
Definition: sdk_defs.h:781
hw_qspi_erase_instr_config_t::cs_idle_delay_nsec
uint16_t cs_idle_delay_nsec
Definition: hw_qspi_v2.h:369
hw_qspi_set_erase_cs_idle_delay
__STATIC_FORCEINLINE void hw_qspi_set_erase_cs_idle_delay(HW_QSPIC_ID id, uint16_t cs_idle_delay_nsec, uint32_t clk_freq_hz)
Set the minimum number of clocks cycles that CS stays in idle mode, between a write enable,...
Definition: hw_qspi_v2.h:1081
hw_qspi_set_slew_rate
__STATIC_FORCEINLINE void hw_qspi_set_slew_rate(HW_QSPIC_ID id, HW_QSPI_SLEW_RATE slew_rate)
Set slew rate of QSPIC pads.
Definition: hw_qspi_v2.h:964
HW_QSPIC_REG_GETF
#define HW_QSPIC_REG_GETF(id, reg, field)
Get the value of a field of a QSPIC register.
Definition: hw_qspi_v2.h:455
hw_qspi_read_instr_config_t::extra_byte_bus_mode
HW_QSPI_BUS_MODE extra_byte_bus_mode
Definition: hw_qspi_v2.h:345
REG_SET_BIT
#define REG_SET_BIT(base, reg, field)
Set a bit of a register.
Definition: sdk_defs.h:766
hw_qspi_read_instr_config_t::continuous_mode
HW_QSPI_CONTINUOUS_MODE continuous_mode
Definition: hw_qspi_v2.h:348
HW_QSPIC_ID
void * HW_QSPIC_ID
QSPI Controller ID.
Definition: hw_qspi_v2.h:439
hw_qspi_read_instr_config_t::addr_bus_mode
HW_QSPI_BUS_MODE addr_bus_mode
Definition: hw_qspi_v2.h:344
hw_qspi_dummy8
__STATIC_FORCEINLINE void hw_qspi_dummy8(HW_QSPIC_ID id)
Generate clock pulses on the SPI bus for an 8-bit transfer.
Definition: hw_qspi_v2.h:1218
HW_QSPI_EXTRA_BYTE_ENABLE
Definition: hw_qspi_v2.h:141
hw_qspi_cs_enable
__STATIC_FORCEINLINE void hw_qspi_cs_enable(HW_QSPIC_ID id)
Enable CS on QSPI bus in manual access mode.
Definition: hw_qspi_v2.h:525
hw_qspi_read32
__STATIC_FORCEINLINE uint32_t hw_qspi_read32(HW_QSPIC_ID id)
Generate 32 bits data transfer from the external device to the QSPIC (manual mode)
Definition: hw_qspi_v2.h:1099
hw_qspi_suspend_resume_instr_init
__STATIC_FORCEINLINE void hw_qspi_suspend_resume_instr_init(HW_QSPIC_ID id, const hw_qspi_suspend_resume_instr_config_t *cfg)
Initialize the program and erase suspend/resume instruction of the QSPIC.
Definition: hw_qspi_v2.h:1390
hw_qspi_read_status_instr_config_t::busy_pos
uint32_t busy_pos
Definition: hw_qspi_v2.h:382
HW_QSPI_CLK_DIV_4
Definition: hw_qspi_v2.h:105
HW_QSPI_IO_VALUE_HIGH
Definition: hw_qspi_v2.h:190
HW_QSPI_READ_PIPE_DISABLE
Definition: hw_qspi_v2.h:200
HW_QSPI_READ_PIPE_ENABLE
Definition: hw_qspi_v2.h:201
hw_qspi_erase_block
__RETAINED_CODE void hw_qspi_erase_block(HW_QSPIC_ID id, uint32_t addr)
Erase block/sector of flash memory.
HW_QSPI_HREADY_MODE_WAIT
Definition: hw_qspi_v2.h:164
hw_qspi_read16
__STATIC_FORCEINLINE uint16_t hw_qspi_read16(HW_QSPIC_ID id)
Generate 16 bits data transfer from the external device to the QSPIC (manual mode)
Definition: hw_qspi_v2.h:1113
HW_QSPI_READ_PIPE
HW_QSPI_READ_PIPE
QSPIC read pipe setting.
Definition: hw_qspi_v2.h:199
HW_QSPI_ACCESS_MODE_AUTO
Definition: hw_qspi_v2.h:62
hw_qspi_read_instr_config_t::opcode_bus_mode
HW_QSPI_BUS_MODE opcode_bus_mode
Definition: hw_qspi_v2.h:343
HW_QSPI_READ_PIPE_DELAY_4
Definition: hw_qspi_v2.h:216
HW_QSPIC_REG_SET_BIT
#define HW_QSPIC_REG_SET_BIT(id, reg, field)
Set a bit of a QSPIC register.
Definition: hw_qspi_v2.h:482
hw_qspi_page_program_instr_config_t::opcode
uint8_t opcode
Definition: hw_qspi_v2.h:406
hw_qspi_page_program_instr_config_t::opcode_bus_mode
HW_QSPI_BUS_MODE opcode_bus_mode
Definition: hw_qspi_v2.h:403
hw_qspi_get_io3_direction
__STATIC_FORCEINLINE HW_QSPI_IO_DIR hw_qspi_get_io3_direction(HW_QSPIC_ID id)
Get QSPI_IO3 direction.
Definition: hw_qspi_v2.h:717
HW_QSPI_BUS_MODE_QUAD
Definition: hw_qspi_v2.h:79
HW_QSPI_BUS_MODE_SINGLE
Definition: hw_qspi_v2.h:77
hw_qspi_config_t::clock_mode
HW_QSPI_CLK_MODE clock_mode
Definition: hw_qspi_v2.h:330
hw_qspi_exit_continuous_mode_sequence_disable
__STATIC_FORCEINLINE void hw_qspi_exit_continuous_mode_sequence_disable(HW_QSPIC_ID id)
Disable the 'exit from continuous read mode' sequence in automode.
Definition: hw_qspi_v2.h:1538
HW_QSPI_EXTRA_BYTE_HALF
HW_QSPI_EXTRA_BYTE_HALF
QSPIC extra byte half setting in auto access mode.
Definition: hw_qspi_v2.h:149
hw_qspi_read_instr_config_t::data_bus_mode
HW_QSPI_BUS_MODE data_bus_mode
Definition: hw_qspi_v2.h:347
hw_qspi_read_status_instr_config_t
QSPIC read status instruction configuration structure (auto access mode)
Definition: hw_qspi_v2.h:378
hw_qspi_set_io
__STATIC_FORCEINLINE void hw_qspi_set_io(HW_QSPIC_ID id, HW_QSPI_BUS_MODE bus_mode)
Set the direction and the level of QSPIC IOs based on the Bus Mode.
Definition: hw_qspi_v2.h:789
hw_qspi_erase_instr_init
__STATIC_FORCEINLINE void hw_qspi_erase_instr_init(HW_QSPIC_ID id, const hw_qspi_erase_instr_config_t *cfg, uint32_t sys_clk_freq_hz)
Initialize the erase instruction of the QSPIC.
Definition: hw_qspi_v2.h:1306
sdk_defs.h
Central include header file with platform definitions.
HW_QSPI_SAMPLING_EDGE_POS
Definition: hw_qspi_v2.h:227
hw_qspi_write_enable_instr_config_t
QSPIC write enable instruction configuration structure (auto access mode)
Definition: hw_qspi_v2.h:394
hw_qspi_init
__RETAINED_CODE void hw_qspi_init(HW_QSPIC_ID id, const hw_qspi_config_t *cfg)
Initialize the QSPI controller (QSPIC)
hw_qspi_config_t::address_size
HW_QSPI_ADDR_SIZE address_size
Definition: hw_qspi_v2.h:328
HW_QSPI_IO_VALUE
HW_QSPI_IO_VALUE
QSPIC IO2/IO3 pad value.
Definition: hw_qspi_v2.h:188
HW_QSPI_CLK_DIV
HW_QSPI_CLK_DIV
QSPIC clock divider.
Definition: hw_qspi_v2.h:102
hw_qspi_dummy16
__STATIC_FORCEINLINE void hw_qspi_dummy16(HW_QSPIC_ID id)
Generate clock pulses on the SPI bus for a 16-bit transfer.
Definition: hw_qspi_v2.h:1201
HW_QSPI_ERASE_STATUS_RUNNING
Definition: hw_qspi_v2.h:250
HW_QSPI_SLEW_RATE_3
Definition: hw_qspi_v2.h:241
hw_qspi_erase_instr_config_t::addr_bus_mode
HW_QSPI_BUS_MODE addr_bus_mode
Definition: hw_qspi_v2.h:362
hw_qspi_set_io3_direction
__STATIC_FORCEINLINE void hw_qspi_set_io3_direction(HW_QSPIC_ID id, HW_QSPI_IO_DIR dir)
Set QSPI_IO3 direction.
Definition: hw_qspi_v2.h:701
hw_qspi_suspend_resume_instr_config_t::suspend_latency_usec
uint8_t suspend_latency_usec
Definition: hw_qspi_v2.h:419
HW_QSPI_ACCESS_MODE
HW_QSPI_ACCESS_MODE
QSPIC memory access mode.
Definition: hw_qspi_v2.h:60
HW_QSPI_ERASE_STATUS_PENDING
Definition: hw_qspi_v2.h:249
HW_QSPI_BUSY_LEVEL_LOW
Definition: hw_qspi_v2.h:95
hw_qspi_suspend_resume_instr_config_t::resume_bus_mode
HW_QSPI_BUS_MODE resume_bus_mode
Definition: hw_qspi_v2.h:415
HW_QSPI_IO_VALUE_LOW
Definition: hw_qspi_v2.h:189
hw_qspi_set_extra_byte
__STATIC_FORCEINLINE void hw_qspi_set_extra_byte(HW_QSPIC_ID id, uint8_t extra_byte, HW_QSPI_BUS_MODE bus_mode, bool half_disable_out)
Set an extra byte to use with read instructions.
Definition: hw_qspi_v2.h:1511
HW_QSPI_SAMPLING_EDGE
HW_QSPI_SAMPLING_EDGE
QSPIC clock edge setting for the sampling of the incoming data when the read pipe is disabled.
Definition: hw_qspi_v2.h:226
hw_qspi_write_enable_instr_config_t::opcode_bus_mode
HW_QSPI_BUS_MODE opcode_bus_mode
Definition: hw_qspi_v2.h:395
HW_QSPI_BUS_MODE_DUAL
Definition: hw_qspi_v2.h:78
HW_QSPI_BUS_MODE
HW_QSPI_BUS_MODE
QSPIC bus mode.
Definition: hw_qspi_v2.h:76
hw_qspi_set_erase_address
__STATIC_FORCEINLINE void hw_qspi_set_erase_address(HW_QSPIC_ID id, uint32_t erase_addr)
Set the address of the block/sector that is requested to be erased.
Definition: hw_qspi_v2.h:1445
HW_QSPIC_REG_CLR_BIT
#define HW_QSPIC_REG_CLR_BIT(id, reg, field)
Clear a bit of a QSPIC register.
Definition: hw_qspi_v2.h:493
HW_QSPI_HREADY_MODE_NO_WAIT
Definition: hw_qspi_v2.h:167
hw_qspi_page_program_instr_config_t
QSPIC Page Program instruction configuration structure (manual access mode)
Definition: hw_qspi_v2.h:402
hw_qspi_page_program_instr_config_t::addr_bus_mode
HW_QSPI_BUS_MODE addr_bus_mode
Definition: hw_qspi_v2.h:404
hw_qspi_get_erase_status
__STATIC_FORCEINLINE HW_QSPI_ERASE_STATUS hw_qspi_get_erase_status(HW_QSPIC_ID id)
Get erase status.
Definition: hw_qspi_v2.h:1470
hw_qspi_clock_disable
__STATIC_FORCEINLINE void hw_qspi_clock_disable(HW_QSPIC_ID id)
Disable QSPI controller clock.
Definition: hw_qspi_v2.h:513
HW_QSPI_DRIVE_CURRENT_8
Definition: hw_qspi_v2.h:131
hw_qspi_get_io2_value
__STATIC_FORCEINLINE HW_QSPI_IO_VALUE hw_qspi_get_io2_value(HW_QSPIC_ID id)
Get the value of QSPI_IO2 pad when QSPI_IO2 direction is output.
Definition: hw_qspi_v2.h:746
hw_qspi_config_t::drive_current
HW_QSPI_DRIVE_CURRENT drive_current
Definition: hw_qspi_v2.h:331
hw_qspi_read_status_instr_config_t::delay_nsec
uint16_t delay_nsec
Definition: hw_qspi_v2.h:385
SWAP32
#define SWAP32(a)
Macro to swap the bytes of a 32-bit variable.
Definition: sdk_defs.h:523
HW_QSPI_SLEW_RATE_2
Definition: hw_qspi_v2.h:240
hw_qspi_clock_enable
__STATIC_FORCEINLINE void hw_qspi_clock_enable(HW_QSPIC_ID id)
Enable QSPI controller clock.
Definition: hw_qspi_v2.h:501
hw_qspi_suspend_resume_instr_config_t
QSPIC Erase suspend/resume instruction structure (auto access mode)
Definition: hw_qspi_v2.h:412
hw_qspi_get_read_sampling_edge
__STATIC_FORCEINLINE HW_QSPI_SAMPLING_EDGE hw_qspi_get_read_sampling_edge(HW_QSPIC_ID id)
Get QSPIC read sampling edge.
Definition: hw_qspi_v2.h:863
hw_qspi_suspend_resume_instr_config_t::resume_opcode
uint8_t resume_opcode
Definition: hw_qspi_v2.h:418
__IO
#define __IO
Definition: core_cm0.h:169
HW_QSPI_EXTRA_BYTE_DISABLE
Definition: hw_qspi_v2.h:140
HW_QSPI_BUS_STATUS_ACTIVE
Definition: hw_qspi_v2.h:87
HW_QSPI_READ_PIPE_DELAY_6
Definition: hw_qspi_v2.h:218
HW_QSPI_CONTINUOUS_MODE
HW_QSPI_CONTINUOUS_MODE
QSPIC continuous mode.
Definition: hw_qspi_v2.h:120
hw_qspi_erase_instr_config_t::opcode_bus_mode
HW_QSPI_BUS_MODE opcode_bus_mode
Definition: hw_qspi_v2.h:361
hw_qspi_read_status_instr_config_t::receive_bus_mode
HW_QSPI_BUS_MODE receive_bus_mode
Definition: hw_qspi_v2.h:380
HW_QSPI_READ_PIPE_DELAY_7
Definition: hw_qspi_v2.h:219
HW_QSPI_ERASE_STATUS_FINISHING
Definition: hw_qspi_v2.h:252
hw_qspi_get_bus_status
__STATIC_FORCEINLINE HW_QSPI_BUS_STATUS hw_qspi_get_bus_status(HW_QSPIC_ID id)
Get QSPIC Bus status.
Definition: hw_qspi_v2.h:547
hw_qspi_set_read_cs_idle_delay
__STATIC_FORCEINLINE void hw_qspi_set_read_cs_idle_delay(HW_QSPIC_ID id, uint16_t cs_idle_delay_nsec, uint32_t clk_freq_hz)
Set the minimum number of clocks cycles that CS stays in idle mode, between two consecutive read comm...
Definition: hw_qspi_v2.h:1061
hw_qspi_exit_continuous_mode_sequence_enable
__STATIC_FORCEINLINE void hw_qspi_exit_continuous_mode_sequence_enable(HW_QSPIC_ID id)
Enable the 'exit from continuous read mode' sequence in automode.
Definition: hw_qspi_v2.h:1527
HW_QSPI_DRIVE_CURRENT
HW_QSPI_DRIVE_CURRENT
QSPIC pads drive current strength.
Definition: hw_qspi_v2.h:129
hw_qspi_read_instr_init
__STATIC_FORCEINLINE void hw_qspi_read_instr_init(HW_QSPIC_ID id, const hw_qspi_read_instr_config_t *cfg, uint8_t dummy_bytes, uint32_t sys_clk_freq_hz)
Initialize the read instruction of the QSPIC.
Definition: hw_qspi_v2.h:1247
HW_QSPI_BUS_STATUS
HW_QSPI_BUS_STATUS
QSPIC Bus status.
Definition: hw_qspi_v2.h:85
hw_qspi_read_status_instr_config_t::opcode
uint8_t opcode
Definition: hw_qspi_v2.h:384
hw_qspi_suspend_resume_instr_config_t::resume_latency_usec
uint8_t resume_latency_usec
Definition: hw_qspi_v2.h:424
hw_qspi_set_read_sampling_edge
__STATIC_FORCEINLINE void hw_qspi_set_read_sampling_edge(HW_QSPIC_ID id, HW_QSPI_SAMPLING_EDGE edge)
Set QSPIC read sampling edge.
Definition: hw_qspi_v2.h:847
hw_qspi_get_io2_direction
__STATIC_FORCEINLINE HW_QSPI_IO_DIR hw_qspi_get_io2_direction(HW_QSPIC_ID id)
Get QSPI_IO2 direction.
Definition: hw_qspi_v2.h:684
HW_QSPI_BUSY_LEVEL
HW_QSPI_BUSY_LEVEL
QSPIC device busy status setting.
Definition: hw_qspi_v2.h:94
HW_QSPI_SAMPLING_EDGE_NEG
Definition: hw_qspi_v2.h:229
hw_qspi_config_t::clk_div
HW_QSPI_CLK_DIV clk_div
Definition: hw_qspi_v2.h:329
hw_qspi_config_t::sampling_edge
HW_QSPI_SAMPLING_EDGE sampling_edge
Definition: hw_qspi_v2.h:334
HW_QSPI_CLK_MODE_LOW
Definition: hw_qspi_v2.h:113
hw_qspi_set_drive_current
__STATIC_FORCEINLINE void hw_qspi_set_drive_current(HW_QSPIC_ID id, HW_QSPI_DRIVE_CURRENT drive_current)
Set drive current of QSPIC pads.
Definition: hw_qspi_v2.h:993
REG_MSK
#define REG_MSK(base, reg, field)
Access register field mask.
Definition: sdk_defs.h:583
mode
HW_GPIO_MODE mode
Definition: hw_gpio.h:211
HW_QSPI_EXTRA_BYTE_HALF_DISABLE
Definition: hw_qspi_v2.h:150
hw_qspi_set_clock_mode
__STATIC_FORCEINLINE void hw_qspi_set_clock_mode(HW_QSPIC_ID id, HW_QSPI_CLK_MODE clk_mode)
Set QSPIC clock mode.
Definition: hw_qspi_v2.h:636
hw_qspi_get_hready_mode
__STATIC_FORCEINLINE HW_QSPI_HREADY_MODE hw_qspi_get_hready_mode(HW_QSPIC_ID id)
Get QSPIC HReady signal mode.
Definition: hw_qspi_v2.h:834
hw_qspi_get_read_pipe_clock_delay
__STATIC_FORCEINLINE HW_QSPI_READ_PIPE_DELAY hw_qspi_get_read_pipe_clock_delay(HW_QSPIC_ID id)
Get QSPIC read pipe clock delay.
Definition: hw_qspi_v2.h:921
hw_qspi_read8
__STATIC_FORCEINLINE uint8_t hw_qspi_read8(HW_QSPIC_ID id)
Generate 8 bits data transfer from the external device to the QSPIC (manual mode)
Definition: hw_qspi_v2.h:1127
HW_QSPI_CONTINUOUS_MODE_DISABLE
Definition: hw_qspi_v2.h:121
hw_qspi_set_hready_mode
__STATIC_FORCEINLINE void hw_qspi_set_hready_mode(HW_QSPIC_ID id, HW_QSPI_HREADY_MODE mode)
Set QSPIC HReady signal mode.
Definition: hw_qspi_v2.h:818
HW_QSPI_READ_PIPE_DELAY_1
Definition: hw_qspi_v2.h:213
HW_QSPI_CLK_DIV_2
Definition: hw_qspi_v2.h:104
HW_QSPI_READ_PIPE_DELAY_5
Definition: hw_qspi_v2.h:217
HW_QSPI_EXTRA_BYTE_HALF_ENABLE
Definition: hw_qspi_v2.h:151
hw_qspi_get_address_size
__STATIC_FORCEINLINE HW_QSPI_ADDR_SIZE hw_qspi_get_address_size(HW_QSPIC_ID id)
Get QSPIC address size.
Definition: hw_qspi_v2.h:951
hw_qspi_suspend_resume_instr_config_t::suspend_bus_mode
HW_QSPI_BUS_MODE suspend_bus_mode
Definition: hw_qspi_v2.h:413
hw_qspi_set_io2_direction
__STATIC_FORCEINLINE void hw_qspi_set_io2_direction(HW_QSPIC_ID id, HW_QSPI_IO_DIR dir)
Set QSPI_IO2 direction.
Definition: hw_qspi_v2.h:668
HW_QSPI_IO_DIR_AUTO_SEL
Definition: hw_qspi_v2.h:178
hw_qspi_suspend_resume_instr_config_t::suspend_opcode
uint8_t suspend_opcode
Definition: hw_qspi_v2.h:417
hw_qspi_set_read_pipe
__STATIC_FORCEINLINE void hw_qspi_set_read_pipe(HW_QSPIC_ID id, HW_QSPI_READ_PIPE read_pipe)
Set QSPIC data read pipe status.
Definition: hw_qspi_v2.h:876
HW_QSPI_CLK_DIV_8
Definition: hw_qspi_v2.h:106
hw_qspi_set_div
__STATIC_FORCEINLINE void hw_qspi_set_div(HW_QSPIC_ID id, HW_QSPI_CLK_DIV div)
Set QSPIC clock divider.
Definition: hw_qspi_v2.h:560
hw_qspi_get_clock_mode
__STATIC_FORCEINLINE HW_QSPI_CLK_MODE hw_qspi_get_clock_mode(HW_QSPIC_ID id)
Get QSPIC clock mode.
Definition: hw_qspi_v2.h:651
hw_qspi_set_io2_value
__STATIC_FORCEINLINE void hw_qspi_set_io2_value(HW_QSPIC_ID id, HW_QSPI_IO_VALUE value)
Set the value of QSPI_IO2 pad when QSPI_IO2 direction is output.
Definition: hw_qspi_v2.h:730
hw_qspi_read_status_instr_config_t::busy_level
HW_QSPI_BUSY_LEVEL busy_level
Definition: hw_qspi_v2.h:381
hw_qspi_get_div
__STATIC_FORCEINLINE HW_QSPI_CLK_DIV hw_qspi_get_div(HW_QSPIC_ID id)
Get QSPIC clock divider.
Definition: hw_qspi_v2.h:578
hw_qspi_read_instr_config_t::extra_byte_value
uint8_t extra_byte_value
Definition: hw_qspi_v2.h:352
hw_qspi_read_status_instr_config_t::opcode_bus_mode
HW_QSPI_BUS_MODE opcode_bus_mode
Definition: hw_qspi_v2.h:379
hw_qspi_write16
__STATIC_FORCEINLINE void hw_qspi_write16(HW_QSPIC_ID id, uint16_t data)
Generate 16 bits data transfer from the QSPIC to the external device (manual mode)
Definition: hw_qspi_v2.h:1154
hw_qspi_set_dummy_bytes
__STATIC_FORCEINLINE void hw_qspi_set_dummy_bytes(HW_QSPIC_ID id, uint8_t dummy_bytes)
Set the number of dummy bytes in auto access mode.
Definition: hw_qspi_v2.h:1020
HW_QSPI_ADDR_SIZE
HW_QSPI_ADDR_SIZE
QSPIC memory address size.
Definition: hw_qspi_v2.h:68
hw_qspi_page_program_instr_config_t::data_bus_mode
HW_QSPI_BUS_MODE data_bus_mode
Definition: hw_qspi_v2.h:405
GLOBAL_INT_RESTORE
#define GLOBAL_INT_RESTORE()
Macro to restore all interrupts.
Definition: sdk_defs.h:477
hw_qspi_write8
__STATIC_FORCEINLINE void hw_qspi_write8(HW_QSPIC_ID id, uint8_t data)
Generate 8 bits data transfer from the QSPIC to the external device (manual mode)
Definition: hw_qspi_v2.h:1167
hw_qspi_config_t::slew_rate
HW_QSPI_SLEW_RATE slew_rate
Definition: hw_qspi_v2.h:335
SWAP16
#define SWAP16(a)
Macro to swap the bytes of a 16-bit variable.
Definition: sdk_defs.h:512
HW_QSPI_DRIVE_CURRENT_4
Definition: hw_qspi_v2.h:130
HW_QSPI_BUSY_LEVEL_HIGH
Definition: hw_qspi_v2.h:96
hw_qspi_data_t
This union is used in order to allow different size access when reading/writing to QSPIC_READDATA_REG...
Definition: hw_qspi_v2.h:318
hw_qspi_write_enable_instr_config_t::opcode
uint8_t opcode
Definition: hw_qspi_v2.h:396
hw_qspi_cs_disable
__STATIC_FORCEINLINE void hw_qspi_cs_disable(HW_QSPIC_ID id)
Disable CS on QSPI bus in manual access mode.
Definition: hw_qspi_v2.h:535
hw_qspi_get_io3_value
__STATIC_FORCEINLINE HW_QSPI_IO_VALUE hw_qspi_get_io3_value(HW_QSPIC_ID id)
Get the value of QSPI_IO3 pad when QSPI_IO3 direction is output.
Definition: hw_qspi_v2.h:776
REG_GETF
#define REG_GETF(base, reg, field)
Return the value of a register field.
Definition: sdk_defs.h:711
hw_qspi_get_read_pipe
__STATIC_FORCEINLINE HW_QSPI_READ_PIPE hw_qspi_get_read_pipe(HW_QSPIC_ID id)
Get QSPIC read pipe status.
Definition: hw_qspi_v2.h:892
hw_qspi_erase_instr_config_t::opcode
uint8_t opcode
Definition: hw_qspi_v2.h:368
hw_qspi_read_instr_config_t::extra_byte_half_cfg
HW_QSPI_EXTRA_BYTE_HALF extra_byte_half_cfg
Definition: hw_qspi_v2.h:350
hw_qspi_config_t
QSPIC configuration structure.
Definition: hw_qspi_v2.h:327
hw_qspi_set_io3_value
__STATIC_FORCEINLINE void hw_qspi_set_io3_value(HW_QSPIC_ID id, HW_QSPI_IO_VALUE value)
Set the value of QSPI_IO3 pad when QSPI_IO3 direction is output.
Definition: hw_qspi_v2.h:760
hw_qspi_erase_instr_config_t
QSPIC Erase instruction configuration structure (auto access mode)
Definition: hw_qspi_v2.h:360
HW_QSPI_CLK_DIV_1
Definition: hw_qspi_v2.h:103
HW_QSPI_READ_PIPE_DELAY
HW_QSPI_READ_PIPE_DELAY
QSPIC Read pipe clock delay in relation to the falling edge of QSPI_SCK.
Definition: hw_qspi_v2.h:211
HW_QSPI_CLK_MODE_HIGH
Definition: hw_qspi_v2.h:114
HW_QSPI_BUS_STATUS_IDLE
Definition: hw_qspi_v2.h:86
hw_qspi_read_instr_config_t::opcode
uint8_t opcode
Definition: hw_qspi_v2.h:351
hw_qspi_get_dummy_bytes
__STATIC_FORCEINLINE uint8_t hw_qspi_get_dummy_bytes(HW_QSPIC_ID id)
Get the number of dummy bytes in auto access mode.
Definition: hw_qspi_v2.h:1039
HW_QSPI_CLK_MODE
HW_QSPI_CLK_MODE
QSPIC clock mode.
Definition: hw_qspi_v2.h:112
HW_QSPI_READ_PIPE_DELAY_0
Definition: hw_qspi_v2.h:212
HW_QSPI_IO_DIR
HW_QSPI_IO_DIR
QSPIC pad direction.
Definition: hw_qspi_v2.h:177
HW_QSPI_ERASE_STATUS_SUSPENDED
Definition: hw_qspi_v2.h:251
HW_QSPI_IO_DIR_OUTPUT
Definition: hw_qspi_v2.h:179
HW_QSPI_SLEW_RATE_1
Definition: hw_qspi_v2.h:239
hw_qspi_config_t::read_pipe
HW_QSPI_READ_PIPE read_pipe
Definition: hw_qspi_v2.h:332
hw_qspi_exit_continuous_mode_instr_init
__STATIC_FORCEINLINE void hw_qspi_exit_continuous_mode_instr_init(HW_QSPIC_ID id, HW_QSPI_CONTINUOUS_MODE mode, HW_QSPI_ADDR_SIZE addr_size)
Initialize the exit from continuous mode instruction of the QSPIC.
Definition: hw_qspi_v2.h:1424
HW_QSPI_ERASE_STATUS_NO
Definition: hw_qspi_v2.h:248
hw_qspi_read_instr_config_t
Read instruction configuration structure (auto access mode)
Definition: hw_qspi_v2.h:342
REG_SET_FIELD
#define REG_SET_FIELD(base, reg, field, var, val)
Set register field value.
Definition: sdk_defs.h:626
hw_qspi_read_instr_config_t::extra_byte_cfg
HW_QSPI_EXTRA_BYTE extra_byte_cfg
Definition: hw_qspi_v2.h:349
hw_qspi_set_address_size
__STATIC_FORCEINLINE void hw_qspi_set_address_size(HW_QSPIC_ID id, HW_QSPI_ADDR_SIZE addr_size)
Set QSPIC address size.
Definition: hw_qspi_v2.h:935
hw_qspi_set_manual_access_bus_mode
__STATIC_FORCEINLINE void hw_qspi_set_manual_access_bus_mode(HW_QSPIC_ID id, HW_QSPI_BUS_MODE bus_mode)
Set QSPIC bus mode in manual access mode.
Definition: hw_qspi_v2.h:591
HW_QSPI_CONTINUOUS_MODE_ENABLE
Definition: hw_qspi_v2.h:122
HW_QSPI_READ_PIPE_DELAY_2
Definition: hw_qspi_v2.h:214
hw_qspi_get_access_mode
__STATIC_FORCEINLINE HW_QSPI_ACCESS_MODE hw_qspi_get_access_mode(HW_QSPIC_ID id)
Get QSPIC access mode.
Definition: hw_qspi_v2.h:623
hw_qspi_get_slew_rate
__STATIC_FORCEINLINE HW_QSPI_SLEW_RATE hw_qspi_get_slew_rate(HW_QSPIC_ID id)
Get slew rate of QSPIC pads.
Definition: hw_qspi_v2.h:980
hw_qspi_read_instr_config_t::cs_idle_delay_nsec
uint16_t cs_idle_delay_nsec
Definition: hw_qspi_v2.h:353
HW_QSPI_HREADY_MODE
HW_QSPI_HREADY_MODE
QSPIC HREADY signal mode when accessing the WRITEDATA, READDATA and DUMMYDATA registers.
Definition: hw_qspi_v2.h:163
HW_QSPI_DRIVE_CURRENT_16
Definition: hw_qspi_v2.h:133
hw_qspi_dummy32
__STATIC_FORCEINLINE void hw_qspi_dummy32(HW_QSPIC_ID id)
Generate clock pulses on the SPI bus for a 32-bit transfer.
Definition: hw_qspi_v2.h:1184
hw_qspi_read_status_instr_init
__STATIC_FORCEINLINE void hw_qspi_read_status_instr_init(HW_QSPIC_ID id, const hw_qspi_read_status_instr_config_t *cfg, uint32_t sys_clk_freq_hz)
Initialize the read status register instruction of the QSPIC.
Definition: hw_qspi_v2.h:1341
NSEC_TO_CLK_CYCLES
#define NSEC_TO_CLK_CYCLES(nsec, clk_freq_hz)
Macro to convert time in nsec to clock cycles.
Definition: sdk_defs.h:949
HW_QSPI_DRIVE_CURRENT_12
Definition: hw_qspi_v2.h:132
hw_qspi_config_t::hready_mode
HW_QSPI_HREADY_MODE hready_mode
Definition: hw_qspi_v2.h:336
hw_qspi_set_read_pipe_clock_delay
__STATIC_FORCEINLINE void hw_qspi_set_read_pipe_clock_delay(HW_QSPIC_ID id, HW_QSPI_READ_PIPE_DELAY delay)
Set the QSPIC read pipe clock delay.
Definition: hw_qspi_v2.h:905
HW_QSPIC_REG_SETF
#define HW_QSPIC_REG_SETF(id, reg, field, new_val)
Set the value of a field of a QSPIC register.
Definition: hw_qspi_v2.h:468
GLOBAL_INT_DISABLE
#define GLOBAL_INT_DISABLE()
Macro to disable all interrupts.
Definition: sdk_defs.h:452
HW_QSPI_ERASE_STATUS
HW_QSPI_ERASE_STATUS
The status of sector/block erasing.
Definition: hw_qspi_v2.h:247
HW_QSPI_ACCESS_MODE_MANUAL
Definition: hw_qspi_v2.h:61
hw_qspi_write_enable_instr_init
__STATIC_FORCEINLINE void hw_qspi_write_enable_instr_init(HW_QSPIC_ID id, const hw_qspi_write_enable_instr_config_t *cfg)
Initialize the write enable instruction of the QSPIC.
Definition: hw_qspi_v2.h:1373
hw_qspi_read_instr_config_t::dummy_bus_mode
HW_QSPI_BUS_MODE dummy_bus_mode
Definition: hw_qspi_v2.h:346
hw_qspi_write32
__STATIC_FORCEINLINE void hw_qspi_write32(HW_QSPIC_ID id, uint32_t data)
Generate 32 bits data transfer from the QSPIC to the external device (manual mode)
Definition: hw_qspi_v2.h:1141