-
GD32H759IMT6的TLI高速刷新图像时存在不符预期的残影
GD32H759IMT6的TLI(RGB888)接口连接一个LED灯板(RGB8,只能显示单色图像)软件的需求是:我们需要把每一帧彩色图像帧,分成两次发出去.4ms发送当前帧的图像帧RGB(LED显示R分量),下一个4ms发送GRB(LED显示G分量);然后显示下一帧图像,即可播放视频.以下是程序的播放代码://从sd_ram中获取视频文件,然后逐帧发到TLI接口,4ms显示该帧的绿色分量,下一个4ms显示该帧的红色分量.voidPlayVideoInSdram(void){uint32_tcurFrame=0;uint8_t*redFrame=(uint8_t*)mymalloc(SRAMIN,AVI_VIDEO_BUF_SIZE);uint8_t*greenFrame=(uint8_t*)mymalloc(SRAMIN,AVI_VIDEO_BUF_SIZE);while(1){//将绿色帧配置到tli接口,播放绿色帧TLI_LXFBADDR(LAYER0)&=~(TLI_LXFBADDR_FBADD);TLI_LXFBADDR(LAYER0)=(uint32_t)greenFrame;tli_reload_config(TLI_REQUEST_RELOAD_EN);tli_enable();//从sd_ram中读取红色图像帧sdram_readbuffer_8(redFrame,(curFrame*FRAME_LEN),FRAME_LEN);curFrame++;curFrame=curFrame%g_max_frame_num;//g_timer_is_up在4s周期定时器中,被不断地置1置2while(g_timer_is_up!=1)//等待4ms时间到{;}//4ms定时器到了,发出红色帧TLI_LXFBADDR(LAYER0)&=~(TLI_LXFBADDR_FBADD);TLI_LXFBADDR(LAYER0)=(uint32_t)redFrame;tli_reload_config(TLI_REQUEST_RELOAD_EN);tli_enable();//准备绿色帧,将红色帧的GR通道反转一下得到绿色帧图像memcpy(greenFrame,redFrame,FRAME_LEN);SwitchGR(greenFrame,FRAME_LEN);while(g_timer_is_up!=2)//等待4ms时间到{;}}}上面的程序可以做到4ms显示图像的红色分量,下一个4ms显示绿色分量.播放一个花朵开放的视频.然后我在做实验的时候,想观察纯色图像的播放情况,每一次给tli发送的图像我都用memset置为一个固定灰阶.//从sd_ram中获取视频文件,然后逐帧发到TLI接口,4ms显示该帧的绿色分量,下一个4ms显示该帧的红色分量.voidPlayVideoInSdram(void){uint32_tcurFra
2025-12-14 2

问答