找回密码
 立即注册
查看: 806|回复: 12

使用SPI-DMA+LCM-DMA方式显示320*240的图片需要多长时间

[复制链接]
  • TA的每日心情
    开心
    昨天 19:12
  • 签到天数: 151 天

    [LV.7]常住居民III

    13

    主题

    104

    回帖

    911

    积分

    高级会员

    积分
    911
    发表于 2023-11-14 16:20:39 | 显示全部楼层 |阅读模式
    使用STC32G12K128单片机,设置35M,采用SPI-DMA+LCM-DMA双缓冲方式显示320*240的图片,模拟播放一段小视屏,明显卡顿,做个时间延时,大概一张图片显示需要250MS,这个时间还有没有提升的空间呢?
    lADPJxuMXhvWvGrNBQDNAk8_591_1280.jpg
    IMG_20231114_160403.jpg

    video_20231102_173609.mp4

    7.86 MB, 下载次数: 24

    video_20231114_160251.mp4

    2.88 MB, 下载次数: 17

    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 19:12
  • 签到天数: 151 天

    [LV.7]常住居民III

    13

    主题

    104

    回帖

    911

    积分

    高级会员

    积分
    911
     楼主| 发表于 2023-11-14 16:24:40 | 显示全部楼层
    延时改成200MS时播放的就不连贯了。

    相关代码:

    void LCD_ShowPicture_dma(uint16 x)                //SPI_DMA,LCM_DMA方式显示图片
    {
            uint32 pic_add=picture_addr+x*153600;   // 从GD25Q64的这个地址开始读取图片
            TFT_CS= 0;        //选择TFT
            GD25Q64_Readdma(pic_add);        //开启SPI_DMA主模式操作读GD25Q64,开始第一次(0)读取到缓冲区1
    //        while(!GD25Q64_CS);        //等待读取一次完成,阻塞机制
    }

    void common_isr(void) interrupt  13        //DMA_LCM和DMA_SPI中断
    {
            if(DMA_LCM_STA & 0x01)        //进入DMA_LCM
        {
                            DMA_LCM_STA= 0;
          if(stage >= Index)                //150K图片传送完毕
                            {
                                    TFT_CS=1;
                            }
        }
            if(DMA_SPI_STA & 0x01)        //进入DMA_SPI
        {
                            DMA_SPI_STA= 0;
          if(!(stage & 1))        //偶数次
                                    {
                                            DMA_LCM_TXAL= (uint8)((uint16)&DmaBuffer1);        //缓冲区1开始发送
                                            DMA_LCM_TXAH= (uint8)((uint16)&DmaBuffer1>>8);
                                            DMA_LCM_CR= 0xa1; //启动DMA开始发送数据
                                    }
                            else        //奇数次
                                    {
                                            DMA_LCM_TXAL= (uint8)((uint16)&DmaBuffer2);        //缓冲区2开始发送   
                                            DMA_LCM_TXAH= (uint8)((uint16)&DmaBuffer2>>8);
                                            DMA_LCM_CR= 0xa1;        //启动DMA开始发送数据
                                    }
                            if(stage <Index)
           {
                                    if(!(stage & 1))        //偶数次
                                            {
                                                    DMA_SPI_RXAL= (uint8)((uint16)&DmaBuffer2);        //发送到缓冲区2         
                DMA_SPI_RXAH= (uint8)((uint16)&DmaBuffer2>>8);
                DMA_SPI_CR= 0xc1;        //启动DMA开始接收数据
              }
             else        //奇数次
                                            {
                                                    DMA_SPI_RXAL= (uint8)((uint16)&DmaBuffer1);        //发送到缓冲区1           
                DMA_SPI_RXAH= (uint8)((uint16)&DmaBuffer1>>8);
                DMA_SPI_CR= 0xc1;        //启动DMA开始接收数据
              }
            stage++;
             }
           else
                             {
                                     GD25Q64_CS= 1;        //150K图片数据读取完毕
                                     stage=0;        //重新开始计数
                             }
         }
    }

    222.mp4

    4.11 MB, 下载次数: 15

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 19:12
  • 签到天数: 151 天

    [LV.7]常住居民III

    13

    主题

    104

    回帖

    911

    积分

    高级会员

    积分
    911
     楼主| 发表于 2023-11-14 16:31:54 | 显示全部楼层
    视频1和2分别是使用DMA和不使用时播放的效果,感觉效果差不多,并没有体现出来使用DMA的优势
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 08:55
  • 签到天数: 138 天

    [LV.7]常住居民III

    26

    主题

    1325

    回帖

    4127

    积分

    论坛元老

    积分
    4127
    发表于 2023-11-14 18:00:38 | 显示全部楼层
    yanhui 发表于 2023-11-14 16:31
    视频1和2分别是使用DMA和不使用时播放的效果,感觉效果差不多,并没有体现出来使用DMA的优势 ...

    DMA的优势在于使用硬件自动传输数据,释放CPU资源。
    想要加快刷新速度,要提高接口的时钟频率。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 19:12
  • 签到天数: 151 天

    [LV.7]常住居民III

    13

    主题

    104

    回帖

    911

    积分

    高级会员

    积分
    911
     楼主| 发表于 2023-11-14 18:10:11 | 显示全部楼层
    设置过的了
    1.png
    2.png
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9410

    回帖

    1万

    积分

    管理员

    积分
    13962
    发表于 2023-11-14 18:38:42 | 显示全部楼层
    这个算法是解放 CPU去做其他事
    截图202311141839529140.jpg

    截图202311141840226429.jpg

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 19:12
  • 签到天数: 151 天

    [LV.7]常住居民III

    13

    主题

    104

    回帖

    911

    积分

    高级会员

    积分
    911
     楼主| 发表于 2023-11-15 08:35:51 | 显示全部楼层
    两张图片之间的那个延时间隔CPU可以做其他操作,这个8位并口TFT彩屏,就没法播放视屏了对吗?这个播放速度有没有老师能给出具体参数呢?或者有没有好的方法能实现彩屏的视屏播放效果?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    2023-12-5 19:37
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    3

    主题

    325

    回帖

    363

    积分

    禁止发言

    积分
    363
    发表于 2023-11-15 09:22:25 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 19:12
  • 签到天数: 151 天

    [LV.7]常住居民III

    13

    主题

    104

    回帖

    911

    积分

    高级会员

    积分
    911
     楼主| 发表于 2023-11-15 09:52:19 | 显示全部楼层
    我用的是KMPlayer播放视频,捕获成你要的图片格式,再用Image2Lcd批量转换成150K单个的BIN文件,最后将这些BIN文件合并成一个BIN文件烧录到25Q64中,程序中再通过用SPI-DMA方式读取25Q64对应的每个图片,用LCM-DMA方式实现对应图片的显示,读取显示速度够快,视觉看起来就能连续播放。目前这个刷新图片速度达到了效果,但是视频还不够理想,速度限制在于读取25Q64这里,当然用OLED12864显示灰度图片的话,8H8K64就可以实现视频级的播放。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9410

    回帖

    1万

    积分

    管理员

    积分
    13962
    发表于 2023-11-16 07:40:40 | 显示全部楼层
    后面的 STC8051H, STC32G96K256, 都有 QSPI读FLASH,
    支持 QSPI -DMA 直通 TFT320240 接口

    支持 QSPI -DMA 直通 TFT480320 接口

    STC8051H,2024/6/1 后回来


    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-13 01:49 , Processed in 0.080999 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表