|
SmartSnippets DA1459x SDK
|
Go to the documentation of this file.
46 #if dg_configUSE_HW_QSPI
258 #define IS_HW_QSPI_ACCESS_MODE(x) (((x) == HW_QSPI_ACCESS_MODE_MANUAL) || \
259 ((x) == HW_QSPI_ACCESS_MODE_AUTO))
261 #define IS_HW_QSPI_ADDR_SIZE(x) (((x) == HW_QSPI_ADDR_SIZE_24) || \
262 ((x) == HW_QSPI_ADDR_SIZE_32))
264 #define IS_HW_QSPI_BUSY_LEVEL(x) (((x) == HW_QSPI_BUSY_LEVEL_LOW) || \
265 ((x) == HW_QSPI_BUSY_LEVEL_HIGH))
267 #define IS_HW_QSPI_BUS_MODE(x) (((x) >= HW_QSPI_BUS_MODE_SINGLE) && \
268 ((x) <= HW_QSPI_BUS_MODE_QUAD))
270 #define IS_HW_QSPI_CLK_DIV(x) (((x) >= HW_QSPI_CLK_DIV_1) && \
271 ((x) <= HW_QSPI_CLK_DIV_8))
273 #define IS_HW_QSPI_CLK_MODE(x) (((x) == HW_QSPI_CLK_MODE_LOW) || \
274 ((x) == HW_QSPI_CLK_MODE_HIGH))
276 #define IS_HW_QSPI_CONTINUOUS_MODE(x) (((x) == HW_QSPI_CONTINUOUS_MODE_DISABLE) || \
277 ((x) == HW_QSPI_CONTINUOUS_MODE_ENABLE))
279 #define IS_HW_QSPI_DRIVE_CURRENT(x) (((x) >= HW_QSPI_DRIVE_CURRENT_4) && \
280 ((x) <= HW_QSPI_DRIVE_CURRENT_16))
282 #define IS_HW_QSPI_EXTRA_BYTE(x) (((x) == HW_QSPI_EXTRA_BYTE_DISABLE) || \
283 ((x) == HW_QSPI_EXTRA_BYTE_ENABLE))
285 #define IS_HW_QSPI_EXTRA_BYTE_HALF(x) (((x) == HW_QSPI_EXTRA_BYTE_HALF_DISABLE) || \
286 ((x) == HW_QSPI_EXTRA_BYTE_HALF_ENABLE))
288 #define IS_HW_QSPI_HREADY_MODE(x) (((x) == HW_QSPI_HREADY_MODE_WAIT) || \
289 ((x) == HW_QSPI_HREADY_MODE_NO_WAIT))
291 #define IS_HW_QSPI_IO_DIR(x) (((x) == HW_QSPI_IO_DIR_AUTO_SEL) || \
292 ((x) == HW_QSPI_IO_DIR_OUTPUT))
294 #define IS_HW_QSPI_IO_VALUE(x) (((x) == HW_QSPI_IO_VALUE_LOW) || \
295 ((x) == HW_QSPI_IO_VALUE_HIGH))
297 #define IS_HW_QSPI_READ_PIPE(x) (((x) == HW_QSPI_READ_PIPE_DISABLE) || \
298 ((x) == HW_QSPI_READ_PIPE_ENABLE))
300 #define IS_HW_QSPI_READ_PIPE_DELAY(x) (((x) >= HW_QSPI_READ_PIPE_DELAY_0) && \
301 ((x) <= HW_QSPI_READ_PIPE_DELAY_7))
303 #define IS_HW_QSPI_SAMPLING_EDGE(x) (((x) == HW_QSPI_SAMPLING_EDGE_POS) || \
304 ((x) == HW_QSPI_SAMPLING_EDGE_NEG))
306 #define IS_HW_QSPI_SLEW_RATE(x) (((x) >= HW_QSPI_SLEW_RATE_0) && \
307 ((x) <= HW_QSPI_SLEW_RATE_3))
309 #define SUSPEND_RESUME_COUNTER_FREQ_HZ (288000)
319 __IO uint32_t data32;
320 __IO uint16_t data16;
440 #define HW_QSPIC ((HW_QSPIC_ID) QSPIC_BASE)
443 #define QSPIBA(id) ((QSPIC_Type *) id)
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)
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)))
482 #define HW_QSPIC_REG_SET_BIT(id, reg, field) \
483 QSPIBA(id)->QSPIC_##reg##_REG |= (1 << QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Pos)
493 #define HW_QSPIC_REG_CLR_BIT(id, reg, field) \
494 QSPIBA(id)->QSPIC_##reg##_REG &= ~QSPIC_QSPIC_##reg##_REG_##QSPIC_##field##_Msk
527 QSPIBA(
id)->QSPIC_CTRLBUS_REG =
REG_MSK(QSPIC, QSPIC_CTRLBUS_REG, QSPIC_EN_CS);
537 QSPIBA(
id)->QSPIC_CTRLBUS_REG =
REG_MSK(QSPIC, QSPIC_CTRLBUS_REG, QSPIC_DIS_CS);
562 ASSERT_WARNING(IS_HW_QSPI_CLK_DIV(div));
565 REG_SETF(CRG_TOP, CLK_AMBA_REG, QSPI_DIV, div);
593 ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(bus_mode));
595 QSPIBA(
id)->QSPIC_CTRLBUS_REG = 1 << bus_mode;
608 ASSERT_WARNING(IS_HW_QSPI_ACCESS_MODE(access_mode));
638 ASSERT_WARNING(IS_HW_QSPI_CLK_MODE(clk_mode));
670 ASSERT_WARNING(IS_HW_QSPI_IO_DIR(dir));
703 ASSERT_WARNING(IS_HW_QSPI_IO_DIR(dir));
732 ASSERT_WARNING(IS_HW_QSPI_IO_VALUE(value));
762 ASSERT_WARNING(IS_HW_QSPI_IO_VALUE(value));
791 ASSERT_WARNING(IS_HW_QSPI_BUS_MODE(bus_mode));
793 uint32_t ctrlmode_reg = QSPIBA(
id)->QSPIC_CTRLMODE_REG;
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);
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);
807 QSPIBA(
id)->QSPIC_CTRLMODE_REG = ctrlmode_reg;
820 ASSERT_WARNING(IS_HW_QSPI_HREADY_MODE(
mode));
849 ASSERT_WARNING(IS_HW_QSPI_SAMPLING_EDGE(edge));
878 ASSERT_WARNING(IS_HW_QSPI_READ_PIPE(read_pipe));
907 ASSERT_WARNING(IS_HW_QSPI_READ_PIPE_DELAY(delay));
937 ASSERT_WARNING(IS_HW_QSPI_ADDR_SIZE(addr_size));
966 ASSERT_WARNING(IS_HW_QSPI_SLEW_RATE(slew_rate));
995 ASSERT_WARNING(IS_HW_QSPI_DRIVE_CURRENT(drive_current));
1022 ASSERT_WARNING(dummy_bytes < 5);
1024 if (dummy_bytes == 3) {
1028 HW_QSPIC_REG_SETF(
id, BURSTCMDB, DMY_NUM, ((dummy_bytes == 4) ? 3 : dummy_bytes));
1041 uint8_t dummy_bytes;
1049 return (dummy_bytes == 3) ? 4 : dummy_bytes;
1062 uint32_t clk_freq_hz)
1064 uint32_t cs_idle_delay_clk;
1068 ASSERT_WARNING(cs_idle_delay_clk < 8);
1082 uint32_t clk_freq_hz)
1084 uint32_t cs_idle_delay_clk;
1088 ASSERT_WARNING(cs_idle_delay_clk < 32);
1145 tmp->data32 =
SWAP32(data);
1158 tmp->data16 =
SWAP16(data);
1248 uint8_t dummy_bytes, uint32_t sys_clk_freq_hz)
1250 uint32_t qspi_clk_freq_hz = sys_clk_freq_hz >> (uint32_t)
hw_qspi_get_div(
id);
1252 uint32_t burstcmda_reg = QSPIBA(
id)->QSPIC_BURSTCMDA_REG;
1253 uint32_t burstcmdb_reg = QSPIBA(
id)->QSPIC_BURSTCMDB_REG;
1263 ASSERT_WARNING(dummy_bytes < 5);
1264 ASSERT_WARNING(delay_clk_cycles < 8);
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);
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));
1288 REG_SET_FIELD(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_CS_HIGH_MIN, burstcmdb_reg, delay_clk_cycles);
1290 QSPIBA(
id)->QSPIC_BURSTCMDA_REG = burstcmda_reg;
1291 QSPIBA(
id)->QSPIC_BURSTCMDB_REG = burstcmdb_reg;
1307 uint32_t sys_clk_freq_hz)
1309 uint32_t qspi_clk_freq_hz = sys_clk_freq_hz >> (uint32_t)
hw_qspi_get_div(
id);
1311 uint32_t erasecmdb_reg = QSPIBA(
id)->QSPIC_ERASECMDB_REG;
1316 ASSERT_WARNING(delay_clk_cycles < 32);
1323 REG_SET_FIELD(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_ERS_CS_HI, erasecmdb_reg, delay_clk_cycles);
1325 QSPIBA(
id)->QSPIC_ERASECMDB_REG = erasecmdb_reg;
1342 uint32_t sys_clk_freq_hz)
1344 uint32_t qspi_clk_freq_hz = sys_clk_freq_hz >> (uint32_t)
hw_qspi_get_div(
id);
1346 uint32_t statuscmd_reg = QSPIBA(
id)->QSPIC_STATUSCMD_REG;
1350 ASSERT_WARNING(IS_HW_QSPI_BUSY_LEVEL(cfg->
busy_level));
1352 ASSERT_WARNING(delay_clk_cycles < 64);
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);
1362 QSPIBA(
id)->QSPIC_STATUSCMD_REG = statuscmd_reg;
1394 uint32_t erasecmda_reg = QSPIBA(
id)->QSPIC_ERASECMDA_REG;
1395 uint32_t erasecmdb_reg = QSPIBA(
id)->QSPIC_ERASECMDB_REG;
1399 ASSERT_WARNING(res_sus_latency_clk_cycles < 64);
1405 REG_SET_FIELD(QSPIC, QSPIC_ERASECMDB_REG, QSPIC_RESSUS_DLY, erasecmdb_reg, res_sus_latency_clk_cycles);
1407 QSPIBA(
id)->QSPIC_ERASECMDA_REG = erasecmda_reg;
1408 QSPIBA(
id)->QSPIC_ERASECMDB_REG = erasecmdb_reg;
1427 uint32_t burstbrk_reg = QSPIBA(
id)->QSPIC_BURSTBRK_REG;
1429 REG_SET_FIELD(QSPIC, QSPIC_BURSTBRK_REG, QSPIC_BRK_WRD, burstbrk_reg, 0xFFFF);
1431 REG_SET_FIELD(QSPIC, QSPIC_BURSTBRK_REG, QSPIC_SEC_HF_DS, burstbrk_reg, 0);
1435 QSPIBA(
id)->QSPIC_BURSTBRK_REG = burstbrk_reg;
Definition: hw_qspi_v2.h:215
__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
__STATIC_FORCEINLINE void hw_qspi_trigger_erase(HW_QSPIC_ID id)
Trigger erase block/sector.
Definition: hw_qspi_v2.h:1456
uint32_t hclk_cycles
Definition: hw_qspi_v2.h:363
HW_QSPI_EXTRA_BYTE
QSPIC extra byte setting in auto access mode.
Definition: hw_qspi_v2.h:139
Definition: hw_qspi_v2.h:70
Definition: hw_qspi_v2.h:238
uint16_t res_sus_latency_usec
Definition: hw_qspi_v2.h:429
__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
#define REG_SETF(base, reg, field, new_val)
Set the value of a register field.
Definition: sdk_defs.h:738
Definition: hw_qspi_v2.h:69
HW_QSPI_READ_PIPE_DELAY read_pipe_delay
Definition: hw_qspi_v2.h:333
HW_QSPI_SLEW_RATE
QSPIC pads slew rate.
Definition: hw_qspi_v2.h:237
#define REG_CLR_BIT(base, reg, field)
Clear a bit of a register.
Definition: sdk_defs.h:781
uint16_t cs_idle_delay_nsec
Definition: hw_qspi_v2.h:369
__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
__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
#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_BUS_MODE extra_byte_bus_mode
Definition: hw_qspi_v2.h:345
#define REG_SET_BIT(base, reg, field)
Set a bit of a register.
Definition: sdk_defs.h:766
HW_QSPI_CONTINUOUS_MODE continuous_mode
Definition: hw_qspi_v2.h:348
void * HW_QSPIC_ID
QSPI Controller ID.
Definition: hw_qspi_v2.h:439
HW_QSPI_BUS_MODE addr_bus_mode
Definition: hw_qspi_v2.h:344
__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
Definition: hw_qspi_v2.h:141
__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
__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
__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
uint32_t busy_pos
Definition: hw_qspi_v2.h:382
Definition: hw_qspi_v2.h:105
Definition: hw_qspi_v2.h:190
Definition: hw_qspi_v2.h:200
Definition: hw_qspi_v2.h:201
__RETAINED_CODE void hw_qspi_erase_block(HW_QSPIC_ID id, uint32_t addr)
Erase block/sector of flash memory.
Definition: hw_qspi_v2.h:164
__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
QSPIC read pipe setting.
Definition: hw_qspi_v2.h:199
Definition: hw_qspi_v2.h:62
HW_QSPI_BUS_MODE opcode_bus_mode
Definition: hw_qspi_v2.h:343
Definition: hw_qspi_v2.h:216
#define HW_QSPIC_REG_SET_BIT(id, reg, field)
Set a bit of a QSPIC register.
Definition: hw_qspi_v2.h:482
uint8_t opcode
Definition: hw_qspi_v2.h:406
HW_QSPI_BUS_MODE opcode_bus_mode
Definition: hw_qspi_v2.h:403
__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
Definition: hw_qspi_v2.h:79
Definition: hw_qspi_v2.h:77
HW_QSPI_CLK_MODE clock_mode
Definition: hw_qspi_v2.h:330
__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
QSPIC extra byte half setting in auto access mode.
Definition: hw_qspi_v2.h:149
HW_QSPI_BUS_MODE data_bus_mode
Definition: hw_qspi_v2.h:347
QSPIC read status instruction configuration structure (auto access mode)
Definition: hw_qspi_v2.h:378
__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
__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
Central include header file with platform definitions.
Definition: hw_qspi_v2.h:227
QSPIC write enable instruction configuration structure (auto access mode)
Definition: hw_qspi_v2.h:394
__RETAINED_CODE void hw_qspi_init(HW_QSPIC_ID id, const hw_qspi_config_t *cfg)
Initialize the QSPI controller (QSPIC)
HW_QSPI_ADDR_SIZE address_size
Definition: hw_qspi_v2.h:328
HW_QSPI_IO_VALUE
QSPIC IO2/IO3 pad value.
Definition: hw_qspi_v2.h:188
HW_QSPI_CLK_DIV
QSPIC clock divider.
Definition: hw_qspi_v2.h:102
__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
Definition: hw_qspi_v2.h:250
Definition: hw_qspi_v2.h:241
HW_QSPI_BUS_MODE addr_bus_mode
Definition: hw_qspi_v2.h:362
__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
uint8_t suspend_latency_usec
Definition: hw_qspi_v2.h:419
HW_QSPI_ACCESS_MODE
QSPIC memory access mode.
Definition: hw_qspi_v2.h:60
Definition: hw_qspi_v2.h:249
Definition: hw_qspi_v2.h:95
HW_QSPI_BUS_MODE resume_bus_mode
Definition: hw_qspi_v2.h:415
Definition: hw_qspi_v2.h:189
__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
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_BUS_MODE opcode_bus_mode
Definition: hw_qspi_v2.h:395
Definition: hw_qspi_v2.h:78
HW_QSPI_BUS_MODE
QSPIC bus mode.
Definition: hw_qspi_v2.h:76
__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
#define HW_QSPIC_REG_CLR_BIT(id, reg, field)
Clear a bit of a QSPIC register.
Definition: hw_qspi_v2.h:493
Definition: hw_qspi_v2.h:167
QSPIC Page Program instruction configuration structure (manual access mode)
Definition: hw_qspi_v2.h:402
HW_QSPI_BUS_MODE addr_bus_mode
Definition: hw_qspi_v2.h:404
__STATIC_FORCEINLINE HW_QSPI_ERASE_STATUS hw_qspi_get_erase_status(HW_QSPIC_ID id)
Get erase status.
Definition: hw_qspi_v2.h:1470
__STATIC_FORCEINLINE void hw_qspi_clock_disable(HW_QSPIC_ID id)
Disable QSPI controller clock.
Definition: hw_qspi_v2.h:513
Definition: hw_qspi_v2.h:131
__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_DRIVE_CURRENT drive_current
Definition: hw_qspi_v2.h:331
uint16_t delay_nsec
Definition: hw_qspi_v2.h:385
#define SWAP32(a)
Macro to swap the bytes of a 32-bit variable.
Definition: sdk_defs.h:523
Definition: hw_qspi_v2.h:240
__STATIC_FORCEINLINE void hw_qspi_clock_enable(HW_QSPIC_ID id)
Enable QSPI controller clock.
Definition: hw_qspi_v2.h:501
QSPIC Erase suspend/resume instruction structure (auto access mode)
Definition: hw_qspi_v2.h:412
__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
uint8_t resume_opcode
Definition: hw_qspi_v2.h:418
#define __IO
Definition: core_cm0.h:169
Definition: hw_qspi_v2.h:140
Definition: hw_qspi_v2.h:87
Definition: hw_qspi_v2.h:218
HW_QSPI_CONTINUOUS_MODE
QSPIC continuous mode.
Definition: hw_qspi_v2.h:120
HW_QSPI_BUS_MODE opcode_bus_mode
Definition: hw_qspi_v2.h:361
HW_QSPI_BUS_MODE receive_bus_mode
Definition: hw_qspi_v2.h:380
Definition: hw_qspi_v2.h:219
Definition: hw_qspi_v2.h:252
__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
__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
__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
QSPIC pads drive current strength.
Definition: hw_qspi_v2.h:129
__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
QSPIC Bus status.
Definition: hw_qspi_v2.h:85
uint8_t opcode
Definition: hw_qspi_v2.h:384
uint8_t resume_latency_usec
Definition: hw_qspi_v2.h:424
__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
__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
QSPIC device busy status setting.
Definition: hw_qspi_v2.h:94
Definition: hw_qspi_v2.h:229
HW_QSPI_CLK_DIV clk_div
Definition: hw_qspi_v2.h:329
HW_QSPI_SAMPLING_EDGE sampling_edge
Definition: hw_qspi_v2.h:334
Definition: hw_qspi_v2.h:113
__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
#define REG_MSK(base, reg, field)
Access register field mask.
Definition: sdk_defs.h:583
HW_GPIO_MODE mode
Definition: hw_gpio.h:211
Definition: hw_qspi_v2.h:150
__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
__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
__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
__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
Definition: hw_qspi_v2.h:121
__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
Definition: hw_qspi_v2.h:213
Definition: hw_qspi_v2.h:104
Definition: hw_qspi_v2.h:217
Definition: hw_qspi_v2.h:151
__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_BUS_MODE suspend_bus_mode
Definition: hw_qspi_v2.h:413
__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
Definition: hw_qspi_v2.h:178
uint8_t suspend_opcode
Definition: hw_qspi_v2.h:417
__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
Definition: hw_qspi_v2.h:106
__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
__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
__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_BUSY_LEVEL busy_level
Definition: hw_qspi_v2.h:381
__STATIC_FORCEINLINE HW_QSPI_CLK_DIV hw_qspi_get_div(HW_QSPIC_ID id)
Get QSPIC clock divider.
Definition: hw_qspi_v2.h:578
uint8_t extra_byte_value
Definition: hw_qspi_v2.h:352
HW_QSPI_BUS_MODE opcode_bus_mode
Definition: hw_qspi_v2.h:379
__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
__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
QSPIC memory address size.
Definition: hw_qspi_v2.h:68
HW_QSPI_BUS_MODE data_bus_mode
Definition: hw_qspi_v2.h:405
#define GLOBAL_INT_RESTORE()
Macro to restore all interrupts.
Definition: sdk_defs.h:477
__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_SLEW_RATE slew_rate
Definition: hw_qspi_v2.h:335
#define SWAP16(a)
Macro to swap the bytes of a 16-bit variable.
Definition: sdk_defs.h:512
Definition: hw_qspi_v2.h:130
Definition: hw_qspi_v2.h:96
This union is used in order to allow different size access when reading/writing to QSPIC_READDATA_REG...
Definition: hw_qspi_v2.h:318
uint8_t opcode
Definition: hw_qspi_v2.h:396
__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
__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
#define REG_GETF(base, reg, field)
Return the value of a register field.
Definition: sdk_defs.h:711
__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
uint8_t opcode
Definition: hw_qspi_v2.h:368
HW_QSPI_EXTRA_BYTE_HALF extra_byte_half_cfg
Definition: hw_qspi_v2.h:350
QSPIC configuration structure.
Definition: hw_qspi_v2.h:327
__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
QSPIC Erase instruction configuration structure (auto access mode)
Definition: hw_qspi_v2.h:360
Definition: hw_qspi_v2.h:103
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
Definition: hw_qspi_v2.h:114
Definition: hw_qspi_v2.h:86
uint8_t opcode
Definition: hw_qspi_v2.h:351
__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
QSPIC clock mode.
Definition: hw_qspi_v2.h:112
Definition: hw_qspi_v2.h:212
HW_QSPI_IO_DIR
QSPIC pad direction.
Definition: hw_qspi_v2.h:177
Definition: hw_qspi_v2.h:251
Definition: hw_qspi_v2.h:179
Definition: hw_qspi_v2.h:239
HW_QSPI_READ_PIPE read_pipe
Definition: hw_qspi_v2.h:332
__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
Definition: hw_qspi_v2.h:248
Read instruction configuration structure (auto access mode)
Definition: hw_qspi_v2.h:342
#define REG_SET_FIELD(base, reg, field, var, val)
Set register field value.
Definition: sdk_defs.h:626
HW_QSPI_EXTRA_BYTE extra_byte_cfg
Definition: hw_qspi_v2.h:349
__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
__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
Definition: hw_qspi_v2.h:122
Definition: hw_qspi_v2.h:214
__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
__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
uint16_t cs_idle_delay_nsec
Definition: hw_qspi_v2.h:353
HW_QSPI_HREADY_MODE
QSPIC HREADY signal mode when accessing the WRITEDATA, READDATA and DUMMYDATA registers.
Definition: hw_qspi_v2.h:163
Definition: hw_qspi_v2.h:133
__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
__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
#define NSEC_TO_CLK_CYCLES(nsec, clk_freq_hz)
Macro to convert time in nsec to clock cycles.
Definition: sdk_defs.h:949
Definition: hw_qspi_v2.h:132
HW_QSPI_HREADY_MODE hready_mode
Definition: hw_qspi_v2.h:336
__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
#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
#define GLOBAL_INT_DISABLE()
Macro to disable all interrupts.
Definition: sdk_defs.h:452
HW_QSPI_ERASE_STATUS
The status of sector/block erasing.
Definition: hw_qspi_v2.h:247
Definition: hw_qspi_v2.h:61
__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_BUS_MODE dummy_bus_mode
Definition: hw_qspi_v2.h:346
__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