cancel
Showing results for 
Search instead for 
Did you mean: 

DSI display interface doesn't work

PZamb.2
Associate III

Hi

I'm development a board with STM32F779a cpu connect with dsi display.

I create the graphic wit TouchFX tools and included in the STM32cube ide design software.

How example I see STM32f769i-disco demo, and received the init code of display by producer.

My problem is that the DSI Host not run, no signal appare , I'm monitoring with oscilloscopie.

What may be the problem ?

int main(void)

{

 /* USER CODE BEGIN 1 */

 /* USER CODE END 1 */

 /* MCU Configuration--------------------------------------------------------*/

 /* Reset of all peripherals, Initializes the Flash interface and the Systick. */

 HAL_Init();

 /* USER CODE BEGIN Init */

 /* USER CODE END Init */

 /* Configure the system clock */

 SystemClock_Config();

 /* USER CODE BEGIN SysInit */

 /* USER CODE END SysInit */

 /* Initialize all configured peripherals */

 MX_GPIO_Init();

 MX_LTDC_Init();

 MX_CRC_Init();

 MX_DSIHOST_DSI_Init();

 MX_FMC_Init();

 MX_QUADSPI_Init();

 MX_DMA2D_Init();

 MX_TouchGFX_Init();

 /* Call PreOsInit function */

 MX_TouchGFX_PreOSInit();

 /* USER CODE BEGIN 2 */

 /* USER CODE END 2 */

 /* Init scheduler */

 osKernelInitialize();

 /* USER CODE BEGIN RTOS_MUTEX */

 /* add mutexes, ... */

 /* USER CODE END RTOS_MUTEX */

 /* USER CODE BEGIN RTOS_SEMAPHORES */

 /* add semaphores, ... */

 /* USER CODE END RTOS_SEMAPHORES */

 /* USER CODE BEGIN RTOS_TIMERS */

 /* start timers, add new ones, ... */

 /* USER CODE END RTOS_TIMERS */

 /* USER CODE BEGIN RTOS_QUEUES */

 /* add queues, ... */

 /* USER CODE END RTOS_QUEUES */

 /* Create the thread(s) */

 /* creation of defaultTask */

 defaultTaskHandle = osThreadNew(StartDefaultTask, NULL, &defaultTask_attributes);

 /* USER CODE BEGIN RTOS_THREADS */

 /* add threads, ... */

 /* USER CODE END RTOS_THREADS */

 /* USER CODE BEGIN RTOS_EVENTS */

 /* add events, ... */

 /* USER CODE END RTOS_EVENTS */

 /* Start scheduler */

 osKernelStart();

 /* We should never get here as control is now taken by the scheduler */

 /* Infinite loop */

 /* USER CODE BEGIN WHILE */

 while (1)

 {

   /* USER CODE END WHILE */

   /* USER CODE BEGIN 3 */

 }

13 REPLIES 13
LMI2
Lead

DSI is a tricky bus. All clock and data pairs must have equal length. That is, on the PCB

PZamb.2
Associate III

hI

Thank for answer

The pcb the DSI trace are pair lines of impedence controlled.

I'm monitoring the dsi clock wit oscilloscope when cpu send display inictialize string, DSI data line I see the write but the DSI clock is Hold

MM..1
Chief II

Stop paste here and try learn and understand , what DSI bridge is and how mode you need use for your display. When you implement new dont demo supported display start without touchgfx.

In main while do nothing and before this init and start all plus run command

HAL_DSI_PatternGeneratorStart(&hdsi, 0, 1);

PZamb.2
Associate III

tank for patience and sorry for my confusion but is low time that use stm32 development kit and i have not experience with DSI interface.

My situation is that custom board with stm32f779 cpi with dsi 2 line display (not is St display from demo board)

I implemented the startup configuration command long and short dsi write and this part appare work, now the driver code to resolve is in TouchGFXHAl.cpp .

Display work in video mode, no ram installed inside.

I find difficult because inictial i installed FREERTOS V1 and when i add at design multimedia device Jpeg for video decoding hardware mode in touchgfx (4.21.1) graphic application , at the startup the software go to interrup hardware failure.

With Freertos V2 not fails , because ?

The display is circular model TL021WVC03CT with controller ST7701S , there is some example thar I can use to example for display controller driver?