OpenEdv-开源电子网

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

将OV7670FIFO中的数据写入外部SRAM中的二维数组如何编写代码

[复制链接]

21

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2017-11-25
在线时间
80 小时
发表于 2018-4-12 11:26:22 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2017-11-25
在线时间
80 小时
 楼主| 发表于 2018-4-12 11:26:23 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-4-13 01:49:07 | 显示全部楼层
出钱请人做
回复

使用道具 举报

21

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2017-11-25
在线时间
80 小时
 楼主| 发表于 2018-4-16 09:13:49 | 显示全部楼层
void camera_refresh(void)
{
        u32 j;
        u16 color;
        if(ov_sta)
        {
                LCD_Scan_Dir(U2D_L2R);                //′óéÏμ½ÏÂ,′ó×óμ½óò  
                LCD_WriteRAM_Prepare();     //¿aê¼D′èëGRAM       
                OV7670_RRST=0;                                //¿a꼸′λ¶áÖ¸Õë
                OV7670_RCK_L;
                OV7670_RCK_H;
                OV7670_RCK_L;
                OV7670_RRST=1;                                //¸′λ¶áÖ¸Õë½áêø
                OV7670_RCK_H;
                for(j=0;j<76800;j++)
                {
                        OV7670_RCK_L;
                        color=GPIOC->IDR&0XFF;        //&#182;áêy&#190;Y
                        OV7670_RCK_H;
                        color<<=8;  
                        OV7670_RCK_L;
                        color|=GPIOC->IDR&0XFF;        //&#182;áêy&#190;Y
                        OV7670_RCK_H;

                        writedata(color,j);
                //        LCD->LCD_RAM=color;   
                }   
                readdata();
                ov_sta=0;                                        //&#199;&#229;á&#227;&#214;&#161;&#214;D&#182;&#207;±ê&#188;&#199;
                ov_frame++;
                LCD_Scan_Dir(DFT_SCAN_DIR);        //&#187;&#214;&#184;′&#196;&#172;è&#207;é¨&#195;è·&#189;&#207;ò
        }
}       


u32(*p)[240]=(u32(*)[240])0x68000000;
void writedata(u16 data,u32 n)
{
        u16 row=n/240;
        u16 column=n%240;
                                                    
                *(*(p+row)+column)=data;          
        printf("%d   %d    \n",*(*(p+row)+column),(*(p+row)+column));

}       
          
void readdata(void)
{
        u16 row;
        u16 column;
        for(row=0;row<320;row++)
        for(column=0;column<240;column++)
        {                                                                                            
                LCD->LCD_RAM=*(*(p+row)+column);   
               
        }
}

我把原来的的更新函数改了一点,又在外部SRAM添加了一个二维数组指针p,写了个读写程序,但显示屏显示不出来,原子哥能不能帮我稍微看一下,问题出在哪,现在做这个感觉要崩溃
回复

使用道具 举报

21

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2017-11-25
在线时间
80 小时
 楼主| 发表于 2018-4-16 10:35:20 | 显示全部楼层
程序的思路是每读一个像素点,把它写到外部SRAM的二维数组p中,写完76800个数据后,再从外部SRAM读取这些数据送显LCD
回复

使用道具 举报

21

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2017-11-25
在线时间
80 小时
 楼主| 发表于 2018-4-16 10:40:44 | 显示全部楼层
有没有其他大神可以帮帮忙啊
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2018-5-7
在线时间
20 小时
发表于 2018-5-7 10:19:53 来自手机 | 显示全部楼层
可能是内存不够的原因,你把像素改为60*60就正常了
回复

使用道具 举报

21

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2017-11-25
在线时间
80 小时
 楼主| 发表于 2018-6-5 08:18:54 | 显示全部楼层
466554770 发表于 2018-5-7 10:19
可能是内存不够的原因,你把像素改为60*60就正常了

你说的这种方法是将分辨率改成60*60的的嘛?我尝试过将分辨率设置为非QVGA格式的,但我设置不出来,能稍微指点一下嘛
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-30 22:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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