218 #if defined(OCTOSPI) || defined(OCTOSPI1) || defined(OCTOSPI2) 229 #ifdef HAL_OSPI_MODULE_ENABLED 237 #define OSPI_FUNCTIONAL_MODE_INDIRECT_WRITE ((uint32_t)0x00000000) 238 #define OSPI_FUNCTIONAL_MODE_INDIRECT_READ ((uint32_t)OCTOSPI_CR_FMODE_0) 239 #define OSPI_FUNCTIONAL_MODE_AUTO_POLLING ((uint32_t)OCTOSPI_CR_FMODE_1) 240 #define OSPI_FUNCTIONAL_MODE_MEMORY_MAPPED ((uint32_t)OCTOSPI_CR_FMODE) 242 #define OSPI_CFG_STATE_MASK 0x00000004U 243 #define OSPI_BUSY_STATE_MASK 0x00000008U 245 #define OSPI_NB_INSTANCE 2U 246 #define OSPI_IOM_NB_PORTS 2U 247 #define OSPI_IOM_PORT_MASK 0x1U 250 #define IS_OSPI_FUNCTIONAL_MODE(MODE) (((MODE) == OSPI_FUNCTIONAL_MODE_INDIRECT_WRITE) || \ 251 ((MODE) == OSPI_FUNCTIONAL_MODE_INDIRECT_READ) || \ 252 ((MODE) == OSPI_FUNCTIONAL_MODE_AUTO_POLLING) || \ 253 ((MODE) == OSPI_FUNCTIONAL_MODE_MEMORY_MAPPED)) 262 static HAL_StatusTypeDef OSPI_WaitFlagStateUntilTimeout(
OSPI_HandleTypeDef *hospi, uint32_t Flag, FlagStatus
State, uint32_t Tickstart, uint32_t Timeout);
264 static HAL_StatusTypeDef OSPIM_GetConfig (uint8_t instance_nb,
OSPIM_CfgTypeDef *cfg);
299 HAL_StatusTypeDef status =
HAL_OK;
328 if (hospi->
State == HAL_OSPI_STATE_RESET)
330 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 362 MODIFY_REG(hospi->
Instance->DCR1, (OCTOSPI_DCR1_MTYP | OCTOSPI_DCR1_DEVSIZE | OCTOSPI_DCR1_CSHT | OCTOSPI_DCR1_FRCK | OCTOSPI_DCR1_CKMODE),
363 (hospi->
Init.MemoryType | ((hospi->
Init.DeviceSize - 1U) << OCTOSPI_DCR1_DEVSIZE_Pos) |
364 ((hospi->
Init.ChipSelectHighTime - 1U) << OCTOSPI_DCR1_CSHT_Pos) | hospi->
Init.ClockMode));
370 hospi->
Instance->DCR3 = (hospi->
Init.ChipSelectBoundary << OCTOSPI_DCR3_CSBOUND_Pos);
374 MODIFY_REG(hospi->
Instance->CR, OCTOSPI_CR_FTHRES, ((hospi->
Init.FifoThreshold - 1U) << OCTOSPI_CR_FTHRES_Pos));
377 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->
Timeout);
382 MODIFY_REG(hospi->
Instance->DCR2, OCTOSPI_DCR2_PRESCALER, ((hospi->
Init.ClockPrescaler - 1U) << OCTOSPI_DCR2_PRESCALER_Pos));
388 MODIFY_REG(hospi->
Instance->TCR, (OCTOSPI_TCR_SSHIFT | OCTOSPI_TCR_DHQC), (hospi->
Init.SampleShifting | hospi->
Init.DelayHoldQuarterCycle));
391 __HAL_OSPI_ENABLE(hospi);
394 if (hospi->
Init.FreeRunningClock == HAL_OSPI_FREERUNCLK_ENABLE)
396 SET_BIT(hospi->
Instance->DCR1, OCTOSPI_DCR1_FRCK);
400 if (hospi->
Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS)
402 hospi->
State = HAL_OSPI_STATE_HYPERBUS_INIT;
406 hospi->
State = HAL_OSPI_STATE_READY;
438 HAL_StatusTypeDef status =
HAL_OK;
449 __HAL_OSPI_DISABLE(hospi);
454 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 468 hospi->
State = HAL_OSPI_STATE_RESET;
521 __IO uint32_t *data_reg = &hospi->
Instance->DR;
522 uint32_t flag = hospi->
Instance->SR;
523 uint32_t itsource = hospi->
Instance->CR;
524 uint32_t currentstate = hospi->
State;
527 if (((flag & HAL_OSPI_FLAG_FT) != 0U) && ((itsource & HAL_OSPI_IT_FT) != 0U))
529 if (currentstate == HAL_OSPI_STATE_BUSY_TX)
532 *((__IO uint8_t *)data_reg) = *hospi->
pBuffPtr;
536 else if (currentstate == HAL_OSPI_STATE_BUSY_RX)
539 *hospi->
pBuffPtr = *((__IO uint8_t *)data_reg);
552 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_FT);
556 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 563 else if (((flag & HAL_OSPI_FLAG_TC) != 0U) && ((itsource & HAL_OSPI_IT_TC) != 0U))
565 if (currentstate == HAL_OSPI_STATE_BUSY_RX)
567 if ((hospi->
XferCount > 0U) && ((flag & OCTOSPI_SR_FLEVEL) != 0U))
570 *hospi->
pBuffPtr = *((__IO uint8_t *)data_reg);
577 hospi->
Instance->FCR = HAL_OSPI_FLAG_TC;
580 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE);
583 hospi->
State = HAL_OSPI_STATE_READY;
586 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 600 hospi->
Instance->FCR = HAL_OSPI_FLAG_TC;
603 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE);
606 hospi->
State = HAL_OSPI_STATE_READY;
608 if (currentstate == HAL_OSPI_STATE_BUSY_TX)
611 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 617 else if (currentstate == HAL_OSPI_STATE_BUSY_CMD)
620 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 626 else if (currentstate == HAL_OSPI_STATE_ABORT)
628 if (hospi->
ErrorCode == HAL_OSPI_ERROR_NONE)
632 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 642 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 656 else if (((flag & HAL_OSPI_FLAG_SM) != 0U) && ((itsource & HAL_OSPI_IT_SM) != 0U))
659 hospi->
Instance->FCR = HAL_OSPI_FLAG_SM;
662 if ((hospi->
Instance->CR & OCTOSPI_CR_APMS) != 0U)
665 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_SM | HAL_OSPI_IT_TE);
668 hospi->
State = HAL_OSPI_STATE_READY;
672 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 679 else if (((flag & HAL_OSPI_FLAG_TE) != 0U) && ((itsource & HAL_OSPI_IT_TE) != 0U))
682 hospi->
Instance->FCR = HAL_OSPI_FLAG_TE;
685 __HAL_OSPI_DISABLE_IT(hospi, (HAL_OSPI_IT_TO | HAL_OSPI_IT_SM | HAL_OSPI_IT_FT | HAL_OSPI_IT_TC | HAL_OSPI_IT_TE));
688 hospi->
ErrorCode = HAL_OSPI_ERROR_TRANSFER;
691 if ((hospi->
Instance->CR & OCTOSPI_CR_DMAEN) != 0U)
701 hospi->
State = HAL_OSPI_STATE_READY;
704 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 714 hospi->
State = HAL_OSPI_STATE_READY;
717 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 725 else if (((flag & HAL_OSPI_FLAG_TO) != 0U) && ((itsource & HAL_OSPI_IT_TO) != 0U))
728 hospi->
Instance->FCR = HAL_OSPI_FLAG_TO;
731 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 752 HAL_StatusTypeDef status;
759 if (hospi->
Init.DualQuad == HAL_OSPI_DUALQUAD_DISABLE)
786 if (cmd->
DataMode != HAL_OSPI_DATA_NONE)
800 state = hospi->
State;
801 if (((state == HAL_OSPI_STATE_READY) && (hospi->
Init.MemoryType != HAL_OSPI_MEMTYPE_HYPERBUS)) ||
802 ((state == HAL_OSPI_STATE_READ_CMD_CFG) && (cmd->
OperationType == HAL_OSPI_OPTYPE_WRITE_CFG)) ||
803 ((state == HAL_OSPI_STATE_WRITE_CMD_CFG) && (cmd->
OperationType == HAL_OSPI_OPTYPE_READ_CFG)))
806 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, Timeout);
814 status = OSPI_ConfigCmd(hospi, cmd);
818 if (cmd->
DataMode == HAL_OSPI_DATA_NONE)
822 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_TC, SET, tickstart, Timeout);
824 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC);
831 hospi->
State = HAL_OSPI_STATE_CMD_CFG;
835 if (hospi->
State == HAL_OSPI_STATE_WRITE_CMD_CFG)
837 hospi->
State = HAL_OSPI_STATE_CMD_CFG;
841 hospi->
State = HAL_OSPI_STATE_READ_CMD_CFG;
846 if (hospi->
State == HAL_OSPI_STATE_READ_CMD_CFG)
848 hospi->
State = HAL_OSPI_STATE_CMD_CFG;
852 hospi->
State = HAL_OSPI_STATE_WRITE_CMD_CFG;
862 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
878 HAL_StatusTypeDef status;
884 if (hospi->
Init.DualQuad == HAL_OSPI_DUALQUAD_DISABLE)
911 if (cmd->
DataMode != HAL_OSPI_DATA_NONE)
922 if ((hospi->
State == HAL_OSPI_STATE_READY) && (cmd->
OperationType == HAL_OSPI_OPTYPE_COMMON_CFG) &&
923 (cmd->
DataMode == HAL_OSPI_DATA_NONE) && (hospi->
Init.MemoryType != HAL_OSPI_MEMTYPE_HYPERBUS))
926 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->
Timeout);
934 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC);
937 status = OSPI_ConfigCmd(hospi, cmd);
942 hospi->
State = HAL_OSPI_STATE_BUSY_CMD;
945 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_TE);
952 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
968 HAL_StatusTypeDef status;
979 state = hospi->
State;
980 if ((state == HAL_OSPI_STATE_HYPERBUS_INIT) || (state == HAL_OSPI_STATE_READY))
983 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, Timeout);
993 hospi->
State = HAL_OSPI_STATE_READY;
999 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
1015 HAL_StatusTypeDef status;
1025 if ((hospi->
State == HAL_OSPI_STATE_READY) && (hospi->
Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS))
1028 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, Timeout);
1042 WRITE_REG(hospi->
Instance->CCR, (cmd->
DQSMode | OCTOSPI_CCR_DDTR | OCTOSPI_CCR_DMODE_2 |
1043 cmd->
AddressSize | OCTOSPI_CCR_ADDTR | OCTOSPI_CCR_ADMODE_2));
1044 WRITE_REG(hospi->
Instance->WCCR, (cmd->
DQSMode | OCTOSPI_WCCR_DDTR | OCTOSPI_WCCR_DMODE_2 |
1045 cmd->
AddressSize | OCTOSPI_WCCR_ADDTR | OCTOSPI_WCCR_ADMODE_2));
1054 hospi->
State = HAL_OSPI_STATE_CMD_CFG;
1060 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
1077 HAL_StatusTypeDef status;
1079 __IO uint32_t *data_reg = &hospi->
Instance->DR;
1085 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM;
1090 if (hospi->
State == HAL_OSPI_STATE_CMD_CFG)
1098 MODIFY_REG(hospi->
Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_WRITE);
1103 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_FT, SET, tickstart, Timeout);
1110 *((__IO uint8_t *)data_reg) = *hospi->
pBuffPtr;
1118 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_TC, SET, tickstart, Timeout);
1123 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC);
1126 hospi->
State = HAL_OSPI_STATE_READY;
1133 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
1151 HAL_StatusTypeDef status;
1153 __IO uint32_t *data_reg = &hospi->
Instance->DR;
1154 uint32_t addr_reg = hospi->
Instance->AR;
1155 uint32_t ir_reg = hospi->
Instance->IR;
1161 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM;
1166 if (hospi->
State == HAL_OSPI_STATE_CMD_CFG)
1174 MODIFY_REG(hospi->
Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_READ);
1177 if (hospi->
Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS)
1179 WRITE_REG(hospi->
Instance->AR, addr_reg);
1183 if (READ_BIT(hospi->
Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE)
1185 WRITE_REG(hospi->
Instance->AR, addr_reg);
1189 WRITE_REG(hospi->
Instance->IR, ir_reg);
1196 status = OSPI_WaitFlagStateUntilTimeout(hospi, (HAL_OSPI_FLAG_FT | HAL_OSPI_FLAG_TC), SET, tickstart, Timeout);
1203 *hospi->
pBuffPtr = *((__IO uint8_t *)data_reg);
1211 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_TC, SET, tickstart, Timeout);
1216 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC);
1219 hospi->
State = HAL_OSPI_STATE_READY;
1226 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
1243 HAL_StatusTypeDef status =
HAL_OK;
1249 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM;
1254 if (hospi->
State == HAL_OSPI_STATE_CMD_CFG)
1262 MODIFY_REG(hospi->
Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_WRITE);
1265 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC);
1268 hospi->
State = HAL_OSPI_STATE_BUSY_TX;
1271 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE);
1276 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
1293 HAL_StatusTypeDef status =
HAL_OK;
1294 uint32_t addr_reg = hospi->
Instance->AR;
1295 uint32_t ir_reg = hospi->
Instance->IR;
1301 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM;
1306 if (hospi->
State == HAL_OSPI_STATE_CMD_CFG)
1314 MODIFY_REG(hospi->
Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_READ);
1317 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC);
1320 hospi->
State = HAL_OSPI_STATE_BUSY_RX;
1323 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE);
1326 if (hospi->
Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS)
1328 WRITE_REG(hospi->
Instance->AR, addr_reg);
1332 if (READ_BIT(hospi->
Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE)
1334 WRITE_REG(hospi->
Instance->AR, addr_reg);
1338 WRITE_REG(hospi->
Instance->IR, ir_reg);
1345 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
1366 HAL_StatusTypeDef status =
HAL_OK;
1367 uint32_t data_size = hospi->
Instance->DLR + 1U;
1373 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM;
1378 if (hospi->
State == HAL_OSPI_STATE_CMD_CFG)
1381 if (hospi->
hdma->
Init.PeriphDataAlignment == DMA_PDATAALIGN_BYTE)
1385 else if (hospi->
hdma->
Init.PeriphDataAlignment == DMA_PDATAALIGN_HALFWORD)
1387 if (((data_size % 2U) != 0U) || ((hospi->
Init.FifoThreshold % 2U) != 0U))
1391 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM;
1399 else if (hospi->
hdma->
Init.PeriphDataAlignment == DMA_PDATAALIGN_WORD)
1401 if (((data_size % 4U) != 0U) || ((hospi->
Init.FifoThreshold % 4U) != 0U))
1405 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM;
1424 MODIFY_REG(hospi->
Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_WRITE);
1427 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC);
1430 hospi->
State = HAL_OSPI_STATE_BUSY_TX;
1445 hospi->
hdma->
Init.Direction = DMA_MEMORY_TO_PERIPH;
1452 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TE);
1455 SET_BIT(hospi->
Instance->CR, OCTOSPI_CR_DMAEN);
1461 hospi->
State = HAL_OSPI_STATE_READY;
1468 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
1489 HAL_StatusTypeDef status =
HAL_OK;
1490 uint32_t data_size = hospi->
Instance->DLR + 1U;
1491 uint32_t addr_reg = hospi->
Instance->AR;
1492 uint32_t ir_reg = hospi->
Instance->IR;
1498 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM;
1503 if (hospi->
State == HAL_OSPI_STATE_CMD_CFG)
1506 if (hospi->
hdma->
Init.PeriphDataAlignment == DMA_PDATAALIGN_BYTE)
1510 else if (hospi->
hdma->
Init.PeriphDataAlignment == DMA_PDATAALIGN_HALFWORD)
1512 if (((data_size % 2U) != 0U) || ((hospi->
Init.FifoThreshold % 2U) != 0U))
1516 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM;
1524 else if (hospi->
hdma->
Init.PeriphDataAlignment == DMA_PDATAALIGN_WORD)
1526 if (((data_size % 4U) != 0U) || ((hospi->
Init.FifoThreshold % 4U) != 0U))
1530 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM;
1549 MODIFY_REG(hospi->
Instance->CR, OCTOSPI_CR_FMODE, OSPI_FUNCTIONAL_MODE_INDIRECT_READ);
1552 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_TC);
1555 hospi->
State = HAL_OSPI_STATE_BUSY_RX;
1570 hospi->
hdma->
Init.Direction = DMA_PERIPH_TO_MEMORY;
1577 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TE);
1580 if (hospi->
Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS)
1582 WRITE_REG(hospi->
Instance->AR, addr_reg);
1586 if (READ_BIT(hospi->
Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE)
1588 WRITE_REG(hospi->
Instance->AR, addr_reg);
1592 WRITE_REG(hospi->
Instance->IR, ir_reg);
1597 SET_BIT(hospi->
Instance->CR, OCTOSPI_CR_DMAEN);
1603 hospi->
State = HAL_OSPI_STATE_READY;
1610 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
1629 HAL_StatusTypeDef status;
1631 uint32_t addr_reg = hospi->
Instance->AR;
1632 uint32_t ir_reg = hospi->
Instance->IR;
1633 #ifdef USE_FULL_ASSERT 1634 uint32_t dlr_reg = hospi->
Instance->DLR;
1644 if ((hospi->
State == HAL_OSPI_STATE_CMD_CFG) && (cfg->
AutomaticStop == HAL_OSPI_AUTOMATIC_STOP_ENABLE))
1647 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, Timeout);
1655 MODIFY_REG(hospi->
Instance->CR, (OCTOSPI_CR_PMM | OCTOSPI_CR_APMS | OCTOSPI_CR_FMODE),
1659 if (hospi->
Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS)
1661 WRITE_REG(hospi->
Instance->AR, addr_reg);
1665 if (READ_BIT(hospi->
Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE)
1667 WRITE_REG(hospi->
Instance->AR, addr_reg);
1671 WRITE_REG(hospi->
Instance->IR, ir_reg);
1676 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_SM, SET, tickstart, Timeout);
1681 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_SM);
1684 hospi->
State = HAL_OSPI_STATE_READY;
1691 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
1708 HAL_StatusTypeDef status;
1710 uint32_t addr_reg = hospi->
Instance->AR;
1711 uint32_t ir_reg = hospi->
Instance->IR;
1712 #ifdef USE_FULL_ASSERT 1713 uint32_t dlr_reg = hospi->
Instance->DLR;
1723 if (hospi->
State == HAL_OSPI_STATE_CMD_CFG)
1726 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->
Timeout);
1734 MODIFY_REG(hospi->
Instance->CR, (OCTOSPI_CR_PMM | OCTOSPI_CR_APMS | OCTOSPI_CR_FMODE),
1738 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TE | HAL_OSPI_FLAG_SM);
1741 hospi->
State = HAL_OSPI_STATE_BUSY_AUTO_POLLING;
1744 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_SM | HAL_OSPI_IT_TE);
1747 if (hospi->
Init.MemoryType == HAL_OSPI_MEMTYPE_HYPERBUS)
1749 WRITE_REG(hospi->
Instance->AR, addr_reg);
1753 if (READ_BIT(hospi->
Instance->CCR, OCTOSPI_CCR_ADMODE) != HAL_OSPI_ADDRESS_NONE)
1755 WRITE_REG(hospi->
Instance->AR, addr_reg);
1759 WRITE_REG(hospi->
Instance->IR, ir_reg);
1767 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
1783 HAL_StatusTypeDef status;
1790 if (hospi->
State == HAL_OSPI_STATE_CMD_CFG)
1793 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->
Timeout);
1798 hospi->
State = HAL_OSPI_STATE_BUSY_MEM_MAPPED;
1808 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TO);
1811 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TO);
1822 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
1979 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 2003 HAL_StatusTypeDef status =
HAL_OK;
2005 if(pCallback == NULL)
2008 hospi->
ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK;
2012 if(hospi->
State == HAL_OSPI_STATE_READY)
2054 hospi->
ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK;
2060 else if (hospi->
State == HAL_OSPI_STATE_RESET)
2072 hospi->
ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK;
2081 hospi->
ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK;
2111 HAL_StatusTypeDef status =
HAL_OK;
2113 if(hospi->
State == HAL_OSPI_STATE_READY)
2155 hospi->
ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK;
2161 else if (hospi->
State == HAL_OSPI_STATE_RESET)
2173 hospi->
ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK;
2182 hospi->
ErrorCode |= HAL_OSPI_ERROR_INVALID_CALLBACK;
2221 HAL_StatusTypeDef status =
HAL_OK;
2226 state = hospi->
State;
2227 if (((state & OSPI_BUSY_STATE_MASK) != 0U) || ((state & OSPI_CFG_STATE_MASK) != 0U))
2230 if ((hospi->
Instance->CR & OCTOSPI_CR_DMAEN) != 0U)
2243 if (__HAL_OSPI_GET_FLAG(hospi, HAL_OSPI_FLAG_BUSY) != RESET)
2246 SET_BIT(hospi->
Instance->CR, OCTOSPI_CR_ABORT);
2249 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_TC, SET, tickstart, hospi->
Timeout);
2254 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC);
2257 status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_BUSY, RESET, tickstart, hospi->
Timeout);
2262 hospi->
State = HAL_OSPI_STATE_READY;
2269 hospi->
State = HAL_OSPI_STATE_READY;
2275 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
2289 HAL_StatusTypeDef status =
HAL_OK;
2293 state = hospi->
State;
2294 if (((state & OSPI_BUSY_STATE_MASK) != 0U) || ((state & OSPI_CFG_STATE_MASK) != 0U))
2297 __HAL_OSPI_DISABLE_IT(hospi, (HAL_OSPI_IT_TO | HAL_OSPI_IT_SM | HAL_OSPI_IT_FT | HAL_OSPI_IT_TC | HAL_OSPI_IT_TE));
2300 hospi->
State = HAL_OSPI_STATE_ABORT;
2303 if ((hospi->
Instance->CR & OCTOSPI_CR_DMAEN) != 0U)
2313 hospi->
State = HAL_OSPI_STATE_READY;
2316 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 2325 if (__HAL_OSPI_GET_FLAG(hospi, HAL_OSPI_FLAG_BUSY) != RESET)
2328 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC);
2331 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC);
2334 SET_BIT(hospi->
Instance->CR, OCTOSPI_CR_ABORT);
2339 hospi->
State = HAL_OSPI_STATE_READY;
2342 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 2353 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
2367 HAL_StatusTypeDef status =
HAL_OK;
2370 if ((hospi->
State & OSPI_BUSY_STATE_MASK) == 0U)
2373 hospi->
Init.FifoThreshold = Threshold;
2376 MODIFY_REG(hospi->
Instance->CR, OCTOSPI_CR_FTHRES, ((hospi->
Init.FifoThreshold-1U) << OCTOSPI_CR_FTHRES_Pos));
2382 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_SEQUENCE;
2395 return ((READ_BIT(hospi->
Instance->CR, OCTOSPI_CR_FTHRES) >> OCTOSPI_CR_FTHRES_Pos) + 1U);
2427 return hospi->
State;
2458 HAL_StatusTypeDef status =
HAL_OK;
2460 uint8_t index, ospi_enabled = 0U, other_instance;
2476 other_instance = 1U;
2481 other_instance = 0U;
2485 for (index = 0U; index < OSPI_NB_INSTANCE; index++)
2487 if (OSPIM_GetConfig(index+1U, &(IOM_cfg[index])) !=
HAL_OK)
2490 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM;
2497 if ((OCTOSPI1->CR & OCTOSPI_CR_EN) != 0U)
2500 ospi_enabled |= 0x1U;
2502 if ((OCTOSPI2->CR & OCTOSPI_CR_EN) != 0U)
2505 ospi_enabled |= 0x2U;
2509 if (IOM_cfg[instance].ClkPort != 0U)
2511 CLEAR_BIT(OCTOSPIM->PCR[(IOM_cfg[instance].
ClkPort-1U)], OCTOSPIM_PCR_CLKEN);
2512 CLEAR_BIT(OCTOSPIM->PCR[(IOM_cfg[instance].
DQSPort-1U)], OCTOSPIM_PCR_DQSEN);
2513 CLEAR_BIT(OCTOSPIM->PCR[(IOM_cfg[instance].
NCSPort-1U)], OCTOSPIM_PCR_NCSEN);
2514 CLEAR_BIT(OCTOSPIM->PCR[((IOM_cfg[instance].
IOLowPort-1U)& OSPI_IOM_PORT_MASK)], OCTOSPIM_PCR_IOLEN);
2515 CLEAR_BIT(OCTOSPIM->PCR[((IOM_cfg[instance].
IOHighPort-1U)& OSPI_IOM_PORT_MASK)], OCTOSPIM_PCR_IOHEN);
2523 CLEAR_BIT(OCTOSPIM->PCR[(IOM_cfg[other_instance].
ClkPort-1U)], OCTOSPIM_PCR_CLKEN);
2524 CLEAR_BIT(OCTOSPIM->PCR[(IOM_cfg[other_instance].
DQSPort-1U)], OCTOSPIM_PCR_DQSEN);
2525 CLEAR_BIT(OCTOSPIM->PCR[(IOM_cfg[other_instance].
NCSPort-1U)], OCTOSPIM_PCR_NCSEN);
2526 CLEAR_BIT(OCTOSPIM->PCR[((IOM_cfg[other_instance].
IOLowPort-1U)& OSPI_IOM_PORT_MASK)], OCTOSPIM_PCR_IOLEN);
2527 CLEAR_BIT(OCTOSPIM->PCR[((IOM_cfg[other_instance].
IOHighPort-1U)& OSPI_IOM_PORT_MASK)], OCTOSPIM_PCR_IOHEN);
2531 MODIFY_REG(OCTOSPIM->PCR[(cfg->
ClkPort-1U)], (OCTOSPIM_PCR_CLKEN | OCTOSPIM_PCR_CLKSRC), (OCTOSPIM_PCR_CLKEN | (instance << OCTOSPIM_PCR_CLKSRC_Pos)));
2532 MODIFY_REG(OCTOSPIM->PCR[(cfg->
DQSPort-1U)], (OCTOSPIM_PCR_DQSEN | OCTOSPIM_PCR_DQSSRC), (OCTOSPIM_PCR_DQSEN | (instance << OCTOSPIM_PCR_DQSSRC_Pos)));
2533 MODIFY_REG(OCTOSPIM->PCR[(cfg->
NCSPort-1U)], (OCTOSPIM_PCR_NCSEN | OCTOSPIM_PCR_NCSSRC), (OCTOSPIM_PCR_NCSEN | (instance << OCTOSPIM_PCR_NCSSRC_Pos)));
2535 if ((cfg->
IOLowPort & OCTOSPIM_PCR_IOLEN) != 0U)
2537 MODIFY_REG(OCTOSPIM->PCR[((cfg->
IOLowPort-1U)& OSPI_IOM_PORT_MASK)], (OCTOSPIM_PCR_IOLEN | OCTOSPIM_PCR_IOLSRC),
2538 (OCTOSPIM_PCR_IOLEN | (instance << (OCTOSPIM_PCR_IOLSRC_Pos+1U))));
2542 MODIFY_REG(OCTOSPIM->PCR[((cfg->
IOLowPort-1U)& OSPI_IOM_PORT_MASK)], (OCTOSPIM_PCR_IOHEN | OCTOSPIM_PCR_IOHSRC),
2543 (OCTOSPIM_PCR_IOHEN | (instance << (OCTOSPIM_PCR_IOHSRC_Pos+1U))));
2546 if ((cfg->
IOHighPort & OCTOSPIM_PCR_IOLEN) != 0U)
2548 MODIFY_REG(OCTOSPIM->PCR[((cfg->
IOHighPort-1U)& OSPI_IOM_PORT_MASK)], (OCTOSPIM_PCR_IOLEN | OCTOSPIM_PCR_IOLSRC),
2549 (OCTOSPIM_PCR_IOLEN | OCTOSPIM_PCR_IOLSRC_0 | (instance << (OCTOSPIM_PCR_IOLSRC_Pos+1U))));
2553 MODIFY_REG(OCTOSPIM->PCR[((cfg->
IOHighPort-1U)& OSPI_IOM_PORT_MASK)], (OCTOSPIM_PCR_IOHEN | OCTOSPIM_PCR_IOHSRC),
2554 (OCTOSPIM_PCR_IOHEN | OCTOSPIM_PCR_IOHSRC_0 | (instance << (OCTOSPIM_PCR_IOHSRC_Pos+1U))));
2558 if ((ospi_enabled & 0x1U) != 0U)
2560 SET_BIT(OCTOSPI1->CR, OCTOSPI_CR_EN);
2562 if ((ospi_enabled & 0x2U) != 0U)
2564 SET_BIT(OCTOSPI2->CR, OCTOSPI_CR_EN);
2593 __HAL_DMA_DISABLE(hdma);
2596 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC);
2609 if (hospi->
State == HAL_OSPI_STATE_BUSY_RX)
2611 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 2619 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 2645 __HAL_OSPI_DISABLE_IT(hospi, HAL_OSPI_IT_TC | HAL_OSPI_IT_FT | HAL_OSPI_IT_TE);
2648 hospi->
State = HAL_OSPI_STATE_READY;
2651 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 2670 if (hospi->
State == HAL_OSPI_STATE_ABORT)
2673 if (__HAL_OSPI_GET_FLAG(hospi, HAL_OSPI_FLAG_BUSY) != RESET)
2676 __HAL_OSPI_CLEAR_FLAG(hospi, HAL_OSPI_FLAG_TC);
2679 __HAL_OSPI_ENABLE_IT(hospi, HAL_OSPI_IT_TC);
2682 SET_BIT(hospi->
Instance->CR, OCTOSPI_CR_ABORT);
2687 hospi->
State = HAL_OSPI_STATE_READY;
2690 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 2701 hospi->
State = HAL_OSPI_STATE_READY;
2704 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U) 2721 static HAL_StatusTypeDef OSPI_WaitFlagStateUntilTimeout(
OSPI_HandleTypeDef *hospi, uint32_t Flag,
2722 FlagStatus
State, uint32_t Tickstart, uint32_t Timeout)
2725 while((__HAL_OSPI_GET_FLAG(hospi, Flag)) !=
State)
2728 if (Timeout != HAL_MAX_DELAY)
2730 if(((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
2732 hospi->
State = HAL_OSPI_STATE_ERROR;
2733 hospi->
ErrorCode |= HAL_OSPI_ERROR_TIMEOUT;
2750 HAL_StatusTypeDef status =
HAL_OK;
2751 __IO uint32_t *ccr_reg, *tcr_reg, *ir_reg, *abr_reg;
2757 if (hospi->
Init.DualQuad == HAL_OSPI_DUALQUAD_DISABLE)
2764 ccr_reg = &(hospi->
Instance->WCCR);
2765 tcr_reg = &(hospi->
Instance->WTCR);
2767 abr_reg = &(hospi->
Instance->WABR);
2786 MODIFY_REG((*ccr_reg), (OCTOSPI_CCR_ABMODE | OCTOSPI_CCR_ABDTR | OCTOSPI_CCR_ABSIZE),
2793 if (cmd->
DataMode != HAL_OSPI_DATA_NONE)
2806 if (cmd->
DataMode != HAL_OSPI_DATA_NONE)
2811 MODIFY_REG((*ccr_reg), (OCTOSPI_CCR_IMODE | OCTOSPI_CCR_IDTR | OCTOSPI_CCR_ISIZE |
2812 OCTOSPI_CCR_ADMODE | OCTOSPI_CCR_ADDTR | OCTOSPI_CCR_ADSIZE |
2813 OCTOSPI_CCR_DMODE | OCTOSPI_CCR_DDTR),
2823 MODIFY_REG((*ccr_reg), (OCTOSPI_CCR_IMODE | OCTOSPI_CCR_IDTR | OCTOSPI_CCR_ISIZE |
2824 OCTOSPI_CCR_ADMODE | OCTOSPI_CCR_ADDTR | OCTOSPI_CCR_ADSIZE),
2829 if ((hospi->
Init.DelayHoldQuarterCycle == HAL_OSPI_DHQC_ENABLE) &&
2832 MODIFY_REG((*ccr_reg), OCTOSPI_CCR_DDTR, HAL_OSPI_DATA_DTR_ENABLE);
2844 if (cmd->
DataMode != HAL_OSPI_DATA_NONE)
2849 MODIFY_REG((*ccr_reg), (OCTOSPI_CCR_IMODE | OCTOSPI_CCR_IDTR | OCTOSPI_CCR_ISIZE |
2850 OCTOSPI_CCR_DMODE | OCTOSPI_CCR_DDTR),
2859 MODIFY_REG((*ccr_reg), (OCTOSPI_CCR_IMODE | OCTOSPI_CCR_IDTR | OCTOSPI_CCR_ISIZE),
2863 if ((hospi->
Init.DelayHoldQuarterCycle == HAL_OSPI_DHQC_ENABLE) &&
2866 MODIFY_REG((*ccr_reg), OCTOSPI_CCR_DDTR, HAL_OSPI_DATA_DTR_ENABLE);
2879 if (cmd->
DataMode != HAL_OSPI_DATA_NONE)
2884 MODIFY_REG((*ccr_reg), (OCTOSPI_CCR_ADMODE | OCTOSPI_CCR_ADDTR | OCTOSPI_CCR_ADSIZE |
2885 OCTOSPI_CCR_DMODE | OCTOSPI_CCR_DDTR),
2894 MODIFY_REG((*ccr_reg), (OCTOSPI_CCR_ADMODE | OCTOSPI_CCR_ADDTR | OCTOSPI_CCR_ADSIZE),
2905 hospi->
ErrorCode = HAL_OSPI_ERROR_INVALID_PARAM;
2919 static HAL_StatusTypeDef OSPIM_GetConfig(uint8_t instance_nb,
OSPIM_CfgTypeDef *cfg)
2921 HAL_StatusTypeDef status =
HAL_OK;
2922 uint32_t reg, value = 0U;
2925 if ((instance_nb == 0U) || (instance_nb > OSPI_NB_INSTANCE) || (cfg == NULL))
2939 if (instance_nb == 2U)
2941 value = (OCTOSPIM_PCR_CLKSRC | OCTOSPIM_PCR_DQSSRC | OCTOSPIM_PCR_NCSSRC | OCTOSPIM_PCR_IOLSRC_1 | OCTOSPIM_PCR_IOHSRC_1);
2945 for (index = 0U; index < OSPI_IOM_NB_PORTS; index ++)
2947 reg = OCTOSPIM->PCR[index];
2949 if ((reg & OCTOSPIM_PCR_CLKEN) != 0U)
2952 if ((reg & OCTOSPIM_PCR_CLKSRC) == (value & OCTOSPIM_PCR_CLKSRC))
2959 if ((reg & OCTOSPIM_PCR_DQSEN) != 0U)
2962 if ((reg & OCTOSPIM_PCR_DQSSRC) == (value & OCTOSPIM_PCR_DQSSRC))
2969 if ((reg & OCTOSPIM_PCR_NCSEN) != 0U)
2972 if ((reg & OCTOSPIM_PCR_NCSSRC) == (value & OCTOSPIM_PCR_NCSSRC))
2979 if ((reg & OCTOSPIM_PCR_IOLEN) != 0U)
2982 if ((reg & OCTOSPIM_PCR_IOLSRC_1) == (value & OCTOSPIM_PCR_IOLSRC_1))
2985 if ((reg & OCTOSPIM_PCR_IOLSRC_0) == 0U)
2987 cfg->
IOLowPort = (OCTOSPIM_PCR_IOLEN | (index+1U));
2991 cfg->
IOLowPort = (OCTOSPIM_PCR_IOHEN | (index+1U));
2996 if ((reg & OCTOSPIM_PCR_IOHEN) != 0U)
2999 if ((reg & OCTOSPIM_PCR_IOHSRC_1) == (value & OCTOSPIM_PCR_IOHSRC_1))
3002 if ((reg & OCTOSPIM_PCR_IOHSRC_0) == 0U)
3004 cfg->
IOHighPort = (OCTOSPIM_PCR_IOLEN | (index+1U));
3008 cfg->
IOHighPort = (OCTOSPIM_PCR_IOHEN | (index+1U));
HAL_OSPI_CallbackIDTypeDef
HAL OSPI Callback ID enumeration definition.
HAL_StatusTypeDef HAL_OSPI_Receive_IT(OSPI_HandleTypeDef *hospi, uint8_t *pData)
Receive an amount of data in non-blocking mode with interrupt.
uint32_t AlternateBytesMode
uint32_t HAL_OSPI_GetError(OSPI_HandleTypeDef *hospi)
Return the OSPI error code.
HAL_StatusTypeDef HAL_OSPI_Receive_DMA(OSPI_HandleTypeDef *hospi, uint8_t *pData)
Receive an amount of data in non-blocking mode with DMA.
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
void(* TimeOutCallback)(struct __OSPI_HandleTypeDef *hospi)
HAL OSPI IO Manager Configuration structure definition.
HAL_StatusTypeDef HAL_OSPI_AutoPolling(OSPI_HandleTypeDef *hospi, OSPI_AutoPollingTypeDef *cfg, uint32_t Timeout)
Configure the OSPI Automatic Polling Mode in blocking mode.
HAL_StatusTypeDef HAL_OSPI_UnRegisterCallback(OSPI_HandleTypeDef *hospi, HAL_OSPI_CallbackIDTypeDef CallbackID)
Unregister a User OSPI Callback OSPI Callback is redirected to the weak (surcharged) predefined callb...
HAL OSPI Hyperbus Command Structure definition.
void HAL_OSPI_StatusMatchCallback(OSPI_HandleTypeDef *hospi)
Status Match callback.
void(* RxHalfCpltCallback)(struct __OSPI_HandleTypeDef *hospi)
void(* FifoThresholdCallback)(struct __OSPI_HandleTypeDef *hospi)
void(* CmdCpltCallback)(struct __OSPI_HandleTypeDef *hospi)
void(* MspDeInitCallback)(struct __OSPI_HandleTypeDef *hospi)
DMA handle Structure definition.
HAL_StatusTypeDef HAL_OSPI_HyperbusCfg(OSPI_HandleTypeDef *hospi, OSPI_HyperbusCfgTypeDef *cfg, uint32_t Timeout)
Configure the Hyperbus parameters.
uint32_t HAL_OSPI_GetState(OSPI_HandleTypeDef *hospi)
Return the OSPI handle state.
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
void HAL_OSPI_CmdCpltCallback(OSPI_HandleTypeDef *hospi)
Command completed callback.
HAL_StatusTypeDef HAL_OSPI_AutoPolling_IT(OSPI_HandleTypeDef *hospi, OSPI_AutoPollingTypeDef *cfg)
Configure the OSPI Automatic Polling Mode in non-blocking mode.
HAL_StatusTypeDef HAL_OSPI_HyperbusCmd(OSPI_HandleTypeDef *hospi, OSPI_HyperbusCmdTypeDef *cmd, uint32_t Timeout)
Set the Hyperbus command configuration.
HAL OSPI Handle Structure definition.
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef HAL_OSPI_MemoryMapped(OSPI_HandleTypeDef *hospi, OSPI_MemoryMappedTypeDef *cfg)
Configure the Memory Mapped mode.
HAL_StatusTypeDef HAL_OSPI_Transmit(OSPI_HandleTypeDef *hospi, uint8_t *pData, uint32_t Timeout)
Transmit an amount of data in blocking mode.
uint32_t TimeOutActivation
HAL_StatusTypeDef HAL_OSPI_Command(OSPI_HandleTypeDef *hospi, OSPI_RegularCmdTypeDef *cmd, uint32_t Timeout)
Set the command configuration.
HAL_StatusTypeDef HAL_OSPI_Receive(OSPI_HandleTypeDef *hospi, uint8_t *pData, uint32_t Timeout)
Receive an amount of data in blocking mode.
void HAL_OSPI_IRQHandler(OSPI_HandleTypeDef *hospi)
Handle OSPI interrupt request.
void HAL_OSPI_TxCpltCallback(OSPI_HandleTypeDef *hospi)
Tx Transfer completed callback.
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
DMA_Channel_TypeDef * Instance
void(* RxCpltCallback)(struct __OSPI_HandleTypeDef *hospi)
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer in Interrupt mode.
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_OSPI_Transmit_DMA(OSPI_HandleTypeDef *hospi, uint8_t *pData)
Send an amount of data in non-blocking mode with DMA.
HAL OSPI Hyperbus Configuration Structure definition.
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
Start the DMA Transfer with interrupt enabled.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
void(* TxHalfCpltCallback)(struct __OSPI_HandleTypeDef *hospi)
HAL_StatusTypeDef HAL_OSPI_SetTimeout(OSPI_HandleTypeDef *hospi, uint32_t Timeout)
Set OSPI timeout.
void HAL_OSPI_FifoThresholdCallback(OSPI_HandleTypeDef *hospi)
FIFO Threshold callback.
HAL OSPI Regular Command Structure definition.
uint32_t AlternateBytesDtrMode
uint32_t HAL_OSPI_GetFifoThreshold(OSPI_HandleTypeDef *hospi)
Get OSPI Fifo threshold.
HAL_StatusTypeDef HAL_OSPI_Abort_IT(OSPI_HandleTypeDef *hospi)
Abort the current transmission (non-blocking function)
uint32_t WriteZeroLatency
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Abort the DMA Transfer.
void HAL_OSPI_TimeOutCallback(OSPI_HandleTypeDef *hospi)
Timeout callback.
void HAL_OSPI_MspInit(OSPI_HandleTypeDef *hospi)
Initialize the OSPI MSP.
HAL_StatusTypeDef HAL_OSPI_Transmit_IT(OSPI_HandleTypeDef *hospi, uint8_t *pData)
Send an amount of data in non-blocking mode with interrupt.
void(* StatusMatchCallback)(struct __OSPI_HandleTypeDef *hospi)
HAL_StatusTypeDef HAL_OSPI_Init(OSPI_HandleTypeDef *hospi)
Initialize the OSPI mode according to the specified parameters in the OSPI_InitTypeDef and initialize...
HAL_StatusTypeDef HAL_OSPI_SetFifoThreshold(OSPI_HandleTypeDef *hospi, uint32_t Threshold)
Set OSPI Fifo threshold.
HAL_StatusTypeDef HAL_OSPI_Abort(OSPI_HandleTypeDef *hospi)
Abort the current transmission.
void HAL_OSPI_TxHalfCpltCallback(OSPI_HandleTypeDef *hospi)
Tx Half Transfer completed callback.
HAL_StatusTypeDef HAL_OSPI_Command_IT(OSPI_HandleTypeDef *hospi, OSPI_RegularCmdTypeDef *cmd)
Set the command configuration in interrupt mode.
void(* AbortCpltCallback)(struct __OSPI_HandleTypeDef *hospi)
void(* pOSPI_CallbackTypeDef)(OSPI_HandleTypeDef *hospi)
HAL OSPI Callback pointer definition.
HAL OSPI Auto Polling mode configuration structure definition.
uint32_t AlternateBytesSize
void(* TxCpltCallback)(struct __OSPI_HandleTypeDef *hospi)
void HAL_OSPI_RxCpltCallback(OSPI_HandleTypeDef *hospi)
Rx Transfer completed callback.
void(* ErrorCallback)(struct __OSPI_HandleTypeDef *hospi)
void HAL_OSPI_MspDeInit(OSPI_HandleTypeDef *hospi)
DeInitialize the OSPI MSP.
HAL_StatusTypeDef HAL_OSPI_RegisterCallback(OSPI_HandleTypeDef *hospi, HAL_OSPI_CallbackIDTypeDef CallbackID, pOSPI_CallbackTypeDef pCallback)
Register a User OSPI Callback To be used instead of the weak (surcharged) predefined callback...
void HAL_OSPI_RxHalfCpltCallback(OSPI_HandleTypeDef *hospi)
Rx Half Transfer completed callback.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
HAL_StatusTypeDef HAL_OSPI_DeInit(OSPI_HandleTypeDef *hospi)
De-Initialize the OSPI peripheral.
HAL OSPI Memory Mapped mode configuration structure definition.
HAL_StatusTypeDef HAL_OSPIM_Config(OSPI_HandleTypeDef *hospi, OSPIM_CfgTypeDef *cfg, uint32_t Timeout)
Configure the OctoSPI IO manager.
OCTOSPI_TypeDef * Instance
void(* MspInitCallback)(struct __OSPI_HandleTypeDef *hospi)
void HAL_OSPI_AbortCpltCallback(OSPI_HandleTypeDef *hospi)
Abort completed callback.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
uint32_t InstructionDtrMode
void HAL_OSPI_ErrorCallback(OSPI_HandleTypeDef *hospi)
Transfer Error callback.