求助,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(); // 启用显示更新
}
}
裸机正常吗,裸机正常, LVGL就没问题。 eric2013 发表于 2024-2-4 09:13
裸机正常吗,裸机正常, LVGL就没问题。
我试试:'(:'(:'( eric2013 发表于 2024-2-4 09:13
裸机正常吗,裸机正常, LVGL就没问题。
不行,怀疑屏幕问题,换个单片机或者裸机都不行,那个dma写入就是不正常 eric2013 发表于 2024-2-4 09:13
裸机正常吗,裸机正常, LVGL就没问题。
解决了:):L KelceyChen 发表于 2024-2-5 14:17
解决了
什么问题 有点像是写显存数据之前的设置窗口坐标错了 kirito 发表于 2024-2-18 19:53
什么问题
清除中断然后SPI1->DR; 解决了 DX3906 发表于 2024-2-19 08:36
有点像是写显存数据之前的设置窗口坐标错了
清除中断然后SPI1->DR; 解决了
页:
[1]