54 #ifdef HAL_DSI_MODULE_ENABLED 56 #if defined (STM32F769xx) || defined (STM32F779xx) 63 #define DSI_TIMEOUT_VALUE ((uint32_t)1000) 65 #define DSI_ERROR_ACK_MASK (DSI_ISR0_AE0 | DSI_ISR0_AE1 | DSI_ISR0_AE2 | DSI_ISR0_AE3 | \ 66 DSI_ISR0_AE4 | DSI_ISR0_AE5 | DSI_ISR0_AE6 | DSI_ISR0_AE7 | \ 67 DSI_ISR0_AE8 | DSI_ISR0_AE9 | DSI_ISR0_AE10 | DSI_ISR0_AE11 | \ 68 DSI_ISR0_AE12 | DSI_ISR0_AE13 | DSI_ISR0_AE14 | DSI_ISR0_AE15) 69 #define DSI_ERROR_PHY_MASK (DSI_ISR0_PE0 | DSI_ISR0_PE1 | DSI_ISR0_PE2 | DSI_ISR0_PE3 | DSI_ISR0_PE4) 70 #define DSI_ERROR_TX_MASK DSI_ISR1_TOHSTX 71 #define DSI_ERROR_RX_MASK DSI_ISR1_TOLPRX 72 #define DSI_ERROR_ECC_MASK (DSI_ISR1_ECCSE | DSI_ISR1_ECCME) 73 #define DSI_ERROR_CRC_MASK DSI_ISR1_CRCE 74 #define DSI_ERROR_PSE_MASK DSI_ISR1_PSE 75 #define DSI_ERROR_EOT_MASK DSI_ISR1_EOTPE 76 #define DSI_ERROR_OVF_MASK DSI_ISR1_LPWRE 77 #define DSI_ERROR_GEN_MASK (DSI_ISR1_GCWRE | DSI_ISR1_GPWRE | DSI_ISR1_GPTXE | DSI_ISR1_GPRDE | DSI_ISR1_GPRXE) 86 static void DSI_ConfigPacketHeader(
DSI_TypeDef *DSIx, uint32_t ChannelID, uint32_t DataType, uint32_t Data0, uint32_t Data1);
103 static void DSI_ConfigPacketHeader(
DSI_TypeDef *DSIx,
110 DSIx->
GHCR = (DataType | (ChannelID<<6) | (Data0<<8) | (Data1<<16));
142 HAL_StatusTypeDef HAL_DSI_Init(DSI_HandleTypeDef *hdsi, DSI_PLLInitTypeDef *PLLInit)
144 uint32_t tickstart = 0;
145 uint32_t unitIntervalx4 = 0;
146 uint32_t tempIDF = 0;
158 assert_param(IS_DSI_AUTO_CLKLANE_CONTROL(hdsi->Init.AutomaticClockLaneControl));
159 assert_param(IS_DSI_NUMBER_OF_LANES(hdsi->Init.NumberOfLanes));
161 if(hdsi->State == HAL_DSI_STATE_RESET)
164 HAL_DSI_MspInit(hdsi);
168 hdsi->State = HAL_DSI_STATE_BUSY;
173 __HAL_DSI_REG_ENABLE(hdsi);
179 while(__HAL_DSI_GET_FLAG(hdsi, DSI_FLAG_RRS) ==
RESET)
182 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
190 hdsi->Instance->WRPCR |= (((PLLInit->PLLNDIV)<<2) | ((PLLInit->PLLIDF)<<11) | ((PLLInit->PLLODF)<<16));
193 __HAL_DSI_PLL_ENABLE(hdsi);
199 while(__HAL_DSI_GET_FLAG(hdsi, DSI_FLAG_PLLLS) ==
RESET)
202 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
215 hdsi->Instance->CLCR |= (
DSI_CLCR_DPCC | hdsi->Init.AutomaticClockLaneControl);
219 hdsi->Instance->PCONFR |= hdsi->Init.NumberOfLanes;
225 hdsi->Instance->CCR = hdsi->Init.TXEscapeCkdiv;
230 tempIDF = (PLLInit->PLLIDF > 0) ? PLLInit->PLLIDF : 1;
231 unitIntervalx4 = (4000000 * tempIDF * (1 << PLLInit->PLLODF)) / ((
HSE_VALUE/1000) * PLLInit->PLLNDIV);
235 hdsi->Instance->WPCR[0] |= unitIntervalx4;
240 hdsi->Instance->IER[0] = 0;
241 hdsi->Instance->IER[1] = 0;
245 hdsi->ErrorCode = HAL_DSI_ERROR_NONE;
248 hdsi->State = HAL_DSI_STATE_READY;
269 hdsi->State = HAL_DSI_STATE_BUSY;
272 __HAL_DSI_WRAPPER_DISABLE(hdsi);
275 __HAL_DSI_DISABLE(hdsi);
281 __HAL_DSI_PLL_DISABLE(hdsi);
284 __HAL_DSI_REG_DISABLE(hdsi);
287 HAL_DSI_MspDeInit(hdsi);
290 hdsi->ErrorCode = HAL_DSI_ERROR_NONE;
293 hdsi->State = HAL_DSI_STATE_RESET;
307 uint32_t HAL_DSI_GetError(DSI_HandleTypeDef *hdsi)
310 return hdsi->ErrorCode;
321 HAL_StatusTypeDef HAL_DSI_ConfigErrorMonitor(DSI_HandleTypeDef *hdsi, uint32_t ActiveErrors)
326 hdsi->Instance->IER[0] = 0;
327 hdsi->Instance->IER[1] = 0;
330 hdsi->ErrorMsk = ActiveErrors;
332 if((ActiveErrors & HAL_DSI_ERROR_ACK) !=
RESET)
335 hdsi->Instance->IER[0] |= DSI_ERROR_ACK_MASK;
338 if((ActiveErrors & HAL_DSI_ERROR_PHY ) !=
RESET)
341 hdsi->Instance->IER[0] |= DSI_ERROR_PHY_MASK;
344 if((ActiveErrors & HAL_DSI_ERROR_TX) !=
RESET)
347 hdsi->Instance->IER[1] |= DSI_ERROR_TX_MASK;
350 if((ActiveErrors & HAL_DSI_ERROR_RX) !=
RESET)
353 hdsi->Instance->IER[1] |= DSI_ERROR_RX_MASK;
356 if((ActiveErrors & HAL_DSI_ERROR_ECC) !=
RESET)
359 hdsi->Instance->IER[1] |= DSI_ERROR_ECC_MASK;
362 if((ActiveErrors & HAL_DSI_ERROR_CRC) !=
RESET)
365 hdsi->Instance->IER[1] |= DSI_ERROR_CRC_MASK;
368 if((ActiveErrors & HAL_DSI_ERROR_PSE) !=
RESET)
371 hdsi->Instance->IER[1] |= DSI_ERROR_PSE_MASK;
374 if((ActiveErrors & HAL_DSI_ERROR_EOT) !=
RESET)
377 hdsi->Instance->IER[1] |= DSI_ERROR_EOT_MASK;
380 if((ActiveErrors & HAL_DSI_ERROR_OVF) !=
RESET)
383 hdsi->Instance->IER[1] |= DSI_ERROR_OVF_MASK;
386 if((ActiveErrors & HAL_DSI_ERROR_GEN) !=
RESET)
389 hdsi->Instance->IER[1] |= DSI_ERROR_GEN_MASK;
404 __weak
void HAL_DSI_MspInit(DSI_HandleTypeDef* hdsi)
420 __weak
void HAL_DSI_MspDeInit(DSI_HandleTypeDef* hdsi)
453 void HAL_DSI_IRQHandler(DSI_HandleTypeDef *hdsi)
455 uint32_t ErrorStatus0, ErrorStatus1;
458 if(__HAL_DSI_GET_FLAG(hdsi, DSI_FLAG_TE) !=
RESET)
460 if(__HAL_DSI_GET_IT_SOURCE(hdsi, DSI_IT_TE) !=
RESET)
463 __HAL_DSI_CLEAR_FLAG(hdsi, DSI_FLAG_TE);
466 HAL_DSI_TearingEffectCallback(hdsi);
471 if(__HAL_DSI_GET_FLAG(hdsi, DSI_FLAG_ER) !=
RESET)
473 if(__HAL_DSI_GET_IT_SOURCE(hdsi, DSI_IT_ER) !=
RESET)
476 __HAL_DSI_CLEAR_FLAG(hdsi, DSI_FLAG_ER);
484 if(hdsi->ErrorMsk != 0)
486 ErrorStatus0 = hdsi->Instance->ISR[0];
487 ErrorStatus0 &= hdsi->Instance->IER[0];
488 ErrorStatus1 = hdsi->Instance->ISR[1];
489 ErrorStatus1 &= hdsi->Instance->IER[1];
491 if((ErrorStatus0 & DSI_ERROR_ACK_MASK) !=
RESET)
493 hdsi->ErrorCode |= HAL_DSI_ERROR_ACK;
496 if((ErrorStatus0 & DSI_ERROR_PHY_MASK) !=
RESET)
498 hdsi->ErrorCode |= HAL_DSI_ERROR_PHY;
501 if((ErrorStatus1 & DSI_ERROR_TX_MASK) !=
RESET)
503 hdsi->ErrorCode |= HAL_DSI_ERROR_TX;
506 if((ErrorStatus1 & DSI_ERROR_RX_MASK) !=
RESET)
508 hdsi->ErrorCode |= HAL_DSI_ERROR_RX;
511 if((ErrorStatus1 & DSI_ERROR_ECC_MASK) !=
RESET)
513 hdsi->ErrorCode |= HAL_DSI_ERROR_ECC;
516 if((ErrorStatus1 & DSI_ERROR_CRC_MASK) !=
RESET)
518 hdsi->ErrorCode |= HAL_DSI_ERROR_CRC;
521 if((ErrorStatus1 & DSI_ERROR_PSE_MASK) !=
RESET)
523 hdsi->ErrorCode |= HAL_DSI_ERROR_PSE;
526 if((ErrorStatus1 & DSI_ERROR_EOT_MASK) !=
RESET)
528 hdsi->ErrorCode |= HAL_DSI_ERROR_EOT;
531 if((ErrorStatus1 & DSI_ERROR_OVF_MASK) !=
RESET)
533 hdsi->ErrorCode |= HAL_DSI_ERROR_OVF;
536 if((ErrorStatus1 & DSI_ERROR_GEN_MASK) !=
RESET)
538 hdsi->ErrorCode |= HAL_DSI_ERROR_GEN;
542 if(hdsi->ErrorCode != HAL_DSI_ERROR_NONE)
545 HAL_DSI_ErrorCallback(hdsi);
556 __weak
void HAL_DSI_TearingEffectCallback(DSI_HandleTypeDef *hdsi)
588 __weak
void HAL_DSI_ErrorCallback(DSI_HandleTypeDef *hdsi)
625 HAL_StatusTypeDef HAL_DSI_SetGenericVCID(DSI_HandleTypeDef *hdsi, uint32_t VirtualChannelID)
632 hdsi->Instance->GVCIDR |= VirtualChannelID;
648 HAL_StatusTypeDef HAL_DSI_ConfigVideoMode(DSI_HandleTypeDef *hdsi, DSI_VidCfgTypeDef *VidCfg)
656 assert_param(IS_DSI_LP_COMMAND(VidCfg->LPCommandEnable));
657 assert_param(IS_DSI_LP_HFP(VidCfg->LPHorizontalFrontPorchEnable));
658 assert_param(IS_DSI_LP_HBP(VidCfg->LPHorizontalBackPorchEnable));
659 assert_param(IS_DSI_LP_VACTIVE(VidCfg->LPVerticalActiveEnable));
660 assert_param(IS_DSI_LP_VFP(VidCfg->LPVerticalFrontPorchEnable));
661 assert_param(IS_DSI_LP_VBP(VidCfg->LPVerticalBackPorchEnable));
662 assert_param(IS_DSI_LP_VSYNC(VidCfg->LPVerticalSyncActiveEnable));
663 assert_param(IS_DSI_FBTAA(VidCfg->FrameBTAAcknowledgeEnable));
665 assert_param(IS_DSI_VSYNC_POLARITY(VidCfg->VSPolarity));
666 assert_param(IS_DSI_HSYNC_POLARITY(VidCfg->HSPolarity));
668 if(VidCfg->ColorCoding == DSI_RGB666)
670 assert_param(IS_DSI_LOOSELY_PACKED(VidCfg->LooselyPacked));
679 hdsi->Instance->VMCR |= VidCfg->Mode;
683 hdsi->Instance->VPCR |= VidCfg->PacketSize;
687 hdsi->Instance->VCCR |= VidCfg->NumberOfChunks;
691 hdsi->Instance->VNPCR |= VidCfg->NullPacketSize;
695 hdsi->Instance->LVCIDR |= VidCfg->VirtualChannelID;
699 hdsi->Instance->LPCR |= (VidCfg->DEPolarity | VidCfg->VSPolarity | VidCfg->HSPolarity);
703 hdsi->Instance->LCOLCR |= VidCfg->ColorCoding;
707 hdsi->Instance->WCFGR |= ((VidCfg->ColorCoding)<<1);
710 if(VidCfg->ColorCoding == DSI_RGB666)
713 hdsi->Instance->LCOLCR |= VidCfg->LooselyPacked;
718 hdsi->Instance->VHSACR |= VidCfg->HorizontalSyncActive;
722 hdsi->Instance->VHBPCR |= VidCfg->HorizontalBackPorch;
726 hdsi->Instance->VLCR |= VidCfg->HorizontalLine;
730 hdsi->Instance->VVSACR |= VidCfg->VerticalSyncActive;
734 hdsi->Instance->VVBPCR |= VidCfg->VerticalBackPorch;
738 hdsi->Instance->VVFPCR |= VidCfg->VerticalFrontPorch;
742 hdsi->Instance->VVACR |= VidCfg->VerticalActive;
746 hdsi->Instance->VMCR |= VidCfg->LPCommandEnable;
750 hdsi->Instance->LPMCR |= ((VidCfg->LPLargestPacketSize)<<16);
754 hdsi->Instance->LPMCR |= VidCfg->LPVACTLargestPacketSize;
758 hdsi->Instance->VMCR |= VidCfg->LPHorizontalFrontPorchEnable;
762 hdsi->Instance->VMCR |= VidCfg->LPHorizontalBackPorchEnable;
766 hdsi->Instance->VMCR |= VidCfg->LPVerticalActiveEnable;
770 hdsi->Instance->VMCR |= VidCfg->LPVerticalFrontPorchEnable;
774 hdsi->Instance->VMCR |= VidCfg->LPVerticalBackPorchEnable;
778 hdsi->Instance->VMCR |= VidCfg->LPVerticalSyncActiveEnable;
782 hdsi->Instance->VMCR |= VidCfg->FrameBTAAcknowledgeEnable;
805 assert_param(IS_DSI_TE_SOURCE(CmdCfg->TearingEffectSource));
806 assert_param(IS_DSI_TE_POLARITY(CmdCfg->TearingEffectPolarity));
807 assert_param(IS_DSI_AUTOMATIC_REFRESH(CmdCfg->AutomaticRefresh));
809 assert_param(IS_DSI_TE_ACK_REQUEST(CmdCfg->TEAcknowledgeRequest));
811 assert_param(IS_DSI_VSYNC_POLARITY(CmdCfg->VSPolarity));
812 assert_param(IS_DSI_HSYNC_POLARITY(CmdCfg->HSPolarity));
821 hdsi->Instance->LVCIDR |= CmdCfg->VirtualChannelID;
825 hdsi->Instance->LPCR |= (CmdCfg->DEPolarity | CmdCfg->VSPolarity | CmdCfg->HSPolarity);
829 hdsi->Instance->LCOLCR |= CmdCfg->ColorCoding;
833 hdsi->Instance->WCFGR |= ((CmdCfg->ColorCoding)<<1);
837 hdsi->Instance->LCCR |= CmdCfg->CommandSize;
841 hdsi->Instance->WCFGR |= (CmdCfg->TearingEffectSource | CmdCfg->TearingEffectPolarity | CmdCfg->AutomaticRefresh | CmdCfg->VSyncPol);
845 hdsi->Instance->CMCR |= CmdCfg->TEAcknowledgeRequest;
848 __HAL_DSI_ENABLE_IT(hdsi, DSI_IT_TE);
851 __HAL_DSI_ENABLE_IT(hdsi, DSI_IT_ER);
873 assert_param(IS_DSI_LP_GSW0P(LPCmd->LPGenShortWriteNoP));
874 assert_param(IS_DSI_LP_GSW1P(LPCmd->LPGenShortWriteOneP));
875 assert_param(IS_DSI_LP_GSW2P(LPCmd->LPGenShortWriteTwoP));
876 assert_param(IS_DSI_LP_GSR0P(LPCmd->LPGenShortReadNoP));
877 assert_param(IS_DSI_LP_GSR1P(LPCmd->LPGenShortReadOneP));
878 assert_param(IS_DSI_LP_GSR2P(LPCmd->LPGenShortReadTwoP));
880 assert_param(IS_DSI_LP_DSW0P(LPCmd->LPDcsShortWriteNoP));
881 assert_param(IS_DSI_LP_DSW1P(LPCmd->LPDcsShortWriteOneP));
882 assert_param(IS_DSI_LP_DSR0P(LPCmd->LPDcsShortReadNoP));
885 assert_param(IS_DSI_ACK_REQUEST(LPCmd->AcknowledgeRequest));
900 hdsi->Instance->CMCR |= (LPCmd->LPGenShortWriteNoP |\
901 LPCmd->LPGenShortWriteOneP |\
902 LPCmd->LPGenShortWriteTwoP |\
903 LPCmd->LPGenShortReadNoP |\
904 LPCmd->LPGenShortReadOneP |\
905 LPCmd->LPGenShortReadTwoP |\
906 LPCmd->LPGenLongWrite |\
907 LPCmd->LPDcsShortWriteNoP |\
908 LPCmd->LPDcsShortWriteOneP |\
909 LPCmd->LPDcsShortReadNoP |\
910 LPCmd->LPDcsLongWrite |\
911 LPCmd->LPMaxReadPacket);
915 hdsi->Instance->CMCR |= LPCmd->AcknowledgeRequest;
931 HAL_StatusTypeDef HAL_DSI_ConfigFlowControl(DSI_HandleTypeDef *hdsi, uint32_t FlowControl)
940 hdsi->Instance->PCR &= ~DSI_FLOW_CONTROL_ALL;
941 hdsi->Instance->PCR |= FlowControl;
957 HAL_StatusTypeDef HAL_DSI_ConfigPhyTimer(DSI_HandleTypeDef *hdsi, DSI_PHY_TimerTypeDef *PhyTimers)
963 maxTime = (PhyTimers->ClockLaneLP2HSTime > PhyTimers->ClockLaneHS2LPTime)? PhyTimers->ClockLaneLP2HSTime: PhyTimers->ClockLaneHS2LPTime;
977 hdsi->Instance->CLTCR |= (maxTime | ((maxTime)<<16));
981 hdsi->Instance->DLTCR |= (PhyTimers->DataLaneMaxReadTime | ((PhyTimers->DataLaneLP2HSTime)<<16) | ((PhyTimers->DataLaneHS2LPTime)<<24));
985 hdsi->Instance->PCONFR |= ((PhyTimers->StopWaitTime)<<8);
1001 HAL_StatusTypeDef HAL_DSI_ConfigHostTimeouts(DSI_HandleTypeDef *hdsi, DSI_HOST_TimeoutTypeDef *HostTimeouts)
1008 hdsi->Instance->CCR = ((HostTimeouts->TimeoutCkdiv)<<8);
1012 hdsi->Instance->TCCR[0] |= ((HostTimeouts->HighSpeedTransmissionTimeout)<<16);
1016 hdsi->Instance->TCCR[0] |= HostTimeouts->LowPowerReceptionTimeout;
1020 hdsi->Instance->TCCR[1] |= HostTimeouts->HighSpeedReadTimeout;
1024 hdsi->Instance->TCCR[2] |= HostTimeouts->LowPowerReadTimeout;
1028 hdsi->Instance->TCCR[3] |= HostTimeouts->HighSpeedWriteTimeout;
1032 hdsi->Instance->TCCR[3] |= HostTimeouts->HighSpeedWritePrespMode;
1036 hdsi->Instance->TCCR[4] |= HostTimeouts->LowPowerWriteTimeout;
1040 hdsi->Instance->TCCR[5] |= HostTimeouts->BTATimeout;
1060 __HAL_DSI_ENABLE(hdsi);
1063 __HAL_DSI_WRAPPER_ENABLE(hdsi);
1083 __HAL_DSI_DISABLE(hdsi);
1086 __HAL_DSI_WRAPPER_DISABLE(hdsi);
1122 HAL_StatusTypeDef HAL_DSI_ColorMode(DSI_HandleTypeDef *hdsi, uint32_t ColorMode)
1132 hdsi->Instance->WCR |= ColorMode;
1158 hdsi->Instance->WCR |= Shutdown;
1185 uint32_t tickstart = 0;
1200 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
1210 DSI_ConfigPacketHeader(hdsi->Instance,
1241 uint8_t* ParametersTable)
1243 uint32_t uicounter = 0;
1244 uint32_t tickstart = 0;
1259 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
1269 while(uicounter < NbParams)
1271 if(uicounter == 0x00)
1273 hdsi->Instance->GPDR=(Param1 | \
1274 ((uint32_t)(*(ParametersTable + uicounter)) << 8) | \
1275 ((uint32_t)(*(ParametersTable + uicounter+1))<<16) | \
1276 ((uint32_t)(*(ParametersTable + uicounter+2))<<24));
1281 hdsi->Instance->GPDR=((uint32_t)(*(ParametersTable + uicounter)) | \
1282 ((uint32_t)(*(ParametersTable + uicounter+1)) << 8) | \
1283 ((uint32_t)(*(ParametersTable + uicounter+2)) << 16) | \
1284 ((uint32_t)(*(ParametersTable + uicounter+3)) << 24));
1290 DSI_ConfigPacketHeader(hdsi->Instance,
1293 ((NbParams+1)&0x00FF),
1294 (((NbParams+1)&0xFF00)>>8));
1316 uint32_t ChannelNbr,
1321 uint8_t* ParametersTable)
1323 uint32_t tickstart = 0;
1334 HAL_DSI_ShortWrite(hdsi, ChannelNbr, DSI_MAX_RETURN_PKT_SIZE, ((Size)&0xFF), (((Size)>>8)&0xFF));
1338 if (Mode == DSI_DCS_SHORT_PKT_READ)
1340 DSI_ConfigPacketHeader(hdsi->Instance, ChannelNbr, Mode, DCSCmd, 0);
1342 else if (Mode == DSI_GEN_SHORT_PKT_READ_P0)
1344 DSI_ConfigPacketHeader(hdsi->Instance, ChannelNbr, Mode, 0, 0);
1346 else if (Mode == DSI_GEN_SHORT_PKT_READ_P1)
1348 DSI_ConfigPacketHeader(hdsi->Instance, ChannelNbr, Mode, ParametersTable[0], 0);
1350 else if (Mode == DSI_GEN_SHORT_PKT_READ_P2)
1352 DSI_ConfigPacketHeader(hdsi->Instance, ChannelNbr, Mode, ParametersTable[0], ParametersTable[1]);
1369 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
1379 *((uint32_t *)Array) = (hdsi->Instance->GPDR);
1397 while(((
int)(Size)) > 0)
1401 *((uint32_t *)Array) = (hdsi->Instance->GPDR);
1407 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
1431 uint32_t tickstart = 0;
1443 if((hdsi->Instance->PCONFR &
DSI_PCONFR_NL) == DSI_ONE_DATA_LANE)
1448 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
1457 else if ((hdsi->Instance->PCONFR &
DSI_PCONFR_NL) == DSI_TWO_DATA_LANES)
1462 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
1487 uint32_t tickstart = 0;
1499 if((hdsi->Instance->PCONFR &
DSI_PCONFR_NL) == DSI_ONE_DATA_LANE)
1504 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
1513 else if ((hdsi->Instance->PCONFR &
DSI_PCONFR_NL) == DSI_TWO_DATA_LANES)
1518 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
1529 hdsi->Instance->PUCR = 0;
1546 uint32_t tickstart = 0;
1555 __HAL_RCC_DSI_CONFIG(RCC_DSICLKSOURCE_PLLR);
1564 if((hdsi->Instance->PCONFR &
DSI_PCONFR_NL) == DSI_ONE_DATA_LANE)
1569 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
1578 else if ((hdsi->Instance->PCONFR &
DSI_PCONFR_NL) == DSI_TWO_DATA_LANES)
1583 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
1594 __HAL_DSI_PLL_DISABLE(hdsi);
1611 uint32_t tickstart = 0;
1617 __HAL_DSI_PLL_ENABLE(hdsi);
1623 while(__HAL_DSI_GET_FLAG(hdsi, DSI_FLAG_PLLLS) ==
RESET)
1626 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
1642 if((hdsi->Instance->PCONFR &
DSI_PCONFR_NL) == DSI_ONE_DATA_LANE)
1647 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
1656 else if ((hdsi->Instance->PCONFR &
DSI_PCONFR_NL) == DSI_TWO_DATA_LANES)
1661 if((
HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
1672 hdsi->Instance->PUCR = 0;
1675 __HAL_RCC_DSI_CONFIG(RCC_DSICLKSOURCE_DSIPHY);
1700 HAL_StatusTypeDef HAL_DSI_PatternGeneratorStart(DSI_HandleTypeDef *hdsi, uint32_t Mode, uint32_t Orientation)
1707 hdsi->Instance->VMCR |= ((Mode<<20) | (Orientation<<24));
1749 HAL_StatusTypeDef HAL_DSI_SetSlewRateAndDelayTuning(DSI_HandleTypeDef *hdsi, uint32_t CommDelay, uint32_t Lane, uint32_t Value)
1760 case DSI_SLEW_RATE_HSTX:
1761 if(Lane == DSI_CLOCK_LANE)
1765 hdsi->Instance->WPCR[1] |= Value<<16;
1767 else if(Lane == DSI_DATA_LANES)
1771 hdsi->Instance->WPCR[1] |= Value<<18;
1774 case DSI_SLEW_RATE_LPTX:
1775 if(Lane == DSI_CLOCK_LANE)
1779 hdsi->Instance->WPCR[1] |= Value<<6;
1781 else if(Lane == DSI_DATA_LANES)
1785 hdsi->Instance->WPCR[1] |= Value<<8;
1789 if(Lane == DSI_CLOCK_LANE)
1793 hdsi->Instance->WPCR[1] |= Value;
1795 else if(Lane == DSI_DATA_LANES)
1799 hdsi->Instance->WPCR[1] |= Value<<2;
1819 HAL_StatusTypeDef HAL_DSI_SetLowPowerRXFilter(DSI_HandleTypeDef *hdsi, uint32_t Frequency)
1826 hdsi->Instance->WPCR[1] |= Frequency<<25;
1852 hdsi->Instance->WPCR[1] |= ((uint32_t)State << 12);
1883 case DSI_SWAP_LANE_PINS:
1884 if(Lane == DSI_CLOCK_LANE)
1888 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 6);
1890 else if(Lane == DSI_DATA_LANE0)
1894 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 7);
1896 else if(Lane == DSI_DATA_LANE1)
1900 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 8);
1903 case DSI_INVERT_HS_SIGNAL:
1904 if(Lane == DSI_CLOCK_LANE)
1908 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 9);
1910 else if(Lane == DSI_DATA_LANE0)
1914 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 10);
1916 else if(Lane == DSI_DATA_LANE1)
1920 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 11);
1957 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 27);
1970 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 26);
1983 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 25);
1996 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 24);
2009 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 23);
2022 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 22);
2032 case DSI_THS_PREPARE:
2035 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 21);
2048 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 20);
2058 case DSI_TCLK_PREPARE:
2061 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 19);
2099 if(Lane == DSI_CLOCK_LANE)
2103 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 12);
2105 else if(Lane == DSI_DATA_LANES)
2109 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 13);
2135 hdsi->Instance->WPCR[1] |= ((uint32_t)State << 22);
2160 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 16);
2185 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 18);
2210 hdsi->Instance->WPCR[0] |= ((uint32_t)State << 14);
2244 HAL_DSI_StateTypeDef HAL_DSI_GetState(DSI_HandleTypeDef *hdsi)
#define DSI_TCCR5_BTA_TOCNT
#define DSI_WPCR4_TCLKPOST
#define DSI_WPCR1_HSTXDCL
#define assert_param(expr)
Include module's header file.
#define DSI_WPCR1_LPSRCDL
#define DSI_WPCR1_FLPRXLPM
#define DSI_TCCR3_HSWR_TOCNT
#define __HAL_UNLOCK(__HANDLE__)
#define DSI_CLTCR_LP2HS_TIME
#define DSI_WPCR0_FTXSMDL
#define DSI_WPCR2_THSPREP
#define DSI_WRPCR_PLL_IDF
#define DSI_LPMCR_VLPSIZE
#define DSI_WPCR2_TCLKZERO
#define DSI_WPCR1_HSTXDDL
void HAL_DSI_EndOfRefreshCallback(DSI_HandleTypeDef *hdsi)
End of Refresh DSI callback.
#define DSI_DLTCR_HS2LP_TIME
#define HSE_VALUE
Adjust the value of External High Speed oscillator (HSE) used in your application. This value is used by the RCC HAL module to compute the system frequency (when HSE is used as system clock source, directly or through the PLL).
#define __HAL_LOCK(__HANDLE__)
#define DSI_WRPCR_PLL_NDIV
#define DSI_PCONFR_SW_TIME
#define DSI_WPCR1_LPSRCCL
This file contains all the functions prototypes for the HAL module driver.
#define DSI_WPCR0_TLPXDEN
#define DSI_DLTCR_MRD_TIME
#define DSI_WPCR2_TCLKPREP
#define DSI_WPCR0_THSEXITEN
#define DSI_WPCR0_THSZEROEN
#define DSI_DLTCR_LP2HS_TIME
#define DSI_WPCR0_TCLKPOSTEN
#define DSI_WPCR1_HSTXSRCCL
#define DSI_WPCR0_TCLKPREPEN
#define DSI_WPCR2_THSTRAIL
#define DSI_WRPCR_PLL_ODF
#define DSI_WPCR0_THSTRAILEN
#define DSI_WPCR3_THSEXIT
#define DSI_WPCR0_TLPXCEN
#define DSI_WPCR0_CDOFFDL
#define DSI_TCCR4_LPWR_TOCNT
#define DSI_TCCR2_LPRD_TOCNT
#define DSI_WPCR0_THSPREPEN
#define DSI_TCCR1_HSRD_TOCNT
#define IS_FUNCTIONAL_STATE(STATE)
#define DSI_WPCR0_TCLKZEROEN
#define DSI_TCCR0_HSTX_TOCNT
#define DSI_WPCR1_HSTXSRCDL
HAL_StatusTypeDef
HAL Status structures definition.
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#define DSI_WPCR0_FTXSMCL
#define DSI_CLTCR_HS2LP_TIME
#define DSI_WPCR3_THSZERO
#define DSI_TCCR0_LPRX_TOCNT