KelceyChen 发表于 2024-2-4 05:39:29

求助,stm32f4 spi dma,lvgl显示不全

另外的小屏幕是能正常显示lvgl测试界面

但这个大屏幕lvgl显示不全,界面都出来了,但就整体往上偏,不知道怎么解决了,我把长和宽调小才看到控件,但感觉是往上偏,不用lvgl单独给屏幕刷屏,是能完整显示出来,但移植到lvgl就不行了

型号ST7796S,3.5英寸触摸 SPI


    /* Example for 2) */
    static lv_disp_draw_buf_t draw_buf_dsc_2;
    static lv_color_t buf_2_1;                        /*A buffer for 10 rows*/
    static lv_color_t buf_2_2;                        /*An other buffer for 10 rows*/
    lv_disp_draw_buf_init(&draw_buf_dsc_2, buf_2_1, buf_2_2, MY_DISP_HOR_RES * 10);   /*Initialize the display buffer*/



    unsigned int size = (area->x2 - area->x1 + 1) * (area->y2 - area->y1 + 1) * 2;
    LCD_SetWindows(area->x1, area->y1, area->x2, area->y2);        //指定填充区域
    //printf("area3 x1 %d y1 %d x2 %d y2 %d ",area->x1,area->y1,area->x2,area->y2);
    MYDMA_Enable(DMA2_Stream5,color_p, size);
    disp_DMA = disp_drv;





void DMA2_Stream5_IRQHandler()        // 这是DMA2_Stream3的中断处理函数
{
    if(DMA_GetITStatus(DMA2_Stream5,DMA_IT_TCIF5))        // 检查DMA2_Stream3的传输完成中断标志位
    {
      DMA_ClearITPendingBit(DMA2_Stream5,DMA_IT_TCIF5);        // 清除DMA2_Stream3的传输完成中断标志位
                                //LCD_CS_SET;
                                DMA_Cmd(DMA2_Stream5,DISABLE);
                                LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复窗口设置为全屏
                                lv_disp_flush_ready(disp_DMA);        // 刷新显示
                                disp_enable_update();                                                // 启用显示更新
    }   
}

eric2013 发表于 2024-2-4 09:13:52

裸机正常吗,裸机正常, LVGL就没问题。

KelceyChen 发表于 2024-2-4 15:14:18

eric2013 发表于 2024-2-4 09:13
裸机正常吗,裸机正常, LVGL就没问题。

我试试:'(:'(:'(

KelceyChen 发表于 2024-2-4 18:29:33

eric2013 发表于 2024-2-4 09:13
裸机正常吗,裸机正常, LVGL就没问题。

不行,怀疑屏幕问题,换个单片机或者裸机都不行,那个dma写入就是不正常

KelceyChen 发表于 2024-2-5 14:17:39

eric2013 发表于 2024-2-4 09:13
裸机正常吗,裸机正常, LVGL就没问题。

解决了:):L

kirito 发表于 2024-2-18 19:53:51

KelceyChen 发表于 2024-2-5 14:17
解决了

什么问题

DX3906 发表于 2024-2-19 08:36:05

有点像是写显存数据之前的设置窗口坐标错了

KelceyChen 发表于 2024-2-29 18:02:30

kirito 发表于 2024-2-18 19:53
什么问题

清除中断然后SPI1->DR; 解决了

KelceyChen 发表于 2024-2-29 18:02:49

DX3906 发表于 2024-2-19 08:36
有点像是写显存数据之前的设置窗口坐标错了

清除中断然后SPI1->DR; 解决了
页: [1]
查看完整版本: 求助,stm32f4 spi dma,lvgl显示不全