OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12499|回复: 8

[ALTERA] SD卡图片显示实验修改分辨率

[复制链接]

2

主题

4

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2019-11-25
在线时间
4 小时
发表于 2020-3-26 10:07:12 | 显示全部楼层 |阅读模式
5金钱
在开拓者开发板上,下载分辨率要求640*480@60的图片显示实验程序,没有问题,但是分辨率改成800*600@60,却出现了图片中 的现象,不停的闪屏,而且一个屏内没有办法显示完整的图片。
fuc.png

最佳答案

查看完整内容[请看2#楼]

看一下SD卡图片显示实验的视频,在这个实验的最后一讲,有讲解如何修改代码,来适配其它分辨率的屏幕
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2020-3-26 10:07:13 | 显示全部楼层
看一下SD卡图片显示实验的视频,在这个实验的最后一讲,有讲解如何修改代码,来适配其它分辨率的屏幕
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2020-3-26 13:54:02 | 显示全部楼层
修改分辨率的话,程序和图片的BIN文件都需要修改
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2019-11-25
在线时间
4 小时
 楼主| 发表于 2020-3-26 14:35:30 | 显示全部楼层
QinQZ 发表于 2020-3-26 13:54
修改分辨率的话,程序和图片的BIN文件都需要修改

都改了,还是有bug
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2019-11-25
在线时间
4 小时
 楼主| 发表于 2020-3-26 14:36:06 | 显示全部楼层
程序能说具体点嘛
回复

使用道具 举报

40

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
579
金钱
579
注册时间
2019-8-4
在线时间
187 小时
发表于 2020-3-28 14:40:02 | 显示全部楼层
u8 SD_WriteDisk(u8*buf,u32 sector,u8 cnt)
{
        u8 sta=SD_OK;
        u8 n;
        long long lsector=sector;
        //扇区地址变为字节地址。<<9位,相当于*512
        lsector<<=9;
        //确保缓存地址字节对齐,否则走御用通道
        if((u32)buf%4!=0)
        {
                 for(n=0;n<cnt;n++)
                {
                        memcpy(SDIO_DATA_BUFFER,buf,512);
                         sta=SD_WriteBlock(SDIO_DATA_BUFFER,lsector+512*n,512);//单个sector的写操作
                        buf+=512;
                }
        }else
        {
                if(cnt==1)sta=SD_WriteBlock(buf,lsector,512);            //单个sector的写操作
                else sta=SD_WriteMultiBlocks(buf,lsector,512,cnt);        //多个sector  
        }
        return sta;
}



lsector<<=9;
这里lsector定义的是long long类型,下面传入的add却是u32类型,这样可以吗
SDIO_CmdInitStructure.SDIO_Argument = addr;//发送CMD24,写单块指令,短响应         
SDIO_CmdInitStructure.SDIO_CmdIndex = 24;



if(CardType==SDIO_HIGH_CAPACITY_SD_CARD)        //大容量卡
{
                blksize=512;
                addr>>=9;
}   
回复

使用道具 举报

14

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2020-11-3
在线时间
26 小时
发表于 2020-11-10 00:05:09 来自手机 | 显示全部楼层
QinQZ 发表于 2020-3-26 13:54
修改分辨率的话,程序和图片的BIN文件都需要修改

求具体操作,那视频最后听不太懂
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2020-2-18
在线时间
5 小时
发表于 2021-3-31 17:07:48 | 显示全部楼层
楼主解决了吗?我今天也是在FPGA开拓者开发板上遇到了这样的情况,bin文件和VGA驱动、sd_read_photo这三个地方都修改了VGA屏幕显示的图片一直是闪烁,感觉像是每次只更新5分之一个屏幕,可是sd_read_photo中我已经更改了单张图片总共读出的次数 ,请指点一下?
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2020-2-18
在线时间
5 小时
发表于 2021-4-4 15:44:05 | 显示全部楼层
我已解决此问题,我使用时是开拓者开发版,我将分辨率修改为104*768显示正常。要在原工程上修改以下几个部分:
1.使用画图板重新设置目标显示图片大小为1024*768;
2.将SD卡格式化后,把新的bin文件导入(切记这一步从WinHex读取出的地址一般来说跟原来是不一样的,如果你发现与原来640*480读取出的地址一样,那说明你没有格式化或者没有更新),将新的扇区地址填入PHOTO_SECCTION_ADDR0、PHOTO_SECTION_ADDR1,同时重新计算RD_SECTION_NUM=1024*768/256=3072;
3. 在代码部分先修改顶层文件的SDRAM缓存大小为1024*768;VGA驱动部分修改1024*768@60模式下的时序参数;PLL部分将第五个时钟即VGA驱动时钟更改为65MHz;读取SD卡部分sd_read_photo模块中,修改PHOTO_SECCTION_ADDR0 = 32'd11552、PHOTO_SECTION_ADDR1 = 32'd8480 、RD_SECTION_NUM  = 12'd3072,除此之外之前读次数RD_SECTION_NUM为11位现在修改为12位,同时下面涉及到的一系列读扇区计数器rd_sec_cnt也修改为12位。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-3 18:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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