20 #ifndef STM32F4xx_HAL_DSI_H
21 #define STM32F4xx_HAL_DSI_H
295 HAL_DSI_STATE_RESET = 0x00U,
296 HAL_DSI_STATE_READY = 0x01U,
297 HAL_DSI_STATE_ERROR = 0x02U,
298 HAL_DSI_STATE_BUSY = 0x03U,
299 HAL_DSI_STATE_TIMEOUT = 0x04U
305 #if (USE_HAL_DSI_REGISTER_CALLBACKS == 1)
306 typedef struct __DSI_HandleTypeDef
315 __IO uint32_t ErrorCode;
318 #if (USE_HAL_DSI_REGISTER_CALLBACKS == 1)
319 void (* TearingEffectCallback)(
struct __DSI_HandleTypeDef *hdsi);
320 void (* EndOfRefreshCallback)(
struct __DSI_HandleTypeDef *hdsi);
321 void (* ErrorCallback)(
struct __DSI_HandleTypeDef *hdsi);
323 void (* MspInitCallback)(
struct __DSI_HandleTypeDef *hdsi);
324 void (* MspDeInitCallback)(
struct __DSI_HandleTypeDef *hdsi);
330 #if (USE_HAL_DSI_REGISTER_CALLBACKS == 1)
362 #define DSI_ENTER_IDLE_MODE 0x39U
363 #define DSI_ENTER_INVERT_MODE 0x21U
364 #define DSI_ENTER_NORMAL_MODE 0x13U
365 #define DSI_ENTER_PARTIAL_MODE 0x12U
366 #define DSI_ENTER_SLEEP_MODE 0x10U
367 #define DSI_EXIT_IDLE_MODE 0x38U
368 #define DSI_EXIT_INVERT_MODE 0x20U
369 #define DSI_EXIT_SLEEP_MODE 0x11U
370 #define DSI_GET_3D_CONTROL 0x3FU
371 #define DSI_GET_ADDRESS_MODE 0x0BU
372 #define DSI_GET_BLUE_CHANNEL 0x08U
373 #define DSI_GET_DIAGNOSTIC_RESULT 0x0FU
374 #define DSI_GET_DISPLAY_MODE 0x0DU
375 #define DSI_GET_GREEN_CHANNEL 0x07U
376 #define DSI_GET_PIXEL_FORMAT 0x0CU
377 #define DSI_GET_POWER_MODE 0x0AU
378 #define DSI_GET_RED_CHANNEL 0x06U
379 #define DSI_GET_SCANLINE 0x45U
380 #define DSI_GET_SIGNAL_MODE 0x0EU
381 #define DSI_NOP 0x00U
382 #define DSI_READ_DDB_CONTINUE 0xA8U
383 #define DSI_READ_DDB_START 0xA1U
384 #define DSI_READ_MEMORY_CONTINUE 0x3EU
385 #define DSI_READ_MEMORY_START 0x2EU
386 #define DSI_SET_3D_CONTROL 0x3DU
387 #define DSI_SET_ADDRESS_MODE 0x36U
388 #define DSI_SET_COLUMN_ADDRESS 0x2AU
389 #define DSI_SET_DISPLAY_OFF 0x28U
390 #define DSI_SET_DISPLAY_ON 0x29U
391 #define DSI_SET_GAMMA_CURVE 0x26U
392 #define DSI_SET_PAGE_ADDRESS 0x2BU
393 #define DSI_SET_PARTIAL_COLUMNS 0x31U
394 #define DSI_SET_PARTIAL_ROWS 0x30U
395 #define DSI_SET_PIXEL_FORMAT 0x3AU
396 #define DSI_SET_SCROLL_AREA 0x33U
397 #define DSI_SET_SCROLL_START 0x37U
398 #define DSI_SET_TEAR_OFF 0x34U
399 #define DSI_SET_TEAR_ON 0x35U
400 #define DSI_SET_TEAR_SCANLINE 0x44U
401 #define DSI_SET_VSYNC_TIMING 0x40U
402 #define DSI_SOFT_RESET 0x01U
403 #define DSI_WRITE_LUT 0x2DU
404 #define DSI_WRITE_MEMORY_CONTINUE 0x3CU
405 #define DSI_WRITE_MEMORY_START 0x2CU
413 #define DSI_VID_MODE_NB_PULSES 0U
414 #define DSI_VID_MODE_NB_EVENTS 1U
415 #define DSI_VID_MODE_BURST 2U
423 #define DSI_COLOR_MODE_FULL 0x00000000U
424 #define DSI_COLOR_MODE_EIGHT DSI_WCR_COLM
432 #define DSI_DISPLAY_ON 0x00000000U
433 #define DSI_DISPLAY_OFF DSI_WCR_SHTDN
441 #define DSI_LP_COMMAND_DISABLE 0x00000000U
442 #define DSI_LP_COMMAND_ENABLE DSI_VMCR_LPCE
450 #define DSI_LP_HFP_DISABLE 0x00000000U
451 #define DSI_LP_HFP_ENABLE DSI_VMCR_LPHFPE
459 #define DSI_LP_HBP_DISABLE 0x00000000U
460 #define DSI_LP_HBP_ENABLE DSI_VMCR_LPHBPE
468 #define DSI_LP_VACT_DISABLE 0x00000000U
469 #define DSI_LP_VACT_ENABLE DSI_VMCR_LPVAE
477 #define DSI_LP_VFP_DISABLE 0x00000000U
478 #define DSI_LP_VFP_ENABLE DSI_VMCR_LPVFPE
486 #define DSI_LP_VBP_DISABLE 0x00000000U
487 #define DSI_LP_VBP_ENABLE DSI_VMCR_LPVBPE
495 #define DSI_LP_VSYNC_DISABLE 0x00000000U
496 #define DSI_LP_VSYNC_ENABLE DSI_VMCR_LPVSAE
504 #define DSI_FBTAA_DISABLE 0x00000000U
505 #define DSI_FBTAA_ENABLE DSI_VMCR_FBTAAE
513 #define DSI_TE_DSILINK 0x00000000U
514 #define DSI_TE_EXTERNAL DSI_WCFGR_TESRC
522 #define DSI_TE_RISING_EDGE 0x00000000U
523 #define DSI_TE_FALLING_EDGE DSI_WCFGR_TEPOL
531 #define DSI_VSYNC_FALLING 0x00000000U
532 #define DSI_VSYNC_RISING DSI_WCFGR_VSPOL
540 #define DSI_AR_DISABLE 0x00000000U
541 #define DSI_AR_ENABLE DSI_WCFGR_AR
549 #define DSI_TE_ACKNOWLEDGE_DISABLE 0x00000000U
550 #define DSI_TE_ACKNOWLEDGE_ENABLE DSI_CMCR_TEARE
558 #define DSI_ACKNOWLEDGE_DISABLE 0x00000000U
559 #define DSI_ACKNOWLEDGE_ENABLE DSI_CMCR_ARE
567 #define DSI_LP_GSW0P_DISABLE 0x00000000U
568 #define DSI_LP_GSW0P_ENABLE DSI_CMCR_GSW0TX
576 #define DSI_LP_GSW1P_DISABLE 0x00000000U
577 #define DSI_LP_GSW1P_ENABLE DSI_CMCR_GSW1TX
585 #define DSI_LP_GSW2P_DISABLE 0x00000000U
586 #define DSI_LP_GSW2P_ENABLE DSI_CMCR_GSW2TX
594 #define DSI_LP_GSR0P_DISABLE 0x00000000U
595 #define DSI_LP_GSR0P_ENABLE DSI_CMCR_GSR0TX
603 #define DSI_LP_GSR1P_DISABLE 0x00000000U
604 #define DSI_LP_GSR1P_ENABLE DSI_CMCR_GSR1TX
612 #define DSI_LP_GSR2P_DISABLE 0x00000000U
613 #define DSI_LP_GSR2P_ENABLE DSI_CMCR_GSR2TX
621 #define DSI_LP_GLW_DISABLE 0x00000000U
622 #define DSI_LP_GLW_ENABLE DSI_CMCR_GLWTX
630 #define DSI_LP_DSW0P_DISABLE 0x00000000U
631 #define DSI_LP_DSW0P_ENABLE DSI_CMCR_DSW0TX
639 #define DSI_LP_DSW1P_DISABLE 0x00000000U
640 #define DSI_LP_DSW1P_ENABLE DSI_CMCR_DSW1TX
648 #define DSI_LP_DSR0P_DISABLE 0x00000000U
649 #define DSI_LP_DSR0P_ENABLE DSI_CMCR_DSR0TX
657 #define DSI_LP_DLW_DISABLE 0x00000000U
658 #define DSI_LP_DLW_ENABLE DSI_CMCR_DLWTX
666 #define DSI_LP_MRDP_DISABLE 0x00000000U
667 #define DSI_LP_MRDP_ENABLE DSI_CMCR_MRDPS
675 #define DSI_HS_PM_DISABLE 0x00000000U
676 #define DSI_HS_PM_ENABLE DSI_TCCR3_PM
685 #define DSI_AUTO_CLK_LANE_CTRL_DISABLE 0x00000000U
686 #define DSI_AUTO_CLK_LANE_CTRL_ENABLE DSI_CLCR_ACR
694 #define DSI_ONE_DATA_LANE 0U
695 #define DSI_TWO_DATA_LANES 1U
703 #define DSI_FLOW_CONTROL_CRC_RX DSI_PCR_CRCRXE
704 #define DSI_FLOW_CONTROL_ECC_RX DSI_PCR_ECCRXE
705 #define DSI_FLOW_CONTROL_BTA DSI_PCR_BTAE
706 #define DSI_FLOW_CONTROL_EOTP_RX DSI_PCR_ETRXE
707 #define DSI_FLOW_CONTROL_EOTP_TX DSI_PCR_ETTXE
708 #define DSI_FLOW_CONTROL_ALL (DSI_FLOW_CONTROL_CRC_RX | DSI_FLOW_CONTROL_ECC_RX | \
709 DSI_FLOW_CONTROL_BTA | DSI_FLOW_CONTROL_EOTP_RX | \
710 DSI_FLOW_CONTROL_EOTP_TX)
718 #define DSI_RGB565 0x00000000U
719 #define DSI_RGB666 0x00000003U
720 #define DSI_RGB888 0x00000005U
728 #define DSI_LOOSELY_PACKED_ENABLE DSI_LCOLCR_LPE
729 #define DSI_LOOSELY_PACKED_DISABLE 0x00000000U
737 #define DSI_HSYNC_ACTIVE_HIGH 0x00000000U
738 #define DSI_HSYNC_ACTIVE_LOW DSI_LPCR_HSP
746 #define DSI_VSYNC_ACTIVE_HIGH 0x00000000U
747 #define DSI_VSYNC_ACTIVE_LOW DSI_LPCR_VSP
755 #define DSI_DATA_ENABLE_ACTIVE_HIGH 0x00000000U
756 #define DSI_DATA_ENABLE_ACTIVE_LOW DSI_LPCR_DEP
764 #define DSI_PLL_IN_DIV1 0x00000001U
765 #define DSI_PLL_IN_DIV2 0x00000002U
766 #define DSI_PLL_IN_DIV3 0x00000003U
767 #define DSI_PLL_IN_DIV4 0x00000004U
768 #define DSI_PLL_IN_DIV5 0x00000005U
769 #define DSI_PLL_IN_DIV6 0x00000006U
770 #define DSI_PLL_IN_DIV7 0x00000007U
778 #define DSI_PLL_OUT_DIV1 0x00000000U
779 #define DSI_PLL_OUT_DIV2 0x00000001U
780 #define DSI_PLL_OUT_DIV4 0x00000002U
781 #define DSI_PLL_OUT_DIV8 0x00000003U
789 #define DSI_FLAG_TE DSI_WISR_TEIF
790 #define DSI_FLAG_ER DSI_WISR_ERIF
791 #define DSI_FLAG_BUSY DSI_WISR_BUSY
792 #define DSI_FLAG_PLLLS DSI_WISR_PLLLS
793 #define DSI_FLAG_PLLL DSI_WISR_PLLLIF
794 #define DSI_FLAG_PLLU DSI_WISR_PLLUIF
795 #define DSI_FLAG_RRS DSI_WISR_RRS
796 #define DSI_FLAG_RR DSI_WISR_RRIF
804 #define DSI_IT_TE DSI_WIER_TEIE
805 #define DSI_IT_ER DSI_WIER_ERIE
806 #define DSI_IT_PLLL DSI_WIER_PLLLIE
807 #define DSI_IT_PLLU DSI_WIER_PLLUIE
808 #define DSI_IT_RR DSI_WIER_RRIE
816 #define DSI_DCS_SHORT_PKT_WRITE_P0 0x00000005U
817 #define DSI_DCS_SHORT_PKT_WRITE_P1 0x00000015U
818 #define DSI_GEN_SHORT_PKT_WRITE_P0 0x00000003U
819 #define DSI_GEN_SHORT_PKT_WRITE_P1 0x00000013U
820 #define DSI_GEN_SHORT_PKT_WRITE_P2 0x00000023U
828 #define DSI_DCS_LONG_PKT_WRITE 0x00000039U
829 #define DSI_GEN_LONG_PKT_WRITE 0x00000029U
837 #define DSI_DCS_SHORT_PKT_READ 0x00000006U
838 #define DSI_GEN_SHORT_PKT_READ_P0 0x00000004U
839 #define DSI_GEN_SHORT_PKT_READ_P1 0x00000014U
840 #define DSI_GEN_SHORT_PKT_READ_P2 0x00000024U
848 #define HAL_DSI_ERROR_NONE 0U
849 #define HAL_DSI_ERROR_ACK 0x00000001U
850 #define HAL_DSI_ERROR_PHY 0x00000002U
851 #define HAL_DSI_ERROR_TX 0x00000004U
852 #define HAL_DSI_ERROR_RX 0x00000008U
853 #define HAL_DSI_ERROR_ECC 0x00000010U
854 #define HAL_DSI_ERROR_CRC 0x00000020U
855 #define HAL_DSI_ERROR_PSE 0x00000040U
856 #define HAL_DSI_ERROR_EOT 0x00000080U
857 #define HAL_DSI_ERROR_OVF 0x00000100U
858 #define HAL_DSI_ERROR_GEN 0x00000200U
859 #if (USE_HAL_DSI_REGISTER_CALLBACKS == 1)
860 #define HAL_DSI_ERROR_INVALID_CALLBACK 0x00000400U
869 #define DSI_CLOCK_LANE 0x00000000U
870 #define DSI_DATA_LANES 0x00000001U
878 #define DSI_SLEW_RATE_HSTX 0x00000000U
879 #define DSI_SLEW_RATE_LPTX 0x00000001U
880 #define DSI_HS_DELAY 0x00000002U
888 #define DSI_SWAP_LANE_PINS 0x00000000U
889 #define DSI_INVERT_HS_SIGNAL 0x00000001U
897 #define DSI_CLK_LANE 0x00000000U
898 #define DSI_DATA_LANE0 0x00000001U
899 #define DSI_DATA_LANE1 0x00000002U
907 #define DSI_TCLK_POST 0x00000000U
908 #define DSI_TLPX_CLK 0x00000001U
909 #define DSI_THS_EXIT 0x00000002U
910 #define DSI_TLPX_DATA 0x00000003U
911 #define DSI_THS_ZERO 0x00000004U
912 #define DSI_THS_TRAIL 0x00000005U
913 #define DSI_THS_PREPARE 0x00000006U
914 #define DSI_TCLK_ZERO 0x00000007U
915 #define DSI_TCLK_PREPARE 0x00000008U
935 #if (USE_HAL_DSI_REGISTER_CALLBACKS == 1)
936 #define __HAL_DSI_RESET_HANDLE_STATE(__HANDLE__) do{ \
937 (__HANDLE__)->State = HAL_DSI_STATE_RESET; \
938 (__HANDLE__)->MspInitCallback = NULL; \
939 (__HANDLE__)->MspDeInitCallback = NULL; \
942 #define __HAL_DSI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DSI_STATE_RESET)
950 #define __HAL_DSI_ENABLE(__HANDLE__) do { \
951 __IO uint32_t tmpreg = 0x00U; \
952 SET_BIT((__HANDLE__)->Instance->CR, DSI_CR_EN);\
954 tmpreg = READ_BIT((__HANDLE__)->Instance->CR, DSI_CR_EN);\
963 #define __HAL_DSI_DISABLE(__HANDLE__) do { \
964 __IO uint32_t tmpreg = 0x00U; \
965 CLEAR_BIT((__HANDLE__)->Instance->CR, DSI_CR_EN);\
967 tmpreg = READ_BIT((__HANDLE__)->Instance->CR, DSI_CR_EN);\
976 #define __HAL_DSI_WRAPPER_ENABLE(__HANDLE__) do { \
977 __IO uint32_t tmpreg = 0x00U; \
978 SET_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
980 tmpreg = READ_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
989 #define __HAL_DSI_WRAPPER_DISABLE(__HANDLE__) do { \
990 __IO uint32_t tmpreg = 0x00U; \
991 CLEAR_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
993 tmpreg = READ_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
1002 #define __HAL_DSI_PLL_ENABLE(__HANDLE__) do { \
1003 __IO uint32_t tmpreg = 0x00U; \
1004 SET_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_PLLEN);\
1006 tmpreg = READ_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_PLLEN);\
1015 #define __HAL_DSI_PLL_DISABLE(__HANDLE__) do { \
1016 __IO uint32_t tmpreg = 0x00U; \
1017 CLEAR_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_PLLEN);\
1019 tmpreg = READ_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_PLLEN);\
1028 #define __HAL_DSI_REG_ENABLE(__HANDLE__) do { \
1029 __IO uint32_t tmpreg = 0x00U; \
1030 SET_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_REGEN);\
1032 tmpreg = READ_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_REGEN);\
1041 #define __HAL_DSI_REG_DISABLE(__HANDLE__) do { \
1042 __IO uint32_t tmpreg = 0x00U; \
1043 CLEAR_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_REGEN);\
1045 tmpreg = READ_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_REGEN);\
1064 #define __HAL_DSI_GET_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->WISR & (__FLAG__))
1078 #define __HAL_DSI_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->WIFCR = (__FLAG__))
1092 #define __HAL_DSI_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->WIER |= (__INTERRUPT__))
1106 #define __HAL_DSI_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->WIER &= ~(__INTERRUPT__))
1120 #define __HAL_DSI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->WIER & (__INTERRUPT__))
1140 #if (USE_HAL_DSI_REGISTER_CALLBACKS == 1)
1187 const uint8_t *ParametersTable);
1189 uint32_t ChannelNbr,
1194 uint8_t *ParametersTable);
1208 FunctionalState State);
1243 #define DSI_MAX_RETURN_PKT_SIZE (0x00000037U)
1252 #define IS_DSI_PLL_NDIV(NDIV) ((10U <= (NDIV)) && ((NDIV) <= 125U))
1253 #define IS_DSI_PLL_IDF(IDF) (((IDF) == DSI_PLL_IN_DIV1) || \
1254 ((IDF) == DSI_PLL_IN_DIV2) || \
1255 ((IDF) == DSI_PLL_IN_DIV3) || \
1256 ((IDF) == DSI_PLL_IN_DIV4) || \
1257 ((IDF) == DSI_PLL_IN_DIV5) || \
1258 ((IDF) == DSI_PLL_IN_DIV6) || \
1259 ((IDF) == DSI_PLL_IN_DIV7))
1260 #define IS_DSI_PLL_ODF(ODF) (((ODF) == DSI_PLL_OUT_DIV1) || \
1261 ((ODF) == DSI_PLL_OUT_DIV2) || \
1262 ((ODF) == DSI_PLL_OUT_DIV4) || \
1263 ((ODF) == DSI_PLL_OUT_DIV8))
1264 #define IS_DSI_AUTO_CLKLANE_CONTROL(AutoClkLane) (((AutoClkLane) == DSI_AUTO_CLK_LANE_CTRL_DISABLE)\
1265 || ((AutoClkLane) == DSI_AUTO_CLK_LANE_CTRL_ENABLE))
1266 #define IS_DSI_NUMBER_OF_LANES(NumberOfLanes) (((NumberOfLanes) == DSI_ONE_DATA_LANE)\
1267 || ((NumberOfLanes) == DSI_TWO_DATA_LANES))
1268 #define IS_DSI_FLOW_CONTROL(FlowControl) (((FlowControl) | DSI_FLOW_CONTROL_ALL) == DSI_FLOW_CONTROL_ALL)
1269 #define IS_DSI_COLOR_CODING(ColorCoding) ((ColorCoding) <= 5U)
1270 #define IS_DSI_LOOSELY_PACKED(LooselyPacked) (((LooselyPacked) == DSI_LOOSELY_PACKED_ENABLE)\
1271 || ((LooselyPacked) == DSI_LOOSELY_PACKED_DISABLE))
1272 #define IS_DSI_DE_POLARITY(DataEnable) (((DataEnable) == DSI_DATA_ENABLE_ACTIVE_HIGH)\
1273 || ((DataEnable) == DSI_DATA_ENABLE_ACTIVE_LOW))
1274 #define IS_DSI_VSYNC_POLARITY(Vsync) (((Vsync) == DSI_VSYNC_ACTIVE_HIGH)\
1275 || ((Vsync) == DSI_VSYNC_ACTIVE_LOW))
1276 #define IS_DSI_HSYNC_POLARITY(Hsync) (((Hsync) == DSI_HSYNC_ACTIVE_HIGH)\
1277 || ((Hsync) == DSI_HSYNC_ACTIVE_LOW))
1278 #define IS_DSI_VIDEO_MODE_TYPE(VideoModeType) (((VideoModeType) == DSI_VID_MODE_NB_PULSES) || \
1279 ((VideoModeType) == DSI_VID_MODE_NB_EVENTS) || \
1280 ((VideoModeType) == DSI_VID_MODE_BURST))
1281 #define IS_DSI_COLOR_MODE(ColorMode) (((ColorMode) == DSI_COLOR_MODE_FULL)\
1282 || ((ColorMode) == DSI_COLOR_MODE_EIGHT))
1283 #define IS_DSI_SHUT_DOWN(ShutDown) (((ShutDown) == DSI_DISPLAY_ON) || ((ShutDown) == DSI_DISPLAY_OFF))
1284 #define IS_DSI_LP_COMMAND(LPCommand) (((LPCommand) == DSI_LP_COMMAND_DISABLE)\
1285 || ((LPCommand) == DSI_LP_COMMAND_ENABLE))
1286 #define IS_DSI_LP_HFP(LPHFP) (((LPHFP) == DSI_LP_HFP_DISABLE) || ((LPHFP) == DSI_LP_HFP_ENABLE))
1287 #define IS_DSI_LP_HBP(LPHBP) (((LPHBP) == DSI_LP_HBP_DISABLE) || ((LPHBP) == DSI_LP_HBP_ENABLE))
1288 #define IS_DSI_LP_VACTIVE(LPVActive) (((LPVActive) == DSI_LP_VACT_DISABLE)\
1289 || ((LPVActive) == DSI_LP_VACT_ENABLE))
1290 #define IS_DSI_LP_VFP(LPVFP) (((LPVFP) == DSI_LP_VFP_DISABLE) || ((LPVFP) == DSI_LP_VFP_ENABLE))
1291 #define IS_DSI_LP_VBP(LPVBP) (((LPVBP) == DSI_LP_VBP_DISABLE) || ((LPVBP) == DSI_LP_VBP_ENABLE))
1292 #define IS_DSI_LP_VSYNC(LPVSYNC) (((LPVSYNC) == DSI_LP_VSYNC_DISABLE)\
1293 || ((LPVSYNC) == DSI_LP_VSYNC_ENABLE))
1294 #define IS_DSI_FBTAA(FrameBTAAcknowledge) (((FrameBTAAcknowledge) == DSI_FBTAA_DISABLE)\
1295 || ((FrameBTAAcknowledge) == DSI_FBTAA_ENABLE))
1296 #define IS_DSI_TE_SOURCE(TESource) (((TESource) == DSI_TE_DSILINK) || ((TESource) == DSI_TE_EXTERNAL))
1297 #define IS_DSI_TE_POLARITY(TEPolarity) (((TEPolarity) == DSI_TE_RISING_EDGE)\
1298 || ((TEPolarity) == DSI_TE_FALLING_EDGE))
1299 #define IS_DSI_AUTOMATIC_REFRESH(AutomaticRefresh) (((AutomaticRefresh) == DSI_AR_DISABLE)\
1300 || ((AutomaticRefresh) == DSI_AR_ENABLE))
1301 #define IS_DSI_VS_POLARITY(VSPolarity) (((VSPolarity) == DSI_VSYNC_FALLING)\
1302 || ((VSPolarity) == DSI_VSYNC_RISING))
1303 #define IS_DSI_TE_ACK_REQUEST(TEAcknowledgeRequest) (((TEAcknowledgeRequest) == DSI_TE_ACKNOWLEDGE_DISABLE)\
1304 || ((TEAcknowledgeRequest) == DSI_TE_ACKNOWLEDGE_ENABLE))
1305 #define IS_DSI_ACK_REQUEST(AcknowledgeRequest) (((AcknowledgeRequest) == DSI_ACKNOWLEDGE_DISABLE)\
1306 || ((AcknowledgeRequest) == DSI_ACKNOWLEDGE_ENABLE))
1307 #define IS_DSI_LP_GSW0P(LP_GSW0P) (((LP_GSW0P) == DSI_LP_GSW0P_DISABLE)\
1308 || ((LP_GSW0P) == DSI_LP_GSW0P_ENABLE))
1309 #define IS_DSI_LP_GSW1P(LP_GSW1P) (((LP_GSW1P) == DSI_LP_GSW1P_DISABLE)\
1310 || ((LP_GSW1P) == DSI_LP_GSW1P_ENABLE))
1311 #define IS_DSI_LP_GSW2P(LP_GSW2P) (((LP_GSW2P) == DSI_LP_GSW2P_DISABLE)\
1312 || ((LP_GSW2P) == DSI_LP_GSW2P_ENABLE))
1313 #define IS_DSI_LP_GSR0P(LP_GSR0P) (((LP_GSR0P) == DSI_LP_GSR0P_DISABLE)\
1314 || ((LP_GSR0P) == DSI_LP_GSR0P_ENABLE))
1315 #define IS_DSI_LP_GSR1P(LP_GSR1P) (((LP_GSR1P) == DSI_LP_GSR1P_DISABLE)\
1316 || ((LP_GSR1P) == DSI_LP_GSR1P_ENABLE))
1317 #define IS_DSI_LP_GSR2P(LP_GSR2P) (((LP_GSR2P) == DSI_LP_GSR2P_DISABLE)\
1318 || ((LP_GSR2P) == DSI_LP_GSR2P_ENABLE))
1319 #define IS_DSI_LP_GLW(LP_GLW) (((LP_GLW) == DSI_LP_GLW_DISABLE)\
1320 || ((LP_GLW) == DSI_LP_GLW_ENABLE))
1321 #define IS_DSI_LP_DSW0P(LP_DSW0P) (((LP_DSW0P) == DSI_LP_DSW0P_DISABLE)\
1322 || ((LP_DSW0P) == DSI_LP_DSW0P_ENABLE))
1323 #define IS_DSI_LP_DSW1P(LP_DSW1P) (((LP_DSW1P) == DSI_LP_DSW1P_DISABLE)\
1324 || ((LP_DSW1P) == DSI_LP_DSW1P_ENABLE))
1325 #define IS_DSI_LP_DSR0P(LP_DSR0P) (((LP_DSR0P) == DSI_LP_DSR0P_DISABLE)\
1326 || ((LP_DSR0P) == DSI_LP_DSR0P_ENABLE))
1327 #define IS_DSI_LP_DLW(LP_DLW) (((LP_DLW) == DSI_LP_DLW_DISABLE)\
1328 || ((LP_DLW) == DSI_LP_DLW_ENABLE))
1329 #define IS_DSI_LP_MRDP(LP_MRDP) (((LP_MRDP) == DSI_LP_MRDP_DISABLE)\
1330 || ((LP_MRDP) == DSI_LP_MRDP_ENABLE))
1331 #define IS_DSI_SHORT_WRITE_PACKET_TYPE(MODE) (((MODE) == DSI_DCS_SHORT_PKT_WRITE_P0) || \
1332 ((MODE) == DSI_DCS_SHORT_PKT_WRITE_P1) || \
1333 ((MODE) == DSI_GEN_SHORT_PKT_WRITE_P0) || \
1334 ((MODE) == DSI_GEN_SHORT_PKT_WRITE_P1) || \
1335 ((MODE) == DSI_GEN_SHORT_PKT_WRITE_P2))
1336 #define IS_DSI_LONG_WRITE_PACKET_TYPE(MODE) (((MODE) == DSI_DCS_LONG_PKT_WRITE) || \
1337 ((MODE) == DSI_GEN_LONG_PKT_WRITE))
1338 #define IS_DSI_READ_PACKET_TYPE(MODE) (((MODE) == DSI_DCS_SHORT_PKT_READ) || \
1339 ((MODE) == DSI_GEN_SHORT_PKT_READ_P0) || \
1340 ((MODE) == DSI_GEN_SHORT_PKT_READ_P1) || \
1341 ((MODE) == DSI_GEN_SHORT_PKT_READ_P2))
1342 #define IS_DSI_COMMUNICATION_DELAY(CommDelay) (((CommDelay) == DSI_SLEW_RATE_HSTX) || \
1343 ((CommDelay) == DSI_SLEW_RATE_LPTX) || \
1344 ((CommDelay) == DSI_HS_DELAY))
1345 #define IS_DSI_LANE_GROUP(Lane) (((Lane) == DSI_CLOCK_LANE) || ((Lane) == DSI_DATA_LANES))
1346 #define IS_DSI_CUSTOM_LANE(CustomLane) (((CustomLane) == DSI_SWAP_LANE_PINS)\
1347 || ((CustomLane) == DSI_INVERT_HS_SIGNAL))
1348 #define IS_DSI_LANE(Lane) (((Lane) == DSI_CLOCK_LANE) || \
1349 ((Lane) == DSI_DATA_LANE0) || ((Lane) == DSI_DATA_LANE1))
1350 #define IS_DSI_PHY_TIMING(Timing) (((Timing) == DSI_TCLK_POST ) || \
1351 ((Timing) == DSI_TLPX_CLK ) || \
1352 ((Timing) == DSI_THS_EXIT ) || \
1353 ((Timing) == DSI_TLPX_DATA ) || \
1354 ((Timing) == DSI_THS_ZERO ) || \
1355 ((Timing) == DSI_THS_TRAIL ) || \
1356 ((Timing) == DSI_THS_PREPARE ) || \
1357 ((Timing) == DSI_TCLK_ZERO ) || \
1358 ((Timing) == DSI_TCLK_PREPARE))
__IO HAL_DSI_StateTypeDef State
ADC handle Structure definition.
uint32_t LPGenShortReadOneP
uint32_t AutomaticRefresh
uint32_t LowPowerWriteTimeout
uint32_t LPVerticalBackPorchEnable
uint32_t VerticalFrontPorch
uint32_t HorizontalSyncActive
uint32_t HighSpeedReadTimeout
uint32_t LPLargestPacketSize
uint32_t ClockLaneLP2HSTime
uint32_t HighSpeedWriteTimeout
uint32_t LPDcsShortWriteNoP
uint32_t VirtualChannelID
uint32_t LPGenShortReadNoP
uint32_t TearingEffectPolarity
uint32_t LPHorizontalBackPorchEnable
uint32_t LPVerticalSyncActiveEnable
uint32_t LPDcsShortWriteOneP
uint32_t TearingEffectSource
uint32_t FrameBTAAcknowledgeEnable
uint32_t DataLaneMaxReadTime
uint32_t LowPowerReceptionTimeout
uint32_t LPVerticalFrontPorchEnable
uint32_t DataLaneLP2HSTime
uint32_t LPVerticalActiveEnable
uint32_t TEAcknowledgeRequest
uint32_t LowPowerReadTimeout
uint32_t DataLaneHS2LPTime
uint32_t VerticalSyncActive
uint32_t HorizontalBackPorch
uint32_t AutomaticClockLaneControl
uint32_t LPDcsShortReadNoP
uint32_t HighSpeedTransmissionTimeout
uint32_t LPGenShortWriteOneP
uint32_t VerticalBackPorch
uint32_t LPGenShortReadTwoP
uint32_t AcknowledgeRequest
uint32_t VirtualChannelID
uint32_t HighSpeedWritePrespMode
uint32_t LPGenShortWriteTwoP
uint32_t LPVACTLargestPacketSize
uint32_t LPHorizontalFrontPorchEnable
uint32_t LPGenShortWriteNoP
uint32_t ClockLaneHS2LPTime
HAL_DSI_StateTypeDef
DSI States Structure definition.
HAL_DSI_CallbackIDTypeDef
HAL DSI Callback ID enumeration definition.
void(* pDSI_CallbackTypeDef)(DSI_HandleTypeDef *hdsi)
HAL DSI Callback pointer definition.
struct __DSI_HandleTypeDef else typedef struct endif DSI_HandleTypeDef
DSI Handle Structure definition.
@ HAL_DSI_ENDOF_REFRESH_CB_ID
@ HAL_DSI_TEARING_EFFECT_CB_ID
@ HAL_DSI_MSPDEINIT_CB_ID
DSI Adapted command mode configuration.
DSI HOST Timeouts definition.
DSI Init Structure definition.
DSI command transmission mode configuration.
DSI PHY Timings definition.
DSI PLL Clock structure definition.
DSI Video mode configuration.
HAL_StatusTypeDef HAL_DSI_Init(DSI_HandleTypeDef *hdsi, DSI_PLLInitTypeDef *PLLInit)
Initializes the DSI according to the specified parameters in the DSI_InitTypeDef and create the assoc...
HAL_StatusTypeDef HAL_DSI_DeInit(DSI_HandleTypeDef *hdsi)
De-initializes the DSI peripheral registers to their default reset values.
HAL_StatusTypeDef HAL_DSI_ConfigErrorMonitor(DSI_HandleTypeDef *hdsi, uint32_t ActiveErrors)
Enable the error monitor flags.
HAL_StatusTypeDef HAL_DSI_RegisterCallback(DSI_HandleTypeDef *hdsi, HAL_DSI_CallbackIDTypeDef CallbackID, pDSI_CallbackTypeDef pCallback)
Register a User DSI Callback To be used instead of the weak predefined callback.
void HAL_DSI_MspDeInit(DSI_HandleTypeDef *hdsi)
De-initializes the DSI MSP.
void HAL_DSI_MspInit(DSI_HandleTypeDef *hdsi)
Initializes the DSI MSP.
HAL_StatusTypeDef HAL_DSI_UnRegisterCallback(DSI_HandleTypeDef *hdsi, HAL_DSI_CallbackIDTypeDef CallbackID)
Unregister a DSI Callback DSI callback is redirected to the weak predefined callback.
void HAL_DSI_IRQHandler(DSI_HandleTypeDef *hdsi)
Handles DSI interrupt request.
void HAL_DSI_ErrorCallback(DSI_HandleTypeDef *hdsi)
Operation Error DSI callback.
void HAL_DSI_TearingEffectCallback(DSI_HandleTypeDef *hdsi)
Tearing Effect DSI callback.
void HAL_DSI_EndOfRefreshCallback(DSI_HandleTypeDef *hdsi)
End of Refresh DSI callback.
HAL_StatusTypeDef HAL_DSI_ForceRXLowPower(DSI_HandleTypeDef *hdsi, FunctionalState State)
Force LP Receiver in Low-Power Mode.
HAL_StatusTypeDef HAL_DSI_ForceDataLanesInRX(DSI_HandleTypeDef *hdsi, FunctionalState State)
Force Data Lanes in RX Mode after a BTA.
HAL_StatusTypeDef HAL_DSI_Shutdown(DSI_HandleTypeDef *hdsi, uint32_t Shutdown)
Control the display shutdown in Video mode.
HAL_StatusTypeDef HAL_DSI_ShortWrite(DSI_HandleTypeDef *hdsi, uint32_t ChannelID, uint32_t Mode, uint32_t Param1, uint32_t Param2)
write short DCS or short Generic command
HAL_StatusTypeDef HAL_DSI_LongWrite(DSI_HandleTypeDef *hdsi, uint32_t ChannelID, uint32_t Mode, uint32_t NbParams, uint32_t Param1, const uint8_t *ParametersTable)
write long DCS or long Generic command
HAL_StatusTypeDef HAL_DSI_EnterULPMData(DSI_HandleTypeDef *hdsi)
Enter the ULPM (Ultra Low Power Mode) with the D-PHY PLL running (only data lanes are in ULPM)
HAL_StatusTypeDef HAL_DSI_SetSDD(DSI_HandleTypeDef *hdsi, FunctionalState State)
Activate an additional current path on all lanes to meet the SDDTx parameter defined in the MIPI D-PH...
HAL_StatusTypeDef HAL_DSI_ConfigHostTimeouts(DSI_HandleTypeDef *hdsi, DSI_HOST_TimeoutTypeDef *HostTimeouts)
Configure the DSI HOST timeout parameters.
HAL_StatusTypeDef HAL_DSI_ExitULPMData(DSI_HandleTypeDef *hdsi)
Exit the ULPM (Ultra Low Power Mode) with the D-PHY PLL running (only data lanes are in ULPM)
HAL_StatusTypeDef HAL_DSI_EnterULPM(DSI_HandleTypeDef *hdsi)
Enter the ULPM (Ultra Low Power Mode) with the D-PHY PLL turned off (both data and clock lanes are in...
HAL_StatusTypeDef HAL_DSI_SetPHYTimings(DSI_HandleTypeDef *hdsi, uint32_t Timing, FunctionalState State, uint32_t Value)
Set custom timing for the PHY.
HAL_StatusTypeDef HAL_DSI_ConfigVideoMode(DSI_HandleTypeDef *hdsi, DSI_VidCfgTypeDef *VidCfg)
Select video mode and configure the corresponding parameters.
HAL_StatusTypeDef HAL_DSI_ExitULPM(DSI_HandleTypeDef *hdsi)
Exit the ULPM (Ultra Low Power Mode) with the D-PHY PLL turned off (both data and clock lanes are in ...
HAL_StatusTypeDef HAL_DSI_ConfigPhyTimer(DSI_HandleTypeDef *hdsi, DSI_PHY_TimerTypeDef *PhyTimers)
Configure the DSI PHY timer parameters.
HAL_StatusTypeDef HAL_DSI_ForceTXStopMode(DSI_HandleTypeDef *hdsi, uint32_t Lane, FunctionalState State)
Force the Clock/Data Lane in TX Stop Mode.
HAL_StatusTypeDef HAL_DSI_ConfigCommand(DSI_HandleTypeDef *hdsi, DSI_LPCmdTypeDef *LPCmd)
Configure command transmission mode: High-speed or Low-power and enable/disable acknowledge request a...
HAL_StatusTypeDef HAL_DSI_SetContentionDetectionOff(DSI_HandleTypeDef *hdsi, FunctionalState State)
Switch off the contention detection on data lanes.
HAL_StatusTypeDef HAL_DSI_SetLowPowerRXFilter(DSI_HandleTypeDef *hdsi, uint32_t Frequency)
Low-Power Reception Filter Tuning.
HAL_StatusTypeDef HAL_DSI_PatternGeneratorStart(DSI_HandleTypeDef *hdsi, uint32_t Mode, uint32_t Orientation)
Start test pattern generation.
HAL_StatusTypeDef HAL_DSI_SetSlewRateAndDelayTuning(DSI_HandleTypeDef *hdsi, uint32_t CommDelay, uint32_t Lane, uint32_t Value)
Set Slew-Rate And Delay Tuning.
HAL_StatusTypeDef HAL_DSI_PatternGeneratorStop(DSI_HandleTypeDef *hdsi)
Stop test pattern generation.
HAL_StatusTypeDef HAL_DSI_SetGenericVCID(DSI_HandleTypeDef *hdsi, uint32_t VirtualChannelID)
Configure the Generic interface read-back Virtual Channel ID.
HAL_StatusTypeDef HAL_DSI_Start(DSI_HandleTypeDef *hdsi)
Start the DSI module.
HAL_StatusTypeDef HAL_DSI_Stop(DSI_HandleTypeDef *hdsi)
Stop the DSI module.
HAL_StatusTypeDef HAL_DSI_SetLanePinsConfiguration(DSI_HandleTypeDef *hdsi, uint32_t CustomLane, uint32_t Lane, FunctionalState State)
Custom lane pins configuration.
HAL_StatusTypeDef HAL_DSI_Refresh(DSI_HandleTypeDef *hdsi)
Refresh the display in command mode.
HAL_StatusTypeDef HAL_DSI_ConfigFlowControl(DSI_HandleTypeDef *hdsi, uint32_t FlowControl)
Configure the flow control parameters.
HAL_StatusTypeDef HAL_DSI_ConfigAdaptedCommandMode(DSI_HandleTypeDef *hdsi, DSI_CmdCfgTypeDef *CmdCfg)
Select adapted command mode and configure the corresponding parameters.
HAL_StatusTypeDef HAL_DSI_SetPullDown(DSI_HandleTypeDef *hdsi, FunctionalState State)
Enable a pull-down on the lanes to prevent from floating states when unused.
HAL_StatusTypeDef HAL_DSI_ColorMode(DSI_HandleTypeDef *hdsi, uint32_t ColorMode)
Controls the display color mode in Video mode.
HAL_StatusTypeDef HAL_DSI_Read(DSI_HandleTypeDef *hdsi, uint32_t ChannelNbr, uint8_t *Array, uint32_t Size, uint32_t Mode, uint32_t DCSCmd, uint8_t *ParametersTable)
Read command (DCS or generic)
uint32_t HAL_DSI_GetError(const DSI_HandleTypeDef *hdsi)
Return the DSI error code.
HAL_DSI_StateTypeDef HAL_DSI_GetState(const DSI_HandleTypeDef *hdsi)
Return the DSI state.
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_LockTypeDef
HAL Lock structures definition