void hw_qspi_set_wrapping_burst_instruction(uint8_t inst, HW_QSPI_WRAP_LEN len, HW_QSPI_WRAP_SIZE size) { HW_QSPIC_REG_SETF(BURSTCMDA, INST_WB, inst); QSPIC->QSPIC_BURSTCMDB_REG = (QSPIC->QSPIC_BURSTCMDB_REG & ~(REG_MSK(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_WRAP_SIZE) | REG_MSK(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_WRAP_LEN))) | BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_WRAP_SIZE, size) | BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_WRAP_LEN, len) | BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_WRAP_MD, 1); }
void hw_qspi_set_dummy_bytes_count(uint8_t count) { if (count == 3) { HW_QSPIC_REG_SETF(BURSTCMDB, DMY_FORCE, 1); } else { QSPIC->QSPIC_BURSTCMDB_REG = (QSPIC->QSPIC_BURSTCMDB_REG & ~(REG_MSK(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_FORCE) | REG_MSK(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_NUM))) | BITS32(QSPIC, QSPIC_BURSTCMDB_REG, QSPIC_DMY_NUM, dummy_num[count]); } }
void hw_qspi_set_bus_mode(HW_QSPI_BUS_MODE mode) { switch (mode) { case HW_QSPI_BUS_MODE_SINGLE: QSPIC->QSPIC_CTRLBUS_REG = REG_MSK(QSPIC, QSPIC_CTRLBUS_REG, QSPIC_SET_SINGLE); break; case HW_QSPI_BUS_MODE_DUAL: QSPIC->QSPIC_CTRLBUS_REG = REG_MSK(QSPIC, QSPIC_CTRLBUS_REG, QSPIC_SET_DUAL); break; case HW_QSPI_BUS_MODE_QUAD: QSPIC->QSPIC_CTRLBUS_REG = REG_MSK(QSPIC, QSPIC_CTRLBUS_REG, QSPIC_SET_QUAD); hw_qspi_set_io2_output(false); hw_qspi_set_io3_output(false); break; } }
__RETAINED_CODE uint8_t hw_trng_get_fifo_level(void) { return (TRNG->TRNG_FIFOLVL_REG) & (REG_MSK(TRNG, TRNG_FIFOLVL_REG, TRNG_FIFOLVL) | REG_MSK(TRNG, TRNG_FIFOLVL_REG, TRNG_FIFOFULL)); }